Index: configure.in =================================================================== --- configure.in (Revision 70541) +++ configure.in (Arbeitskopie) @@ -3766,6 +3766,61 @@ #endif ]) +### +# multiprocessing specific tests +AC_DEFINE(HAVE_BROKEN_SEM_UNLINK, 0, Define if 'sem_unlink' is broken on your platform) +AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 0, Define if 'sem_getvalue' is broken on your platform) + +AC_MSG_CHECKING(for sem_open) +AC_TRY_COMPILE([#include ], void *x=sem_open, + AC_DEFINE(HAVE_SEM_OPEN, 1, Define if you have the 'sem_open' function.) + AC_MSG_RESULT(yes), + AC_DEFINE(HAVE_SEM_OPEN, 0) + AC_MSG_RESULT(no) +) + +AC_MSG_CHECKING(for sem_timedwait) +AC_TRY_COMPILE([#include ], void *x=sem_timedwait, + AC_DEFINE(HAVE_SEM_TIMEDWAIT, 1, Define if you have the 'sem_timedwait' function.) + AC_MSG_RESULT(yes), + AC_DEFINE(HAVE_SEM_TIMEDWAIT, 0) + AC_MSG_RESULT(no) +) + +AC_MSG_CHECKING(for sendmsg (fd transfer)) +AC_TRY_COMPILE([#include ], + void *x; size_t s; struct msghdr msg; struct cmsghdr *cmsg; + x=sendmsg; + s = CMSG_SPACE(CMSG_LEN(sizeof(int))); + cmsg = CMSG_FIRSTHDR(&msg); + , + AC_DEFINE(HAVE_FD_TRANSFER, 1, Define if you have the 'sendmsg' function for fd transfer.) + AC_MSG_RESULT(yes), + AC_DEFINE(HAVE_FD_TRANSFER, 0.) + AC_MSG_RESULT(no) +) + +case $ac_sys_system/$ac_sys_release in + FreeBSD/4.*|FreeBSD/5.*|FreeBSD/6.*|FreeBSD/7.*|FreeBSD/8.*) + # FreeBSD's P1003.1b semaphore support is very experimental + # and has many known problems. (as of June 2008) + AC_DEFINE(HAVE_SEM_OPEN, 0) + AC_DEFINE(HAVE_SEM_TIMEDWAIT, 0) + ;; +esac + +case $ac_sys_system in + CYGWIN*) + AC_DEFINE(HAVE_BROKEN_SEM_UNLINK, 1) + ;; + Darwin*) + AC_DEFINE(HAVE_BROKEN_SEM_GETVALUE, 1) + ;; +esac + +# end of multiprocessing +### + AC_SUBST(THREADHEADERS) for h in `(cd $srcdir;echo Python/thread_*.h)` Index: setup.py =================================================================== --- setup.py (Revision 70541) +++ setup.py (Arbeitskopie) @@ -1246,19 +1246,19 @@ elif platform == 'darwin': # Mac OSX macros = dict( - HAVE_SEM_OPEN=1, - HAVE_SEM_TIMEDWAIT=0, - HAVE_FD_TRANSFER=1, - HAVE_BROKEN_SEM_GETVALUE=1 + # HAVE_SEM_OPEN=1, + # HAVE_SEM_TIMEDWAIT=0, + # HAVE_FD_TRANSFER=1, + # HAVE_BROKEN_SEM_GETVALUE=1 ) libraries = [] elif platform == 'cygwin': # Cygwin macros = dict( - HAVE_SEM_OPEN=1, - HAVE_SEM_TIMEDWAIT=1, - HAVE_FD_TRANSFER=0, - HAVE_BROKEN_SEM_UNLINK=1 + # HAVE_SEM_OPEN=1, + # HAVE_SEM_TIMEDWAIT=1, + # HAVE_FD_TRANSFER=0, + # HAVE_BROKEN_SEM_UNLINK=1 ) libraries = [] @@ -1266,25 +1266,25 @@ # FreeBSD's P1003.1b semaphore support is very experimental # and has many known problems. (as of June 2008) macros = dict( # FreeBSD - HAVE_SEM_OPEN=0, - HAVE_SEM_TIMEDWAIT=0, - HAVE_FD_TRANSFER=1, + # HAVE_SEM_OPEN=0, + # HAVE_SEM_TIMEDWAIT=0, + # HAVE_FD_TRANSFER=1, ) libraries = [] elif platform.startswith('openbsd'): macros = dict( # OpenBSD - HAVE_SEM_OPEN=0, # Not implemented - HAVE_SEM_TIMEDWAIT=0, - HAVE_FD_TRANSFER=1, + # HAVE_SEM_OPEN=0, # Not implemented + # HAVE_SEM_TIMEDWAIT=0, + # HAVE_FD_TRANSFER=1, ) libraries = [] else: # Linux and other unices macros = dict( - HAVE_SEM_OPEN=1, - HAVE_SEM_TIMEDWAIT=1, - HAVE_FD_TRANSFER=1 + # HAVE_SEM_OPEN=1, + # HAVE_SEM_TIMEDWAIT=1, + # HAVE_FD_TRANSFER=1 ) libraries = ['rt'] @@ -1301,7 +1301,7 @@ '_multiprocessing/socket_connection.c' ] - if macros.get('HAVE_SEM_OPEN', False): + if sysconfig.get_config_var("HAVE_SEM_OPEN"): multiprocessing_srcs.append('_multiprocessing/semaphore.c') if sysconfig.get_config_var('WITH_THREAD'):