diff options
author | Ulrich Seidl <Ulrich.Seidl@muneda.com> | 2014-01-14 15:18:49 +0100 |
---|---|---|
committer | Julian Taylor <jtaylor.debian@googlemail.com> | 2014-01-16 21:47:56 +0100 |
commit | 13fbb675daf30be0771085b621b6934064203492 (patch) | |
tree | fa5b50bf4dbc26218dc6ce3a5ecbe94af6cfb47f | |
parent | 7f46687865db7b88c285ea12ccef43f4b7026a0d (diff) | |
download | numpy-13fbb675daf30be0771085b621b6934064203492.tar.gz |
BUG: fix build with single-threaded python
Some symbols are not defined leading to:
ImportError Undefined symbol: PyGILState_Release
Closes gh-3255
-rw-r--r-- | numpy/core/include/numpy/ndarraytypes.h | 1 | ||||
-rw-r--r-- | numpy/core/src/multiarray/multiarraymodule.c | 25 | ||||
-rw-r--r-- | numpy/core/src/multiarray/nditer_api.c | 5 | ||||
-rw-r--r-- | numpy/linalg/lapack_lite/python_xerbla.c | 10 |
4 files changed, 27 insertions, 14 deletions
diff --git a/numpy/core/include/numpy/ndarraytypes.h b/numpy/core/include/numpy/ndarraytypes.h index fd64cd75f..373a4df53 100644 --- a/numpy/core/include/numpy/ndarraytypes.h +++ b/numpy/core/include/numpy/ndarraytypes.h @@ -954,6 +954,7 @@ typedef int (PyArray_FinalizeFunc)(PyArrayObject *, PyObject *); #define NPY_BEGIN_THREADS_DEF #define NPY_BEGIN_THREADS #define NPY_END_THREADS +#define NPY_BEGIN_THREADS_THRESHOLDED(loop_size) #define NPY_BEGIN_THREADS_DESCR(dtype) #define NPY_END_THREADS_DESCR(dtype) #define NPY_ALLOW_C_API_DEF diff --git a/numpy/core/src/multiarray/multiarraymodule.c b/numpy/core/src/multiarray/multiarraymodule.c index c297b039d..7c06ea209 100644 --- a/numpy/core/src/multiarray/multiarraymodule.c +++ b/numpy/core/src/multiarray/multiarraymodule.c @@ -3617,14 +3617,15 @@ NPY_NO_EXPORT PyDataMem_EventHookFunc * PyDataMem_SetEventHook(PyDataMem_EventHookFunc *newhook, void *user_data, void **old_data) { - PyGILState_STATE gilstate = PyGILState_Ensure(); + NPY_ALLOW_C_API_DEF + NPY_ALLOW_C_API PyDataMem_EventHookFunc *temp = _PyDataMem_eventhook; _PyDataMem_eventhook = newhook; if (old_data != NULL) { *old_data = _PyDataMem_eventhook_user_data; } _PyDataMem_eventhook_user_data = user_data; - PyGILState_Release(gilstate); + NPY_DISABLE_C_API return temp; } @@ -3638,12 +3639,13 @@ PyDataMem_NEW(size_t size) result = malloc(size); if (_PyDataMem_eventhook != NULL) { - PyGILState_STATE gilstate = PyGILState_Ensure(); + NPY_ALLOW_C_API_DEF + NPY_ALLOW_C_API if (_PyDataMem_eventhook != NULL) { (*_PyDataMem_eventhook)(NULL, result, size, _PyDataMem_eventhook_user_data); } - PyGILState_Release(gilstate); + NPY_DISABLE_C_API } return result; } @@ -3658,12 +3660,13 @@ PyDataMem_NEW_ZEROED(size_t size, size_t elsize) result = calloc(size, elsize); if (_PyDataMem_eventhook != NULL) { - PyGILState_STATE gilstate = PyGILState_Ensure(); + NPY_ALLOW_C_API_DEF + NPY_ALLOW_C_API if (_PyDataMem_eventhook != NULL) { (*_PyDataMem_eventhook)(NULL, result, size * elsize, _PyDataMem_eventhook_user_data); } - PyGILState_Release(gilstate); + NPY_DISABLE_C_API } return result; } @@ -3676,12 +3679,13 @@ PyDataMem_FREE(void *ptr) { free(ptr); if (_PyDataMem_eventhook != NULL) { - PyGILState_STATE gilstate = PyGILState_Ensure(); + NPY_ALLOW_C_API_DEF + NPY_ALLOW_C_API if (_PyDataMem_eventhook != NULL) { (*_PyDataMem_eventhook)(ptr, NULL, 0, _PyDataMem_eventhook_user_data); } - PyGILState_Release(gilstate); + NPY_DISABLE_C_API } } @@ -3695,12 +3699,13 @@ PyDataMem_RENEW(void *ptr, size_t size) result = realloc(ptr, size); if (_PyDataMem_eventhook != NULL) { - PyGILState_STATE gilstate = PyGILState_Ensure(); + NPY_ALLOW_C_API_DEF + NPY_ALLOW_C_API if (_PyDataMem_eventhook != NULL) { (*_PyDataMem_eventhook)(ptr, result, size, _PyDataMem_eventhook_user_data); } - PyGILState_Release(gilstate); + NPY_DISABLE_C_API } return result; } diff --git a/numpy/core/src/multiarray/nditer_api.c b/numpy/core/src/multiarray/nditer_api.c index 905a19d55..d2c956426 100644 --- a/numpy/core/src/multiarray/nditer_api.c +++ b/numpy/core/src/multiarray/nditer_api.c @@ -1377,7 +1377,8 @@ NpyIter_DebugPrint(NpyIter *iter) NpyIter_AxisData *axisdata; npy_intp sizeof_axisdata; - PyGILState_STATE gilstate = PyGILState_Ensure(); + NPY_ALLOW_C_API_DEF + NPY_ALLOW_C_API printf("\n------ BEGIN ITERATOR DUMP ------\n"); printf("| Iterator Address: %p\n", (void *)iter); @@ -1598,7 +1599,7 @@ NpyIter_DebugPrint(NpyIter *iter) printf("------- END ITERATOR DUMP -------\n"); fflush(stdout); - PyGILState_Release(gilstate); + NPY_DISABLE_C_API } NPY_NO_EXPORT void diff --git a/numpy/linalg/lapack_lite/python_xerbla.c b/numpy/linalg/lapack_lite/python_xerbla.c index bc5d41f58..2296cc53f 100644 --- a/numpy/linalg/lapack_lite/python_xerbla.c +++ b/numpy/linalg/lapack_lite/python_xerbla.c @@ -26,16 +26,22 @@ int xerbla_(char *srname, integer *info) 6 for name, 4 for param. num. */ int len = 0; /* length of subroutine name*/ +#ifdef WITH_THREAD PyGILState_STATE save; +#endif while( len<6 && srname[len]!='\0' ) len++; while( len && srname[len-1]==' ' ) len--; - - PyOS_snprintf(buf, sizeof(buf), format, len, srname, *info); +#ifdef WITH_THREAD save = PyGILState_Ensure(); +#endif + PyOS_snprintf(buf, sizeof(buf), format, len, srname, *info); PyErr_SetString(PyExc_ValueError, buf); +#ifdef WITH_THREAD PyGILState_Release(save); +#endif + return 0; } |