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)
This commit is contained in:
Anthony Baxter 2006-04-09 15:07:40 +00:00
parent a50794b620
commit 8220174489
7 changed files with 17 additions and 8 deletions

View File

@ -945,7 +945,6 @@ _expectations = {
test_cd test_cd
test_cl test_cl
test_curses test_curses
test_dl
test_gdbm test_gdbm
test_gl test_gl
test_imgfile test_imgfile

View File

@ -10,6 +10,7 @@ sharedlibs = [
('/usr/lib/libc.so', 'getpid'), ('/usr/lib/libc.so', 'getpid'),
('/lib/libc.so.6', 'getpid'), ('/lib/libc.so.6', 'getpid'),
('/usr/bin/cygwin1.dll', 'getpid'), ('/usr/bin/cygwin1.dll', 'getpid'),
('/usr/lib/libc.dylib', 'getpid'),
] ]
for s, func in sharedlibs: for s, func in sharedlibs:

View File

@ -478,6 +478,7 @@ Jean-Fran
Dan Pierson Dan Pierson
Martijn Pieters Martijn Pieters
François Pinard François Pinard
Zach Pincus
Michael Piotrowski Michael Piotrowski
Iustin Pop Iustin Pop
John Popplewell John Popplewell

View File

@ -12,6 +12,12 @@ What's New in Python 2.5 alpha 2?
Core and builtins 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 Extension Modules
----------------- -----------------

7
configure vendored
View File

@ -10819,7 +10819,7 @@ echo "${ECHO_T}$enable_toolbox_glue" >&6
case $ac_sys_system/$ac_sys_release in case $ac_sys_system/$ac_sys_release in
Darwin/[01234567].*) Darwin/[01567]\..*)
OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000" OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
;; ;;
Darwin/*) Darwin/*)
@ -10829,7 +10829,7 @@ esac
case $ac_sys_system/$ac_sys_release in case $ac_sys_system/$ac_sys_release in
Darwin/[01234567].*) Darwin/[01567]\..*)
LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`" LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`"
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
@ -13980,7 +13980,8 @@ then
;; ;;
BeOS*) DYNLOADFILE="dynload_beos.o";; BeOS*) DYNLOADFILE="dynload_beos.o";;
hp*|HP*) DYNLOADFILE="dynload_hpux.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";; atheos*) DYNLOADFILE="dynload_atheos.o";;
*) *)
# use dynload_shlib.c and dlopen() if we have it; otherwise stub # use dynload_shlib.c and dlopen() if we have it; otherwise stub

View File

@ -1259,7 +1259,7 @@ AC_MSG_RESULT($enable_toolbox_glue)
AC_SUBST(OTHER_LIBTOOL_OPT) AC_SUBST(OTHER_LIBTOOL_OPT)
case $ac_sys_system/$ac_sys_release in case $ac_sys_system/$ac_sys_release in
Darwin/@<:@01234567@:>@.*) Darwin/@<:@01567@:>@\..*)
OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000" OTHER_LIBTOOL_OPT="-prebind -seg1addr 0x10000000"
;; ;;
Darwin/*) Darwin/*)
@ -1269,7 +1269,7 @@ esac
AC_SUBST(LIBTOOL_CRUFT) AC_SUBST(LIBTOOL_CRUFT)
case $ac_sys_system/$ac_sys_release in case $ac_sys_system/$ac_sys_release in
Darwin/@<:@01234567@:>@.*) Darwin/@<:@01567@:>@\..*)
LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`" LIBTOOL_CRUFT="-framework System -lcc_dynamic -arch_only `arch`"
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -install_name $(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)'
LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';; LIBTOOL_CRUFT=$LIBTOOL_CRUFT' -compatibility_version $(VERSION) -current_version $(VERSION)';;
@ -2110,7 +2110,8 @@ then
;; ;;
BeOS*) DYNLOADFILE="dynload_beos.o";; BeOS*) DYNLOADFILE="dynload_beos.o";;
hp*|HP*) DYNLOADFILE="dynload_hpux.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";; atheos*) DYNLOADFILE="dynload_atheos.o";;
*) *)
# use dynload_shlib.c and dlopen() if we have it; otherwise stub # use dynload_shlib.c and dlopen() if we have it; otherwise stub

View File

@ -969,7 +969,7 @@ class PyBuildExt(build_ext):
if sys.maxint == 0x7fffffff: if sys.maxint == 0x7fffffff:
# This requires sizeof(int) == sizeof(long) == sizeof(char*) # This requires sizeof(int) == sizeof(long) == sizeof(char*)
dl_inc = find_file('dlfcn.h', [], inc_dirs) 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']) ) exts.append( Extension('dl', ['dlmodule.c']) )
# Thomas Heller's _ctypes module # Thomas Heller's _ctypes module