FreeBSD porting fixes, patch by maho@openoffice.org --- Python-3.3.0/configure 2012-11-28 09:00:41.094955090 +0000 +++ Python-3.3.0/configure 2012-11-28 09:01:13.033329526 +0000 @@ -5545,11 +5545,6 @@ LDLIBRARY='libpython$(LDVERSION).so' BLDLIBRARY='-L. -lpython$(LDVERSION)' RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH} - case $ac_sys_system in - FreeBSD*) - SOVERSION=`echo $SOVERSION|cut -d "." -f 1` - ;; - esac INSTSONAME="$LDLIBRARY".$SOVERSION if test "$with_pydebug" != yes then --- Python-3.3.0/Lib/test/test_threading.py 2012-11-28 09:00:41.292957412 +0000 +++ Python-3.3.0/Lib/test/test_threading.py 2012-11-28 09:01:13.017329339 +0000 @@ -451,7 +451,7 @@ # #12316 and #11870), and fork() from a worker thread is known to trigger # problems with some operating systems (issue #3863): skip problematic tests # on platforms known to behave badly. - platforms_to_skip = ('freebsd4', 'freebsd5', 'freebsd6', 'netbsd5', + platforms_to_skip = ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'netbsd5', 'os2emx', 'hp-ux11') def _run_and_join(self, script): --- Python-3.3.0/Python/thread_pthread.h 2012-11-28 09:00:41.097955124 +0000 +++ Python-3.3.0/Python/thread_pthread.h 2012-11-28 09:01:13.018329351 +0000 @@ -42,6 +42,10 @@ #endif #endif +#ifdef __FreeBSD__ +#include +#endif + /* The POSIX spec says that implementations supporting the sem_* family of functions must indicate this by defining _POSIX_SEMAPHORES. */ @@ -60,7 +64,6 @@ in default setting. So the process scope is preferred to get enough number of threads to work. */ #ifdef __FreeBSD__ -#include #if __FreeBSD_version >= 500000 && __FreeBSD_version < 504101 #undef PTHREAD_SYSTEM_SCHED_SUPPORTED #endif @@ -186,6 +189,9 @@ { pthread_t th; int status; +#ifdef __FreeBSD__ + sigset_t set, oset; +#endif #if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED) pthread_attr_t attrs; #endif @@ -214,7 +220,10 @@ #if defined(PTHREAD_SYSTEM_SCHED_SUPPORTED) pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM); #endif - +#ifdef __FreeBSD__ + sigfillset(&set); + SET_THREAD_SIGMASK(SIG_BLOCK, &set, &oset); +#endif status = pthread_create(&th, #if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED) &attrs, @@ -225,6 +234,9 @@ (void *)arg ); +#ifdef __FreeBSD__ + SET_THREAD_SIGMASK(SIG_SETMASK, &oset, NULL); +#endif #if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED) pthread_attr_destroy(&attrs); #endif