diff options
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 4 | ||||
-rw-r--r-- | Modules/dlmodule.c | 14 | ||||
-rw-r--r-- | setup.py | 5 |
4 files changed, 17 insertions, 7 deletions
@@ -312,6 +312,7 @@ Fredrik Nehr Chad Netzer Max Neunhöffer George Neville-Neil +Gustavo Niemeyer Oscar Nierstrasz Hrvoje Niksic Bill Noon @@ -12,6 +12,10 @@ Core and builtins Extension modules +- dl is now build on every system that has dlfcn.h. Failure in case + of sizeof(int)!=sizeof(long)!=sizeof(void*) is delayed until dl.open + is called. + Library - ftplib: to safeguard the user's privacy, anonymous login will use diff --git a/Modules/dlmodule.c b/Modules/dlmodule.c index 18b97d8..46ae926 100644 --- a/Modules/dlmodule.c +++ b/Modules/dlmodule.c @@ -158,6 +158,13 @@ dl_open(PyObject *self, PyObject *args) char *name; int mode; PyUnivPtr *handle; + if (sizeof(int) != sizeof(long) || + sizeof(long) != sizeof(char *)) { + PyErr_SetString(PyExc_SystemError, + "module dl requires sizeof(int) == sizeof(long) == sizeof(char*)"); + return NULL; + } + if (PyArg_Parse(args, "z", &name)) mode = RTLD_LAZY; else { @@ -204,13 +211,6 @@ initdl(void) { PyObject *m, *d, *x; - if (sizeof(int) != sizeof(long) || - sizeof(long) != sizeof(char *)) { - PyErr_SetString(PyExc_SystemError, - "module dl requires sizeof(int) == sizeof(long) == sizeof(char*)"); - return; - } - /* Initialize object type */ Dltype.ob_type = &PyType_Type; @@ -567,6 +567,11 @@ class PyBuildExt(build_ext): define_macros = expat_defs, libraries = ['expat']) ) + # Dynamic loading module + dl_inc = find_file('dlfcn.h', [], inc_dirs) + if dl_inc is not None: + exts.append( Extension('dl', ['dlmodule.c']) ) + # Platform-specific libraries if platform == 'linux2': # Linux-specific modules |