From 8220174489e3f28b874b3b45516585c30e5999da Mon Sep 17 00:00:00 2001 From: Anthony Baxter Date: Sun, 9 Apr 2006 15:07:40 +0000 Subject: [PATCH] Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) to load extension modules and now provides the dl module. As a result, sys.setdlopenflags() now works correctly on these systems. (SF patch #1454844) --- Lib/test/regrtest.py | 1 - Lib/test/test_dl.py | 1 + Misc/ACKS | 1 + Misc/NEWS | 6 ++++++ configure | 7 ++++--- configure.in | 7 ++++--- setup.py | 2 +- 7 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 11090867507..224a2a09dc3 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -945,7 +945,6 @@ _expectations = { test_cd test_cl test_curses - test_dl test_gdbm test_gl test_imgfile diff --git a/Lib/test/test_dl.py b/Lib/test/test_dl.py index d1f73b2e04c..b70a4cfee24 100755 --- a/Lib/test/test_dl.py +++ b/Lib/test/test_dl.py @@ -10,6 +10,7 @@ sharedlibs = [ ('/usr/lib/libc.so', 'getpid'), ('/lib/libc.so.6', 'getpid'), ('/usr/bin/cygwin1.dll', 'getpid'), + ('/usr/lib/libc.dylib', 'getpid'), ] for s, func in sharedlibs: diff --git a/Misc/ACKS b/Misc/ACKS index 04b6c77105c..a824a869e11 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -478,6 +478,7 @@ Jean-Fran Dan Pierson Martijn Pieters François Pinard +Zach Pincus Michael Piotrowski Iustin Pop John Popplewell diff --git a/Misc/NEWS b/Misc/NEWS index b7f46ba1343..0a26e91fc96 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,12 @@ What's New in Python 2.5 alpha 2? Core and builtins ----------------- +- Python on OS X 10.3 and above now uses dlopen() (via dynload_shlib.c) + to load extension modules and now provides the dl module. As a result, + sys.setdlopenflags() now works correctly on these systems. (SF patch + #1454844) + + Extension Modules ----------------- diff --git a/configure b/configure index e65c85b4eee..f8183f2c6c4 100755 --- a/configure +++ b/configure @@ -10819,7 +10819,7 @@ echo "${ECHO_T}$enable_toolbox_glue" >&6 case $ac_sys_system/$ac_sys_release in - Darwin/[01234567].*) + Darwin/[01567]\..*) OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000" ;; Darwin/*) @@ -10829,7 +10829,7 @@ esac case $ac_sys_system/$ac_sys_release in - Darwin/[01234567].*) + Darwin/[01567]\..*) LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`" LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; @@ -13980,7 +13980,8 @@ then ;; BeOS*) DYNLOADFILE="dynload_beos.o";; hp*|HP*) DYNLOADFILE="dynload_hpux.o";; - Darwin/*) DYNLOADFILE="dynload_next.o";; + # Use dynload_next.c only on 10.2 and below, which don't have native dlopen() + Darwin/[0156]\..*) DYNLOADFILE="dynload_next.o";; atheos*) DYNLOADFILE="dynload_atheos.o";; *) # use dynload_shlib.c and dlopen() if we have it; otherwise stub diff --git a/configure.in b/configure.in index 2f4df3f2126..612d2fa91b3 100644 --- a/configure.in +++ b/configure.in @@ -1259,7 +1259,7 @@ AC_MSG_RESULT($enable_toolbox_glue) AC_SUBST(OTHER_LIBTOOL_OPT) case $ac_sys_system/$ac_sys_release in - Darwin/@<:@01234567@:>@.*) + Darwin/@<:@01567@:>@\..*) OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000" ;; Darwin/*) @@ -1269,7 +1269,7 @@ esac AC_SUBST(LIBTOOL_CRUFT) case $ac_sys_system/$ac_sys_release in - Darwin/@<:@01234567@:>@.*) + Darwin/@<:@01567@:>@\..*) LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`" LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; @@ -2110,7 +2110,8 @@ then ;; BeOS*) DYNLOADFILE="dynload_beos.o";; hp*|HP*) DYNLOADFILE="dynload_hpux.o";; - Darwin/*) DYNLOADFILE="dynload_next.o";; + # Use dynload_next.c only on 10.2 and below, which don't have native dlopen() + Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";; atheos*) DYNLOADFILE="dynload_atheos.o";; *) # use dynload_shlib.c and dlopen() if we have it; otherwise stub diff --git a/setup.py b/setup.py index 065a1158789..eea9ee8aad8 100644 --- a/setup.py +++ b/setup.py @@ -969,7 +969,7 @@ class PyBuildExt(build_ext): if sys.maxint == 0x7fffffff: # This requires sizeof(int) == sizeof(long) == sizeof(char*) dl_inc = find_file('dlfcn.h', [], inc_dirs) - if (dl_inc is not None) and (platform not in ['atheos', 'darwin']): + if (dl_inc is not None) and (platform not in ['atheos']): exts.append( Extension('dl', ['dlmodule.c']) ) # Thomas Heller's _ctypes module