)]}'
{"src/c/pyeclib_c/pyeclib_c.c":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"f47128b48d02a0a00adcbd446e5fdae90d755ae6","unresolved":false,"context_lines":[{"line_number":1213,"context_line":""},{"line_number":1214,"context_line":"static PyObject*"},{"line_number":1215,"context_line":"pyeclib_c_liberasurecode_version(PyObject *self, PyObject *args) {"},{"line_number":1216,"context_line":"    // TODO: do we need this if macro ???"},{"line_number":1217,"context_line":"    // #if ( LIBERASURECODE_VERSION \u003e\u003d _VERSION(1,3,2) )"},{"line_number":1218,"context_line":"    return PyInt_FromLong(liberasurecode_get_version());"},{"line_number":1219,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"3a71b18c_95ef7a86","line":1216,"updated":"2016-12-02 20:25:33.000000000","message":"I think this depends on whether we\u0027re going to continue supporting old versions. How quickly can we get a hard dep on \u003e\u003d 1.3.2, so pyeclib won\u0027t even *build* without it?\n\nIf we continue supporting old versions, something like\n\n #if ( LIBERASURECODE_VERSION \u003e\u003d _VERSION(1,3,2) )\n     return PyInt_FromLong(liberasurecode_get_version());\n #else\n     return PyInt_FromLong(LIBERASURECODE_VERSION);\n #endif\n\nseems not terrible.","commit_id":"149b0dd3160fe244ef1f48032e4a81b96cf77882"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"cbfd2c2f68b05fd12d336034c6befe168bb4ac3f","unresolved":false,"context_lines":[{"line_number":1214,"context_line":""},{"line_number":1215,"context_line":"static PyObject*"},{"line_number":1216,"context_line":"pyeclib_c_liberasurecode_version(PyObject *self, PyObject *args) {"},{"line_number":1217,"context_line":"    // TODO: do we need this if macro ???"},{"line_number":1218,"context_line":"    // #if ( LIBERASURECODE_VERSION \u003e\u003d _VERSION(1,3,2) )"},{"line_number":1219,"context_line":"    uint32_t version \u003d liberasurecode_get_version();"},{"line_number":1220,"context_line":"    if (version \u003e LONG_MAX){"}],"source_content_type":"text/x-csrc","patch_set":2,"id":"3a71b18c_182cc9aa","line":1217,"updated":"2016-12-08 00:18:58.000000000","message":"Nope! But we *will* need to do some dynamic loading :-/\n\nI wrote up http://paste.openstack.org/show/591738/ to test the change in liberasurecode; I think we\u0027ll want something similar here:\n\n hLib \u003d dlopen(\"liberasurecode.so\", RTLD_LAZY);\n dlerror();\n dlsym(hLib, \"liberasurecode_get_version\");\n err \u003d dlerror();\n if (err) {\n   dlclose(hLib);\n   /* it\u0027s the only version we know about, so hope for the best :-/\n      i guess at least it preserves existing behavior? */\n   return PyInt_FromLong(LIBERASURECODE_VERSION);\n }\n dlclose(hLib);\n /* presumably we\u0027re now safe to use liberasurecode_get_version() */\n\nWe actually might want to do that *anyway* so we can still compile against the old distro packages; the result of dysym is a pointer to the function.","commit_id":"3df1b8b43655354bb4f24d25562aca193e6ae597"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"64da4bbada35398fd0127028341bd147eddc8c05","unresolved":false,"context_lines":[{"line_number":30,"context_line":"#include \u003cmath.h\u003e"},{"line_number":31,"context_line":"#include \u003cbytesobject.h\u003e"},{"line_number":32,"context_line":"#include \u003cliberasurecode/erasurecode.h\u003e"},{"line_number":33,"context_line":"#include \u003climits.h\u003e"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"#if ( LIBERASURECODE_VERSION \u003c _VERSION(1,1,0) )"},{"line_number":36,"context_line":"#include \u003cliberasurecode/erasurecode_helpers.h\u003e"}],"source_content_type":"text/x-csrc","patch_set":4,"id":"ba2be162_9a225200","line":33,"updated":"2017-03-01 20:43:04.000000000","message":"No longer necessary; I think this was a holdover from previous patchsets.","commit_id":"7d949482cda45a18af58cba0d48572a44b7729e0"}]}
