aboutsummaryrefslogtreecommitdiff
path: root/lang
diff options
context:
space:
mode:
authorBruce M Simpson <bms@FreeBSD.org>2009-03-14 09:33:40 +0000
committerBruce M Simpson <bms@FreeBSD.org>2009-03-14 09:33:40 +0000
commita95007e2081d3b2f6008a3503c1eca7a498228ad (patch)
treefb4598bc96030320e8e3409e74d0136444ce9ba6 /lang
parent2276468d00fe1fab54bd609dc8d86178b7e98b5e (diff)
downloadports-a95007e2081d3b2f6008a3503c1eca7a498228ad.tar.gz
ports-a95007e2081d3b2f6008a3503c1eca7a498228ad.zip
Notes
Diffstat (limited to 'lang')
-rw-r--r--lang/python26/Makefile31
-rw-r--r--lang/python26/files/extra-patch-configure-pth12
-rw-r--r--lang/python26/files/extra-patch-setup.py26
-rw-r--r--lang/python26/files/patch-Lib_test_test_threading.py11
-rw-r--r--lang/python26/files/patch-Python_thread__pthread.h41
-rw-r--r--lang/python26/files/pkg-message.in18
-rw-r--r--lang/python26/pkg-message11
-rw-r--r--lang/python27/Makefile31
-rw-r--r--lang/python27/files/extra-patch-configure-pth12
-rw-r--r--lang/python27/files/extra-patch-setup.py26
-rw-r--r--lang/python27/files/patch-Lib_test_test_threading.py11
-rw-r--r--lang/python27/files/patch-Python_thread__pthread.h41
-rw-r--r--lang/python27/files/pkg-message.in18
-rw-r--r--lang/python27/pkg-message11
14 files changed, 258 insertions, 42 deletions
diff --git a/lang/python26/Makefile b/lang/python26/Makefile
index 994c6838c28a..f1c4fd4179c2 100644
--- a/lang/python26/Makefile
+++ b/lang/python26/Makefile
@@ -50,6 +50,8 @@ BINLINKS_SUB= -e 's,smtpd,smtpd${PYTHON_VER},' \
OPTIONS= THREADS "Enable thread support" on \
HUGE_STACK_SIZE "Use a larger thread stack" off \
+ SEM "Use POSIX semaphores (experimental)" off \
+ PTH "Use GNU Pth for threading/multiprocessing" off \
UCS4 "Use UCS4 for unicode support" on \
PYMALLOC "Use python's internal malloc" on \
IPV6 "Enable IPv6 support" on \
@@ -57,6 +59,21 @@ OPTIONS= THREADS "Enable thread support" on \
.include <bsd.port.pre.mk>
+.if defined(WITH_SEM)
+.if ${OSVERSION} >= 701106
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-setup.py
+SEM_MSG= ""
+.else
+IGNORE= POSIX semaphore support only works in FreeBSD 7-STABLE and later
+.
+.endif # ${OSVERSION} >= 701106
+.else # !defined(WITH_SEM)
+SEM_MSG= "@comment "
+.endif # defined(WITH_SEM)
+
+SUB_FILES= pkg-message
+SUB_LIST= SEM=${SEM_MSG}
+
.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION}
MLINKS= ${PYTHON_VERSION}.1 python.1
PLIST_SUB+= IF_DEFAULT=""
@@ -68,15 +85,25 @@ PLIST_SUB+= IF_DEFAULT="@comment "
CFLAGS+= -D__wchar_t=wchar_t
.if !defined(WITHOUT_THREADS)
+.if defined(WITH_PTH)
+CONFIGURE_ARGS+= --with-pth
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-configure-pth
+LIB_DEPENDS+= pth:${PORTSDIR}/devel/pth
+_PTH_CPPFLAGS= "-I${LOCALBASE}/include/pth"
+_PTH_LDFLAGS= "-L${LOCALBASE}/lib/pth"
+CONFIGURE_ENV+= CPPFLAGS="${_PTH_CPPFLAGS} ${CPPFLAGS}"
+CONFIGURE_ENV+= LDFLAGS="${_PTH_LDFLAGS} ${LDFLAGS}"
+.else # !defined(WITH_PTH)
CONFIGURE_ARGS+= --with-threads
CFLAGS+= ${PTHREAD_CFLAGS}
+CONFIGURE_ENV+= LDFLAGS="${PTHREAD_LIBS} ${LDFLAGS}"
+.endif # defined(WITH_PTH)
.if defined(WITHOUT_HUGE_STACK_SIZE)
CFLAGS+= -DTHREAD_STACK_SIZE=0x20000
.else
CFLAGS+= -DTHREAD_STACK_SIZE=0x100000
.endif # defined(WITHOUT_HUGE_STACK_SIZE)
-CONFIGURE_ENV+= LDFLAGS="${PTHREAD_LIBS} ${LDFLAGS}"
-.else
+.else # defined(WITHOUT_THREADS)
CONFIGURE_ARGS+= --without-threads
.if defined(LDFLAGS)
CONFIGURE_ENV+= LDFLAGS="${LDFLAGS}"
diff --git a/lang/python26/files/extra-patch-configure-pth b/lang/python26/files/extra-patch-configure-pth
new file mode 100644
index 000000000000..dca00011cac4
--- /dev/null
+++ b/lang/python26/files/extra-patch-configure-pth
@@ -0,0 +1,12 @@
+--- configure.orig 2009-03-12 14:16:24.000000000 +0000
++++ configure 2009-03-12 14:17:16.000000000 +0000
+@@ -5230,6 +5230,9 @@
+ CC="$ac_save_cc"
+ fi
+
++# XXX Explicitly disable system pthread libraries.
++ac_cv_pthread=no
++
+ { echo "$as_me:$LINENO: result: $ac_cv_pthread" >&5
+ echo "${ECHO_T}$ac_cv_pthread" >&6; }
+ fi
diff --git a/lang/python26/files/extra-patch-setup.py b/lang/python26/files/extra-patch-setup.py
new file mode 100644
index 000000000000..109f7841adfa
--- /dev/null
+++ b/lang/python26/files/extra-patch-setup.py
@@ -0,0 +1,26 @@
+--- setup.py.1 2009-03-12 04:07:36.000000000 +0000
++++ setup.py 2009-03-12 04:08:36.000000000 +0000
+@@ -1265,13 +1265,21 @@
+ )
+ libraries = []
+
+- elif platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8'):
++ elif platform in ('freebsd4', 'freebsd5', 'freebsd6'):
+ # FreeBSD's P1003.1b semaphore support is very experimental
+ # and has many known problems. (as of June 2008)
+- macros = dict( # FreeBSD
++ macros = dict( # FreeBSD 4-6
+ HAVE_SEM_OPEN=0,
+ HAVE_SEM_TIMEDWAIT=0,
+ HAVE_FD_TRANSFER=1,
++ )
++ libraries = []
++
++ elif platform in ('freebsd7', 'freebsd8'):
++ macros = dict( # FreeBSD 7+
++ HAVE_SEM_OPEN=1,
++ HAVE_SEM_TIMEDWAIT=1,
++ HAVE_FD_TRANSFER=1,
+ )
+ libraries = []
+
diff --git a/lang/python26/files/patch-Lib_test_test_threading.py b/lang/python26/files/patch-Lib_test_test_threading.py
new file mode 100644
index 000000000000..011ae85349a4
--- /dev/null
+++ b/lang/python26/files/patch-Lib_test_test_threading.py
@@ -0,0 +1,11 @@
+--- Lib/test/test_threading.py.bak 2009-03-12 07:59:17.000000000 +0000
++++ Lib/test/test_threading.py 2009-03-12 10:48:04.000000000 +0000
+@@ -382,7 +382,7 @@
+ return
+ # Skip platforms with known problems forking from a worker thread.
+ # See http://bugs.python.org/issue3863.
+- if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'os2emx'):
++ if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8', 'os2emx'):
+ print >>sys.stderr, ('Skipping test_3_join_in_forked_from_thread'
+ ' due to known OS bugs on'), sys.platform
+ return
diff --git a/lang/python26/files/patch-Python_thread__pthread.h b/lang/python26/files/patch-Python_thread__pthread.h
index 1f4478528024..cde868cd8826 100644
--- a/lang/python26/files/patch-Python_thread__pthread.h
+++ b/lang/python26/files/patch-Python_thread__pthread.h
@@ -1,9 +1,34 @@
-
-$FreeBSD$
-
---- Python/thread_pthread.h
-+++ Python/thread_pthread.h
-@@ -149,6 +149,7 @@
+--- Python/thread_pthread.h.orig 2006-06-13 16:04:24.000000000 +0100
++++ Python/thread_pthread.h 2009-03-12 10:55:49.000000000 +0000
+@@ -26,13 +26,18 @@
+ #endif
+ #endif
+
++#ifdef __FreeBSD__
++#include <osreldate.h>
++#endif
++
+ /* The POSIX spec says that implementations supporting the sem_*
+ family of functions must indicate this by defining
+ _POSIX_SEMAPHORES. */
+ #ifdef _POSIX_SEMAPHORES
+ /* On FreeBSD 4.x, _POSIX_SEMAPHORES is defined empty, so
+ we need to add 0 to make it work there as well. */
+-#if (_POSIX_SEMAPHORES+0) == -1
++#if defined(__FreeBSD__) && __FreeBSD_version < 701104 && \
++ (_POSIX_SEMAPHORES+0) == -1
+ #define HAVE_BROKEN_POSIX_SEMAPHORES
+ #else
+ #include <semaphore.h>
+@@ -44,7 +49,6 @@
+ in default setting. So the process scope is preferred to get
+ enough number of threads to work. */
+ #ifdef __FreeBSD__
+-#include <osreldate.h>
+ #if __FreeBSD_version >= 500000 && __FreeBSD_version < 504101
+ #undef PTHREAD_SYSTEM_SCHED_SUPPORTED
+ #endif
+@@ -149,6 +153,7 @@
{
pthread_t th;
int status;
@@ -11,7 +36,7 @@ $FreeBSD$
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_t attrs;
#endif
-@@ -177,6 +178,8 @@
+@@ -177,6 +182,8 @@
#if defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
#endif
@@ -20,7 +45,7 @@ $FreeBSD$
status = pthread_create(&th,
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
-@@ -188,6 +191,7 @@
+@@ -188,6 +195,7 @@
(void *)arg
);
diff --git a/lang/python26/files/pkg-message.in b/lang/python26/files/pkg-message.in
new file mode 100644
index 000000000000..7f65e4d4ea80
--- /dev/null
+++ b/lang/python26/files/pkg-message.in
@@ -0,0 +1,18 @@
+====
+Note that some of the standard modules are provided as separate
+ports since they require extra dependencies:
+
+bsddb databases/py-bsddb
+gdbm databases/py-gdbm
+sqlite3 databases/py-sqlite3
+tkinter x11-toolkits/py-tkinter
+
+Install them as needed.
+====
+%%SEM%%--------------------------------------------------------
+%%SEM%%This package was built with the experimental POSIX
+%%SEM%%semaphore support. Please ensure that the kernel on the
+%%SEM%%system where you deploy this package is either compiled
+%%SEM%%with 'option P1003_1B_SEMAPHORES', or has the sem.ko
+%%SEM%%kernel module loaded.
+%%SEM%%--------------------------------------------------------
diff --git a/lang/python26/pkg-message b/lang/python26/pkg-message
deleted file mode 100644
index a3ba9904996b..000000000000
--- a/lang/python26/pkg-message
+++ /dev/null
@@ -1,11 +0,0 @@
-====
-Note that some of the standard modules are provided as separate
-ports since they require extra dependencies:
-
-bsddb databases/py-bsddb
-gdbm databases/py-gdbm
-sqlite3 databases/py-sqlite3
-tkinter x11-toolkits/py-tkinter
-
-Install them as needed.
-====
diff --git a/lang/python27/Makefile b/lang/python27/Makefile
index 994c6838c28a..f1c4fd4179c2 100644
--- a/lang/python27/Makefile
+++ b/lang/python27/Makefile
@@ -50,6 +50,8 @@ BINLINKS_SUB= -e 's,smtpd,smtpd${PYTHON_VER},' \
OPTIONS= THREADS "Enable thread support" on \
HUGE_STACK_SIZE "Use a larger thread stack" off \
+ SEM "Use POSIX semaphores (experimental)" off \
+ PTH "Use GNU Pth for threading/multiprocessing" off \
UCS4 "Use UCS4 for unicode support" on \
PYMALLOC "Use python's internal malloc" on \
IPV6 "Enable IPv6 support" on \
@@ -57,6 +59,21 @@ OPTIONS= THREADS "Enable thread support" on \
.include <bsd.port.pre.mk>
+.if defined(WITH_SEM)
+.if ${OSVERSION} >= 701106
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-setup.py
+SEM_MSG= ""
+.else
+IGNORE= POSIX semaphore support only works in FreeBSD 7-STABLE and later
+.
+.endif # ${OSVERSION} >= 701106
+.else # !defined(WITH_SEM)
+SEM_MSG= "@comment "
+.endif # defined(WITH_SEM)
+
+SUB_FILES= pkg-message
+SUB_LIST= SEM=${SEM_MSG}
+
.if ${PYTHON_VERSION} == ${PYTHON_DEFAULT_VERSION}
MLINKS= ${PYTHON_VERSION}.1 python.1
PLIST_SUB+= IF_DEFAULT=""
@@ -68,15 +85,25 @@ PLIST_SUB+= IF_DEFAULT="@comment "
CFLAGS+= -D__wchar_t=wchar_t
.if !defined(WITHOUT_THREADS)
+.if defined(WITH_PTH)
+CONFIGURE_ARGS+= --with-pth
+EXTRA_PATCHES+= ${PATCHDIR}/extra-patch-configure-pth
+LIB_DEPENDS+= pth:${PORTSDIR}/devel/pth
+_PTH_CPPFLAGS= "-I${LOCALBASE}/include/pth"
+_PTH_LDFLAGS= "-L${LOCALBASE}/lib/pth"
+CONFIGURE_ENV+= CPPFLAGS="${_PTH_CPPFLAGS} ${CPPFLAGS}"
+CONFIGURE_ENV+= LDFLAGS="${_PTH_LDFLAGS} ${LDFLAGS}"
+.else # !defined(WITH_PTH)
CONFIGURE_ARGS+= --with-threads
CFLAGS+= ${PTHREAD_CFLAGS}
+CONFIGURE_ENV+= LDFLAGS="${PTHREAD_LIBS} ${LDFLAGS}"
+.endif # defined(WITH_PTH)
.if defined(WITHOUT_HUGE_STACK_SIZE)
CFLAGS+= -DTHREAD_STACK_SIZE=0x20000
.else
CFLAGS+= -DTHREAD_STACK_SIZE=0x100000
.endif # defined(WITHOUT_HUGE_STACK_SIZE)
-CONFIGURE_ENV+= LDFLAGS="${PTHREAD_LIBS} ${LDFLAGS}"
-.else
+.else # defined(WITHOUT_THREADS)
CONFIGURE_ARGS+= --without-threads
.if defined(LDFLAGS)
CONFIGURE_ENV+= LDFLAGS="${LDFLAGS}"
diff --git a/lang/python27/files/extra-patch-configure-pth b/lang/python27/files/extra-patch-configure-pth
new file mode 100644
index 000000000000..dca00011cac4
--- /dev/null
+++ b/lang/python27/files/extra-patch-configure-pth
@@ -0,0 +1,12 @@
+--- configure.orig 2009-03-12 14:16:24.000000000 +0000
++++ configure 2009-03-12 14:17:16.000000000 +0000
+@@ -5230,6 +5230,9 @@
+ CC="$ac_save_cc"
+ fi
+
++# XXX Explicitly disable system pthread libraries.
++ac_cv_pthread=no
++
+ { echo "$as_me:$LINENO: result: $ac_cv_pthread" >&5
+ echo "${ECHO_T}$ac_cv_pthread" >&6; }
+ fi
diff --git a/lang/python27/files/extra-patch-setup.py b/lang/python27/files/extra-patch-setup.py
new file mode 100644
index 000000000000..109f7841adfa
--- /dev/null
+++ b/lang/python27/files/extra-patch-setup.py
@@ -0,0 +1,26 @@
+--- setup.py.1 2009-03-12 04:07:36.000000000 +0000
++++ setup.py 2009-03-12 04:08:36.000000000 +0000
+@@ -1265,13 +1265,21 @@
+ )
+ libraries = []
+
+- elif platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8'):
++ elif platform in ('freebsd4', 'freebsd5', 'freebsd6'):
+ # FreeBSD's P1003.1b semaphore support is very experimental
+ # and has many known problems. (as of June 2008)
+- macros = dict( # FreeBSD
++ macros = dict( # FreeBSD 4-6
+ HAVE_SEM_OPEN=0,
+ HAVE_SEM_TIMEDWAIT=0,
+ HAVE_FD_TRANSFER=1,
++ )
++ libraries = []
++
++ elif platform in ('freebsd7', 'freebsd8'):
++ macros = dict( # FreeBSD 7+
++ HAVE_SEM_OPEN=1,
++ HAVE_SEM_TIMEDWAIT=1,
++ HAVE_FD_TRANSFER=1,
+ )
+ libraries = []
+
diff --git a/lang/python27/files/patch-Lib_test_test_threading.py b/lang/python27/files/patch-Lib_test_test_threading.py
new file mode 100644
index 000000000000..011ae85349a4
--- /dev/null
+++ b/lang/python27/files/patch-Lib_test_test_threading.py
@@ -0,0 +1,11 @@
+--- Lib/test/test_threading.py.bak 2009-03-12 07:59:17.000000000 +0000
++++ Lib/test/test_threading.py 2009-03-12 10:48:04.000000000 +0000
+@@ -382,7 +382,7 @@
+ return
+ # Skip platforms with known problems forking from a worker thread.
+ # See http://bugs.python.org/issue3863.
+- if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'os2emx'):
++ if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8', 'os2emx'):
+ print >>sys.stderr, ('Skipping test_3_join_in_forked_from_thread'
+ ' due to known OS bugs on'), sys.platform
+ return
diff --git a/lang/python27/files/patch-Python_thread__pthread.h b/lang/python27/files/patch-Python_thread__pthread.h
index 1f4478528024..cde868cd8826 100644
--- a/lang/python27/files/patch-Python_thread__pthread.h
+++ b/lang/python27/files/patch-Python_thread__pthread.h
@@ -1,9 +1,34 @@
-
-$FreeBSD$
-
---- Python/thread_pthread.h
-+++ Python/thread_pthread.h
-@@ -149,6 +149,7 @@
+--- Python/thread_pthread.h.orig 2006-06-13 16:04:24.000000000 +0100
++++ Python/thread_pthread.h 2009-03-12 10:55:49.000000000 +0000
+@@ -26,13 +26,18 @@
+ #endif
+ #endif
+
++#ifdef __FreeBSD__
++#include <osreldate.h>
++#endif
++
+ /* The POSIX spec says that implementations supporting the sem_*
+ family of functions must indicate this by defining
+ _POSIX_SEMAPHORES. */
+ #ifdef _POSIX_SEMAPHORES
+ /* On FreeBSD 4.x, _POSIX_SEMAPHORES is defined empty, so
+ we need to add 0 to make it work there as well. */
+-#if (_POSIX_SEMAPHORES+0) == -1
++#if defined(__FreeBSD__) && __FreeBSD_version < 701104 && \
++ (_POSIX_SEMAPHORES+0) == -1
+ #define HAVE_BROKEN_POSIX_SEMAPHORES
+ #else
+ #include <semaphore.h>
+@@ -44,7 +49,6 @@
+ in default setting. So the process scope is preferred to get
+ enough number of threads to work. */
+ #ifdef __FreeBSD__
+-#include <osreldate.h>
+ #if __FreeBSD_version >= 500000 && __FreeBSD_version < 504101
+ #undef PTHREAD_SYSTEM_SCHED_SUPPORTED
+ #endif
+@@ -149,6 +153,7 @@
{
pthread_t th;
int status;
@@ -11,7 +36,7 @@ $FreeBSD$
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_t attrs;
#endif
-@@ -177,6 +178,8 @@
+@@ -177,6 +182,8 @@
#if defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
#endif
@@ -20,7 +45,7 @@ $FreeBSD$
status = pthread_create(&th,
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
-@@ -188,6 +191,7 @@
+@@ -188,6 +195,7 @@
(void *)arg
);
diff --git a/lang/python27/files/pkg-message.in b/lang/python27/files/pkg-message.in
new file mode 100644
index 000000000000..7f65e4d4ea80
--- /dev/null
+++ b/lang/python27/files/pkg-message.in
@@ -0,0 +1,18 @@
+====
+Note that some of the standard modules are provided as separate
+ports since they require extra dependencies:
+
+bsddb databases/py-bsddb
+gdbm databases/py-gdbm
+sqlite3 databases/py-sqlite3
+tkinter x11-toolkits/py-tkinter
+
+Install them as needed.
+====
+%%SEM%%--------------------------------------------------------
+%%SEM%%This package was built with the experimental POSIX
+%%SEM%%semaphore support. Please ensure that the kernel on the
+%%SEM%%system where you deploy this package is either compiled
+%%SEM%%with 'option P1003_1B_SEMAPHORES', or has the sem.ko
+%%SEM%%kernel module loaded.
+%%SEM%%--------------------------------------------------------
diff --git a/lang/python27/pkg-message b/lang/python27/pkg-message
deleted file mode 100644
index a3ba9904996b..000000000000
--- a/lang/python27/pkg-message
+++ /dev/null
@@ -1,11 +0,0 @@
-====
-Note that some of the standard modules are provided as separate
-ports since they require extra dependencies:
-
-bsddb databases/py-bsddb
-gdbm databases/py-gdbm
-sqlite3 databases/py-sqlite3
-tkinter x11-toolkits/py-tkinter
-
-Install them as needed.
-====