diff -urN Python-2.6.1.orig/configure.in Python-2.6.1/configure.in
--- Python-2.6.1.orig/configure.in	2008-12-14 19:09:28.489629527 +0100
+++ Python-2.6.1/configure.in	2008-12-14 19:29:07.185629448 +0100
@@ -704,7 +704,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}
@@ -776,7 +776,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;;
@@ -1672,7 +1672,7 @@
 			fi
 		fi
 		;;
-	Linux*|GNU*|QNX*) LDSHARED='$(CC) -shared';;
+	Linux*|GNU*|QNX*|Haiku*) LDSHARED='$(CC) -shared';;
 	BSD/OS*/4*) LDSHARED="gcc -shared";;
 	FreeBSD*)
 		if [[ "`$CC -dM -E - </dev/null | grep __ELF__`" != "" ]]
@@ -1726,7 +1726,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*)
@@ -1759,7 +1759,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/*) 
 		# -u _PyMac_Error is needed to pull in the mac toolbox glue,
@@ -1878,6 +1878,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)
@@ -3096,7 +3099,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.6.1.orig/Modules/resource.c Python-2.6.1/Modules/resource.c
--- Python-2.6.1.orig/Modules/resource.c	2008-12-14 19:10:06.821692465 +0100
+++ Python-2.6.1/Modules/resource.c	2008-12-14 19:25:04.289630126 +0100
@@ -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.6.1.orig/Modules/socketmodule.c Python-2.6.1/Modules/socketmodule.c
--- Python-2.6.1.orig/Modules/socketmodule.c	2008-12-14 19:10:12.709628161 +0100
+++ Python-2.6.1/Modules/socketmodule.c	2008-12-14 22:00:59.341627065 +0100
@@ -4633,7 +4633,9 @@
 #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 -urN Python-2.6.1.orig/Modules/spwdmodule.c Python-2.6.1/Modules/spwdmodule.c
--- Python-2.6.1.orig/Modules/spwdmodule.c	2008-12-14 19:10:14.053629744 +0100
+++ Python-2.6.1/Modules/spwdmodule.c	2008-12-14 19:25:04.289630126 +0100
@@ -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.6.1.orig/Modules/timemodule.c Python-2.6.1/Modules/timemodule.c
--- Python-2.6.1.orig/Modules/timemodule.c	2008-12-14 19:10:04.873637365 +0100
+++ Python-2.6.1/Modules/timemodule.c	2008-12-14 19:25:04.293630616 +0100
@@ -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.6.1.orig/setup.py Python-2.6.1/setup.py
--- Python-2.6.1.orig/setup.py	2008-12-14 19:09:28.489629527 +0100
+++ Python-2.6.1/setup.py	2008-12-15 20:54:31.957990468 +0100
@@ -382,6 +382,9 @@
             inc_dirs += ['/system/include', '/atheos/autolnk/include']
             inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
 
+        if platform == 'haiku1':
+            inc_dirs += ['/boot/develop/headers/posix']
+
         # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
         if platform in ['osf1', 'unixware7', 'openunix8']:
             lib_dirs += ['/usr/ccs/lib']
@@ -405,7 +408,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
@@ -1053,7 +1056,7 @@
                 missing.append('resource')
 
             # Sun yellow pages. Some systems have the functions in libc.
-            if platform not in ['cygwin', 'atheos', 'qnx6']:
+            if platform not in ['cygwin', 'atheos', 'qnx6', 'haiku1']:
                 if (self.compiler.find_library_file(lib_dirs, 'nsl')):
                     libs = ['nsl']
                 else:
diff -urN Python-2.6.1.orig/Tools/scripts/h2py.py Python-2.6.1/Tools/scripts/h2py.py
--- Python-2.6.1.orig/Tools/scripts/h2py.py	2008-12-14 19:09:29.665626727 +0100
+++ Python-2.6.1/Tools/scripts/h2py.py	2008-12-14 19:25:04.313630203 +0100
@@ -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(':')
