summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Seidl <Ulrich.Seidl@muneda.com>2014-01-14 15:18:49 +0100
committerJulian Taylor <jtaylor.debian@googlemail.com>2014-01-16 21:47:56 +0100
commit13fbb675daf30be0771085b621b6934064203492 (patch)
treefa5b50bf4dbc26218dc6ce3a5ecbe94af6cfb47f
parent7f46687865db7b88c285ea12ccef43f4b7026a0d (diff)
downloadnumpy-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.h1
-rw-r--r--numpy/core/src/multiarray/multiarraymodule.c25
-rw-r--r--numpy/core/src/multiarray/nditer_api.c5
-rw-r--r--numpy/linalg/lapack_lite/python_xerbla.c10
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;
}