From 93227275dcf18196c1b81a3c884dbd2e78c8f440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Tue, 1 Jan 2002 20:18:30 +0000 Subject: Patch #497126: Always compile dl. --- Misc/ACKS | 1 + Misc/NEWS | 4 ++++ Modules/dlmodule.c | 14 +++++++------- setup.py | 5 +++++ 4 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Misc/ACKS b/Misc/ACKS index ead7ec8..861e226 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -312,6 +312,7 @@ Fredrik Nehr Chad Netzer Max Neunhöffer George Neville-Neil +Gustavo Niemeyer Oscar Nierstrasz Hrvoje Niksic Bill Noon diff --git a/Misc/NEWS b/Misc/NEWS index a0e3572..abdf400 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -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; diff --git a/setup.py b/setup.py index 28a1a7c..8af8bde 100644 --- a/setup.py +++ b/setup.py @@ -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 -- cgit v0.12