diff -urN Python-2.5.4/Lib/test/regrtest.py Python-2.5.4-haiku/Lib/test/regrtest.py --- Python-2.5.4/Lib/test/regrtest.py 2009-01-02 15:47:37.000000000 +0000 +++ Python-2.5.4-haiku/Lib/test/regrtest.py 2009-01-03 04:18:40.000000000 +0000 @@ -846,6 +846,42 @@ test_wait3 test_wait4 """, + 'haiku1': + """ + test_al + test_applesingle + test_bsddb + test_bsddb185 + test_bsddb3 + test_cd + test_cl + test_codecmaps_cn + test_codecmaps_hk + test_codecmaps_jp + test_codecmaps_kr + test_codecmaps_tw + test_curses + test_dbm + test_dl + test_gl + test_gdbm + test_imgfile + test_linuxaudiodev + test__locale + test_gl + test_macfs + test_macostools + test_mailbox + test_nis + test_normalization + test_old_mailbox + test_ossaudiodev + test_pep277 + test_plistlib + test_resource + test_startfile + test_sunaudiodev + """, 'linux2': """ test_al diff -urN Python-2.5.4/Modules/resource.c Python-2.5.4-haiku/Modules/resource.c --- Python-2.5.4/Modules/resource.c 2009-01-02 15:46:32.000000000 +0000 +++ Python-2.5.4-haiku/Modules/resource.c 2009-01-02 15:49:40.000000000 +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, 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 @@ 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 -urN Python-2.5.4/Modules/selectmodule.c Python-2.5.4-haiku/Modules/selectmodule.c --- Python-2.5.4/Modules/selectmodule.c 2009-01-02 15:46:32.000000000 +0000 +++ Python-2.5.4-haiku/Modules/selectmodule.c 2009-01-02 15:49:40.000000000 +0000 @@ -49,7 +49,7 @@ # include #else # define SOCKET int -# ifdef __BEOS__ +# if defined(__BEOS__) && !defined(__HAIKU__) # include # elif defined(__VMS) # include diff -urN Python-2.5.4/Modules/socketmodule.c Python-2.5.4-haiku/Modules/socketmodule.c --- Python-2.5.4/Modules/socketmodule.c 2009-01-02 15:46:31.000000000 +0000 +++ Python-2.5.4-haiku/Modules/socketmodule.c 2009-01-02 15:49:40.000000000 +0000 @@ -244,7 +244,7 @@ # include /* Headers needed for inet_ntoa() and inet_addr() */ -# ifdef __BEOS__ +# if defined(__BEOS__) && !defined(__HAIKU__) # include # elif defined(PYOS_OS2) && defined(PYCC_VACPP) # include @@ -336,7 +336,7 @@ #include "getnameinfo.c" #endif -#if defined(MS_WINDOWS) || defined(__BEOS__) +#if defined(MS_WINDOWS) || (defined(__BEOS__) && !defined(__HAIKU__)) /* BeOS suffers from the same socket dichotomy as Win32... - [cjh] */ /* seem to be a few differences in the API */ #define SOCKETCLOSE closesocket @@ -667,7 +667,7 @@ #endif Py_BEGIN_ALLOW_THREADS -#ifdef __BEOS__ +#if defined(__BEOS__) && !defined(__HAIKU__) block = !block; setsockopt(s->sock_fd, SOL_SOCKET, SO_NONBLOCK, (void *)(&block), sizeof(int)); @@ -696,7 +696,7 @@ block = !block; socketioctl(s->sock_fd, FIONBIO, (u_long*)&block); #endif /* RISCOS */ -#endif /* __BEOS__ */ +#endif /* defined(__BEOS__) && !defined(__HAIKU__) */ Py_END_ALLOW_THREADS /* Since these don't return anything */ @@ -1021,7 +1021,7 @@ return Py_None; } -#ifdef __BEOS__ +#if defined(__BEOS__) && !defined(__HAIKU__) /* XXX: BeOS version of accept() doesn't set family correctly */ addr->sa_family = AF_INET; #endif @@ -1756,7 +1756,7 @@ PyObject *buf; socklen_t buflen = 0; -#ifdef __BEOS__ +#if defined(__BEOS__) && !defined(__HAIKU__) /* We have incomplete socket support. */ PyErr_SetString(socket_error, "getsockopt not supported"); return NULL; @@ -1797,7 +1797,7 @@ } _PyString_Resize(&buf, buflen); return buf; -#endif /* __BEOS__ */ +#endif /* defined(__BEOS__) && !defined(__HAIKU__) */ } PyDoc_STRVAR(getsockopt_doc, @@ -3354,7 +3354,7 @@ { char *name; struct protoent *sp; -#ifdef __BEOS__ +#if defined(__BEOS__) && !defined(__HAIKU__) /* Not available in BeOS yet. - [cjh] */ PyErr_SetString(socket_error, "getprotobyname not supported"); return NULL; @@ -4440,7 +4440,7 @@ /* Socket types */ PyModule_AddIntConstant(m, "SOCK_STREAM", SOCK_STREAM); PyModule_AddIntConstant(m, "SOCK_DGRAM", SOCK_DGRAM); -#ifndef __BEOS__ +#if defined(__BEOS__) && !defined(__HAIKU__) /* We have incomplete socket support. */ PyModule_AddIntConstant(m, "SOCK_RAW", SOCK_RAW); PyModule_AddIntConstant(m, "SOCK_SEQPACKET", SOCK_SEQPACKET); diff -urN Python-2.5.4/Modules/socketmodule.h Python-2.5.4-haiku/Modules/socketmodule.h --- Python-2.5.4/Modules/socketmodule.h 2009-01-02 15:46:31.000000000 +0000 +++ Python-2.5.4-haiku/Modules/socketmodule.h 2009-01-02 15:49:40.000000000 +0000 @@ -41,6 +41,10 @@ # undef AF_NETLINK #endif +#if defined(__HAIKU__) +#undef HAVE_BLUETOOTH_BLUETOOTH_H +#endif + #ifdef HAVE_BLUETOOTH_BLUETOOTH_H #include #include diff -urN Python-2.5.4/Modules/spwdmodule.c Python-2.5.4-haiku/Modules/spwdmodule.c --- Python-2.5.4/Modules/spwdmodule.c 2009-01-02 15:46:31.000000000 +0000 +++ Python-2.5.4-haiku/Modules/spwdmodule.c 2009-01-02 15:49:40.000000000 +0000 @@ -79,7 +79,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-2.5.4/Modules/timemodule.c Python-2.5.4-haiku/Modules/timemodule.c --- Python-2.5.4/Modules/timemodule.c 2009-01-02 15:46:32.000000000 +0000 +++ Python-2.5.4-haiku/Modules/timemodule.c 2009-01-02 15:49:40.000000000 +0000 @@ -968,11 +968,11 @@ 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 -urN Python-2.5.4/Parser/asdl_c.py Python-2.5.4-haiku/Parser/asdl_c.py --- Python-2.5.4/Parser/asdl_c.py 2009-01-02 15:47:18.000000000 +0000 +++ Python-2.5.4-haiku/Parser/asdl_c.py 2009-01-02 16:12:00.000000000 +0000 @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /bin/env python """Generate C code from an ASDL description.""" # TO DO diff -urN Python-2.5.4/Tools/scripts/h2py.py Python-2.5.4-haiku/Tools/scripts/h2py.py --- Python-2.5.4/Tools/scripts/h2py.py 2009-01-02 15:46:48.000000000 +0000 +++ Python-2.5.4-haiku/Tools/scripts/h2py.py 2009-01-02 16:24:00.000000000 +0000 @@ -1,4 +1,4 @@ -#! /usr/bin/env python +#! /bin/env python # Read #define's and translate to Python code. # Handle #include statements. @@ -50,7 +50,7 @@ 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 -urN Python-2.5.4/configure.in Python-2.5.4-haiku/configure.in --- Python-2.5.4/configure.in 2009-01-02 15:47:18.000000000 +0000 +++ Python-2.5.4-haiku/configure.in 2009-01-02 15:49:40.000000000 +0000 @@ -627,6 +627,11 @@ BeOS*) LDLIBRARY='libpython$(VERSION).so' ;; + Haiku*) + LDLIBRARY='libpython$(VERSION).so' + BLDLIBRARY='-L. -lpython$(VERSION)' + RUNSHARED=LD_LIBRARY_PATH=`pwd`:${LD_LIBRARY_PATH} + ;; CYGWIN*) LDLIBRARY='libpython$(VERSION).dll.a' DLLLIBRARY='libpython$(VERSION).dll' @@ -709,7 +714,7 @@ 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;; @@ -1445,6 +1450,10 @@ BLDSHARED="\$(srcdir)/Modules/ld_so_beos $LDLIBRARY" LDSHARED="\$(BINLIBDEST)/config/ld_so_beos \$(LIBDIR)/$LDLIBRARY" ;; + Haiku*) + LDFLAGS="-L." # help ld find libpythonX.Y.so in root directory + LDSHARED="gcc -shared" + ;; IRIX/5*) LDSHARED="ld -shared";; IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";; SunOS/5*) @@ -1585,6 +1594,7 @@ *) CCSHARED="";; esac;; atheos*) CCSHARED="-fPIC";; + Haiku*) CCSHARED="-fPIC";; esac fi AC_MSG_RESULT($CCSHARED) @@ -1710,6 +1720,9 @@ BeOS*) AC_CHECK_LIB(net, socket, [LIBS="-lnet $LIBS"], [], $LIBS) # BeOS ;; +Haiku*) +AC_CHECK_LIB(network, socket, [LIBS="-lnetwork $LIBS"], [], $LIBS) # Haiku +;; esac AC_MSG_CHECKING(for --with-libs) @@ -2879,7 +2892,7 @@ AC_SUBST(LIBM) case $ac_sys_system in Darwin) ;; -BeOS) ;; +BeOS|Haiku) ;; *) LIBM=-lm esac AC_MSG_CHECKING(for --with-libm=STRING) diff -urN Python-2.5.4/setup.py Python-2.5.4-haiku/setup.py --- Python-2.5.4/setup.py 2009-01-02 15:47:18.000000000 +0000 +++ Python-2.5.4-haiku/setup.py 2009-01-02 15:49:40.000000000 +0000 @@ -338,7 +338,7 @@ # Check for MacOS X, which doesn't need libm.a at all math_libs = ['m'] - if platform in ['darwin', 'beos', 'mac']: + if platform in ['darwin', 'beos', 'haiku1', 'mac']: math_libs = [] # XXX Omitted modules: gl, pure, dl, SGI-specific modules @@ -912,7 +912,7 @@ exts.append( Extension('resource', ['resource.c']) ) # Sun yellow pages. Some systems have the functions in libc. - if platform not in ['cygwin', 'atheos']: + if platform not in ['cygwin', 'atheos', 'haiku1']: if (self.compiler.find_library_file(lib_dirs, 'nsl')): libs = ['nsl'] else: