1189 lines
39 KiB
Plaintext
1189 lines
39 KiB
Plaintext
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
|
|
|
|
|
|
diff --git a/Lib/distutils/command/install.py b/Lib/distutils/command/install.py
|
|
index b9f1c6c..7be61d3 100644
|
|
--- a/Lib/distutils/command/install.py
|
|
+++ b/Lib/distutils/command/install.py
|
|
@@ -83,6 +83,35 @@ INSTALL_SCHEMES = {
|
|
'scripts': '$userbase/bin',
|
|
'data' : '$userbase',
|
|
},
|
|
+ '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',
|
|
+ },
|
|
+ '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
|
|
@@ -416,10 +445,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:
|
|
@@ -435,7 +470,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")
|
|
|
|
# finalize_unix ()
|
|
|
|
diff --git a/Lib/distutils/sysconfig.py b/Lib/distutils/sysconfig.py
|
|
index de7da1d..8180c8e 100644
|
|
--- a/Lib/distutils/sysconfig.py
|
|
+++ b/Lib/distutils/sysconfig.py
|
|
@@ -90,7 +90,8 @@ def get_python_inc(plat_specific=0, prefix=None):
|
|
# Include is located in the srcdir
|
|
inc_dir = os.path.join(srcdir, "Include")
|
|
return inc_dir
|
|
- return os.path.join(prefix, "include", "python" + get_python_version())
|
|
+ inc_dir = "include" if sys.platform != "haiku1" else "develop/headers"
|
|
+ return os.path.join(prefix, inc_dir, "python" + get_python_version())
|
|
elif os.name == "nt":
|
|
return os.path.join(prefix, "include")
|
|
elif os.name == "os2":
|
|
@@ -119,12 +120,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:
|
|
diff --git a/Lib/plat-haiku1/IN.py b/Lib/plat-haiku1/IN.py
|
|
new file mode 100644
|
|
index 0000000..362cb41
|
|
--- /dev/null
|
|
+++ b/Lib/plat-haiku1/IN.py
|
|
@@ -0,0 +1,327 @@
|
|
+# Generated by h2py from /boot/develop/headers/be/net/netinet/in.h
|
|
+
|
|
+# Included from socket.h
|
|
+
|
|
+# Included from BeBuild.h
|
|
+B_BEOS_VERSION_4 = 0x0400
|
|
+B_BEOS_VERSION_4_5 = 0x0450
|
|
+B_BEOS_VERSION_5 = 0x0500
|
|
+B_BEOS_VERSION = B_BEOS_VERSION_5
|
|
+B_BEOS_VERSION_MAUI = B_BEOS_VERSION_5
|
|
+_PR2_COMPATIBLE_ = 1
|
|
+_PR3_COMPATIBLE_ = 1
|
|
+_R4_COMPATIBLE_ = 1
|
|
+_R4_5_COMPATIBLE_ = 1
|
|
+_PR2_COMPATIBLE_ = 0
|
|
+_PR3_COMPATIBLE_ = 0
|
|
+_R4_COMPATIBLE_ = 1
|
|
+_R4_5_COMPATIBLE_ = 1
|
|
+def _UNUSED(x): return x
|
|
+
|
|
+
|
|
+# Included from sys/types.h
|
|
+
|
|
+# Included from time.h
|
|
+
|
|
+# Included from be_setup.h
|
|
+def __std(ref): return ref
|
|
+
|
|
+__be_os = 2
|
|
+__dest_os = __be_os
|
|
+__MSL__ = 0x4011
|
|
+__GLIBC__ = -2
|
|
+__GLIBC_MINOR__ = 1
|
|
+
|
|
+# Included from null.h
|
|
+NULL = (0)
|
|
+NULL = 0L
|
|
+
|
|
+# Included from size_t.h
|
|
+
|
|
+# Included from stddef.h
|
|
+
|
|
+# Included from wchar_t.h
|
|
+CLOCKS_PER_SEC = 1000
|
|
+CLK_TCK = CLOCKS_PER_SEC
|
|
+MAX_TIMESTR = 70
|
|
+
|
|
+# Included from sys/time.h
|
|
+
|
|
+# Included from ByteOrder.h
|
|
+
|
|
+# Included from endian.h
|
|
+__LITTLE_ENDIAN = 1234
|
|
+LITTLE_ENDIAN = __LITTLE_ENDIAN
|
|
+__BYTE_ORDER = __LITTLE_ENDIAN
|
|
+BYTE_ORDER = __BYTE_ORDER
|
|
+__BIG_ENDIAN = 0
|
|
+BIG_ENDIAN = 0
|
|
+__BIG_ENDIAN = 4321
|
|
+BIG_ENDIAN = __BIG_ENDIAN
|
|
+__BYTE_ORDER = __BIG_ENDIAN
|
|
+BYTE_ORDER = __BYTE_ORDER
|
|
+__LITTLE_ENDIAN = 0
|
|
+LITTLE_ENDIAN = 0
|
|
+__PDP_ENDIAN = 3412
|
|
+PDP_ENDIAN = __PDP_ENDIAN
|
|
+
|
|
+# Included from SupportDefs.h
|
|
+
|
|
+# Included from Errors.h
|
|
+
|
|
+# Included from limits.h
|
|
+
|
|
+# Included from float.h
|
|
+FLT_ROUNDS = 1
|
|
+FLT_RADIX = 2
|
|
+FLT_MANT_DIG = 24
|
|
+FLT_DIG = 6
|
|
+FLT_MIN_EXP = (-125)
|
|
+FLT_MIN_10_EXP = (-37)
|
|
+FLT_MAX_EXP = 128
|
|
+FLT_MAX_10_EXP = 38
|
|
+DBL_MANT_DIG = 53
|
|
+DBL_DIG = 15
|
|
+DBL_MIN_EXP = (-1021)
|
|
+DBL_MIN_10_EXP = (-308)
|
|
+DBL_MAX_EXP = 1024
|
|
+DBL_MAX_10_EXP = 308
|
|
+LDBL_MANT_DIG = DBL_MANT_DIG
|
|
+LDBL_DIG = DBL_DIG
|
|
+LDBL_MIN_EXP = DBL_MIN_EXP
|
|
+LDBL_MIN_10_EXP = DBL_MIN_10_EXP
|
|
+LDBL_MAX_EXP = DBL_MAX_EXP
|
|
+LDBL_MAX_10_EXP = DBL_MAX_10_EXP
|
|
+CHAR_BIT = (8)
|
|
+SCHAR_MIN = (-127-1)
|
|
+SCHAR_MAX = (127)
|
|
+CHAR_MIN = SCHAR_MIN
|
|
+CHAR_MAX = SCHAR_MAX
|
|
+MB_LEN_MAX = (1)
|
|
+SHRT_MIN = (-32767-1)
|
|
+SHRT_MAX = (32767)
|
|
+LONG_MIN = (-2147483647L-1)
|
|
+LONG_MAX = (2147483647L)
|
|
+INT_MIN = LONG_MIN
|
|
+INT_MAX = LONG_MAX
|
|
+ARG_MAX = (32768)
|
|
+ATEXIT_MAX = (32)
|
|
+CHILD_MAX = (1024)
|
|
+IOV_MAX = (256)
|
|
+FILESIZEBITS = (64)
|
|
+LINK_MAX = (1)
|
|
+LOGIN_NAME_MAX = (32)
|
|
+MAX_CANON = (255)
|
|
+MAX_INPUT = (255)
|
|
+NAME_MAX = (256)
|
|
+NGROUPS_MAX = (32)
|
|
+OPEN_MAX = (128)
|
|
+PATH_MAX = (1024)
|
|
+PIPE_MAX = (512)
|
|
+SSIZE_MAX = (2147483647L)
|
|
+TTY_NAME_MAX = (256)
|
|
+TZNAME_MAX = (32)
|
|
+SYMLINKS_MAX = (16)
|
|
+_POSIX_ARG_MAX = (32768)
|
|
+_POSIX_CHILD_MAX = (1024)
|
|
+_POSIX_LINK_MAX = (1)
|
|
+_POSIX_LOGIN_NAME_MAX = (9)
|
|
+_POSIX_MAX_CANON = (255)
|
|
+_POSIX_MAX_INPUT = (255)
|
|
+_POSIX_NAME_MAX = (255)
|
|
+_POSIX_NGROUPS_MAX = (0)
|
|
+_POSIX_OPEN_MAX = (128)
|
|
+_POSIX_PATH_MAX = (1024)
|
|
+_POSIX_PIPE_BUF = (512)
|
|
+_POSIX_SSIZE_MAX = (2147483647L)
|
|
+_POSIX_STREAM_MAX = (8)
|
|
+_POSIX_TTY_NAME_MAX = (256)
|
|
+_POSIX_TZNAME_MAX = (3)
|
|
+B_GENERAL_ERROR_BASE = LONG_MIN
|
|
+B_OS_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x1000
|
|
+B_APP_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x2000
|
|
+B_INTERFACE_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x3000
|
|
+B_MEDIA_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x4000
|
|
+B_TRANSLATION_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x4800
|
|
+B_MIDI_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x5000
|
|
+B_STORAGE_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x6000
|
|
+B_POSIX_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x7000
|
|
+B_MAIL_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x8000
|
|
+B_PRINT_ERROR_BASE = B_GENERAL_ERROR_BASE + 0x9000
|
|
+B_DEVICE_ERROR_BASE = B_GENERAL_ERROR_BASE + 0xa000
|
|
+B_ERRORS_END = (B_GENERAL_ERROR_BASE + 0xffff)
|
|
+E2BIG = (B_POSIX_ERROR_BASE + 1)
|
|
+ECHILD = (B_POSIX_ERROR_BASE + 2)
|
|
+EDEADLK = (B_POSIX_ERROR_BASE + 3)
|
|
+EFBIG = (B_POSIX_ERROR_BASE + 4)
|
|
+EMLINK = (B_POSIX_ERROR_BASE + 5)
|
|
+ENFILE = (B_POSIX_ERROR_BASE + 6)
|
|
+ENODEV = (B_POSIX_ERROR_BASE + 7)
|
|
+ENOLCK = (B_POSIX_ERROR_BASE + 8)
|
|
+ENOSYS = (B_POSIX_ERROR_BASE + 9)
|
|
+ENOTTY = (B_POSIX_ERROR_BASE + 10)
|
|
+ENXIO = (B_POSIX_ERROR_BASE + 11)
|
|
+ESPIPE = (B_POSIX_ERROR_BASE + 12)
|
|
+ESRCH = (B_POSIX_ERROR_BASE + 13)
|
|
+EFPOS = (B_POSIX_ERROR_BASE + 14)
|
|
+ESIGPARM = (B_POSIX_ERROR_BASE + 15)
|
|
+EDOM = (B_POSIX_ERROR_BASE + 16)
|
|
+ERANGE = (B_POSIX_ERROR_BASE + 17)
|
|
+EPROTOTYPE = (B_POSIX_ERROR_BASE + 18)
|
|
+EPROTONOSUPPORT = (B_POSIX_ERROR_BASE + 19)
|
|
+EPFNOSUPPORT = (B_POSIX_ERROR_BASE + 20)
|
|
+EAFNOSUPPORT = (B_POSIX_ERROR_BASE + 21)
|
|
+EADDRINUSE = (B_POSIX_ERROR_BASE + 22)
|
|
+EADDRNOTAVAIL = (B_POSIX_ERROR_BASE + 23)
|
|
+ENETDOWN = (B_POSIX_ERROR_BASE + 24)
|
|
+ENETUNREACH = (B_POSIX_ERROR_BASE + 25)
|
|
+ENETRESET = (B_POSIX_ERROR_BASE + 26)
|
|
+ECONNABORTED = (B_POSIX_ERROR_BASE + 27)
|
|
+ECONNRESET = (B_POSIX_ERROR_BASE + 28)
|
|
+EISCONN = (B_POSIX_ERROR_BASE + 29)
|
|
+ENOTCONN = (B_POSIX_ERROR_BASE + 30)
|
|
+ESHUTDOWN = (B_POSIX_ERROR_BASE + 31)
|
|
+ECONNREFUSED = (B_POSIX_ERROR_BASE + 32)
|
|
+EHOSTUNREACH = (B_POSIX_ERROR_BASE + 33)
|
|
+ENOPROTOOPT = (B_POSIX_ERROR_BASE + 34)
|
|
+ENOBUFS = (B_POSIX_ERROR_BASE + 35)
|
|
+EINPROGRESS = (B_POSIX_ERROR_BASE + 36)
|
|
+EALREADY = (B_POSIX_ERROR_BASE + 37)
|
|
+EILSEQ = (B_POSIX_ERROR_BASE + 38)
|
|
+ENOMSG = (B_POSIX_ERROR_BASE + 39)
|
|
+ESTALE = (B_POSIX_ERROR_BASE + 40)
|
|
+EOVERFLOW = (B_POSIX_ERROR_BASE + 41)
|
|
+EMSGSIZE = (B_POSIX_ERROR_BASE + 42)
|
|
+EOPNOTSUPP = (B_POSIX_ERROR_BASE + 43)
|
|
+ENOTSOCK = (B_POSIX_ERROR_BASE + 44)
|
|
+false = 0
|
|
+true = 1
|
|
+NULL = (0)
|
|
+FALSE = 0
|
|
+TRUE = 1
|
|
+
|
|
+# Included from TypeConstants.h
|
|
+B_HOST_IS_LENDIAN = 1
|
|
+B_HOST_IS_BENDIAN = 0
|
|
+def B_HOST_TO_LENDIAN_DOUBLE(arg): return (double)(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_FLOAT(arg): return (float)(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_INT64(arg): return (uint64)(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_INT32(arg): return (uint32)(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_INT16(arg): return (uint16)(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_DOUBLE(arg): return __swap_double(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_FLOAT(arg): return __swap_float(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_INT64(arg): return __swap_int64(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_INT32(arg): return __swap_int32(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_INT16(arg): return __swap_int16(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_DOUBLE(arg): return (double)(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_FLOAT(arg): return (float)(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_INT64(arg): return (uint64)(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_INT32(arg): return (uint32)(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_INT16(arg): return (uint16)(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_DOUBLE(arg): return __swap_double(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_FLOAT(arg): return __swap_float(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_INT64(arg): return __swap_int64(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_INT32(arg): return __swap_int32(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_INT16(arg): return __swap_int16(arg)
|
|
+
|
|
+B_HOST_IS_LENDIAN = 0
|
|
+B_HOST_IS_BENDIAN = 1
|
|
+def B_HOST_TO_LENDIAN_DOUBLE(arg): return __swap_double(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_FLOAT(arg): return __swap_float(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_INT64(arg): return __swap_int64(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_INT32(arg): return __swap_int32(arg)
|
|
+
|
|
+def B_HOST_TO_LENDIAN_INT16(arg): return __swap_int16(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_DOUBLE(arg): return (double)(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_FLOAT(arg): return (float)(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_INT64(arg): return (uint64)(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_INT32(arg): return (uint32)(arg)
|
|
+
|
|
+def B_HOST_TO_BENDIAN_INT16(arg): return (uint16)(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_DOUBLE(arg): return __swap_double(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_FLOAT(arg): return __swap_float(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_INT64(arg): return __swap_int64(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_INT32(arg): return __swap_int32(arg)
|
|
+
|
|
+def B_LENDIAN_TO_HOST_INT16(arg): return __swap_int16(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_DOUBLE(arg): return (double)(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_FLOAT(arg): return (float)(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_INT64(arg): return (uint64)(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_INT32(arg): return (uint32)(arg)
|
|
+
|
|
+def B_BENDIAN_TO_HOST_INT16(arg): return (uint16)(arg)
|
|
+
|
|
+def B_SWAP_DOUBLE(arg): return __swap_double(arg)
|
|
+
|
|
+def B_SWAP_FLOAT(arg): return __swap_float(arg)
|
|
+
|
|
+def B_SWAP_INT64(arg): return __swap_int64(arg)
|
|
+
|
|
+def B_SWAP_INT32(arg): return __swap_int32(arg)
|
|
+
|
|
+def B_SWAP_INT16(arg): return __swap_int16(arg)
|
|
+
|
|
+def htonl(x): return B_HOST_TO_BENDIAN_INT32(x)
|
|
+
|
|
+def ntohl(x): return B_BENDIAN_TO_HOST_INT32(x)
|
|
+
|
|
+def htons(x): return B_HOST_TO_BENDIAN_INT16(x)
|
|
+
|
|
+def ntohs(x): return B_BENDIAN_TO_HOST_INT16(x)
|
|
+
|
|
+AF_INET = 1
|
|
+INADDR_ANY = 0x00000000
|
|
+INADDR_BROADCAST = 0xffffffff
|
|
+INADDR_LOOPBACK = 0x7f000001
|
|
+SOL_SOCKET = 1
|
|
+SO_DEBUG = 1
|
|
+SO_REUSEADDR = 2
|
|
+SO_NONBLOCK = 3
|
|
+SO_REUSEPORT = 4
|
|
+MSG_OOB = 0x1
|
|
+SOCK_DGRAM = 1
|
|
+SOCK_STREAM = 2
|
|
+IPPROTO_UDP = 1
|
|
+IPPROTO_TCP = 2
|
|
+IPPROTO_ICMP = 3
|
|
+B_UDP_MAX_SIZE = (65536 - 1024)
|
|
+FD_SETSIZE = 256
|
|
+FDSETSIZE = FD_SETSIZE
|
|
+NFDBITS = 32
|
|
+def _FDMSKNO(fd): return ((fd) / NFDBITS)
|
|
+
|
|
+def _FDBITNO(fd): return ((fd) % NFDBITS)
|
|
diff --git a/Lib/plat-haiku1/regen b/Lib/plat-haiku1/regen
|
|
new file mode 100644
|
|
index 0000000..d9da80c
|
|
--- /dev/null
|
|
+++ b/Lib/plat-haiku1/regen
|
|
@@ -0,0 +1,7 @@
|
|
+#! /bin/sh
|
|
+
|
|
+H2PY=../../Tools/scripts/h2py.py
|
|
+HEADERS=/boot/develop/headers
|
|
+
|
|
+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 57c9f14..54a7ce8 100644
|
|
--- a/Lib/test/test_fileio.py
|
|
+++ b/Lib/test/test_fileio.py
|
|
@@ -312,6 +312,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', 'aix')):
|
|
# Somehow /dev/tty appears seekable on some BSDs
|
|
self.assertEqual(f.seekable(), False)
|
|
diff --git a/Modules/resource.c b/Modules/resource.c
|
|
index 53a6c3e..6c5f52f 100644
|
|
--- a/Modules/resource.c
|
|
+++ b/Modules/resource.c
|
|
@@ -86,6 +86,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, PyInt_FromLong(ru.ru_maxrss));
|
|
PyStructSequence_SET_ITEM(result, 3, PyInt_FromLong(ru.ru_ixrss));
|
|
PyStructSequence_SET_ITEM(result, 4, PyInt_FromLong(ru.ru_idrss));
|
|
@@ -100,6 +101,7 @@ resource_getrusage(PyObject *self, PyObject *args)
|
|
PyStructSequence_SET_ITEM(result, 13, PyInt_FromLong(ru.ru_nsignals));
|
|
PyStructSequence_SET_ITEM(result, 14, PyInt_FromLong(ru.ru_nvcsw));
|
|
PyStructSequence_SET_ITEM(result, 15, PyInt_FromLong(ru.ru_nivcsw));
|
|
+#endif
|
|
|
|
if (PyErr_Occurred()) {
|
|
Py_DECREF(result);
|
|
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
|
|
index 0139754..1d4ef23 100644
|
|
--- a/Modules/socketmodule.c
|
|
+++ b/Modules/socketmodule.c
|
|
@@ -4898,7 +4898,9 @@ init_socket(void)
|
|
#ifndef __BEOS__
|
|
/* 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 --git a/Modules/socketmodule.h b/Modules/socketmodule.h
|
|
index d98e00e..2bfb3dc 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 957de58..69be5bb 100644
|
|
--- a/Modules/spwdmodule.c
|
|
+++ b/Modules/spwdmodule.c
|
|
@@ -79,7 +79,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/Modules/timemodule.c b/Modules/timemodule.c
|
|
index 61b8d61..5e5d93c 100644
|
|
--- a/Modules/timemodule.c
|
|
+++ b/Modules/timemodule.c
|
|
@@ -1104,11 +1104,11 @@ floatsleep(double secs)
|
|
return -1;
|
|
}
|
|
Py_END_ALLOW_THREADS
|
|
-#elif defined(__BEOS__)
|
|
+#elif defined(__BEOS__) || defined(__HAIKU__)
|
|
/* This sleep *CAN BE* interrupted. */
|
|
{
|
|
if( secs <= 0.0 ) {
|
|
- return;
|
|
+ return 0;
|
|
}
|
|
|
|
Py_BEGIN_ALLOW_THREADS
|
|
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
|
|
index 4b819da..46ba828 100644
|
|
--- a/Python/bltinmodule.c
|
|
+++ b/Python/bltinmodule.c
|
|
@@ -19,7 +19,7 @@
|
|
*/
|
|
#if defined(MS_WINDOWS) && defined(HAVE_USABLE_WCHAR_T)
|
|
const char *Py_FileSystemDefaultEncoding = "mbcs";
|
|
-#elif defined(__APPLE__)
|
|
+#elif defined(__APPLE__) || defined(__HAIKU__)
|
|
const char *Py_FileSystemDefaultEncoding = "utf-8";
|
|
#else
|
|
const char *Py_FileSystemDefaultEncoding = NULL; /* use default */
|
|
diff --git a/Tools/scripts/h2py.py b/Tools/scripts/h2py.py
|
|
index 40b1bce..4185370 100755
|
|
--- a/Tools/scripts/h2py.py
|
|
+++ b/Tools/scripts/h2py.py
|
|
@@ -50,7 +50,7 @@ except KeyError:
|
|
searchdirs=os.environ['INCLUDE'].split(';')
|
|
except KeyError:
|
|
try:
|
|
- if sys.platform.find("beos") == 0:
|
|
+ if sys.platform.find("beos") == 0 or sys.platform.find("haiku1") == 0:
|
|
searchdirs=os.environ['BEINCLUDES'].split(';')
|
|
elif sys.platform.startswith("atheos"):
|
|
searchdirs=os.environ['C_INCLUDE_PATH'].split(':')
|
|
diff --git a/configure.ac b/configure.ac
|
|
index aecf606..206d2ec 100644
|
|
--- a/configure.ac
|
|
+++ b/configure.ac
|
|
@@ -923,7 +923,7 @@ if test $enable_shared = "yes"; then
|
|
RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
|
|
INSTSONAME="$LDLIBRARY".$SOVERSION
|
|
;;
|
|
- Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*)
|
|
+ Linux*|GNU*|NetBSD*|FreeBSD*|DragonFly*|OpenBSD*|Haiku*)
|
|
LDLIBRARY='libpython$(VERSION).so'
|
|
BLDLIBRARY='-L. -lpython$(VERSION)'
|
|
RUNSHARED=LD_LIBRARY_PATH=`pwd`${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
|
|
@@ -931,6 +931,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
|
|
;;
|
|
@@ -1029,7 +1032,7 @@ AC_PROG_MKDIR_P
|
|
AC_SUBST(LN)
|
|
if test -z "$LN" ; then
|
|
case $ac_sys_system in
|
|
- BeOS*) LN="ln -s";;
|
|
+ BeOS*|Haiku*) LN="ln -s";;
|
|
CYGWIN*) LN="ln -s";;
|
|
atheos*) LN="ln -s";;
|
|
*) LN=ln;;
|
|
@@ -2240,7 +2243,7 @@ then
|
|
BLDSHARED="$LDSHARED"
|
|
fi
|
|
;;
|
|
- Linux*|GNU*|QNX*)
|
|
+ Linux*|GNU*|QNX*|Haiku*)
|
|
LDSHARED='$(CC) -shared'
|
|
LDCXXSHARED='$(CXX) -shared';;
|
|
BSD/OS*/4*)
|
|
@@ -2312,7 +2315,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*)
|
|
@@ -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";;
|
|
- Linux*|GNU*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
|
+ Linux*|GNU*|Haiku*) LINKFORSHARED="-Xlinker -export-dynamic";;
|
|
# -u libsys_s pulls in all symbols in libsys
|
|
Darwin/*)
|
|
# -u _PyMac_Error is needed to pull in the mac toolbox glue,
|
|
@@ -2459,14 +2462,16 @@ case "$ac_sys_system" in
|
|
esac
|
|
|
|
# Most SVR4 platforms (e.g. Solaris) need -lsocket and -lnsl.
|
|
-# BeOS' sockets are stashed in libnet.
|
|
AC_CHECK_LIB(nsl, t_open, [LIBS="-lnsl $LIBS"]) # SVR4
|
|
AC_CHECK_LIB(socket, socket, [LIBS="-lsocket $LIBS"], [], $LIBS) # SVR4 sockets
|
|
|
|
+# BeOS' sockets are stashed in libnet.
|
|
+# Haiku's sockets are stashed in libnetwork.
|
|
case "$ac_sys_system" in
|
|
-BeOS*)
|
|
-AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS
|
|
-;;
|
|
+ BeOS*)
|
|
+ AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS);;
|
|
+ Haiku*)
|
|
+ AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS);;
|
|
esac
|
|
|
|
AC_MSG_CHECKING(for --with-libs)
|
|
@@ -3812,7 +3817,7 @@ fi],
|
|
AC_SUBST(LIBM)
|
|
case $ac_sys_system in
|
|
Darwin) ;;
|
|
-BeOS) ;;
|
|
+BeOS|Haiku) ;;
|
|
*) LIBM=-lm
|
|
esac
|
|
AC_MSG_CHECKING(for --with-libm=STRING)
|
|
diff --git a/setup.py b/setup.py
|
|
index 33cecc6..b57b321 100644
|
|
--- a/setup.py
|
|
+++ b/setup.py
|
|
@@ -541,6 +541,12 @@ class PyBuildExt(build_ext):
|
|
lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
|
inc_dirs += ['/system/include', '/atheos/autolnk/include']
|
|
inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
|
|
+
|
|
+ # Haiku-specific include and 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']:
|
|
@@ -569,7 +575,7 @@ class PyBuildExt(build_ext):
|
|
|
|
# Check for MacOS X, which doesn't need libm.a at all
|
|
math_libs = ['m']
|
|
- if host_platform in ['darwin', 'beos']:
|
|
+ if host_platform in ['darwin', 'beos', 'haiku1']:
|
|
math_libs = []
|
|
|
|
# XXX Omitted modules: gl, pure, dl, SGI-specific modules
|
|
@@ -812,15 +818,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/'
|
|
] )
|
|
@@ -828,8 +841,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:
|
|
@@ -867,8 +880,8 @@ class PyBuildExt(build_ext):
|
|
# The _hashlib module wraps optimized implementations
|
|
# of hash functions from the OpenSSL library.
|
|
exts.append( Extension('_hashlib', ['_hashopenssl.c'],
|
|
- 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" %
|
|
@@ -2154,7 +2167,7 @@ class PyBuildExt(build_ext):
|
|
ext.libraries.append('dl')
|
|
|
|
def _detect_nis(self, inc_dirs, lib_dirs):
|
|
- if host_platform in {'win32', 'cygwin', 'qnx6'}:
|
|
+ if host_platform in {'win32', 'cygwin', 'qnx6', 'haiku1'}:
|
|
return None
|
|
|
|
libs = []
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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
|
|
|
|
|
|
diff --git a/Makefile.pre.in b/Makefile.pre.in
|
|
index 9297e7f..abbeb60 100644
|
|
--- a/Makefile.pre.in
|
|
+++ b/Makefile.pre.in
|
|
@@ -109,7 +109,7 @@ BINDIR= @bindir@
|
|
LIBDIR= @libdir@
|
|
MANDIR= @mandir@
|
|
INCLUDEDIR= @includedir@
|
|
-CONFINCLUDEDIR= $(exec_prefix)/include
|
|
+CONFINCLUDEDIR= $(INCLUDEDIR)
|
|
SCRIPTDIR= $(prefix)/lib
|
|
|
|
# Detailed destination directories
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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
|
|
|
|
This makes our site- and vendor- packages work properly again.
|
|
It's sill missing the changes to addusersitepackages. This method was apparently refactored, and I don't have enough Python knowledge to redo our changes in the new code. User packages will not workas
|
|
expected with
|
|
this version of Python.
|
|
|
|
diff --git a/Lib/site.py b/Lib/site.py
|
|
index 3b51e81..11fb12c 100644
|
|
--- a/Lib/site.py
|
|
+++ b/Lib/site.py
|
|
@@ -287,6 +287,13 @@ def getsitepackages():
|
|
|
|
if sys.platform in ('os2emx', 'riscos'):
|
|
sitepackages.append(os.path.join(prefix, "Lib", "site-packages"))
|
|
+ elif 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],
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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.
|
|
|
|
|
|
diff --git a/Modules/_ctypes/libffi/include/ffi_common.h b/Modules/_ctypes/libffi/include/ffi_common.h
|
|
index 37f5a9e..37b0b25 100644
|
|
--- a/Modules/_ctypes/libffi/include/ffi_common.h
|
|
+++ b/Modules/_ctypes/libffi/include/ffi_common.h
|
|
@@ -119,7 +119,7 @@ typedef signed int SINT64 __attribute__((__mode__(__DI__)));
|
|
|
|
typedef float FLOAT32;
|
|
|
|
-#ifndef __GNUC__
|
|
+#if !defined(__GNUC__) || __GNUC__ < 3
|
|
#define __builtin_expect(x, expected_value) (x)
|
|
#endif
|
|
#define LIKELY(x) __builtin_expect(!!(x),1)
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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.
|
|
|
|
|
|
diff --git a/Lib/tarfile.py b/Lib/tarfile.py
|
|
index adf91d5..f284408 100644
|
|
--- a/Lib/tarfile.py
|
|
+++ b/Lib/tarfile.py
|
|
@@ -2272,7 +2272,7 @@ class TarFile(object):
|
|
(platform limitation), we try to make a copy of the referenced file
|
|
instead of a link.
|
|
"""
|
|
- if hasattr(os, "symlink") and hasattr(os, "link"):
|
|
+ try:
|
|
# For systems that support symbolic and hard links.
|
|
if tarinfo.issym():
|
|
if os.path.lexists(targetpath):
|
|
@@ -2286,7 +2286,7 @@ class TarFile(object):
|
|
os.link(tarinfo._link_target, targetpath)
|
|
else:
|
|
self._extract_member(self._find_link_target(tarinfo), targetpath)
|
|
- else:
|
|
+ except (os.error, AttributeError):
|
|
try:
|
|
self._extract_member(self._find_link_target(tarinfo), targetpath)
|
|
except KeyError:
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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
|
|
|
|
|
|
diff --git a/Modules/resource.c b/Modules/resource.c
|
|
index 6c5f52f..73758bb 100644
|
|
--- a/Modules/resource.c
|
|
+++ b/Modules/resource.c
|
|
@@ -101,6 +101,21 @@ resource_getrusage(PyObject *self, PyObject *args)
|
|
PyStructSequence_SET_ITEM(result, 13, PyInt_FromLong(ru.ru_nsignals));
|
|
PyStructSequence_SET_ITEM(result, 14, PyInt_FromLong(ru.ru_nvcsw));
|
|
PyStructSequence_SET_ITEM(result, 15, PyInt_FromLong(ru.ru_nivcsw));
|
|
+#else
|
|
+ PyStructSequence_SET_ITEM(result, 2, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 3, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 4, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 5, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 6, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 7, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 8, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 9, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 10, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 11, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 12, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 13, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 14, PyInt_FromLong(0));
|
|
+ PyStructSequence_SET_ITEM(result, 15, PyInt_FromLong(0));
|
|
#endif
|
|
|
|
if (PyErr_Occurred()) {
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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
|
|
|
|
Haiku defines many of them, but they are actually empty stubs that will always
|
|
return EINVAL. No better way of doing this.
|
|
|
|
diff --git a/Modules/resource.c b/Modules/resource.c
|
|
index 73758bb..0c396f6 100644
|
|
--- a/Modules/resource.c
|
|
+++ b/Modules/resource.c
|
|
@@ -284,19 +284,19 @@ initresource(void)
|
|
(PyObject*) &StructRUsageType);
|
|
|
|
/* insert constants */
|
|
-#ifdef RLIMIT_CPU
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_CPU)
|
|
PyModule_AddIntConstant(m, "RLIMIT_CPU", RLIMIT_CPU);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_FSIZE
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_FSIZE)
|
|
PyModule_AddIntConstant(m, "RLIMIT_FSIZE", RLIMIT_FSIZE);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_DATA
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_DATA)
|
|
PyModule_AddIntConstant(m, "RLIMIT_DATA", RLIMIT_DATA);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_STACK
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_STACK)
|
|
PyModule_AddIntConstant(m, "RLIMIT_STACK", RLIMIT_STACK);
|
|
#endif
|
|
|
|
@@ -308,31 +308,31 @@ initresource(void)
|
|
PyModule_AddIntConstant(m, "RLIMIT_NOFILE", RLIMIT_NOFILE);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_OFILE
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_OFILE)
|
|
PyModule_AddIntConstant(m, "RLIMIT_OFILE", RLIMIT_OFILE);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_VMEM
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_VMEM)
|
|
PyModule_AddIntConstant(m, "RLIMIT_VMEM", RLIMIT_VMEM);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_AS
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_AS)
|
|
PyModule_AddIntConstant(m, "RLIMIT_AS", RLIMIT_AS);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_RSS
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_RSS)
|
|
PyModule_AddIntConstant(m, "RLIMIT_RSS", RLIMIT_RSS);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_NPROC
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_NPROC)
|
|
PyModule_AddIntConstant(m, "RLIMIT_NPROC", RLIMIT_NPROC);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_MEMLOCK
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_MEMLOCK)
|
|
PyModule_AddIntConstant(m, "RLIMIT_MEMLOCK", RLIMIT_MEMLOCK);
|
|
#endif
|
|
|
|
-#ifdef RLIMIT_SBSIZE
|
|
+#if !defined(__HAIKU__) && defined(RLIMIT_SBSIZE)
|
|
PyModule_AddIntConstant(m, "RLIMIT_SBSIZE", RLIMIT_SBSIZE);
|
|
#endif
|
|
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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 7a1a694..0f226a0 100644
|
|
--- a/Modules/posixmodule.c
|
|
+++ b/Modules/posixmodule.c
|
|
@@ -1489,6 +1489,8 @@ _pystat_fromstructstat(STRUCT_STAT *st)
|
|
#endif
|
|
#ifdef MS_WINDOWS
|
|
PyStructSequence_SET_ITEM(v, 2, PyLong_FromUnsignedLong(st->st_dev));
|
|
+#elif defined(__HAIKU__)
|
|
+ PyStructSequence_SET_ITEM(v, 2, PyInt_FromLong(st->st_dev));
|
|
#else
|
|
PyStructSequence_SET_ITEM(v, 2, _PyInt_FromDev(st->st_dev));
|
|
#endif
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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
|
|
|
|
|
|
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
|
|
index ab10ec5..72e495b 100644
|
|
--- a/Lib/ctypes/util.py
|
|
+++ b/Lib/ctypes/util.py
|
|
@@ -232,6 +232,55 @@ elif os.name == "posix":
|
|
def find_library(name, is64 = False):
|
|
return _get_soname(_findLib_crle(name, is64) or _findLib_gcc(name))
|
|
|
|
+ elif sys.platform.startswith("haiku"):
|
|
+
|
|
+ def _num_version(libname):
|
|
+ # "libxyz.so.MAJOR.MINOR" => [ MAJOR, MINOR ]
|
|
+ parts = libname.split(b".")
|
|
+ nums = []
|
|
+ try:
|
|
+ while parts:
|
|
+ nums.insert(0, int(parts.pop()))
|
|
+ except ValueError:
|
|
+ pass
|
|
+ return nums or [sys.maxint]
|
|
+
|
|
+ def find_library(name):
|
|
+ for directory in os.environ['LIBRARY_PATH'].split(os.pathsep):
|
|
+ if directory.startswith("%A/"):
|
|
+ directory = directory.replace('%A',
|
|
+ os.path.dirname(os.path.abspath(sys.argv[0] or os.getcwd())))
|
|
+
|
|
+ if not os.path.isdir(directory):
|
|
+ continue
|
|
+
|
|
+ # try direct match
|
|
+ fname = os.path.join(directory, name)
|
|
+ if os.path.isfile(fname):
|
|
+ return fname
|
|
+
|
|
+ fname = os.path.join(directory, 'lib%s.so' % name)
|
|
+ if os.path.isfile(fname):
|
|
+ return fname
|
|
+
|
|
+ # no exact matching in this directroy
|
|
+ # collect versioned candidates, if any
|
|
+ candidates = []
|
|
+ pattern = re.compile(r'lib%s\.so\.\S+' % re.escape(name))
|
|
+ for entry in os.listdir(directory):
|
|
+ if not os.path.isfile(os.path.join(directory, entry)):
|
|
+ continue
|
|
+
|
|
+ if re.match(pattern, entry):
|
|
+ candidates.append(os.path.join(directory, entry))
|
|
+
|
|
+ if candidates:
|
|
+ # return latest version found
|
|
+ candidates.sort(key=_num_version)
|
|
+ return candidates[-1]
|
|
+
|
|
+ return None
|
|
+
|
|
else:
|
|
|
|
def _findSoname_ldconfig(name):
|
|
@@ -299,6 +348,12 @@ def test():
|
|
print cdll.LoadLibrary("libcrypto.dylib")
|
|
print cdll.LoadLibrary("libSystem.dylib")
|
|
print cdll.LoadLibrary("System.framework/System")
|
|
+ elif sys.platform.startswith("haiku"):
|
|
+ print find_library("libbz2.so.1.0")
|
|
+ print find_library("tracker")
|
|
+ print find_library("media")
|
|
+ print cdll.LoadLibrary(find_library("tracker"))
|
|
+ print cdll.LoadLibrary("libmedia.so")
|
|
else:
|
|
print cdll.LoadLibrary("libm.so")
|
|
print cdll.LoadLibrary("libcrypt.so")
|
|
--
|
|
2.21.0
|
|
|
|
|
|
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
|
|
|
|
|
|
diff --git a/Lib/ctypes/util.py b/Lib/ctypes/util.py
|
|
index 72e495b..a2cc0a1 100644
|
|
--- a/Lib/ctypes/util.py
|
|
+++ b/Lib/ctypes/util.py
|
|
@@ -236,7 +236,7 @@ elif os.name == "posix":
|
|
|
|
def _num_version(libname):
|
|
# "libxyz.so.MAJOR.MINOR" => [ MAJOR, MINOR ]
|
|
- parts = libname.split(b".")
|
|
+ parts = libname.split('.')
|
|
nums = []
|
|
try:
|
|
while parts:
|
|
@@ -246,6 +246,8 @@ elif os.name == "posix":
|
|
return nums or [sys.maxint]
|
|
|
|
def find_library(name):
|
|
+ if name in ('c', 'm'):
|
|
+ return find_library('root')
|
|
for directory in os.environ['LIBRARY_PATH'].split(os.pathsep):
|
|
if directory.startswith("%A/"):
|
|
directory = directory.replace('%A',
|
|
--
|
|
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
|
|
|
|
|
|
From 21502a9c6059d24d14924f518667f800764f5e42 Mon Sep 17 00:00:00 2001
|
|
From: Philipp Wolfer <phil@parolu.io>
|
|
Date: Mon, 23 Sep 2019 09:53:39 +0200
|
|
Subject: [PATCH] webbrowser: Support for default browsers on Haiku
|
|
|
|
---
|
|
Lib/webbrowser.py | 10 ++++++++++
|
|
1 file changed, 10 insertions(+)
|
|
|
|
diff --git a/Lib/webbrowser.py b/Lib/webbrowser.py
|
|
index 15eeb660e2..d73749d696 100755
|
|
--- a/Lib/webbrowser.py
|
|
+++ b/Lib/webbrowser.py
|
|
@@ -644,6 +644,16 @@ if sys.platform == 'darwin':
|
|
register("chrome", None, MacOSXOSAScript('chrome'), -1)
|
|
register("MacOSX", None, MacOSXOSAScript('default'), -1)
|
|
|
|
+#
|
|
+# Platform support for Haiku
|
|
+#
|
|
+
|
|
+if sys.platform[:5] == "haiku":
|
|
+ # First try to use the default configured browser
|
|
+ register("haiku-default", None, GenericBrowser("open"))
|
|
+ # Fall back to WebPositive as the standard browser of Haiku
|
|
+ register("webpositive", None, BackgroundBrowser("WebPositive"))
|
|
+
|
|
|
|
#
|
|
# Platform support for OS/2
|
|
--
|
|
2.23.0
|
|
|