python: bump to 2.7.16 and 3.7.3.

remove old recipes and patches.
This commit is contained in:
Jerome Duval
2019-04-30 20:19:48 +02:00
parent 3257c8065b
commit 090cc6a8c5
18 changed files with 93 additions and 5606 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
From 3b7516a223d3d346e9d4f81238daf7ff0574f2b7 Mon Sep 17 00:00:00 2001
From f30d4b172ebf8ec7d8db600b2ad041cc3a8c58e7 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Wed, 12 Mar 2014 21:17:06 +0000
Subject: initial Haiku patch
@@ -465,10 +465,10 @@ index 0000000..d9da80c
+set -v
+python $H2PY -i '(u_long)' $HEADERS/posix/netinet/in.h
diff --git a/Lib/test/test_fileio.py b/Lib/test/test_fileio.py
index 2825a87..26ca80f 100644
index 57c9f14..54a7ce8 100644
--- a/Lib/test/test_fileio.py
+++ b/Lib/test/test_fileio.py
@@ -308,6 +308,7 @@ class OtherFileTests(unittest.TestCase):
@@ -312,6 +312,7 @@ class OtherFileTests(unittest.TestCase):
self.assertEqual(f.writable(), True)
if sys.platform != "darwin" and \
'bsd' not in sys.platform and \
@@ -497,10 +497,10 @@ index 53a6c3e..6c5f52f 100644
if (PyErr_Occurred()) {
Py_DECREF(result);
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 8d36705..11cacdc 100644
index 0139754..1d4ef23 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -4896,7 +4896,9 @@ init_socket(void)
@@ -4898,7 +4898,9 @@ init_socket(void)
#ifndef __BEOS__
/* We have incomplete socket support. */
PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW);
@@ -558,7 +558,7 @@ index 61b8d61..5e5d93c 100644
Py_BEGIN_ALLOW_THREADS
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 9ce3b27..cb10c50 100644
index 4b819da..46ba828 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -19,7 +19,7 @@
@@ -584,7 +584,7 @@ index 40b1bce..4185370 100755
elif sys.platform.startswith("atheos"):
searchdirs=os.environ['C_INCLUDE_PATH'].split(':')
diff --git a/configure.ac b/configure.ac
index 913d546..d24f175 100644
index aecf606..206d2ec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -923,7 +923,7 @@ if test $enable_shared = "yes"; then
@@ -615,7 +615,7 @@ index 913d546..d24f175 100644
CYGWIN*) LN="ln -s";;
atheos*) LN="ln -s";;
*) LN=ln;;
@@ -2233,7 +2236,7 @@ then
@@ -2240,7 +2243,7 @@ then
BLDSHARED="$LDSHARED"
fi
;;
@@ -624,7 +624,7 @@ index 913d546..d24f175 100644
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
BSD/OS*/4*)
@@ -2305,7 +2308,7 @@ then
@@ -2312,7 +2315,7 @@ then
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
@@ -633,7 +633,7 @@ index 913d546..d24f175 100644
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
OpenUNIX*|UnixWare*)
@@ -2337,7 +2340,7 @@ then
@@ -2344,7 +2347,7 @@ then
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
@@ -642,7 +642,7 @@ index 913d546..d24f175 100644
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
# -u _PyMac_Error is needed to pull in the mac toolbox glue,
@@ -2452,14 +2455,16 @@ case "$ac_sys_system" in
@@ -2459,14 +2462,16 @@ case "$ac_sys_system" in
esac
# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
@@ -663,7 +663,7 @@ index 913d546..d24f175 100644
esac
AC_MSG_CHECKING(for --with-libs)
@@ -3798,7 +3803,7 @@ fi],
@@ -3812,7 +3817,7 @@ fi],
AC_SUBST(LIBM)
case $ac_sys_system in
Darwin) ;;
@@ -756,10 +756,10 @@ index 33cecc6..b57b321 100644
libs = []
--
2.19.1
2.21.0
From adc15e554f78d0d515046bfb81ea15c3a678ebe7 Mon Sep 17 00:00:00 2001
From 7b55a07d0e0ae2712ab592cce0ba7c5d7bce7fa3 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sat, 5 Apr 2014 21:16:40 +0000
Subject: fix pyconfig.h path
@@ -779,10 +779,10 @@ index 9297e7f..abbeb60 100644
# Detailed destination directories
--
2.19.1
2.21.0
From 7f6503b3215a3a772f14f6b93e9fe32ca1152f09 Mon Sep 17 00:00:00 2001
From 06e07e7c6df2f06f435687643b9cb6cd836bdb7f Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Wed, 18 Jun 2014 12:19:13 +0000
Subject: Import missed change from the 2.6.9 patches
@@ -811,10 +811,10 @@ index 3b51e81..11fb12c 100644
sitepackages.append(os.path.join(prefix, "lib",
"python" + sys.version[:3],
--
2.19.1
2.21.0
From 2df1c86d8d8346aa54b9d8bde5911d8ee00543f2 Mon Sep 17 00:00:00 2001
From 95f8cc6a804975272637a0588fa9755eb31163a3 Mon Sep 17 00:00:00 2001
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
Date: Sun, 21 Sep 2014 18:59:44 +0200
Subject: gcc2 fix.
@@ -834,10 +834,10 @@ index 37f5a9e..37b0b25 100644
#endif
#define LIKELY(x) __builtin_expect(!!(x),1)
--
2.19.1
2.21.0
From 827568129835e5d0a67fe51b82ea867fa8ab4a29 Mon Sep 17 00:00:00 2001
From fc577acd82a0a9244d8f871ba1016923dcef5df9 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Fri, 28 Nov 2014 16:26:28 +0000
Subject: tarfile: let link fail and catch exception.
@@ -866,10 +866,10 @@ index adf91d5..f284408 100644
self._extract_member(self._find_link_target(tarinfo), targetpath)
except KeyError:
--
2.19.1
2.21.0
From 75b1b8ae5efbf1ca73a3f5d04915cfb5dcfd55c0 Mon Sep 17 00:00:00 2001
From 4c3a6e25aa0d2c32d5746a13108a170452255bd5 Mon Sep 17 00:00:00 2001
From: Timothy Gu <timothygu99@gmail.com>
Date: Sun, 11 Jan 2015 18:18:22 -0800
Subject: Fix resource module after the initial haiku patch
@@ -902,10 +902,10 @@ index 6c5f52f..73758bb 100644
if (PyErr_Occurred()) {
--
2.19.1
2.21.0
From c79d2bf308dd1400ef40aa6bd06cc956920ff38d Mon Sep 17 00:00:00 2001
From bed36c6af79128f0e54922b951320a825dc59fbd Mon Sep 17 00:00:00 2001
From: Timothy Gu <timothygu99@gmail.com>
Date: Sun, 11 Jan 2015 18:40:43 -0800
Subject: resource: Fix [gs]et_rlimit() modes detection
@@ -981,17 +981,17 @@ index 73758bb..0c396f6 100644
#endif
--
2.19.1
2.21.0
From 68948bc3e07f60d2112edc9681e8cb8248549c71 Mon Sep 17 00:00:00 2001
From 8687a87d528113053311ab3ebbc531224a2b00d1 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Tue, 26 May 2015 19:39:55 +0000
Subject: Haiku hasn't makedev(), _PyInt_FromDev isn't defined.
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 2baf920..5d79438 100644
index 7a1a694..0f226a0 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -1489,6 +1489,8 @@ _pystat_fromstructstat(STRUCT_STAT *st)
@@ -1004,10 +1004,10 @@ index 2baf920..5d79438 100644
PyStructSequence_SET_ITEM(v, 2, _PyInt_FromDev(st->st_dev));
#endif
--
2.19.1
2.21.0
From 87694b880f6119298522607432dcf8a127a5d17b Mon Sep 17 00:00:00 2001
From 73fd37edd447798cc15dc53a00083346c1a9f788 Mon Sep 17 00:00:00 2001
From: Philippe Houdoin <philippe.houdoin@gmail.com>
Date: Tue, 23 May 2017 19:48:08 +0000
Subject: Implement CTypes's find_library for Haiku
@@ -1087,10 +1087,10 @@ index ab10ec5..72e495b 100644
print cdll.LoadLibrary("libm.so")
print cdll.LoadLibrary("libcrypt.so")
--
2.19.1
2.21.0
From f9854864cdda71a7ec8de6f4bc3fc1f066f8d417 Mon Sep 17 00:00:00 2001
From fa20f098eb63bbcc688442dd0ed2de1267e889d3 Mon Sep 17 00:00:00 2001
From: Philippe Houdoin <philippe.houdoin@gmail.com>
Date: Wed, 24 May 2017 11:06:41 +0000
Subject: Map 'c' and 'm' libraries to libroot.so on Haiku
@@ -1119,5 +1119,36 @@ index 72e495b..a2cc0a1 100644
if directory.startswith("%A/"):
directory = directory.replace('%A',
--
2.19.1
2.21.0
From 6e5535881d6e13810d56c3153b7c70786d08977c Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Tue, 30 Apr 2019 20:39:51 +0200
Subject: Python/thread_pthread.h: c89 fix.
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index 6d4b3b3..8c42fb8 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -184,6 +184,7 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
{
pthread_t th;
int status;
+ pythread_callback *callback;
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_t attrs;
#endif
@@ -213,7 +214,7 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
#endif
- pythread_callback *callback = malloc(sizeof(pythread_callback));
+ callback = malloc(sizeof(pythread_callback));
if (callback == NULL) {
return -1;
--
2.21.0

View File

@@ -1,187 +0,0 @@
diff -urN Python-3.2/Lib/plat-haiku/regen Python-3.2-haiku/Lib/plat-haiku/regen
--- Python-3.2/Lib/plat-haiku/regen 1970-01-01 00:00:00.000000000 +0000
+++ Python-3.2-haiku/Lib/plat-haiku/regen 2010-11-22 11:11:57.509870080 +0000
@@ -0,0 +1,3 @@
+#! /bin/sh
+set -v
+python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /boot/develop/headers/posix/netinet/in.h
diff -urN Python-3.2/Modules/resource.c Python-3.2-haiku/Modules/resource.c
--- Python-3.2/Modules/resource.c 2010-05-09 15:52:27.011796480 +0000
+++ Python-3.2-haiku/Modules/resource.c 2010-11-22 11:11:57.581173248 +0000
@@ -86,6 +86,7 @@
PyFloat_FromDouble(doubletime(ru.ru_utime)));
PyStructSequence_SET_ITEM(result, 1,
PyFloat_FromDouble(doubletime(ru.ru_stime)));
+#ifndef __HAIKU__
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(ru.ru_maxrss));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(ru.ru_ixrss));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(ru.ru_idrss));
@@ -100,7 +101,7 @@
PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(ru.ru_nsignals));
PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(ru.ru_nvcsw));
PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(ru.ru_nivcsw));
-
+#endif
if (PyErr_Occurred()) {
Py_DECREF(result);
return NULL;
diff -urN Python-3.2/Modules/socketmodule.c Python-3.2-haiku/Modules/socketmodule.c
--- Python-3.2/Modules/socketmodule.c 2010-11-05 17:24:13.021233664 +0000
+++ Python-3.2-haiku/Modules/socketmodule.c 2010-11-22 11:11:57.722468864 +0000
@@ -4684,7 +4684,9 @@
PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM);
/* We have incomplete socket support. */
PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW);
+#ifndef __HAIKU__
PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET);
+#endif
#if defined(SOCK_RDM)
PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM);
#endif
diff -urN Python-3.2/Modules/socketmodule.h Python-3.2-haiku/Modules/socketmodule.h
--- Python-3.2/Modules/socketmodule.h 2010-08-28 20:42:55.019398656 +0000
+++ Python-3.2-haiku/Modules/socketmodule.h 2010-11-22 11:11:57.790626304 +0000
@@ -47,6 +47,10 @@
# undef AF_NETLINK
#endif
+#if defined (__HAIKU__)
+# undef HAVE_BLUETOOTH_BLUETOOTH_H
+#endif
+
#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
diff -urN Python-3.2/Modules/spwdmodule.c Python-3.2-haiku/Modules/spwdmodule.c
--- Python-3.2/Modules/spwdmodule.c 2010-05-15 16:27:27.011534336 +0000
+++ Python-3.2-haiku/Modules/spwdmodule.c 2010-11-22 11:11:57.802422784 +0000
@@ -80,7 +80,9 @@
SETS(setIndex++, p->sp_namp);
SETS(setIndex++, p->sp_pwdp);
+#ifndef __HAIKU__
SETI(setIndex++, p->sp_lstchg);
+#endif
SETI(setIndex++, p->sp_min);
SETI(setIndex++, p->sp_max);
SETI(setIndex++, p->sp_warn);
diff -urN Python-3.2/Python/bltinmodule.c Python-3.2-haiku/Python/bltinmodule.c
--- Python-3.2/Python/bltinmodule.c 2010-10-17 20:54:53.028049408 +0000
+++ Python-3.2-haiku/Python/bltinmodule.c 2010-11-22 11:11:57.832831488 +0000
@@ -22,7 +22,7 @@
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
const char *Py_FileSystemDefaultEncoding = "mbcs";
int Py_HasFileSystemDefaultEncoding = 1;
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
const char *Py_FileSystemDefaultEncoding = "utf-8";
int Py_HasFileSystemDefaultEncoding = 1;
#elif defined(HAVE_LANGINFO_H) && defined(CODESET)
diff -urN Python-3.2/configure.in Python-3.2-haiku/configure.in
--- Python-3.2/configure.in 2010-11-01 01:44:30.004980736 +0000
+++ Python-3.2-haiku/configure.in 2010-11-22 11:14:04.316407808 +0000
@@ -292,6 +292,7 @@
case $MACHDEP in
cygwin*) MACHDEP="cygwin";;
darwin*) MACHDEP="darwin";;
+ haiku*) MACHDEP="haiku";;
irix646) MACHDEP="irix6";;
'') MACHDEP="unknown";;
esac
@@ -738,7 +739,7 @@
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
INSTSONAME="$LDLIBRARY".$SOVERSION
;;
- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|Haiku*)
LDLIBRARY='libpython$(LDVERSION).so'
BLDLIBRARY='-L. -lpython$(LDVERSION)'
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
@@ -823,6 +824,7 @@
if test -z "$LN" ; then
case $ac_sys_system in
CYGWIN*) LN="ln -s";;
+ Haiku*) LN="ln -s";;
*) LN=ln;;
esac
fi
@@ -1709,7 +1711,7 @@
fi
fi
;;
- Linux*|GNU*|QNX*)
+ Linux*|GNU*|QNX*|Haiku*)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
BSD/OS*/4*)
@@ -1778,7 +1780,7 @@
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
- Linux*|GNU*) CCSHARED="-fPIC";;
+ Linux*|GNU*|Haiku*) CCSHARED="-fPIC";;
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
OpenUNIX*|UnixWare*)
@@ -1809,7 +1811,7 @@
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
+ Linux*|GNU*|Haiku*) LINKFORSHARED="-Xlinker -export-dynamic";;
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
@@ -1920,6 +1922,8 @@
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
+AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS) # For Haiku
+
AC_MSG_CHECKING(for --with-libs)
AC_ARG_WITH(libs,
AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
@@ -3192,7 +3196,7 @@
# check for --with-libm=...
AC_SUBST(LIBM)
case $ac_sys_system in
-Darwin) ;;
+Darwin|Haiku*) ;;
*) LIBM=-lm
esac
AC_MSG_CHECKING(for --with-libm=STRING)
diff -urN Python-3.2/setup.py Python-3.2-haiku/setup.py
--- Python-3.2/setup.py 2010-10-31 17:11:02.000000000 +0000
+++ Python-3.2-haiku/setup.py 2010-11-22 11:11:58.034603008 +0000
@@ -429,6 +429,10 @@
platform = self.get_platform()
srcdir = sysconfig.get_config_var('srcdir')
+ if platform == 'haiku1':
+ inc_dirs += ['/boot/develop/headers/posix', '/boot/develop/headers/3rdparty', '/boot/common/include']
+ lib_dirs += ['/boot/system/lib', '/boot/develop/lib/x86', '/boot/common/lib']
+
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
if platform in ['osf1', 'unixware7', 'openunix8']:
lib_dirs += ['/usr/ccs/lib']
@@ -450,9 +454,9 @@
if item.startswith('-L'):
lib_dirs.append(item[2:])
- # Check for MacOS X, which doesn't need libm.a at all
+ # Check for MacOS X or Haiku, which don't need libm.a at all
math_libs = ['m']
- if platform == 'darwin':
+ if platform == 'darwin' or platform == 'haiku':
math_libs = []
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
@@ -1110,7 +1114,7 @@
exts.append( Extension('resource', ['resource.c']) )
# Sun yellow pages. Some systems have the functions in libc.
- if (platform not in ['cygwin', 'qnx6'] and
+ if (platform not in ['cygwin', 'qnx6', 'haiku'] and
find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
if (self.compiler.find_library_file(lib_dirs, 'nsl')):
libs = ['nsl']

View File

@@ -1,187 +0,0 @@
diff -urN Python-3.2a3/Lib/plat-haiku/regen Python-3.2a3-haiku/Lib/plat-haiku/regen
--- Python-3.2a3/Lib/plat-haiku/regen 1969-12-31 16:00:00.000000000 -0800
+++ Python-3.2a3-haiku/Lib/plat-haiku/regen 2010-10-25 12:04:00.000000000 -0700
@@ -0,0 +1,3 @@
+#! /bin/sh
+set -v
+python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /boot/develop/headers/posix/netinet/in.h
diff -urN Python-3.2a3/Modules/resource.c Python-3.2a3-haiku/Modules/resource.c
--- Python-3.2a3/Modules/resource.c 2010-05-09 08:52:27.038797312 -0700
+++ Python-3.2a3-haiku/Modules/resource.c 2010-10-26 09:40:31.530055168 -0700
@@ -86,6 +86,7 @@
PyFloat_FromDouble(doubletime(ru.ru_utime)));
PyStructSequence_SET_ITEM(result, 1,
PyFloat_FromDouble(doubletime(ru.ru_stime)));
+#ifndef __HAIKU__
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(ru.ru_maxrss));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(ru.ru_ixrss));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(ru.ru_idrss));
@@ -100,7 +101,7 @@
PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(ru.ru_nsignals));
PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(ru.ru_nvcsw));
PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(ru.ru_nivcsw));
-
+#endif
if (PyErr_Occurred()) {
Py_DECREF(result);
return NULL;
diff -urN Python-3.2a3/Modules/socketmodule.c Python-3.2a3-haiku/Modules/socketmodule.c
--- Python-3.2a3/Modules/socketmodule.c 2010-09-28 15:03:27.048234496 -0700
+++ Python-3.2a3-haiku/Modules/socketmodule.c 2010-10-26 09:42:24.675545088 -0700
@@ -4595,7 +4595,9 @@
PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM);
/* We have incomplete socket support. */
PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW);
+#ifndef __HAIKU__
PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET);
+#endif
#if defined(SOCK_RDM)
PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM);
#endif
diff -urN Python-3.2a3/Modules/socketmodule.h Python-3.2a3-haiku/Modules/socketmodule.h
--- Python-3.2a3/Modules/socketmodule.h 2010-08-28 13:42:55.046399488 -0700
+++ Python-3.2a3-haiku/Modules/socketmodule.h 2010-10-26 09:36:23.904658944 -0700
@@ -47,6 +47,10 @@
# undef AF_NETLINK
#endif
+#if defined (__HAIKU__)
+# undef HAVE_BLUETOOTH_BLUETOOTH_H
+#endif
+
#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
diff -urN Python-3.2a3/Modules/spwdmodule.c Python-3.2a3-haiku/Modules/spwdmodule.c
--- Python-3.2a3/Modules/spwdmodule.c 2010-05-15 09:27:27.038535168 -0700
+++ Python-3.2a3-haiku/Modules/spwdmodule.c 2010-10-26 09:41:38.998506496 -0700
@@ -80,7 +80,9 @@
SETS(setIndex++, p->sp_namp);
SETS(setIndex++, p->sp_pwdp);
+#ifndef __HAIKU__
SETI(setIndex++, p->sp_lstchg);
+#endif
SETI(setIndex++, p->sp_min);
SETI(setIndex++, p->sp_max);
SETI(setIndex++, p->sp_warn);
diff -urN Python-3.2a3/Python/bltinmodule.c Python-3.2a3-haiku/Python/bltinmodule.c
--- Python-3.2a3/Python/bltinmodule.c 2010-09-27 14:08:38.054788096 -0700
+++ Python-3.2a3-haiku/Python/bltinmodule.c 2010-10-25 13:10:52.010747904 -0700
@@ -22,7 +22,7 @@
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
const char *Py_FileSystemDefaultEncoding = "mbcs";
int Py_HasFileSystemDefaultEncoding = 1;
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
const char *Py_FileSystemDefaultEncoding = "utf-8";
int Py_HasFileSystemDefaultEncoding = 1;
#elif defined(HAVE_LANGINFO_H) && defined(CODESET)
diff -urN Python-3.2a3/configure.in Python-3.2a3-haiku/configure.in
--- Python-3.2a3/configure.in 2010-10-10 01:10:16.033554432 -0700
+++ Python-3.2a3-haiku/configure.in 2010-10-25 13:47:17.305135616 -0700
@@ -292,6 +292,7 @@
case $MACHDEP in
cygwin*) MACHDEP="cygwin";;
darwin*) MACHDEP="darwin";;
+ haiku*) MACHDEP="haiku";;
irix646) MACHDEP="irix6";;
'') MACHDEP="unknown";;
esac
@@ -733,7 +734,7 @@
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
INSTSONAME="$LDLIBRARY".$SOVERSION
;;
- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|Haiku*)
LDLIBRARY='libpython$(VERSION).so'
BLDLIBRARY='-L. -lpython$(VERSION)'
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
@@ -818,6 +819,7 @@
if test -z "$LN" ; then
case $ac_sys_system in
CYGWIN*) LN="ln -s";;
+ Haiku*) LN="ln -s";;
*) LN=ln;;
esac
fi
@@ -1748,7 +1750,7 @@
fi
fi
;;
- Linux*|GNU*|QNX*)
+ Linux*|GNU*|QNX*|Haiku*)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
BSD/OS*/4*)
@@ -1817,7 +1819,7 @@
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
- Linux*|GNU*) CCSHARED="-fPIC";;
+ Linux*|GNU*|Haiku*) CCSHARED="-fPIC";;
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
OpenUNIX*|UnixWare*)
@@ -1848,7 +1850,7 @@
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
+ Linux*|GNU*|Haiku*) LINKFORSHARED="-Xlinker -export-dynamic";;
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
@@ -1959,6 +1961,8 @@
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
+AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS) # For Haiku
+
AC_MSG_CHECKING(for --with-libs)
AC_ARG_WITH(libs,
AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
@@ -3215,7 +3219,7 @@
# check for --with-libm=...
AC_SUBST(LIBM)
case $ac_sys_system in
-Darwin) ;;
+Darwin|Haiku*) ;;
*) LIBM=-lm
esac
AC_MSG_CHECKING(for --with-libm=STRING)
diff -urN Python-3.2a3/setup.py Python-3.2a3-haiku/setup.py
--- Python-3.2a3/setup.py 2010-09-14 12:41:23.030670848 -0700
+++ Python-3.2a3-haiku/setup.py 2010-10-25 13:06:13.069992448 -0700
@@ -423,6 +423,10 @@
platform = self.get_platform()
srcdir = sysconfig.get_config_var('srcdir')
+ if platform == 'haiku1':
+ inc_dirs += ['/boot/develop/headers/posix', '/boot/develop/headers/3rdparty', '/boot/common/include']
+ lib_dirs += ['/boot/system/lib', '/boot/develop/lib/x86', '/boot/common/lib']
+
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
if platform in ['osf1', 'unixware7', 'openunix8']:
lib_dirs += ['/usr/ccs/lib']
@@ -444,9 +448,9 @@
if item.startswith('-L'):
lib_dirs.append(item[2:])
- # Check for MacOS X, which doesn't need libm.a at all
+ # Check for MacOS X or Haiku, which don't need libm.a at all
math_libs = ['m']
- if platform == 'darwin':
+ if platform == 'darwin' or platform == 'haiku':
math_libs = []
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
@@ -1100,7 +1104,7 @@
exts.append( Extension('resource', ['resource.c']) )
# Sun yellow pages. Some systems have the functions in libc.
- if (platform not in ['cygwin', 'qnx6'] and
+ if (platform not in ['cygwin', 'qnx6', 'haiku'] and
find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
if (self.compiler.find_library_file(lib_dirs, 'nsl')):
libs = ['nsl']

View File

@@ -1,187 +0,0 @@
diff -urN Python-3.2a4/Lib/plat-haiku/regen Python-3.2a4-haiku/Lib/plat-haiku/regen
--- Python-3.2a4/Lib/plat-haiku/regen 1970-01-01 00:00:00.000000000 +0000
+++ Python-3.2a4-haiku/Lib/plat-haiku/regen 2010-11-22 11:11:57.509870080 +0000
@@ -0,0 +1,3 @@
+#! /bin/sh
+set -v
+python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /boot/develop/headers/posix/netinet/in.h
diff -urN Python-3.2a4/Modules/resource.c Python-3.2a4-haiku/Modules/resource.c
--- Python-3.2a4/Modules/resource.c 2010-05-09 15:52:27.011796480 +0000
+++ Python-3.2a4-haiku/Modules/resource.c 2010-11-22 11:11:57.581173248 +0000
@@ -86,6 +86,7 @@
PyFloat_FromDouble(doubletime(ru.ru_utime)));
PyStructSequence_SET_ITEM(result, 1,
PyFloat_FromDouble(doubletime(ru.ru_stime)));
+#ifndef __HAIKU__
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(ru.ru_maxrss));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(ru.ru_ixrss));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(ru.ru_idrss));
@@ -100,7 +101,7 @@
PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(ru.ru_nsignals));
PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(ru.ru_nvcsw));
PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(ru.ru_nivcsw));
-
+#endif
if (PyErr_Occurred()) {
Py_DECREF(result);
return NULL;
diff -urN Python-3.2a4/Modules/socketmodule.c Python-3.2a4-haiku/Modules/socketmodule.c
--- Python-3.2a4/Modules/socketmodule.c 2010-11-05 17:24:13.021233664 +0000
+++ Python-3.2a4-haiku/Modules/socketmodule.c 2010-11-22 11:11:57.722468864 +0000
@@ -4684,7 +4684,9 @@
PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM);
/* We have incomplete socket support. */
PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW);
+#ifndef __HAIKU__
PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET);
+#endif
#if defined(SOCK_RDM)
PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM);
#endif
diff -urN Python-3.2a4/Modules/socketmodule.h Python-3.2a4-haiku/Modules/socketmodule.h
--- Python-3.2a4/Modules/socketmodule.h 2010-08-28 20:42:55.019398656 +0000
+++ Python-3.2a4-haiku/Modules/socketmodule.h 2010-11-22 11:11:57.790626304 +0000
@@ -47,6 +47,10 @@
# undef AF_NETLINK
#endif
+#if defined (__HAIKU__)
+# undef HAVE_BLUETOOTH_BLUETOOTH_H
+#endif
+
#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
diff -urN Python-3.2a4/Modules/spwdmodule.c Python-3.2a4-haiku/Modules/spwdmodule.c
--- Python-3.2a4/Modules/spwdmodule.c 2010-05-15 16:27:27.011534336 +0000
+++ Python-3.2a4-haiku/Modules/spwdmodule.c 2010-11-22 11:11:57.802422784 +0000
@@ -80,7 +80,9 @@
SETS(setIndex++, p->sp_namp);
SETS(setIndex++, p->sp_pwdp);
+#ifndef __HAIKU__
SETI(setIndex++, p->sp_lstchg);
+#endif
SETI(setIndex++, p->sp_min);
SETI(setIndex++, p->sp_max);
SETI(setIndex++, p->sp_warn);
diff -urN Python-3.2a4/Python/bltinmodule.c Python-3.2a4-haiku/Python/bltinmodule.c
--- Python-3.2a4/Python/bltinmodule.c 2010-10-17 20:54:53.028049408 +0000
+++ Python-3.2a4-haiku/Python/bltinmodule.c 2010-11-22 11:11:57.832831488 +0000
@@ -22,7 +22,7 @@
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
const char *Py_FileSystemDefaultEncoding = "mbcs";
int Py_HasFileSystemDefaultEncoding = 1;
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
const char *Py_FileSystemDefaultEncoding = "utf-8";
int Py_HasFileSystemDefaultEncoding = 1;
#elif defined(HAVE_LANGINFO_H) && defined(CODESET)
diff -urN Python-3.2a4/configure.in Python-3.2a4-haiku/configure.in
--- Python-3.2a4/configure.in 2010-11-01 01:44:30.004980736 +0000
+++ Python-3.2a4-haiku/configure.in 2010-11-22 11:14:04.316407808 +0000
@@ -292,6 +292,7 @@
case $MACHDEP in
cygwin*) MACHDEP="cygwin";;
darwin*) MACHDEP="darwin";;
+ haiku*) MACHDEP="haiku";;
irix646) MACHDEP="irix6";;
'') MACHDEP="unknown";;
esac
@@ -738,7 +739,7 @@
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
INSTSONAME="$LDLIBRARY".$SOVERSION
;;
- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|Haiku*)
LDLIBRARY='libpython$(LDVERSION).so'
BLDLIBRARY='-L. -lpython$(LDVERSION)'
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
@@ -823,6 +824,7 @@
if test -z "$LN" ; then
case $ac_sys_system in
CYGWIN*) LN="ln -s";;
+ Haiku*) LN="ln -s";;
*) LN=ln;;
esac
fi
@@ -1709,7 +1711,7 @@
fi
fi
;;
- Linux*|GNU*|QNX*)
+ Linux*|GNU*|QNX*|Haiku*)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
BSD/OS*/4*)
@@ -1778,7 +1780,7 @@
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
- Linux*|GNU*) CCSHARED="-fPIC";;
+ Linux*|GNU*|Haiku*) CCSHARED="-fPIC";;
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
OpenUNIX*|UnixWare*)
@@ -1809,7 +1811,7 @@
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
+ Linux*|GNU*|Haiku*) LINKFORSHARED="-Xlinker -export-dynamic";;
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
@@ -1920,6 +1922,8 @@
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
+AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS) # For Haiku
+
AC_MSG_CHECKING(for --with-libs)
AC_ARG_WITH(libs,
AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
@@ -3192,7 +3196,7 @@
# check for --with-libm=...
AC_SUBST(LIBM)
case $ac_sys_system in
-Darwin) ;;
+Darwin|Haiku*) ;;
*) LIBM=-lm
esac
AC_MSG_CHECKING(for --with-libm=STRING)
diff -urN Python-3.2a4/setup.py Python-3.2a4-haiku/setup.py
--- Python-3.2a4/setup.py 2010-10-31 17:11:02.000000000 +0000
+++ Python-3.2a4-haiku/setup.py 2010-11-22 11:11:58.034603008 +0000
@@ -429,6 +429,10 @@
platform = self.get_platform()
srcdir = sysconfig.get_config_var('srcdir')
+ if platform == 'haiku1':
+ inc_dirs += ['/boot/develop/headers/posix', '/boot/develop/headers/3rdparty', '/boot/common/include']
+ lib_dirs += ['/boot/system/lib', '/boot/develop/lib/x86', '/boot/common/lib']
+
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
if platform in ['osf1', 'unixware7', 'openunix8']:
lib_dirs += ['/usr/ccs/lib']
@@ -450,9 +454,9 @@
if item.startswith('-L'):
lib_dirs.append(item[2:])
- # Check for MacOS X, which doesn't need libm.a at all
+ # Check for MacOS X or Haiku, which don't need libm.a at all
math_libs = ['m']
- if platform == 'darwin':
+ if platform == 'darwin' or platform == 'haiku':
math_libs = []
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
@@ -1110,7 +1114,7 @@
exts.append( Extension('resource', ['resource.c']) )
# Sun yellow pages. Some systems have the functions in libc.
- if (platform not in ['cygwin', 'qnx6'] and
+ if (platform not in ['cygwin', 'qnx6', 'haiku'] and
find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
if (self.compiler.find_library_file(lib_dirs, 'nsl')):
libs = ['nsl']

View File

@@ -1,187 +0,0 @@
diff -urN Python-3.2b2/Lib/plat-haiku/regen Python-3.2b2-haiku/Lib/plat-haiku/regen
--- Python-3.2b2/Lib/plat-haiku/regen 1970-01-01 00:00:00.000000000 +0000
+++ Python-3.2b2-haiku/Lib/plat-haiku/regen 2010-11-22 11:11:57.509870080 +0000
@@ -0,0 +1,3 @@
+#! /bin/sh
+set -v
+python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /boot/develop/headers/posix/netinet/in.h
diff -urN Python-3.2b2/Modules/resource.c Python-3.2b2-haiku/Modules/resource.c
--- Python-3.2b2/Modules/resource.c 2010-05-09 15:52:27.011796480 +0000
+++ Python-3.2b2-haiku/Modules/resource.c 2010-11-22 11:11:57.581173248 +0000
@@ -86,6 +86,7 @@
PyFloat_FromDouble(doubletime(ru.ru_utime)));
PyStructSequence_SET_ITEM(result, 1,
PyFloat_FromDouble(doubletime(ru.ru_stime)));
+#ifndef __HAIKU__
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(ru.ru_maxrss));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(ru.ru_ixrss));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(ru.ru_idrss));
@@ -100,7 +101,7 @@
PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(ru.ru_nsignals));
PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(ru.ru_nvcsw));
PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(ru.ru_nivcsw));
-
+#endif
if (PyErr_Occurred()) {
Py_DECREF(result);
return NULL;
diff -urN Python-3.2b2/Modules/socketmodule.c Python-3.2b2-haiku/Modules/socketmodule.c
--- Python-3.2b2/Modules/socketmodule.c 2010-11-05 17:24:13.021233664 +0000
+++ Python-3.2b2-haiku/Modules/socketmodule.c 2010-11-22 11:11:57.722468864 +0000
@@ -4684,7 +4684,9 @@
PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM);
/* We have incomplete socket support. */
PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW);
+#ifndef __HAIKU__
PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET);
+#endif
#if defined(SOCK_RDM)
PyModule_AddIntConstant(m, "SOCK_RDM", SOCK_RDM);
#endif
diff -urN Python-3.2b2/Modules/socketmodule.h Python-3.2b2-haiku/Modules/socketmodule.h
--- Python-3.2b2/Modules/socketmodule.h 2010-08-28 20:42:55.019398656 +0000
+++ Python-3.2b2-haiku/Modules/socketmodule.h 2010-11-22 11:11:57.790626304 +0000
@@ -47,6 +47,10 @@
# undef AF_NETLINK
#endif
+#if defined (__HAIKU__)
+# undef HAVE_BLUETOOTH_BLUETOOTH_H
+#endif
+
#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
diff -urN Python-3.2b2/Modules/spwdmodule.c Python-3.2b2-haiku/Modules/spwdmodule.c
--- Python-3.2b2/Modules/spwdmodule.c 2010-05-15 16:27:27.011534336 +0000
+++ Python-3.2b2-haiku/Modules/spwdmodule.c 2010-11-22 11:11:57.802422784 +0000
@@ -80,7 +80,9 @@
SETS(setIndex++, p->sp_namp);
SETS(setIndex++, p->sp_pwdp);
+#ifndef __HAIKU__
SETI(setIndex++, p->sp_lstchg);
+#endif
SETI(setIndex++, p->sp_min);
SETI(setIndex++, p->sp_max);
SETI(setIndex++, p->sp_warn);
diff -urN Python-3.2b2/Python/bltinmodule.c Python-3.2b2-haiku/Python/bltinmodule.c
--- Python-3.2b2/Python/bltinmodule.c 2010-10-17 20:54:53.028049408 +0000
+++ Python-3.2b2-haiku/Python/bltinmodule.c 2010-11-22 11:11:57.832831488 +0000
@@ -22,7 +22,7 @@
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
const char *Py_FileSystemDefaultEncoding = "mbcs";
int Py_HasFileSystemDefaultEncoding = 1;
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
const char *Py_FileSystemDefaultEncoding = "utf-8";
int Py_HasFileSystemDefaultEncoding = 1;
#elif defined(HAVE_LANGINFO_H) && defined(CODESET)
diff -urN Python-3.2b2/configure.in Python-3.2b2-haiku/configure.in
--- Python-3.2b2/configure.in 2010-11-01 01:44:30.004980736 +0000
+++ Python-3.2b2-haiku/configure.in 2010-11-22 11:14:04.316407808 +0000
@@ -292,6 +292,7 @@
case $MACHDEP in
cygwin*) MACHDEP="cygwin";;
darwin*) MACHDEP="darwin";;
+ haiku*) MACHDEP="haiku";;
irix646) MACHDEP="irix6";;
'') MACHDEP="unknown";;
esac
@@ -738,7 +739,7 @@
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
INSTSONAME="$LDLIBRARY".$SOVERSION
;;
- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*)
+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|Haiku*)
LDLIBRARY='libpython$(LDVERSION).so'
BLDLIBRARY='-L. -lpython$(LDVERSION)'
RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH}
@@ -823,6 +824,7 @@
if test -z "$LN" ; then
case $ac_sys_system in
CYGWIN*) LN="ln -s";;
+ Haiku*) LN="ln -s";;
*) LN=ln;;
esac
fi
@@ -1709,7 +1711,7 @@
fi
fi
;;
- Linux*|GNU*|QNX*)
+ Linux*|GNU*|QNX*|Haiku*)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
BSD/OS*/4*)
@@ -1778,7 +1780,7 @@
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
- Linux*|GNU*) CCSHARED="-fPIC";;
+ Linux*|GNU*|Haiku*) CCSHARED="-fPIC";;
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
OpenUNIX*|UnixWare*)
@@ -1809,7 +1811,7 @@
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
+ Linux*|GNU*|Haiku*) LINKFORSHARED="-Xlinker -export-dynamic";;
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
@@ -1920,6 +1922,8 @@
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
+AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS) # For Haiku
+
AC_MSG_CHECKING(for --with-libs)
AC_ARG_WITH(libs,
AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
@@ -3192,7 +3196,7 @@
# check for --with-libm=...
AC_SUBST(LIBM)
case $ac_sys_system in
-Darwin) ;;
+Darwin|Haiku*) ;;
*) LIBM=-lm
esac
AC_MSG_CHECKING(for --with-libm=STRING)
diff -urN Python-3.2b2/setup.py Python-3.2b2-haiku/setup.py
--- Python-3.2b2/setup.py 2010-10-31 17:11:02.000000000 +0000
+++ Python-3.2b2-haiku/setup.py 2010-11-22 11:11:58.034603008 +0000
@@ -429,6 +429,10 @@
platform = self.get_platform()
srcdir = sysconfig.get_config_var('srcdir')
+ if platform == 'haiku1':
+ inc_dirs += ['/boot/develop/headers/posix', '/boot/develop/headers/3rdparty', '/boot/common/include']
+ lib_dirs += ['/boot/system/lib', '/boot/develop/lib/x86', '/boot/common/lib']
+
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
if platform in ['osf1', 'unixware7', 'openunix8']:
lib_dirs += ['/usr/ccs/lib']
@@ -450,9 +454,9 @@
if item.startswith('-L'):
lib_dirs.append(item[2:])
- # Check for MacOS X, which doesn't need libm.a at all
+ # Check for MacOS X or Haiku, which don't need libm.a at all
math_libs = ['m']
- if platform == 'darwin':
+ if platform == 'darwin' or platform == 'haiku':
math_libs = []
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
@@ -1110,7 +1114,7 @@
exts.append( Extension('resource', ['resource.c']) )
# Sun yellow pages. Some systems have the functions in libc.
- if (platform not in ['cygwin', 'qnx6'] and
+ if (platform not in ['cygwin', 'qnx6', 'haiku'] and
find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
if (self.compiler.find_library_file(lib_dirs, 'nsl')):
libs = ['nsl']

View File

@@ -1,543 +0,0 @@
From aacc2ed7b074730d2ff7f03c6d162a578e73e059 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 10 Apr 2014 16:03:33 +0000
Subject: initial Haiku patch
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
index d768dc5..21e3fd5 100644
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -43,6 +43,27 @@ INSTALL_SCHEMES = {
'data' : '$base',
},
'nt': WINDOWS_SCHEME,
+ 'haiku': {
+ 'purelib': '$base/non-packaged/lib/python$py_version_short/site-packages',
+ 'platlib': '$platbase/non-packaged/lib/python$py_version_short/site-packages',
+ 'headers': '$base/non-packaged/develop/headers/python$py_version_short/$dist_name',
+ 'scripts': '$base/non-packaged/bin',
+ 'data' : '$base/non-packaged',
+ },
+ 'haiku_vendor': {
+ 'purelib': '$base/lib/python$py_version_short/vendor-packages',
+ 'platlib': '$platbase/lib/python$py_version_short/vendor-packages',
+ 'headers': '$base/develop/headers/python$py_version_short/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
+ 'haiku_home': {
+ 'purelib': '$base/lib/python',
+ 'platlib': '$base/lib/python',
+ 'headers': '$base/develop/headers/python/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
}
# user site schemes
@@ -64,6 +85,14 @@ if HAS_USER_SITE:
'data' : '$userbase',
}
+ INSTALL_SCHEMES['haiku_user'] = {
+ 'purelib': '$usersite',
+ 'platlib': '$usersite',
+ 'headers': '$userbase/develop/headers/python$py_version_short/$dist_name',
+ 'scripts': '$userbase/bin',
+ 'data' : '$userbase',
+ }
+
# The keys to an installation scheme; if any new types of files are to be
# installed, be sure to add an entry to every installation scheme above,
# and to SCHEME_KEYS here.
@@ -406,10 +435,16 @@ class install(Command):
raise DistutilsPlatformError(
"User base directory is not specified")
self.install_base = self.install_platbase = self.install_userbase
- self.select_scheme("unix_user")
+ if sys.platform.startswith('haiku'):
+ self.select_scheme("haiku_user")
+ else:
+ self.select_scheme("unix_user")
elif self.home is not None:
self.install_base = self.install_platbase = self.home
- self.select_scheme("unix_home")
+ if sys.platform.startswith('haiku'):
+ self.select_scheme("haiku_home")
+ else:
+ self.select_scheme("unix_home")
else:
if self.prefix is None:
if self.exec_prefix is not None:
@@ -425,7 +460,13 @@ class install(Command):
self.install_base = self.prefix
self.install_platbase = self.exec_prefix
- self.select_scheme("unix_prefix")
+ if sys.platform.startswith('haiku'):
+ if os.environ.get('HAIKU_USE_VENDOR_DIRECTORIES') == '1':
+ self.select_scheme("haiku_vendor")
+ else:
+ self.select_scheme("haiku")
+ else:
+ self.select_scheme("unix_prefix")
def finalize_other(self):
"""Finalizes options for non-posix platforms"""
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index a1452fe..07e2225 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -111,7 +111,8 @@ def get_python_inc(plat_specific=0, prefix=None):
incdir = os.path.join(get_config_var('srcdir'), 'Include')
return os.path.normpath(incdir)
python_dir = 'python' + get_python_version() + build_flags
- return os.path.join(prefix, "include", python_dir)
+ inc_dir = "include" if sys.platform != "haiku1" else "develop/headers"
+ return os.path.join(prefix, inc_dir, python_dir)
elif os.name == "nt":
return os.path.join(prefix, "include")
else:
@@ -141,12 +142,20 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
prefix = plat_specific and EXEC_PREFIX or PREFIX
if os.name == "posix":
- libpython = os.path.join(prefix,
- "lib", "python" + get_python_version())
- if standard_lib:
- return libpython
+ if sys.platform.startswith('haiku'):
+ if standard_lib:
+ return os.path.join(prefix,
+ "lib", "python" + get_python_version())
+ return os.path.join(prefix, "non-packaged",
+ "lib", "python" + get_python_version(),
+ "site-packages")
else:
- return os.path.join(libpython, "site-packages")
+ libpython = os.path.join(prefix,
+ "lib", "python" + get_python_version())
+ if standard_lib:
+ return libpython
+ else:
+ return os.path.join(libpython, "site-packages")
elif os.name == "nt":
if standard_lib:
return os.path.join(prefix, "Lib")
diff --git a/Lib/plat-haiku1/regen b/Lib/plat-haiku1/regen
new file mode 100644
index 0000000..4372ee2
--- /dev/null
+++ b/Lib/plat-haiku1/regen
@@ -0,0 +1,4 @@
+#! /bin/sh
+HEADERS=/boot/develop/headers
+set -v
+eval $PYTHON_FOR_BUILD ../../Tools/scripts/h2py.py -i "'(u_long)'" $HEADERS/posix/netinet/in.h
diff --git a/Lib/site.py b/Lib/site.py
index ad5d136..c00666c 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -303,7 +303,14 @@ def getsitepackages(prefixes=None):
continue
seen.add(prefix)
- if os.sep == '/':
+ if sys.platform.startswith('haiku'):
+ sitepackages.append(os.path.join(prefix, "non-packaged", "lib",
+ "python" + sys.version[:3],
+ "site-packages"))
+ sitepackages.append(os.path.join(prefix, "lib",
+ "python" + sys.version[:3],
+ "vendor-packages"))
+ elif os.sep == '/':
sitepackages.append(os.path.join(prefix, "lib",
"python" + sys.version[:3],
"site-packages"))
diff --git a/Lib/test/test_fileio.py b/Lib/test/test_fileio.py
index c37482e..96277a8 100644
--- a/Lib/test/test_fileio.py
+++ b/Lib/test/test_fileio.py
@@ -295,6 +295,7 @@ class OtherFileTests(unittest.TestCase):
self.assertEqual(f.writable(), True)
if sys.platform != "darwin" and \
'bsd' not in sys.platform and \
+ 'haiku' not in sys.platform and \
not sys.platform.startswith('sunos'):
# Somehow /dev/tty appears seekable on some BSDs
self.assertEqual(f.seekable(), False)
diff --git a/Makefile.pre.in b/Makefile.pre.in
index 76aef28..4b06354 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -119,7 +119,7 @@ BINDIR= @bindir@
LIBDIR= @libdir@
MANDIR= @mandir@
INCLUDEDIR= @includedir@
-CONFINCLUDEDIR= $(exec_prefix)/include
+CONFINCLUDEDIR= $(INCLUDEDIR)
SCRIPTDIR= $(prefix)/lib
ABIFLAGS= @ABIFLAGS@
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 628dec2..5e6bb3f 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -12023,7 +12023,7 @@ all_ins(PyObject *m)
if (PyModule_AddIntMacro(m, SCHED_FIFO)) return -1;
if (PyModule_AddIntMacro(m, SCHED_RR)) return -1;
#ifdef SCHED_SPORADIC
- if (PyModule_AddIntMacro(m, SCHED_SPORADIC) return -1;
+ if (PyModule_AddIntMacro(m, SCHED_SPORADIC)) return -1;
#endif
#ifdef SCHED_BATCH
if (PyModule_AddIntMacro(m, SCHED_BATCH)) return -1;
diff --git a/Modules/resource.c b/Modules/resource.c
index 3a1cf09..bb56e30 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -83,6 +83,7 @@ resource_getrusage(PyObject *self, PyObject *args)
PyFloat_FromDouble(doubletime(ru.ru_utime)));
PyStructSequence_SET_ITEM(result, 1,
PyFloat_FromDouble(doubletime(ru.ru_stime)));
+#ifndef __HAIKU__
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(ru.ru_maxrss));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(ru.ru_ixrss));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(ru.ru_idrss));
@@ -97,7 +98,22 @@ resource_getrusage(PyObject *self, PyObject *args)
PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(ru.ru_nsignals));
PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(ru.ru_nvcsw));
PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(ru.ru_nivcsw));
-
+#else
+ PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 5, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 6, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 7, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 8, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 9, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 10, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 11, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 12, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(0));
+#endif
if (PyErr_Occurred()) {
Py_DECREF(result);
return NULL;
@@ -334,19 +350,19 @@ PyInit_resource(void)
(PyObject*) &StructRUsageType);
/* insert constants */
-#ifdef RLIMIT_CPU
+#if !defined(__HAIKU__) && defined(RLIMIT_CPU)
PyModule_AddIntMacro(m, RLIMIT_CPU);
#endif
-#ifdef RLIMIT_FSIZE
+#if !defined(__HAIKU__) && defined(RLIMIT_FSIZE)
PyModule_AddIntMacro(m, RLIMIT_FSIZE);
#endif
-#ifdef RLIMIT_DATA
+#if !defined(__HAIKU__) && defined(RLIMIT_DATA)
PyModule_AddIntMacro(m, RLIMIT_DATA);
#endif
-#ifdef RLIMIT_STACK
+#if !defined(__HAIKU__) && defined(RLIMIT_STACK)
PyModule_AddIntMacro(m, RLIMIT_STACK);
#endif
@@ -358,31 +374,31 @@ PyInit_resource(void)
PyModule_AddIntMacro(m, RLIMIT_NOFILE);
#endif
-#ifdef RLIMIT_OFILE
+#if !defined(__HAIKU__) && defined(RLIMIT_OFILE)
PyModule_AddIntMacro(m, RLIMIT_OFILE);
#endif
-#ifdef RLIMIT_VMEM
+#if !defined(__HAIKU__) && defined(RLIMIT_VMEM)
PyModule_AddIntMacro(m, RLIMIT_VMEM);
#endif
-#ifdef RLIMIT_AS
+#if !defined(__HAIKU__) && defined(RLIMIT_AS)
PyModule_AddIntMacro(m, RLIMIT_AS);
#endif
-#ifdef RLIMIT_RSS
+#if !defined(__HAIKU__) && defined(RLIMIT_RSS)
PyModule_AddIntMacro(m, RLIMIT_RSS);
#endif
-#ifdef RLIMIT_NPROC
+#if !defined(__HAIKU__) && defined(RLIMIT_NPROC)
PyModule_AddIntMacro(m, RLIMIT_NPROC);
#endif
-#ifdef RLIMIT_MEMLOCK
+#if !defined(__HAIKU__) && defined(RLIMIT_MEMLOCK)
PyModule_AddIntMacro(m, RLIMIT_MEMLOCK);
#endif
-#ifdef RLIMIT_SBSIZE
+#if !defined(__HAIKU__) && defined(RLIMIT_SBSIZE)
PyModule_AddIntMacro(m, RLIMIT_SBSIZE);
#endif
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index cb44d05..4023304 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -6094,7 +6094,9 @@ PyInit__socket(void)
PyModule_AddIntMacro(m, SOCK_DGRAM);
/* We have incomplete socket support. */
PyModule_AddIntMacro(m, SOCK_RAW);
+#ifndef __HAIKU__
PyModule_AddIntMacro(m, SOCK_SEQPACKET);
+#endif
#if defined(SOCK_RDM)
PyModule_AddIntMacro(m, SOCK_RDM);
#endif
diff --git a/Modules/socketmodule.h b/Modules/socketmodule.h
index b83f9af..47e4064 100644
--- a/Modules/socketmodule.h
+++ b/Modules/socketmodule.h
@@ -47,6 +47,10 @@ typedef int socklen_t;
# undef AF_NETLINK
#endif
+#if defined(__HAIKU__)
+#undef HAVE_BLUETOOTH_BLUETOOTH_H
+#endif
+
#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
diff --git a/Modules/spwdmodule.c b/Modules/spwdmodule.c
index 68ea1b5..1f5c3d0 100644
--- a/Modules/spwdmodule.c
+++ b/Modules/spwdmodule.c
@@ -81,7 +81,9 @@ static PyObject *mkspent(struct spwd *p)
SETS(setIndex++, p->sp_namp);
SETS(setIndex++, p->sp_pwdp);
+#ifndef __HAIKU__
SETI(setIndex++, p->sp_lstchg);
+#endif
SETI(setIndex++, p->sp_min);
SETI(setIndex++, p->sp_max);
SETI(setIndex++, p->sp_warn);
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 4b4f979..48a2897 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -24,7 +24,7 @@
#ifdef HAVE_MBCS
const char *Py_FileSystemDefaultEncoding = "mbcs";
int Py_HasFileSystemDefaultEncoding = 1;
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
const char *Py_FileSystemDefaultEncoding = "utf-8";
int Py_HasFileSystemDefaultEncoding = 1;
#else
diff --git a/Tools/scripts/h2py.py b/Tools/scripts/h2py.py
index 4f871d9..343e5ba 100755
--- a/Tools/scripts/h2py.py
+++ b/Tools/scripts/h2py.py
@@ -49,12 +49,15 @@ except KeyError:
try:
searchdirs=os.environ['INCLUDE'].split(';')
except KeyError:
- searchdirs=['/usr/include']
- try:
- searchdirs.insert(0, os.path.join('/usr/include',
+ if sys.platform.find("beos") == 0 or sys.platform.find("haiku1") == 0:
+ searchdirs=os.environ['BEINCLUDES'].split(';')
+ else:
+ searchdirs=['/usr/include']
+ try:
+ searchdirs.insert(0, os.path.join('/usr/include',
os.environ['MULTIARCH']))
- except KeyError:
- pass
+ except KeyError:
+ pass
def main():
global filedict
diff --git a/configure.ac b/configure.ac
index a0d0afa..aad64a8 100644
--- a/configure.ac
+++ b/configure.ac
@@ -956,7 +956,7 @@ if test $enable_shared = "yes"; then
PY3LIBRARY=libpython3.so
fi
;;
- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|Haiku*)
LDLIBRARY='libpython$(LDVERSION).so'
BLDLIBRARY='-L. -lpython$(LDVERSION)'
RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
@@ -964,6 +964,9 @@ if test $enable_shared = "yes"; then
FreeBSD*)
SOVERSION=`echo $SOVERSION|cut -d "." -f 1`
;;
+ Haiku*)
+ RUNSHARED=LIBRARY_PATH=`pwd`:${LIBRARY_PATH}
+ ;;
esac
INSTSONAME="$LDLIBRARY".$SOVERSION
if test "$with_pydebug" != yes
@@ -1055,6 +1058,7 @@ AC_PROG_MKDIR_P
AC_SUBST(LN)
if test -z "$LN" ; then
case $ac_sys_system in
+ Haiku*) LN="ln -s";;
CYGWIN*) LN="ln -s";;
*) LN=ln;;
esac
@@ -2055,7 +2059,7 @@ then
BLDSHARED="$LDSHARED"
fi
;;
- Linux*|GNU*|QNX*)
+ Linux*|GNU*|QNX*|Haiku*)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
BSD/OS*/4*)
@@ -2124,7 +2128,7 @@ then
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
- Linux*|GNU*) CCSHARED="-fPIC";;
+ Linux*|GNU*|Haiku*) CCSHARED="-fPIC";;
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
OpenUNIX*|UnixWare*)
@@ -2155,7 +2159,7 @@ then
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
+ Linux*|GNU*|Haiku*) LINKFORSHARED="-Xlinker -export-dynamic";;
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
@@ -2329,6 +2333,12 @@ esac
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
+# Haiku's sockets are stashed in libnetwork.
+case "$ac_sys_system" in
+ Haiku*)
+ AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS);;
+esac
+
AC_MSG_CHECKING(for --with-libs)
AC_ARG_WITH(libs,
AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
@@ -3663,6 +3673,7 @@ fi],
AC_SUBST(LIBM)
case $ac_sys_system in
Darwin) ;;
+Haiku) ;;
*) LIBM=-lm
esac
AC_MSG_CHECKING(for --with-libm=STRING)
diff --git a/setup.py b/setup.py
index 2779658..b1ff43a 100644
--- a/setup.py
+++ b/setup.py
@@ -523,6 +523,12 @@ class PyBuildExt(build_ext):
config_h_vars = sysconfig.parse_config_h(file)
srcdir = sysconfig.get_config_var('srcdir')
+
+ # Haiku-specific library locations
+ if host_platform == 'haiku1':
+ inc_dirs += ['/boot/develop/headers/posix',
+ '/boot/system/develop/headers']
+ lib_dirs += ['/boot/system/develop/lib']
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
if host_platform in ['osf1', 'unixware7', 'openunix8']:
@@ -550,9 +556,9 @@ class PyBuildExt(build_ext):
if item.startswith('-L'):
lib_dirs.append(item[2:])
- # Check for MacOS X, which doesn't need libm.a at all
+ # Check for MacOS X and Haiku, which don't need libm.a at all
math_libs = ['m']
- if host_platform == 'darwin':
+ if host_platform in ['darwin','haiku1']:
math_libs = []
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
@@ -762,15 +768,22 @@ class PyBuildExt(build_ext):
'/usr/local/ssl/include',
'/usr/contrib/ssl/include/'
]
- ssl_incs = find_file('openssl/ssl.h', inc_dirs,
+ ssl_incs = find_file('openssl/ssl.h', [],
+ inc_dirs + search_for_ssl_incs_in
+ )
+ ssl_incs_to_add = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
)
if ssl_incs is not None:
krb5_h = find_file('krb5.h', inc_dirs,
['/usr/kerberos/include'])
if krb5_h:
- ssl_incs += krb5_h
- ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
+ ssl_incs_to_add += krb5_h
+ ssl_libs = find_library_file(self.compiler, 'ssl', [],
+ lib_dirs + ['/usr/local/ssl/lib',
+ '/usr/contrib/ssl/lib/'
+ ] )
+ ssl_libs_to_add = find_library_file(self.compiler, 'ssl', lib_dirs,
['/usr/local/ssl/lib',
'/usr/contrib/ssl/lib/'
] )
@@ -778,8 +791,8 @@ class PyBuildExt(build_ext):
if (ssl_incs is not None and
ssl_libs is not None):
exts.append( Extension('_ssl', ['_ssl.c'],
- include_dirs = ssl_incs,
- library_dirs = ssl_libs,
+ include_dirs = ssl_incs_to_add,
+ library_dirs = ssl_libs_to_add,
libraries = ['ssl', 'crypto'],
depends = ['socketmodule.h']), )
else:
@@ -819,8 +832,8 @@ class PyBuildExt(build_ext):
# of hash functions from the OpenSSL library.
exts.append( Extension('_hashlib', ['_hashopenssl.c'],
depends = ['hashlib.h'],
- include_dirs = ssl_incs,
- library_dirs = ssl_libs,
+ include_dirs = ssl_incs_to_add,
+ library_dirs = ssl_libs_to_add,
libraries = ['ssl', 'crypto']) )
else:
print("warning: openssl 0x%08x is too old for _hashlib" %
@@ -1254,7 +1267,7 @@ class PyBuildExt(build_ext):
exts.append( Extension('resource', ['resource.c']) )
# Sun yellow pages. Some systems have the functions in libc.
- if (host_platform not in ['cygwin', 'qnx6'] and
+ if (host_platform not in ['cygwin', 'qnx6', 'haiku1'] and
find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
if (self.compiler.find_library_file(lib_dirs, 'nsl')):
libs = ['nsl']
--
1.8.3.4

View File

@@ -1,540 +0,0 @@
From ac95fb3752253b437b5bf7a2ca20e6e2527a73b6 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 10 Apr 2014 16:03:33 +0000
Subject: initial Haiku patch
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
index 67db007..dc1c894 100644
--- a/Lib/distutils/command/install.py
+++ b/Lib/distutils/command/install.py
@@ -43,6 +43,27 @@ INSTALL_SCHEMES = {
'data' : '$base',
},
'nt': WINDOWS_SCHEME,
+ 'haiku': {
+ 'purelib': '$base/non-packaged/lib/python$py_version_short/site-packages',
+ 'platlib': '$platbase/non-packaged/lib/python$py_version_short/site-packages',
+ 'headers': '$base/non-packaged/develop/headers/python$py_version_short/$dist_name',
+ 'scripts': '$base/non-packaged/bin',
+ 'data' : '$base/non-packaged',
+ },
+ 'haiku_vendor': {
+ 'purelib': '$base/lib/python$py_version_short/vendor-packages',
+ 'platlib': '$platbase/lib/python$py_version_short/vendor-packages',
+ 'headers': '$base/develop/headers/python$py_version_short/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
+ 'haiku_home': {
+ 'purelib': '$base/lib/python',
+ 'platlib': '$base/lib/python',
+ 'headers': '$base/develop/headers/python/$dist_name',
+ 'scripts': '$base/bin',
+ 'data' : '$base',
+ },
}
# user site schemes
@@ -64,6 +85,14 @@ if HAS_USER_SITE:
'data' : '$userbase',
}
+ INSTALL_SCHEMES['haiku_user'] = {
+ 'purelib': '$usersite',
+ 'platlib': '$usersite',
+ 'headers': '$userbase/develop/headers/python$py_version_short/$dist_name',
+ 'scripts': '$userbase/bin',
+ 'data' : '$userbase',
+ }
+
# The keys to an installation scheme; if any new types of files are to be
# installed, be sure to add an entry to every installation scheme above,
# and to SCHEME_KEYS here.
@@ -406,10 +435,16 @@ class install(Command):
raise DistutilsPlatformError(
"User base directory is not specified")
self.install_base = self.install_platbase = self.install_userbase
- self.select_scheme("unix_user")
+ if sys.platform.startswith('haiku'):
+ self.select_scheme("haiku_user")
+ else:
+ self.select_scheme("unix_user")
elif self.home is not None:
self.install_base = self.install_platbase = self.home
- self.select_scheme("unix_home")
+ if sys.platform.startswith('haiku'):
+ self.select_scheme("haiku_home")
+ else:
+ self.select_scheme("unix_home")
else:
if self.prefix is None:
if self.exec_prefix is not None:
@@ -425,7 +460,13 @@ class install(Command):
self.install_base = self.prefix
self.install_platbase = self.exec_prefix
- self.select_scheme("unix_prefix")
+ if sys.platform.startswith('haiku'):
+ if os.environ.get('HAIKU_USE_VENDOR_DIRECTORIES') == '1':
+ self.select_scheme("haiku_vendor")
+ else:
+ self.select_scheme("haiku")
+ else:
+ self.select_scheme("unix_prefix")
def finalize_other(self):
"""Finalizes options for non-posix platforms"""
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 573724d..10dd008 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -102,7 +102,8 @@ def get_python_inc(plat_specific=0, prefix=None):
incdir = os.path.join(get_config_var('srcdir'), 'Include')
return os.path.normpath(incdir)
python_dir = 'python' + get_python_version() + build_flags
- return os.path.join(prefix, "include", python_dir)
+ inc_dir = "include" if sys.platform != "haiku1" else "develop/headers"
+ return os.path.join(prefix, inc_dir, python_dir)
elif os.name == "nt":
return os.path.join(prefix, "include")
else:
@@ -132,12 +133,20 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
prefix = plat_specific and EXEC_PREFIX or PREFIX
if os.name == "posix":
- libpython = os.path.join(prefix,
- "lib", "python" + get_python_version())
- if standard_lib:
- return libpython
+ if sys.platform.startswith('haiku'):
+ if standard_lib:
+ return os.path.join(prefix,
+ "lib", "python" + get_python_version())
+ return os.path.join(prefix, "non-packaged",
+ "lib", "python" + get_python_version(),
+ "site-packages")
else:
- return os.path.join(libpython, "site-packages")
+ libpython = os.path.join(prefix,
+ "lib", "python" + get_python_version())
+ if standard_lib:
+ return libpython
+ else:
+ return os.path.join(libpython, "site-packages")
elif os.name == "nt":
if standard_lib:
return os.path.join(prefix, "Lib")
diff --git a/Lib/plat-haiku1/regen b/Lib/plat-haiku1/regen
new file mode 100644
index 0000000..4372ee2
--- /dev/null
+++ b/Lib/plat-haiku1/regen
@@ -0,0 +1,4 @@
+#! /bin/sh
+HEADERS=/boot/develop/headers
+set -v
+eval $PYTHON_FOR_BUILD ../../Tools/scripts/h2py.py -i "'(u_long)'" $HEADERS/posix/netinet/in.h
diff --git a/Lib/site.py b/Lib/site.py
index 3f78ef5..e2616e8 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -302,7 +302,14 @@ def getsitepackages(prefixes=None):
continue
seen.add(prefix)
- if os.sep == '/':
+ if sys.platform.startswith('haiku'):
+ sitepackages.append(os.path.join(prefix, "non-packaged", "lib",
+ "python" + sys.version[:3],
+ "site-packages"))
+ sitepackages.append(os.path.join(prefix, "lib",
+ "python" + sys.version[:3],
+ "vendor-packages"))
+ elif os.sep == '/':
sitepackages.append(os.path.join(prefix, "lib",
"python" + sys.version[:3],
"site-packages"))
diff --git a/Lib/test/test_fileio.py b/Lib/test/test_fileio.py
index 12f2f11..097ec1b 100644
--- a/Lib/test/test_fileio.py
+++ b/Lib/test/test_fileio.py
@@ -377,6 +377,7 @@ class OtherFileTests:
self.assertEqual(f.writable(), True)
if sys.platform != "darwin" and \
'bsd' not in sys.platform and \
+ 'haiku' not in sys.platform and \
not sys.platform.startswith(('sunos', 'aix')):
# Somehow /dev/tty appears seekable on some BSDs
self.assertEqual(f.seekable(), False)
diff --git a/Makefile.pre.in b/Makefile.pre.in
index a88b7d5..c305955 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -125,7 +125,7 @@ BINDIR= @bindir@
LIBDIR= @libdir@
MANDIR= @mandir@
INCLUDEDIR= @includedir@
-CONFINCLUDEDIR= $(exec_prefix)/include
+CONFINCLUDEDIR= $(INCLUDEDIR)
SCRIPTDIR= $(prefix)/lib
ABIFLAGS= @ABIFLAGS@
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index 3e446a5..fd24794 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -12788,7 +12788,7 @@ all_ins(PyObject *m)
if (PyModule_AddIntMacro(m, SCHED_RR)) return -1;
#endif
#ifdef SCHED_SPORADIC
- if (PyModule_AddIntMacro(m, SCHED_SPORADIC) return -1;
+ if (PyModule_AddIntMacro(m, SCHED_SPORADIC)) return -1;
#endif
#ifdef SCHED_BATCH
if (PyModule_AddIntMacro(m, SCHED_BATCH)) return -1;
diff --git a/Modules/resource.c b/Modules/resource.c
index 970ee84..c38c716 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -83,6 +83,7 @@ resource_getrusage(PyObject *self, PyObject *args)
PyFloat_FromDouble(doubletime(ru.ru_utime)));
PyStructSequence_SET_ITEM(result, 1,
PyFloat_FromDouble(doubletime(ru.ru_stime)));
+#ifndef __HAIKU__
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(ru.ru_maxrss));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(ru.ru_ixrss));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(ru.ru_idrss));
@@ -97,7 +98,22 @@ resource_getrusage(PyObject *self, PyObject *args)
PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(ru.ru_nsignals));
PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(ru.ru_nvcsw));
PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(ru.ru_nivcsw));
-
+#else
+ PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 5, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 6, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 7, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 8, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 9, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 10, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 11, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 12, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(0));
+ PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(0));
+#endif
if (PyErr_Occurred()) {
Py_DECREF(result);
return NULL;
@@ -332,19 +348,19 @@ PyInit_resource(void)
(PyObject*) &StructRUsageType);
/* insert constants */
-#ifdef RLIMIT_CPU
+#if !defined(__HAIKU__) && defined(RLIMIT_CPU)
PyModule_AddIntMacro(m, RLIMIT_CPU);
#endif
-#ifdef RLIMIT_FSIZE
+#if !defined(__HAIKU__) && defined(RLIMIT_FSIZE)
PyModule_AddIntMacro(m, RLIMIT_FSIZE);
#endif
-#ifdef RLIMIT_DATA
+#if !defined(__HAIKU__) && defined(RLIMIT_DATA)
PyModule_AddIntMacro(m, RLIMIT_DATA);
#endif
-#ifdef RLIMIT_STACK
+#if !defined(__HAIKU__) && defined(RLIMIT_STACK)
PyModule_AddIntMacro(m, RLIMIT_STACK);
#endif
@@ -356,31 +372,31 @@ PyInit_resource(void)
PyModule_AddIntMacro(m, RLIMIT_NOFILE);
#endif
-#ifdef RLIMIT_OFILE
+#if !defined(__HAIKU__) && defined(RLIMIT_OFILE)
PyModule_AddIntMacro(m, RLIMIT_OFILE);
#endif
-#ifdef RLIMIT_VMEM
+#if !defined(__HAIKU__) && defined(RLIMIT_VMEM)
PyModule_AddIntMacro(m, RLIMIT_VMEM);
#endif
-#ifdef RLIMIT_AS
+#if !defined(__HAIKU__) && defined(RLIMIT_AS)
PyModule_AddIntMacro(m, RLIMIT_AS);
#endif
-#ifdef RLIMIT_RSS
+#if !defined(__HAIKU__) && defined(RLIMIT_RSS)
PyModule_AddIntMacro(m, RLIMIT_RSS);
#endif
-#ifdef RLIMIT_NPROC
+#if !defined(__HAIKU__) && defined(RLIMIT_NPROC)
PyModule_AddIntMacro(m, RLIMIT_NPROC);
#endif
-#ifdef RLIMIT_MEMLOCK
+#if !defined(__HAIKU__) && defined(RLIMIT_MEMLOCK)
PyModule_AddIntMacro(m, RLIMIT_MEMLOCK);
#endif
-#ifdef RLIMIT_SBSIZE
+#if !defined(__HAIKU__) && defined(RLIMIT_SBSIZE)
PyModule_AddIntMacro(m, RLIMIT_SBSIZE);
#endif
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index af6cc94..8631fca 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -6443,7 +6443,9 @@ PyInit__socket(void)
PyModule_AddIntMacro(m, SOCK_DGRAM);
/* We have incomplete socket support. */
PyModule_AddIntMacro(m, SOCK_RAW);
+#ifndef __HAIKU__
PyModule_AddIntMacro(m, SOCK_SEQPACKET);
+#endif
#if defined(SOCK_RDM)
PyModule_AddIntMacro(m, SOCK_RDM);
#endif
diff --git a/Modules/socketmodule.h b/Modules/socketmodule.h
index 3cce927..6241a7d 100644
--- a/Modules/socketmodule.h
+++ b/Modules/socketmodule.h
@@ -54,6 +54,10 @@ typedef int socklen_t;
# undef AF_NETLINK
#endif
+#if defined(__HAIKU__)
+#undef HAVE_BLUETOOTH_BLUETOOTH_H
+#endif
+
#ifdef HAVE_BLUETOOTH_BLUETOOTH_H
#include <bluetooth/bluetooth.h>
#include <bluetooth/rfcomm.h>
diff --git a/Modules/spwdmodule.c b/Modules/spwdmodule.c
index 4b9f3cd..76e7d46 100644
--- a/Modules/spwdmodule.c
+++ b/Modules/spwdmodule.c
@@ -87,7 +87,9 @@ static PyObject *mkspent(struct spwd *p)
SETS(setIndex++, p->sp_namp);
SETS(setIndex++, p->sp_pwdp);
+#ifndef __HAIKU__
SETI(setIndex++, p->sp_lstchg);
+#endif
SETI(setIndex++, p->sp_min);
SETI(setIndex++, p->sp_max);
SETI(setIndex++, p->sp_warn);
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 9f5db2a..0091e48 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -24,7 +24,7 @@
#ifdef HAVE_MBCS
const char *Py_FileSystemDefaultEncoding = "mbcs";
int Py_HasFileSystemDefaultEncoding = 1;
-#elif defined(__APPLE__)
+#elif defined(__APPLE__) || defined(__HAIKU__)
const char *Py_FileSystemDefaultEncoding = "utf-8";
int Py_HasFileSystemDefaultEncoding = 1;
#else
diff --git a/Tools/scripts/h2py.py b/Tools/scripts/h2py.py
index 0967fc2..e30a59a 100755
--- a/Tools/scripts/h2py.py
+++ b/Tools/scripts/h2py.py
@@ -49,12 +49,15 @@ except KeyError:
try:
searchdirs=os.environ['INCLUDE'].split(';')
except KeyError:
- searchdirs=['/usr/include']
- try:
- searchdirs.insert(0, os.path.join('/usr/include',
+ if sys.platform.find("beos") == 0 or sys.platform.find("haiku1") == 0:
+ searchdirs=os.environ['BEINCLUDES'].split(';')
+ else:
+ searchdirs=['/usr/include']
+ try:
+ searchdirs.insert(0, os.path.join('/usr/include',
os.environ['MULTIARCH']))
- except KeyError:
- pass
+ except KeyError:
+ pass
def main():
global filedict
diff --git a/configure.ac b/configure.ac
index 49d1a37..34a810e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1129,6 +1129,16 @@ if test $enable_shared = "yes"; then
PY3LIBRARY=libpython3.so
fi
;;
+ Haiku*)
+ LDLIBRARY='libpython$(LDVERSION).so'
+ BLDLIBRARY='-L. -lpython$(LDVERSION)'
+ RUNSHARED=LIBRARY_PATH=`pwd`${LIBRARY_PATH:+:${LIBRARY_PATH}}
+ INSTSONAME="$LDLIBRARY".$SOVERSION
+ if test "$with_pydebug" != yes
+ then
+ PY3LIBRARY=libpython3.so
+ fi
+ ;;
hp*|HP*)
case `uname -m` in
ia64)
@@ -1205,6 +1215,7 @@ AC_PROG_MKDIR_P
AC_SUBST(LN)
if test -z "$LN" ; then
case $ac_sys_system in
+ Haiku*) LN="ln -s";;
CYGWIN*) LN="ln -s";;
*) LN=ln;;
esac
@@ -2437,7 +2448,7 @@ then
BLDSHARED="$LDSHARED"
fi
;;
- Linux*|GNU*|QNX*)
+ Linux*|GNU*|QNX*|Haiku*)
LDSHARED='$(CC) -shared'
LDCXXSHARED='$(CXX) -shared';;
BSD/OS*/4*)
@@ -2506,7 +2517,7 @@ then
then CCSHARED="-fPIC";
else CCSHARED="+z";
fi;;
- Linux*|GNU*) CCSHARED="-fPIC";;
+ Linux*|GNU*|Haiku*) CCSHARED="-fPIC";;
BSD/OS*/4*) CCSHARED="-fpic";;
FreeBSD*|NetBSD*|OpenBSD*|DragonFly*) CCSHARED="-fPIC";;
OpenUNIX*|UnixWare*)
@@ -2537,7 +2548,7 @@ then
LINKFORSHARED="-Wl,-E -Wl,+s";;
# LINKFORSHARED="-Wl,-E -Wl,+s -Wl,+b\$(BINLIBDEST)/lib-dynload";;
BSD/OS/4*) LINKFORSHARED="-Xlinker -export-dynamic";;
- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
+ Linux*|GNU*|Haiku*) LINKFORSHARED="-Xlinker -export-dynamic";;
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
@@ -2719,6 +2730,12 @@ LDFLAGS="-fsanitize=address $LDFLAGS"
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
+# Haiku's sockets are stashed in libnetwork.
+case "$ac_sys_system" in
+ Haiku*)
+ AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS);;
+esac
+
AC_MSG_CHECKING(for --with-libs)
AC_ARG_WITH(libs,
AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
@@ -4066,6 +4083,7 @@ fi],
AC_SUBST(LIBM)
case $ac_sys_system in
Darwin) ;;
+Haiku) ;;
*) LIBM=-lm
esac
AC_MSG_CHECKING(for --with-libm=STRING)
diff --git a/setup.py b/setup.py
index 40f8bf2..be498e3 100644
--- a/setup.py
+++ b/setup.py
@@ -480,8 +480,8 @@ class PyBuildExt(build_ext):
os.unlink(tmpfile)
def detect_math_libs(self):
- # Check for MacOS X, which doesn't need libm.a at all
- if host_platform == 'darwin':
+ # Check for MacOS X and Haiku, which doesn't need libm.a at all
+ if host_platform in ['darwin','haiku1']:
return []
else:
return ['m']
@@ -563,6 +563,12 @@ class PyBuildExt(build_ext):
config_h_vars = sysconfig.parse_config_h(file)
srcdir = sysconfig.get_config_var('srcdir')
+
+ # Haiku-specific library locations
+ if host_platform == 'haiku1':
+ inc_dirs += ['/boot/develop/headers/posix',
+ '/boot/system/develop/headers']
+ lib_dirs += ['/boot/system/develop/lib']
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
if host_platform in ['osf1', 'unixware7', 'openunix8']:
@@ -811,15 +817,22 @@ class PyBuildExt(build_ext):
'/usr/local/ssl/include',
'/usr/contrib/ssl/include/'
]
- ssl_incs = find_file('openssl/ssl.h', inc_dirs,
+ ssl_incs = find_file('openssl/ssl.h', [],
+ inc_dirs + search_for_ssl_incs_in
+ )
+ ssl_incs_to_add = find_file('openssl/ssl.h', inc_dirs,
search_for_ssl_incs_in
)
if ssl_incs is not None:
krb5_h = find_file('krb5.h', inc_dirs,
['/usr/kerberos/include'])
if krb5_h:
- ssl_incs += krb5_h
- ssl_libs = find_library_file(self.compiler, 'ssl',lib_dirs,
+ ssl_incs_to_add += krb5_h
+ ssl_libs = find_library_file(self.compiler, 'ssl', [],
+ lib_dirs + ['/usr/local/ssl/lib',
+ '/usr/contrib/ssl/lib/'
+ ] )
+ ssl_libs_to_add = find_library_file(self.compiler, 'ssl', lib_dirs,
['/usr/local/ssl/lib',
'/usr/contrib/ssl/lib/'
] )
@@ -827,8 +840,8 @@ class PyBuildExt(build_ext):
if (ssl_incs is not None and
ssl_libs is not None):
exts.append( Extension('_ssl', ['_ssl.c'],
- include_dirs = ssl_incs,
- library_dirs = ssl_libs,
+ include_dirs = ssl_incs_to_add,
+ library_dirs = ssl_libs_to_add,
libraries = ['ssl', 'crypto'],
depends = ['socketmodule.h']), )
else:
@@ -868,8 +881,8 @@ class PyBuildExt(build_ext):
# of hash functions from the OpenSSL library.
exts.append( Extension('_hashlib', ['_hashopenssl.c'],
depends = ['hashlib.h'],
- include_dirs = ssl_incs,
- library_dirs = ssl_libs,
+ include_dirs = ssl_incs_to_add,
+ library_dirs = ssl_libs_to_add,
libraries = ['ssl', 'crypto']) )
else:
print("warning: openssl 0x%08x is too old for _hashlib" %
@@ -1303,7 +1316,7 @@ class PyBuildExt(build_ext):
exts.append( Extension('resource', ['resource.c']) )
# Sun yellow pages. Some systems have the functions in libc.
- if (host_platform not in ['cygwin', 'qnx6'] and
+ if (host_platform not in ['cygwin', 'qnx6', 'haiku1'] and
find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
if (self.compiler.find_library_file(lib_dirs, 'nsl')):
libs = ['nsl']
--
2.10.2

View File

@@ -1,4 +1,4 @@
From 86342bd79fd31f85bfb8df30d0b8bf1cc66cbd75 Mon Sep 17 00:00:00 2001
From a4cd9d290a0fe86b16dbd55dc5de35390ba2bd0d Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Thu, 10 Apr 2014 16:03:33 +0000
Subject: initial Haiku patch
@@ -86,10 +86,10 @@ index 0258d3d..aaec6e6 100644
def finalize_other(self):
"""Finalizes options for non-posix platforms"""
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
index 2bcd1dd..8d8ff39 100644
index 83160f8..7e9fec5 100644
--- a/Lib/distutils/sysconfig.py
+++ b/Lib/distutils/sysconfig.py
@@ -99,7 +99,8 @@ def get_python_inc(plat_specific=0, prefix=None):
@@ -107,7 +107,8 @@ def get_python_inc(plat_specific=0, prefix=None):
incdir = os.path.join(get_config_var('srcdir'), 'Include')
return os.path.normpath(incdir)
python_dir = 'python' + get_python_version() + build_flags
@@ -97,9 +97,9 @@ index 2bcd1dd..8d8ff39 100644
+ inc_dir = "include" if sys.platform != "haiku1" else "develop/headers"
+ return os.path.join(prefix, inc_dir, python_dir)
elif os.name == "nt":
return os.path.join(prefix, "include")
else:
@@ -129,12 +130,20 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
if python_build:
# Include both the include and PC dir to ensure we can find
@@ -142,12 +143,20 @@ def get_python_lib(plat_specific=0, standard_lib=0, prefix=None):
prefix = plat_specific and EXEC_PREFIX or PREFIX
if os.name == "posix":
@@ -136,7 +136,7 @@ index 0000000..4372ee2
+set -v
+eval $PYTHON_FOR_BUILD ../../Tools/scripts/h2py.py -i "'(u_long)'" $HEADERS/posix/netinet/in.h
diff --git a/Lib/site.py b/Lib/site.py
index ffd132b..9876642 100644
index ad11463..e39080e 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -258,6 +258,14 @@ def _getuserbase():
@@ -215,7 +215,7 @@ index 11180b7..d99f73e 100644
def test_mknod_dir_fd(self):
# Test using mknodat() to create a FIFO (the only use specified
diff --git a/Makefile.pre.in b/Makefile.pre.in
index d912a19..4829a67 100644
index 2d2e11f..b1848a2 100644
--- a/Makefile.pre.in
+++ b/Makefile.pre.in
@@ -141,7 +141,7 @@ BINDIR= @bindir@
@@ -228,10 +228,10 @@ index d912a19..4829a67 100644
ABIFLAGS= @ABIFLAGS@
diff --git a/Modules/resource.c b/Modules/resource.c
index 113ad5c..b9de0ab 100644
index e59280f..f1aaef9 100644
--- a/Modules/resource.c
+++ b/Modules/resource.c
@@ -102,6 +102,7 @@ resource_getrusage(PyObject *self, PyObject *args)
@@ -102,6 +102,7 @@ resource_getrusage_impl(PyObject *module, int who)
PyFloat_FromDouble(doubletime(ru.ru_utime)));
PyStructSequence_SET_ITEM(result, 1,
PyFloat_FromDouble(doubletime(ru.ru_stime)));
@@ -239,7 +239,7 @@ index 113ad5c..b9de0ab 100644
PyStructSequence_SET_ITEM(result, 2, PyLong_FromLong(ru.ru_maxrss));
PyStructSequence_SET_ITEM(result, 3, PyLong_FromLong(ru.ru_ixrss));
PyStructSequence_SET_ITEM(result, 4, PyLong_FromLong(ru.ru_idrss));
@@ -116,7 +117,22 @@ resource_getrusage(PyObject *self, PyObject *args)
@@ -116,7 +117,22 @@ resource_getrusage_impl(PyObject *module, int who)
PyStructSequence_SET_ITEM(result, 13, PyLong_FromLong(ru.ru_nsignals));
PyStructSequence_SET_ITEM(result, 14, PyLong_FromLong(ru.ru_nvcsw));
PyStructSequence_SET_ITEM(result, 15, PyLong_FromLong(ru.ru_nivcsw));
@@ -327,10 +327,10 @@ index 113ad5c..b9de0ab 100644
#endif
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index ed31667..e1c163e 100644
index 988471e..d1f3bcf 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -7122,7 +7122,9 @@ PyInit__socket(void)
@@ -7142,7 +7142,9 @@ PyInit__socket(void)
/* SOCK_RAW is marked as optional in the POSIX specification */
PyModule_AddIntMacro(m, SOCK_RAW);
#endif
@@ -341,7 +341,7 @@ index ed31667..e1c163e 100644
PyModule_AddIntMacro(m, SOCK_RDM);
#endif
diff --git a/Modules/socketmodule.h b/Modules/socketmodule.h
index af7c36a..ca5a873 100644
index 0b2edc1..1ee4fdd 100644
--- a/Modules/socketmodule.h
+++ b/Modules/socketmodule.h
@@ -54,6 +54,10 @@ typedef int socklen_t;
@@ -381,7 +381,7 @@ index 1601ec0..4c98fe8 100644
else
PyErr_SetString(PyExc_KeyError, "getspnam(): name not found");
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index d7b0bbd..ee9bebc 100644
index 6306c3a..847becf 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -17,7 +17,7 @@
@@ -419,7 +419,7 @@ index 4363c0c..40994b0 100755
def main():
global filedict
diff --git a/configure.ac b/configure.ac
index 3f2459a..62bc0c0 100644
index ad0f4d4..80d2649 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1151,6 +1151,16 @@ if test $enable_shared = "yes"; then
@@ -474,7 +474,7 @@ index 3f2459a..62bc0c0 100644
# -u libsys_s pulls in all symbols in libsys
Darwin/*)
LINKFORSHARED="$extra_undefs -framework CoreFoundation"
@@ -2949,6 +2960,12 @@ LDFLAGS="-fsanitize=address $LDFLAGS"
@@ -2949,6 +2960,12 @@ LDFLAGS="-fsanitize=undefined $LDFLAGS"
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
@@ -487,7 +487,7 @@ index 3f2459a..62bc0c0 100644
AC_MSG_CHECKING(for --with-libs)
AC_ARG_WITH(libs,
AS_HELP_STRING([--with-libs='lib1 ...'], [link against additional libs]),
@@ -4276,6 +4293,7 @@ fi],
@@ -4293,6 +4310,7 @@ AC_CHECK_FUNC(__fpu_control,
AC_SUBST(LIBM)
case $ac_sys_system in
Darwin) ;;
@@ -571,15 +571,18 @@ index b4357e3..df227d1 100644
return None
libs = []
--
2.21.0
From d9e7a5386b6668d9bf46b1ade6356322ea11fa41 Mon Sep 17 00:00:00 2001
From b06b387748b4a4f7dfc989a02ab3e9b0dd5ad4b6 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sun, 16 Apr 2017 10:05:42 +0200
Subject: fix for negative errnos
diff --git a/Lib/subprocess.py b/Lib/subprocess.py
index 290ae44..95ec9d3 100644
index 3c1abb7..5e96075 100644
--- a/Lib/subprocess.py
+++ b/Lib/subprocess.py
@@ -1508,6 +1508,8 @@ class Popen(object):
@@ -592,7 +595,7 @@ index 290ae44..95ec9d3 100644
if child_exec_never_called:
err_msg = ""
diff --git a/Modules/_posixsubprocess.c b/Modules/_posixsubprocess.c
index fe0e554..d2a0d52 100644
index 3cf0683..adf3608 100644
--- a/Modules/_posixsubprocess.c
+++ b/Modules/_posixsubprocess.c
@@ -534,6 +534,10 @@ error:
@@ -607,17 +610,17 @@ index fe0e554..d2a0d52 100644
*--cur = Py_hexdigits[saved_errno % 16];
saved_errno /= 16;
--
2.19.1
2.21.0
From f9408c3d0f3242fa21cb06278ded8b684eafd805 Mon Sep 17 00:00:00 2001
From 6bb4b749c391d619d74e9f2c741854878b9527dc Mon Sep 17 00:00:00 2001
From: Philippe Houdoin <philippe.houdoin@gmail.com>
Date: Wed, 24 May 2017 11:09:43 +0000
Subject: Implement CTypes's find_library for Haiku
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
index 339ae8a..d537963 100644
index 97973bc..b2e4095 100644
--- a/Lib/ctypes/util.py
+++ b/Lib/ctypes/util.py
@@ -252,6 +252,56 @@ elif os.name == "posix":
@@ -691,5 +694,5 @@ index 339ae8a..d537963 100644
print(cdll.LoadLibrary("libm.so"))
print(cdll.LoadLibrary("libcrypt.so"))
--
2.19.1
2.21.0

View File

@@ -1,111 +0,0 @@
SUMMARY="An interpreted, interactive, object-oriented programming language"
DESCRIPTION="
Python is a programming language that lets you work more quickly and integrate \
your systems more effectively. You can learn to use Python and see almost \
immediate gains in productivity and lower maintenance costs.
Python runs on Windows, Linux/Unix, Mac OS X, and has been ported to the Java \
and .NET virtual machines.
Python is free to use, even for commercial products, because of its \
OSI-approved open source license.
"
HOMEPAGE="https://www.python.org"
COPYRIGHT="1990-2012, Python Software Foundation"
LICENSE="Python"
REVISION="2"
SOURCE_URI="https://www.python.org/ftp/python/$portVersion/Python-$portVersion.tar.xz"
CHECKSUM_SHA256="d7837121dd5652a05fef807c361909d255d173280c4e1a4ded94d73d80a1f978"
SOURCE_DIR="Python-$portVersion"
PATCHES="python-$portVersion.patchset"
ARCHITECTURES="x86_gcc2 x86 x86_64"
GLOBAL_WRITABLE_FILES="
non-packaged/lib/python2.7/site-packages directory keep-old
"
PROVIDES="
python = $portVersion compat >= 2.7
cmd:2to3 = $portVersion compat >= 2.7
cmd:idle = $portVersion compat >= 2.7
cmd:pydoc = $portVersion compat >= 2.7
cmd:python = $portVersion compat >= 2.7
cmd:python2 = $portVersion compat >= 2.7
cmd:python2.7 = $portVersion compat >= 2.7
cmd:python2.7_config = $portVersion compat >= 2.7
cmd:python2_config = $portVersion compat >= 2.7
cmd:python_config = $portVersion compat >= 2.7
cmd:smtpd.py = $portVersion compat >= 2.7
devel:libpython2.7 = 1.0
lib:libpython2.7 = 1.0
"
REQUIRES="
haiku
lib:libbz2
lib:libffi
lib:libncurses
lib:libreadline
lib:libsqlite3
lib:libssl
lib:libz
"
BUILD_REQUIRES="
devel:libbz2
devel:libffi
devel:libncurses
devel:libreadline
devel:libsqlite3
devel:libssl
devel:libz
"
BUILD_PREREQUIRES="
haiku_devel
cmd:aclocal
cmd:autoconf
cmd:find
cmd:gcc
cmd:ld
cmd:libtoolize
cmd:make
cmd:pkg_config
"
BUILD()
{
cd Modules/_ctypes/libffi
libtoolize --force --copy --install
cd ../../..
libtoolize --force --copy --install
aclocal
autoconf
runConfigure ./configure --with-system-ffi \
--enable-shared \
--enable-unicode=ucs4
# prevent make from rebuilding stuff that requires python
touch Parser/asdl* Python/Python-ast.c Include/Python-ast.h \
Python/opcode_targets.h
make $jobArgs
}
INSTALL()
{
make install
prepareInstalledDevelLibs libpython2.7
fixPkgconfig
mkdir -p $prefix/lib/python2.7/vendor-packages
echo 'This directory contains packaged python modules.' \
>$prefix/lib/python2.7/vendor-packages/README
mkdir -p $prefix/non-packaged/lib/python2.7
mv $prefix/lib/python2.7/site-packages $prefix/non-packaged/lib/python2.7/
}
TEST()
{
make $jobArgs test
}

View File

@@ -1,111 +0,0 @@
SUMMARY="An interpreted, interactive, object-oriented programming language"
DESCRIPTION="
Python is a programming language that lets you work more quickly and integrate \
your systems more effectively. You can learn to use Python and see almost \
immediate gains in productivity and lower maintenance costs.
Python runs on Windows, Linux/Unix, Mac OS X, and has been ported to the Java \
and .NET virtual machines.
Python is free to use, even for commercial products, because of its \
OSI-approved open source license.
"
HOMEPAGE="https://www.python.org"
COPYRIGHT="1990-2017, Python Software Foundation"
LICENSE="Python"
REVISION="4"
SOURCE_URI="https://www.python.org/ftp/python/$portVersion/Python-$portVersion.tar.xz"
CHECKSUM_SHA256="35d543986882f78261f97787fd3e06274bfa6df29fac9b4a94f73930ff98f731"
SOURCE_DIR="Python-$portVersion"
PATCHES="python-$portVersion.patchset"
ARCHITECTURES="?x86_gcc2 x86 x86_64"
GLOBAL_WRITABLE_FILES="
non-packaged/lib/python2.7/site-packages directory keep-old
"
PROVIDES="
python = $portVersion compat >= 2.7
cmd:2to3 = $portVersion compat >= 2.7
cmd:idle = $portVersion compat >= 2.7
cmd:pydoc = $portVersion compat >= 2.7
cmd:python = $portVersion compat >= 2.7
cmd:python2 = $portVersion compat >= 2.7
cmd:python2.7 = $portVersion compat >= 2.7
cmd:python2.7_config = $portVersion compat >= 2.7
cmd:python2_config = $portVersion compat >= 2.7
cmd:python_config = $portVersion compat >= 2.7
cmd:smtpd.py = $portVersion compat >= 2.7
devel:libpython2.7 = 1.0
lib:libpython2.7 = 1.0
"
REQUIRES="
haiku
lib:libbz2
lib:libffi
lib:libncurses
lib:libreadline
lib:libsqlite3
lib:libssl
lib:libz
"
BUILD_REQUIRES="
devel:libbz2
devel:libffi
devel:libncurses
devel:libreadline
devel:libsqlite3
devel:libssl
devel:libz
"
BUILD_PREREQUIRES="
haiku_devel
cmd:aclocal
cmd:autoconf
cmd:find
cmd:gcc
cmd:ld
cmd:libtoolize
cmd:make
cmd:pkg_config
"
BUILD()
{
cd Modules/_ctypes/libffi
libtoolize --force --copy --install
cd ../../..
libtoolize --force --copy --install
aclocal
autoconf
runConfigure ./configure --with-system-ffi \
--enable-shared \
--enable-unicode=ucs4
# prevent make from rebuilding stuff that requires python
touch Parser/asdl* Python/Python-ast.c Include/Python-ast.h \
Python/opcode_targets.h
make $jobArgs
}
INSTALL()
{
make install
prepareInstalledDevelLibs libpython2.7
fixPkgconfig
mkdir -p $prefix/lib/python2.7/vendor-packages
echo 'This directory contains packaged python modules.' \
>$prefix/lib/python2.7/vendor-packages/README
mkdir -p $prefix/non-packaged/lib/python2.7
mv $prefix/lib/python2.7/site-packages $prefix/non-packaged/lib/python2.7/
}
TEST()
{
make $jobArgs test
}

View File

@@ -1,111 +0,0 @@
SUMMARY="An interpreted, interactive, object-oriented programming language"
DESCRIPTION="
Python is a programming language that lets you work more quickly and integrate \
your systems more effectively. You can learn to use Python and see almost \
immediate gains in productivity and lower maintenance costs.
Python runs on Windows, Linux/Unix, Mac OS X, and has been ported to the Java \
and .NET virtual machines.
Python is free to use, even for commercial products, because of its \
OSI-approved open source license.
"
HOMEPAGE="https://www.python.org/"
COPYRIGHT="1990-2017 Python Software Foundation"
LICENSE="Python"
REVISION="2"
SOURCE_URI="https://www.python.org/ftp/python/$portVersion/Python-$portVersion.tar.xz"
CHECKSUM_SHA256="71ffb26e09e78650e424929b2b457b9c912ac216576e6bd9e7d204ed03296a66"
SOURCE_DIR="Python-$portVersion"
PATCHES="python-$portVersion.patchset"
ARCHITECTURES="?x86_gcc2 x86 x86_64"
GLOBAL_WRITABLE_FILES="
non-packaged/lib/python2.7/site-packages directory keep-old
"
PROVIDES="
python = $portVersion compat >= 2.7
cmd:2to3 = $portVersion compat >= 2.7
cmd:idle = $portVersion compat >= 2.7
cmd:pydoc = $portVersion compat >= 2.7
cmd:python = $portVersion compat >= 2.7
cmd:python2 = $portVersion compat >= 2.7
cmd:python2.7 = $portVersion compat >= 2.7
cmd:python2.7_config = $portVersion compat >= 2.7
cmd:python2_config = $portVersion compat >= 2.7
cmd:python_config = $portVersion compat >= 2.7
cmd:smtpd.py = $portVersion compat >= 2.7
devel:libpython2.7 = 1.0
lib:libpython2.7 = 1.0
"
REQUIRES="
haiku
lib:libbz2
lib:libffi
lib:libncurses
lib:libreadline
lib:libsqlite3
lib:libssl
lib:libz
"
BUILD_REQUIRES="
devel:libbz2
devel:libffi
devel:libncurses
devel:libreadline
devel:libsqlite3
devel:libssl
devel:libz
"
BUILD_PREREQUIRES="
haiku_devel
cmd:aclocal
cmd:autoconf
cmd:find
cmd:gcc
cmd:ld
cmd:libtoolize
cmd:make
cmd:pkg_config
"
BUILD()
{
cd Modules/_ctypes/libffi
libtoolize --force --copy --install
cd ../../..
libtoolize --force --copy --install
aclocal
autoconf
runConfigure ./configure --with-system-ffi \
--enable-shared \
--enable-unicode=ucs4
# prevent make from rebuilding stuff that requires python
touch Parser/asdl* Python/Python-ast.c Include/Python-ast.h \
Python/opcode_targets.h
make $jobArgs
}
INSTALL()
{
make install
prepareInstalledDevelLibs libpython2.7
fixPkgconfig
mkdir -p $prefix/lib/python2.7/vendor-packages
echo 'This directory contains packaged python modules.' \
>$prefix/lib/python2.7/vendor-packages/README
mkdir -p $prefix/non-packaged/lib/python2.7
mv $prefix/lib/python2.7/site-packages $prefix/non-packaged/lib/python2.7/
}
TEST()
{
make $jobArgs test
}

View File

@@ -13,7 +13,7 @@ COPYRIGHT="1990-2018 Python Software Foundation"
LICENSE="Python"
REVISION="1"
SOURCE_URI="https://www.python.org/ftp/python/$portVersion/Python-$portVersion.tar.xz"
CHECKSUM_SHA256="22d9b1ac5b26135ad2b8c2901a9413537e08749a753356ee913c84dbd2df5574"
CHECKSUM_SHA256="f222ef602647eecb6853681156d32de4450a2c39f4de93bd5b20235f2e660ed7"
SOURCE_DIR="Python-$portVersion"
PATCHES="python-$portVersion.patchset"

View File

@@ -13,7 +13,7 @@ LICENSE="Python"
COPYRIGHT="1990-2018 Python Software Foundation"
REVISION="1"
SOURCE_URI="https://www.python.org/ftp/python/$portVersion/Python-$portVersion.tar.xz"
CHECKSUM_SHA256="d83fe8ce51b1bb48bbcf0550fd265b9a75cdfdfa93f916f9e700aef8444bf1bb"
CHECKSUM_SHA256="da60b54064d4cfcd9c26576f6df2690e62085123826cff2e667e72a91952d318"
SOURCE_DIR="Python-$portVersion"
PATCHES="python3-$portVersion.patchset"
if [ "$secondaryArchSuffix" = _x86 ] ; then

View File

@@ -1,129 +0,0 @@
SUMMARY="An interpreted, interactive, object-oriented programming language"
DESCRIPTION="
Python is a programming language that lets you work more quickly and integrate \
your systems more effectively. You can learn to use Python and see almost \
immediate gains in productivity and lower maintenance costs.
Python runs on Windows, Linux/Unix, Mac OS X, and has been ported to the Java \
and .NET virtual machines.
Python is free to use, even for commercial products, because of its \
OSI-approved open source license.
"
HOMEPAGE="https://www.python.org"
LICENSE="Python"
COPYRIGHT="1990-2017, Python Software Foundation"
REVISION="2"
SOURCE_URI="https://www.python.org/ftp/python/$portVersion/Python-$portVersion.tar.xz"
CHECKSUM_SHA256="eefe2ad6575855423ab630f5b51a8ef6e5556f774584c06beab4926f930ddbb0"
SOURCE_DIR="Python-$portVersion"
PATCHES="python3-$portVersion.patchset"
ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64"
SECONDARY_ARCHITECTURES="!x86"
# On x86_gcc2 we don't want to install the commands in bin/<arch>/, but in bin/.
commandSuffix=$secondaryArchSuffix
commandBinDir=$binDir
if [ "$targetArchitecture" = x86_gcc2 ]; then
commandSuffix=
commandBinDir=$prefix/bin
fi
PROVIDES="
python35$secondaryArchSuffix = $portVersion compat >= 3.5
cmd:2to3_3.5 = $portVersion compat >= 3.5
cmd:idle3.5 = $portVersion compat >= 3.5
cmd:pydoc3.5 = $portVersion compat >= 3.5
cmd:python3.5 = $portVersion compat >= 3.5
cmd:python3.5_config = $portVersion compat >= 3.5
cmd:python3.5m = $portVersion compat >= 3.5
cmd:python3.5m_config = $portVersion compat >= 3.5
cmd:pyvenv_3.5 = $portVersion compat >= 3.5
devel:libpython3.5m$secondaryArchSuffix = 1.0
lib:libpython3.5m$secondaryArchSuffix = 1.0
"
REQUIRES="
haiku$secondaryArchSuffix
cmd:file
lib:libbz2$secondaryArchSuffix
lib:libexpat$secondaryArchSuffix
lib:libncurses$secondaryArchSuffix
lib:libssl$secondaryArchSuffix
lib:libreadline$secondaryArchSuffix
lib:libsqlite3$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
BUILD_REQUIRES="
devel:libbz2$secondaryArchSuffix
devel:libexpat$secondaryArchSuffix
devel:libncurses$secondaryArchSuffix
devel:libssl$secondaryArchSuffix
devel:libreadline$secondaryArchSuffix
devel:libsqlite3$secondaryArchSuffix
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
haiku${secondaryArchSuffix}_devel
cmd:aclocal
cmd:autoconf
cmd:find
cmd:gcc$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:libtoolize
cmd:pkg_config$secondaryArchSuffix
cmd:make
cmd:python
"
GLOBAL_WRITABLE_FILES="
non-packaged/lib/python3.5/site-packages directory keep-old
"
BUILD()
{
rm -Rf Modules/zlib Modules/expat
cd Modules/_ctypes/libffi
libtoolize --force --copy --install
cd ../../..
libtoolize --force --copy --install
aclocal
autoconf
runConfigure --omit-dirs binDir ./configure \
--enable-shared --without-ensurepip \
--with-system-expat --bindir=$commandBinDir
# prevent make from rebuilding stuff that requires python
touch Parser/asdl* Python/Python-ast.c Include/Python-ast.h
rm -f python
make $jobArgs
}
INSTALL()
{
make altinstall maninstall
rm $libDir/libpython3.so $manDir/man1/python3.1
prepareInstalledDevelLibs libpython3.5m
fixPkgconfig
mkdir -p $prefix/lib/python3.5/vendor-packages
echo 'This directory contains packaged python modules.' \
>$prefix/lib/python3.5/vendor-packages/README
mkdir -p $prefix/non-packaged/lib/python3.5
mv $prefix/lib/python3.5/site-packages $prefix/non-packaged/lib/python3.5/
}
TEST()
{
cd Lib/test
rm -f test_asynchat.py # this one stalls, so skip it for now
rm -f test_multiprocessing.py # this one stalls, so skip it for now
python3.5 regrtest.py
}