diff options
Diffstat (limited to 'python/Python-2.6.2-cross.patch')
-rw-r--r-- | python/Python-2.6.2-cross.patch | 2029 |
1 files changed, 0 insertions, 2029 deletions
diff --git a/python/Python-2.6.2-cross.patch b/python/Python-2.6.2-cross.patch deleted file mode 100644 index 58bf277fd7b3..000000000000 --- a/python/Python-2.6.2-cross.patch +++ /dev/null @@ -1,2029 +0,0 @@ ---- misc/build/Python-2.6.1/configure.in 2009-03-30 19:56:14.000000000 +0200 -+++ misc/build/Python-2.6.1/configure.in 2009-05-09 13:48:16.000000000 +0200 -@@ -12,6 +12,11 @@ - AC_CONFIG_SRCDIR([Include/object.h]) - AC_CONFIG_HEADER(pyconfig.h) - -+# find compiler while respecting --host setting -+AC_CANONICAL_HOST() -+AC_CHECK_TOOLS(CC,gcc cc) -+AC_CHECK_TOOLS(CXX,g++ c++) -+ - dnl This is for stuff that absolutely must end up in pyconfig.h. - dnl Please use pyport.h instead, if possible. - AH_TOP([ -@@ -215,8 +220,8 @@ - # Set name for machine-dependent library files - AC_SUBST(MACHDEP) - AC_MSG_CHECKING(MACHDEP) --if test -z "$MACHDEP" --then -+if test -z "$MACHDEP"; then -+ if test "$cross_compiling" = "no"; then - ac_sys_system=`uname -s` - if test "$ac_sys_system" = "AIX" -o "$ac_sys_system" = "Monterey64" \ - -o "$ac_sys_system" = "UnixWare" -o "$ac_sys_system" = "OpenUNIX"; then -@@ -224,6 +229,24 @@ - else - ac_sys_release=`uname -r` - fi -+ else -+ #m=`$CC -dumpmachine` -+ #changequote(<<, >>)#dnl -+ #ac_sys_system=`expr "$m" : "[^-]*-\([^-]*\)"` -+ #changequote([, ])#dnl -+ -+ m=`$CC -dumpmachine` -+ ac_sys_system=`echo $m | cut -d- -f3` -+ -+ case $ac_sys_system in -+ cygwin*) ac_sys_system=`echo $ac_sys_system | sed s/cygwin/CYGWIN/g `;; -+ darwin*) ac_sys_system=`echo $ac_sys_system | sed s/darwin/Darwin/g `;; -+ linux*) ac_sys_system=`echo $ac_sys_system | sed s/linux/Linux/g `;; -+ esac -+ -+ -+ fi -+ - ac_md_system=`echo $ac_sys_system | - tr -d '[/ ]' | tr '[[A-Z]]' '[[a-z]]'` - ac_md_release=`echo $ac_sys_release | -@@ -232,6 +255,7 @@ - - case $MACHDEP in - cygwin*) MACHDEP="cygwin";; -+ mingw*) MACHDEP="mingw";; - darwin*) MACHDEP="darwin";; - atheos*) MACHDEP="atheos";; - irix646) MACHDEP="irix6";; -@@ -363,7 +387,7 @@ - fi - AC_MSG_RESULT($MACHDEP) - --# And add extra plat-mac for darwin -+# And add extra plat-mac for Darwin - AC_SUBST(EXTRAPLATDIR) - AC_SUBST(EXTRAMACHDEPPATH) - AC_MSG_CHECKING(EXTRAPLATDIR) -@@ -382,6 +406,23 @@ - fi - AC_MSG_RESULT($EXTRAPLATDIR) - -+AC_MSG_CHECKING(posix flavour) -+if test -z "$POSIX" -+then -+ case $ac_sys_system/$ac_sys_release in -+ mingw*) -+ DELIM=';' -+ POSIX=nt -+ ;; -+ *) -+ DELIM=':' -+ POSIX=posix -+ ;; -+ esac -+ fi -+AC_SUBST(DELIM) -+AC_MSG_RESULT($POSIX) -+ - # Record the configure-time value of MACOSX_DEPLOYMENT_TARGET, - # it may influence the way we can build extensions, so distutils - # needs to check it -@@ -546,9 +587,11 @@ - then - AC_MSG_RESULT(yes) - BUILDEXEEXT=.exe -+ case_sensitive=no - else -- AC_MSG_RESULT(no) -- BUILDEXEEXT=$EXEEXT -+ AC_MSG_RESULT(no) -+ BUILDEXEEXT=$EXEEXT -+ case_sensitive=yes - fi - rmdir CaseSensitiveTestDir - -@@ -645,7 +688,7 @@ - if test -z "$enable_shared" - then - case $ac_sys_system in -- CYGWIN* | atheos*) -+ CYGWIN* | atheos* | mingw*) - enable_shared="yes";; - *) - enable_shared="no";; -@@ -700,6 +743,10 @@ - LDLIBRARY='libpython$(VERSION).dll.a' - DLLLIBRARY='libpython$(VERSION).dll' - ;; -+ mingw*) -+ LDLIBRARY='libpython$(VERSION).dll.a' -+ DLLLIBRARY='libpython$(VERSION).dll' -+ ;; - SunOS*) - LDLIBRARY='libpython$(VERSION).so' - BLDLIBRARY='-Wl,-R,$(LIBDIR) -L. -lpython$(VERSION)' -@@ -752,14 +799,18 @@ - BLDLIBRARY='$(LIBRARY)' - LDLIBRARY='libpython$(VERSION).dll.a' - ;; -+ mingw*) -+ BLDLIBRARY='$(LIBRARY)' -+ LDLIBRARY='libpython$(VERSION).dll.a' -+ ;; - esac - fi - - AC_MSG_RESULT($LDLIBRARY) - --AC_PROG_RANLIB --AC_SUBST(AR) --AC_CHECK_PROGS(AR, ar aal, ar) -+# find tools while respecting --host setting -+AC_CHECK_TOOL(RANLIB,ranlib) -+AC_CHECK_TOOLS(AR,ar aal,ar) - - AC_SUBST(SVNVERSION) - AC_CHECK_PROG(SVNVERSION, svnversion, found, not-found) -@@ -965,6 +1016,9 @@ - OSF*) - BASECFLAGS="$BASECFLAGS -mieee" - ;; -+ mingw*) -+ OPT="-DMS_WINDOWS -DPy_WIN_WIDE_FILENAMES $OPT" -+ ;; - esac - ;; - -@@ -1013,7 +1067,7 @@ - if test $ac_cv_opt_olimit_ok = yes; then - case $ac_sys_system in - # XXX is this branch needed? On MacOSX 10.2.2 the result of the -- # olimit_ok test is "no". Is it "yes" in some other Darwin-esque -+ # olimit_ok test is "no". Is it "yes" in some other darwin-esque - # environment? - Darwin*) - ;; -@@ -1590,6 +1644,7 @@ - esac - ;; - CYGWIN*) SO=.dll;; -+ mingw*) SO=.dll;; - *) SO=.so;; - esac - else -@@ -1713,6 +1768,8 @@ - SCO_SV*) LDSHARED='$(CC) -Wl,-G,-Bexport';; - Monterey*) LDSHARED="cc -G -dy -Bdynamic -Bexport -L/usr/lib/ia64l64";; - CYGWIN*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base";; -+ mingw*) LDSHARED='$(CC) -mdll' -+ BLDSHARED='$(CC) -mdll libpython$(VERSION).dll';; - atheos*) LDSHARED="gcc -shared";; - *) LDSHARED="ld";; - esac -@@ -1805,6 +1862,11 @@ - then - LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' - fi;; -+ mingw*) -+ if test $enable_shared = "no" -+ then -+ LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' -+ fi;; - QNX*) - # -Wl,-E causes the symbols to be added to the dynamic - # symbol table so that they can be found when a module -@@ -1882,6 +1944,16 @@ - # 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 -+AC_CHECK_HEADER(winsock2.h) -+AC_CHECK_LIB(wsock32, select, [LIBS="-lws2_32 -lwsock32 $LIBS"], [], $LIBS) # Mingw32 select -+save_LIBS="$LIBS" -+LIBS="-lws2_32 -lwsock32 $LIBS" -+AC_MSG_CHECKING([for include <winsock2.h> select in libwinsock32]) -+AC_TRY_LINK([#include <winsock2.h>], -+ [select (1,2,3,4,5);], -+ [AC_MSG_RESULT(yes)], -+ [AC_MSG_RESULT(no)] -+ [LIBS="$save_LIBS"]) - - case "$ac_sys_system" in - BeOS*) -@@ -2424,6 +2496,7 @@ - # Use dynload_next.c only on 10.2 and below, which don't have native dlopen() - Darwin/@<:@0156@:>@\..*) DYNLOADFILE="dynload_next.o";; - atheos*) DYNLOADFILE="dynload_atheos.o";; -+ mingw*) DYNLOADFILE="dynload_win.o";; - *) - # use dynload_shlib.c and dlopen() if we have it; otherwise stub - # out any dynamic loading -@@ -2568,7 +2641,7 @@ - # On Tru64, chflags seems to be present, but calling it will - # exit Python - AC_MSG_CHECKING(for chflags) --AC_TRY_RUN([ -+AC_TRY_COMPILE([ - #include <sys/stat.h> - #include <unistd.h> - int main(int argc, char*argv[]) -@@ -2577,13 +2650,13 @@ - return 1; - return 0; - } --],AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) -+],void* p=chflags, AC_DEFINE(HAVE_CHFLAGS, 1, Define to 1 if you have the `chflags' function.) - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) - ) - - AC_MSG_CHECKING(for lchflags) --AC_TRY_RUN([ -+AC_TRY_COMPILE([ - #include <sys/stat.h> - #include <unistd.h> - int main(int argc, char*argv[]) -@@ -2592,7 +2665,7 @@ - return 1; - return 0; - } --],AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) -+],void* p=lchflags, AC_DEFINE(HAVE_LCHFLAGS, 1, Define to 1 if you have the `lchflags' function.) - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) - ) -@@ -2722,6 +2795,8 @@ - ) - ) - -+AC_CHECK_FUNCS(cwait fsync pipe popen spawnv system) -+ - AC_MSG_CHECKING(for major, minor, and makedev) - AC_TRY_LINK([ - #if defined(MAJOR_IN_MKDEV) -@@ -2871,7 +2946,7 @@ - AC_CHECK_MEMBERS([struct stat.st_flags]) - AC_CHECK_MEMBERS([struct stat.st_gen]) - AC_CHECK_MEMBERS([struct stat.st_birthtime]) --AC_STRUCT_ST_BLOCKS -+#AC_STRUCT_ST_BLOCKS - - AC_MSG_CHECKING(for time.h that defines altzone) - AC_CACHE_VAL(ac_cv_header_time_altzone, -@@ -3657,7 +3732,8 @@ - fi - - AC_MSG_CHECKING(for %zd printf() format support) --AC_TRY_RUN([#include <stdio.h> -+AC_CACHE_VAL(ac_cv_printf_zd_format, -+ AC_TRY_RUN([#include <stdio.h> - #include <stddef.h> - #include <string.h> - -@@ -3693,7 +3769,7 @@ - }], - [AC_MSG_RESULT(yes) - AC_DEFINE(PY_FORMAT_SIZE_T, "z", [Define to printf format modifier for Py_ssize_t])], -- AC_MSG_RESULT(no)) -+ AC_MSG_RESULT(no))) - - AC_CHECK_TYPE(socklen_t,, - AC_DEFINE(socklen_t,int, -@@ -3704,6 +3780,9 @@ - #ifdef HAVE_SYS_SOCKET_H - #include <sys/socket.h> - #endif -+#ifdef _WIN32 -+#include <ws2tcpip.h> -+#endif - ]) - - AC_SUBST(THREADHEADERS) -@@ -3723,6 +3802,67 @@ - done - AC_MSG_RESULT(done) - -+# Cross compiling -+AC_SUBST(cross_compiling) -+ -+if test "$cross_compiling" = "yes"; then -+ AC_MSG_CHECKING(cc for build) -+ ## /usr/bin/cc still uses wrong assembler -+ ## CC_FOR_BUILD="${CC_FOR_BUILD-/usr/bin/cc}" -+ CC_FOR_BUILD="${CC_FOR_BUILD-PATH=/usr/bin:$PATH cc}" -+else -+ CC_FOR_BUILD="${CC_FOR_BUILD-$CC}" -+fi -+ -+if test "$cross_compiling" = "yes"; then -+ AC_MSG_RESULT($CC_FOR_BUILD) -+fi -+ -+AC_ARG_VAR(CC_FOR_BUILD,[build system C compiler (default: cc)]) -+ -+if test "$cross_compiling" = "yes"; then -+ AC_MSG_CHECKING(python for build) -+ PYTHON_FOR_BUILD="${PYTHON_FOR_BUILD-python}" -+else -+ PYTHON_FOR_BUILD='$(BUILDPYTHON)' -+fi -+ -+if test "$cross_compiling" = "yes"; then -+ AC_MSG_RESULT($PYTHON_FOR_BUILD) -+fi -+AC_ARG_VAR(PYTHON_FOR_BUILD,[build system python (default: python)]) -+AC_SUBST(PYTHON_FOR_BUILD) -+ -+if test "$cross_compiling" = "yes"; then -+ CFLAGS_FOR_BUILD=${CFLAGS_FOR_BUILD-} -+ changequote(<<, >>)#dnl -+ python_include=`$PYTHON_FOR_BUILD -c 'import sys; sys.stdout.write ("%s/include/python%s" % (sys.prefix, sys.version[:3]))'` -+ changequote([, ])#dnl -+ CPPFLAGS_FOR_BUILD=${CPPFLAGS_FOR_BUILD-"-I$python_include"} -+ CROSS_COMMENT=# -+ if test "$case_sensitive" = "yes" -+ then -+ EXEEXT_FOR_BUILD= -+ else -+ EXEEXT_FOR_BUILD=.exe -+ fi -+ LDFLAGS_FOR_BUILD=${LDFLAGS_FOR_BUILD-} -+ LIBS_FOR_BUILD=${LIBS_FOR_BUILD-} -+ O_FOR_BUILD=x -+ RUNSHARED="CROSS_TARGET=$ac_sys_system SRCDIR=$srcdir SO=${SO}" -+else -+ CROSS_COMMENT= -+ EXEEXT_FOR_BUILD=$BUILDEXEEXT -+ O_FOR_BUILD=o -+fi -+AC_SUBST(CFLAGS_FOR_BUILD) -+AC_SUBST(CPPFLAGS_FOR_BUILD) -+AC_SUBST(CROSS_COMMENT) -+AC_SUBST(EXEEXT_FOR_BUILD) -+AC_SUBST(LDFLAGS_FOR_BUILD) -+AC_SUBST(LIBS_FOR_BUILD) -+AC_SUBST(O_FOR_BUILD) -+ - # generate output files - AC_CONFIG_FILES(Makefile.pre Modules/Setup.config) - AC_OUTPUT -@@ -3732,6 +3872,9 @@ - then - cp $srcdir/Modules/Setup.dist Modules/Setup - fi -+mv Modules/Setup Modules/Setup~ -+sed -e "s/@POSIX@/$POSIX/g" < Modules/Setup~ > Modules/Setup -+ - - echo "creating Modules/Setup.local" - if test ! -f Modules/Setup.local ---- misc/build/Python-2.6.1/Include/osdefs.h 2006-04-25 17:29:46.000000000 +0200 -+++ misc/build/Python-2.6.1/Include/osdefs.h 2009-05-09 13:35:04.000000000 +0200 -@@ -9,7 +9,7 @@ - - /* Mod by chrish: QNX has WATCOM, but isn't DOS */ - #if !defined(__QNX__) --#if defined(MS_WINDOWS) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__DJGPP__) || defined(PYOS_OS2) -+#if defined(MS_WINDOWS) || defined(__BORLANDC__) || defined(__WATCOMC__) || defined(__DJGPP__) || defined(PYOS_OS2) || defined(__MINGW32__) - #if defined(PYOS_OS2) && defined(PYCC_GCC) - #define MAXPATHLEN 260 - #define SEP '/' -@@ -18,6 +18,7 @@ - #define SEP '\\' - #define ALTSEP '/' - #define MAXPATHLEN 256 -+#define ROOTSEP ':' - #endif - #define DELIM ';' - #endif ---- misc/build/Python-2.6.1/Include/pyport.h 2009-01-14 01:00:17.000000000 +0100 -+++ misc/build/Python-2.6.1/Include/pyport.h 2009-05-09 13:35:04.000000000 +0200 -@@ -551,31 +551,31 @@ - BeOS and cygwin are the only other autoconf platform requiring special - linkage handling and both of these use __declspec(). - */ --#if defined(__CYGWIN__) || defined(__BEOS__) -+#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__BEOS__) - # define HAVE_DECLSPEC_DLL - #endif - - /* only get special linkage if built as shared or platform is Cygwin */ --#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__) -+#if defined(Py_ENABLE_SHARED) || defined(__CYGWIN__) || defined(__MINGW32__) - # if defined(HAVE_DECLSPEC_DLL) - # ifdef Py_BUILD_CORE - # define PyAPI_FUNC(RTYPE) __declspec(dllexport) RTYPE - # define PyAPI_DATA(RTYPE) extern __declspec(dllexport) RTYPE - /* module init functions inside the core need no external linkage */ - /* except for Cygwin to handle embedding (FIXME: BeOS too?) */ --# if defined(__CYGWIN__) -+# if defined(__CYGWIN__) || defined(__MINGW32__) - # define PyMODINIT_FUNC __declspec(dllexport) void --# else /* __CYGWIN__ */ -+# else /* __CYGWIN__ || __MINGW32__ */ - # define PyMODINIT_FUNC void --# endif /* __CYGWIN__ */ -+# endif /* __CYGWIN__ || __MINGW32__ */ - # else /* Py_BUILD_CORE */ - /* Building an extension module, or an embedded situation */ - /* public Python functions and data are imported */ - /* Under Cygwin, auto-import functions to prevent compilation */ - /* failures similar to http://python.org/doc/FAQ.html#3.24 */ --# if !defined(__CYGWIN__) -+# if !defined(__CYGWIN__) && !defined(__MINGW32__) - # define PyAPI_FUNC(RTYPE) __declspec(dllimport) RTYPE --# endif /* !__CYGWIN__ */ -+# endif /* !__CYGWIN__ && ! __MINGW32__ */ - # define PyAPI_DATA(RTYPE) extern __declspec(dllimport) RTYPE - /* module init functions outside the core must be exported */ - # if defined(__cplusplus) ---- misc/build/Python-2.6.1/Lib/distutils/command/build_ext.py 2009-02-05 23:55:00.000000000 +0100 -+++ misc/build/Python-2.6.1/Lib/distutils/command/build_ext.py 2009-05-09 13:35:04.000000000 +0200 -@@ -679,6 +679,8 @@ - ext_path[len(ext_path) - 1] = ext_path[len(ext_path) - 1][:8] - # extensions in debug_mode are named 'module_d.pyd' under windows - so_ext = get_config_var('SO') -+ if os.environ.get('CROSS_COMPILING') == 'yes': -+ so_ext = os.environ.get('SO') - if os.name == 'nt' and self.debug: - return apply(os.path.join, ext_path) + '_d' + so_ext - return os.path.join(*ext_path) + so_ext -@@ -731,7 +733,7 @@ - # don't extend ext.libraries, it may be shared with other - # extensions, it is a reference to the original list - return ext.libraries + [pythonlib] -- elif sys.platform[:6] == "cygwin": -+ elif sys.platform[:6] == "cygwin" or sys.platform[:5] == "mingw": - template = "python%d.%d" - pythonlib = (template % - (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) ---- misc/build/Python-2.6.1/Lib/plat-mingw/regen 1970-01-01 01:00:00.000000000 +0100 -+++ misc/build/Python-2.6.1/Lib/plat-mingw/regen 2009-05-09 13:35:04.000000000 +0200 -@@ -0,0 +1,3 @@ -+#! /bin/sh -+set -v -+python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /usr/include/netinet/in.h ---- misc/build/Python-2.6.1/Lib/plat-mingw32msvc2/regen 1970-01-01 01:00:00.000000000 +0100 -+++ misc/build/Python-2.6.1/Lib/plat-mingw32msvc2/regen 2009-05-09 13:35:04.000000000 +0200 -@@ -0,0 +1,3 @@ -+#! /bin/sh -+set -v -+python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /usr/include/netinet/in.h ---- misc/build/Python-2.6.1/Lib/plat-pc/regen 1970-01-01 01:00:00.000000000 +0100 -+++ misc/build/Python-2.6.1/Lib/plat-pc/regen 2009-05-09 13:35:04.000000000 +0200 -@@ -0,0 +1,3 @@ -+#! /bin/sh -+set -v -+python$EXE ../../Tools/scripts/h2py.py -i '(u_long)' /usr/include/netinet/in.h ---- misc/build/Python-2.6.1/Lib/test/test_future5.py 2008-10-26 21:59:05.000000000 +0100 -+++ misc/build/Python-2.6.1/Lib/test/test_future5.py 2009-05-09 14:42:22.000000000 +0200 -@@ -13,7 +13,7 @@ - - def test_print_function(self): - with test_support.captured_output("stderr") as s: -- print("foo", file=sys.stderr) -+ print >> sys.stderr, "foo" - self.assertEqual(s.getvalue(), "foo\n") - - ---- misc/build/Python-2.6.1/Makefile.pre.in 2009-02-24 12:07:44.000000000 +0100 -+++ misc/build/Python-2.6.1/Makefile.pre.in 2009-05-09 13:35:04.000000000 +0200 -@@ -18,6 +18,8 @@ - # - # See also the section "Build instructions" in the README file. - -+DELIM=@DELIM@ -+ - # === Variables set by makesetup === - - MODOBJS= _MODOBJS_ -@@ -72,6 +74,16 @@ - # C flags used for building the interpreter object files - PY_CFLAGS= $(CFLAGS) $(CPPFLAGS) $(CFLAGSFORSHARED) -DPy_BUILD_CORE - -+# For cross compile: build compiler options -+CC_FOR_BUILD= @CC_FOR_BUILD@ -+CROSS_COMPILING= @cross_compiling@ -+EXEEXT_FOR_BUILD= @EXEEXT_FOR_BUILD@ -+O_FOR_BUILD= @O_FOR_BUILD@ -+ -+CFLAGS_FOR_BUILD= @CFLAGS_FOR_BUILD@ -+CPPFLAGS_FOR_BUILD= @CPPFLAGS_FOR_BUILD@ -I$(srcdir)/Include -+LDFLAGS_FOR_BUILD= @LDFLAGS_FOR_BUILD@ -+LIBS_FOR_BUILD= @LIBS_FOR_BUILD@ - - # Machine-dependent subdirectories - MACHDEP= @MACHDEP@ -@@ -106,6 +118,10 @@ - BLDSHARED= @BLDSHARED@ - DESTSHARED= $(BINLIBDEST)/lib-dynload - -+comma=, -+BLDFLAGS=$(subst -Wl$(comma),,$(LDFLAGS)) -+ -+ - # Executable suffix (.exe on Windows and Mac OS X) - EXE= @EXEEXT@ - BUILDEXE= @BUILDEXEEXT@ -@@ -174,7 +190,8 @@ - UNICODE_OBJS= @UNICODE_OBJS@ - - PYTHON= python$(EXE) --BUILDPYTHON= python$(BUILDEXE) -+BUILDPYTHON= python$(EXE) -+PYTHON_FOR_BUILD= @PYTHON_FOR_BUILD@ - - # The task to run while instrument when building the profile-opt target - PROFILE_TASK= $(srcdir)/Tools/pybench/pybench.py -n 2 --with-gc --with-syscheck -@@ -204,7 +221,7 @@ - - ########################################################################## - # Parser --PGEN= Parser/pgen$(EXE) -+PGEN_FOR_BUILD= Parser/pgen$(EXEEXT_FOR_BUILD) - - POBJS= \ - Parser/acceler.o \ -@@ -221,18 +238,28 @@ - - PARSER_OBJS= $(POBJS) Parser/myreadline.o Parser/tokenizer.o - --PGOBJS= \ -- Objects/obmalloc.o \ -- Python/mysnprintf.o \ -- Parser/tokenizer_pgen.o \ -- Parser/printgrammar.o \ -- Parser/pgenmain.o -- --PARSER_HEADERS= \ -- Parser/parser.h \ -- Parser/tokenizer.h -+POBJS_FOR_BUILD= \ -+ Parser/acceler.$(O_FOR_BUILD) \ -+ Parser/grammar1.$(O_FOR_BUILD) \ -+ Parser/listnode.$(O_FOR_BUILD) \ -+ Parser/node.$(O_FOR_BUILD) \ -+ Parser/parser.$(O_FOR_BUILD) \ -+ Parser/parsetok.$(O_FOR_BUILD) \ -+ Parser/bitset.$(O_FOR_BUILD) \ -+ Parser/metagrammar.$(O_FOR_BUILD) \ -+ Parser/firstsets.$(O_FOR_BUILD) \ -+ Parser/grammar.$(O_FOR_BUILD) \ -+ Parser/pgen.$(O_FOR_BUILD) -+ -+PGOBJS_FOR_BUILD= \ -+ Objects/obmalloc.$(O_FOR_BUILD) \ -+ Python/mysnprintf.$(O_FOR_BUILD) \ -+ Parser/tokenizer_pgen.$(O_FOR_BUILD) \ -+ Parser/printgrammar.$(O_FOR_BUILD) \ -+ Parser/pgenmain.$(O_FOR_BUILD) -+ -+PGENOBJS= $(POBJS_FOR_BUILD) $(PGOBJS_FOR_BUILD) - --PGENOBJS= $(PGENMAIN) $(POBJS) $(PGOBJS) - - ########################################################################## - # AST -@@ -387,16 +414,15 @@ - Modules/python.o \ - $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) - --platform: $(BUILDPYTHON) -- $(RUNSHARED) ./$(BUILDPYTHON) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform -- -+platform: @CROSS_COMMENT@ $(BUILDPYTHON) -+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -E -c 'import sys ; from distutils.util import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform - - # Build the shared modules --sharedmods: $(BUILDPYTHON) -- @case $$MAKEFLAGS in \ -- *s*) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py -q build;; \ -- *) $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' ./$(BUILDPYTHON) -E $(srcdir)/setup.py build;; \ -- esac -+sharedmods: @CROSS_COMMENT@ $(BUILDPYTHON) -+ case $$MAKEFLAGS in \ -+ *-s*) $(RUNSHARED) CC='$(CC)' LDFLAGS="$(BLDFLAGS)" CROSS_COMPILING='$(CROSS_COMPILING)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py -q build;; \ -+ *) $(RUNSHARED) CC='$(CC)' LDFLAGS="$(BLDFLAGS)" CROSS_COMPILING='$(CROSS_COMPILING)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py build;; \ -+ esac - - # Build static library - # avoid long command lines, same as LIBRARY_OBJS -@@ -515,12 +541,13 @@ - $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c - - --$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN) $(GRAMMAR_INPUT) -+$(GRAMMAR_H) $(GRAMMAR_C): $(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) - -@$(INSTALL) -d Include -- -$(PGEN) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) -+ -$(PGEN_FOR_BUILD) $(GRAMMAR_INPUT) $(GRAMMAR_H) $(GRAMMAR_C) -+ -+$(PGEN_FOR_BUILD): $(PGENOBJS) -+ $(CC_FOR_BUILD) $(OPT) $(LDFLAGS_FOR_BUILD) $(PGENOBJS) $(LIBS_FOR_BUILD) -o $(PGEN_FOR_BUILD) - --$(PGEN): $(PGENOBJS) -- $(CC) $(OPT) $(LDFLAGS) $(PGENOBJS) $(LIBS) -o $(PGEN) - - Parser/grammar.o: $(srcdir)/Parser/grammar.c \ - $(srcdir)/Include/token.h \ -@@ -578,6 +605,13 @@ - $(STRINGLIB_HEADERS) - - ############################################################################ -+# Cross compile rules -+ -+.SUFFIXES: .x -+.c.x: -+ $(CC_FOR_BUILD) -c $(CPPFLAGS_FOR_BUILD) $(CFLAGS_FOR_BUILD) -o $@ $< -+ -+############################################################################ - # Header files - - PYTHON_HEADERS= \ -@@ -676,7 +710,7 @@ - - TESTOPTS= -l $(EXTRATESTOPTS) - TESTPROG= $(srcdir)/Lib/test/regrtest.py --TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) -E -tt -+TESTPYTHON= $(RUNSHARED) $(PYTHON_FOR_BUILD) -E -tt - test: all platform - -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f - -$(TESTPYTHON) $(TESTPROG) $(TESTOPTS) -@@ -830,7 +864,7 @@ - multiprocessing multiprocessing/dummy \ - lib-old \ - curses $(MACHDEPS) --libinstall: build_all $(srcdir)/Lib/$(PLATDIR) -+libinstall: $(srcdir)/Lib/$(PLATDIR) @CROSS_COMMENT@ $(BUILDPYTHON) - @for i in $(SCRIPTDIR) $(LIBDEST); \ - do \ - if test ! -d $(DESTDIR)$$i; then \ -@@ -887,19 +921,19 @@ - done - $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt - PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ -- ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ -+ $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ - -d $(LIBDEST) -f \ - -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST) - PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ -- ./$(BUILDPYTHON) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ -+ $(PYTHON_FOR_BUILD) -Wi -tt -O $(DESTDIR)$(LIBDEST)/compileall.py \ - -d $(LIBDEST) -f \ - -x 'bad_coding|badsyntax|site-packages' $(DESTDIR)$(LIBDEST) - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ -- ./$(BUILDPYTHON) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ -+ $(PYTHON_FOR_BUILD) -Wi -t $(DESTDIR)$(LIBDEST)/compileall.py \ - -d $(LIBDEST)/site-packages -f \ - -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ -- ./$(BUILDPYTHON) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ -+ $(PYTHON_FOR_BUILD) -Wi -t -O $(DESTDIR)$(LIBDEST)/compileall.py \ - -d $(LIBDEST)/site-packages -f \ - -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages - -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ -@@ -909,9 +943,9 @@ - $(srcdir)/Lib/$(PLATDIR): - mkdir $(srcdir)/Lib/$(PLATDIR) - cp $(srcdir)/Lib/plat-generic/regen $(srcdir)/Lib/$(PLATDIR)/regen -- export PATH; PATH="`pwd`:$$PATH"; \ -- export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \ -- export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \ -+@CROSS_COMMENT@ export PATH; PATH="`pwd`:$$PATH"; \ -+@CROSS_COMMENT@ export PYTHONPATH; PYTHONPATH="`pwd`/Lib"; \ -+@CROSS_COMMENT@ export DYLD_FRAMEWORK_PATH; DYLD_FRAMEWORK_PATH="`pwd`"; \ - export EXE; EXE="$(BUILDEXE)"; \ - cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen - -@@ -1001,8 +1035,9 @@ - # Install the dynamically loadable modules - # This goes into $(exec_prefix) - sharedinstall: -- $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ -- --prefix=$(prefix) \ -+ CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' CROSS_COMPILING='$(CROSS_COMPILING)' \ -+ $(RUNSHARED) $(PYTHON_FOR_BUILD) -E $(srcdir)/setup.py install \ -+ --prefix=$(prefix) \ - --install-scripts=$(BINDIR) \ - --install-platlib=$(DESTSHARED) \ - --root=/$(DESTDIR) -@@ -1081,7 +1116,7 @@ - # This installs a few of the useful scripts in Tools/scripts - scriptsinstall: - SRCDIR=$(srcdir) $(RUNSHARED) \ -- ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/setup.py install \ -+ $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \ - --prefix=$(prefix) \ - --install-scripts=$(BINDIR) \ - --root=/$(DESTDIR) -@@ -1145,11 +1180,12 @@ - find . -name '*.gc??' -exec rm -f {} ';' - - clobber: clean profile-removal -- -rm -f $(BUILDPYTHON) $(PGEN) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ -+ -rm -f $(BUILDPYTHON) $(PGEN_FOR_BUILD) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ - tags TAGS \ - config.cache config.log pyconfig.h Modules/config.c - -rm -rf build platform - -rm -rf $(PYTHONFRAMEWORKDIR) -+ -rm -rf buildpython - - # Make things extra clean, before making a distribution: - # remove all generated files, even Makefile[.pre] ---- misc/build/Python-2.6.1/Modules/datetimemodule.c 2008-06-11 09:41:16.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/datetimemodule.c 2009-05-11 23:36:02.000000000 +0200 -@@ -10,6 +10,10 @@ - - #include <time.h> - -+#ifdef MS_WINDOWS -+#include <winsock2.h> -+#endif -+ - #include "timefuncs.h" - - /* Differentiate between building the core module and building extension ---- misc/build/Python-2.6.1/Modules/dl_nt.c 1970-01-01 01:00:00.000000000 +0100 -+++ misc/build/Python-2.6.1/Modules/dl_nt.c 2009-05-09 13:35:04.000000000 +0200 -@@ -0,0 +1,39 @@ -+/* -+ -+Entry point for the Windows NT DLL. -+ -+About the only reason for having this, is so initall() can automatically -+be called, removing that burden (and possible source of frustration if -+forgotten) from the programmer. -+ -+*/ -+#include "windows.h" -+ -+/* NT and Python share these */ -+#include "pyconfig.h" -+#include "Python.h" -+ -+char dllVersionBuffer[16] = ""; // a private buffer -+ -+// Python Globals -+HMODULE PyWin_DLLhModule = NULL; -+const char *PyWin_DLLVersionString = dllVersionBuffer; -+ -+ -+BOOL WINAPI DllMain (HANDLE hInst, -+ ULONG ul_reason_for_call, -+ LPVOID lpReserved) -+{ -+ switch (ul_reason_for_call) -+ { -+ case DLL_PROCESS_ATTACH: -+ PyWin_DLLhModule = hInst; -+ // 1000 is a magic number I picked out of the air. Could do with a #define, I spose... -+ LoadString(hInst, 1000, dllVersionBuffer, sizeof(dllVersionBuffer)); -+ //initall(); -+ break; -+ case DLL_PROCESS_DETACH: -+ break; -+ } -+ return TRUE; -+} ---- misc/build/Python-2.6.1/Modules/getpath.c 2007-03-10 08:38:14.000000000 +0100 -+++ misc/build/Python-2.6.1/Modules/getpath.c 2009-05-09 13:35:04.000000000 +0200 -@@ -125,6 +125,14 @@ - #define LANDMARK "os.py" - #endif - -+#ifndef __MINGW32__ -+#define IS_ABSOLUTE(x) (x[0] == SEP) -+#else /* __MINGW32__ */ -+#define IS_ABSOLUTE(x) (x[0] == SEP || x[0] == ALTSEP\ -+ || (x[1] && x[1] == ROOTSEP\ -+ && x[2] && (x[2] == SEP || x[2] == ALTSEP))) -+#endif /* __MINGW32__ */ -+ - static char prefix[MAXPATHLEN+1]; - static char exec_prefix[MAXPATHLEN+1]; - static char progpath[MAXPATHLEN+1]; -@@ -135,7 +143,12 @@ - reduce(char *dir) - { - size_t i = strlen(dir); -- while (i > 0 && dir[i] != SEP) -+ while (i > 0 -+ && dir[i] != SEP -+#ifdef ALTSEP -+ && dir[i] != ALTSEP -+#endif /* ALTSEP */ -+ ) - --i; - dir[i] = '\0'; - } -@@ -208,11 +221,16 @@ - joinpath(char *buffer, char *stuff) - { - size_t n, k; -- if (stuff[0] == SEP) -+ if (IS_ABSOLUTE(stuff)) - n = 0; - else { - n = strlen(buffer); -- if (n > 0 && buffer[n-1] != SEP && n < MAXPATHLEN) -+ if (n > 0 -+ && buffer[n-1] != SEP -+#ifdef ALTSEP -+ && buffer[n-1] != ALTSEP -+#endif /* ALTSEP */ -+ && n < MAXPATHLEN) - buffer[n++] = SEP; - } - if (n > MAXPATHLEN) -@@ -229,11 +247,16 @@ - static void - copy_absolute(char *path, char *p) - { -- if (p[0] == SEP) -+ if (IS_ABSOLUTE(p)) - strcpy(path, p); - else { - getcwd(path, MAXPATHLEN); -- if (p[0] == '.' && p[1] == SEP) -+ if (p[0] == '.' -+ && (p[1] == SEP -+#ifdef ALTSEP -+ || p[1] == ALTSEP -+#endif /* ALTSEP */ -+ )) - p += 2; - joinpath(path, p); - } -@@ -245,7 +268,7 @@ - { - char buffer[MAXPATHLEN + 1]; - -- if (path[0] == SEP) -+ if (IS_ABSOLUTE(path)) - return; - copy_absolute(buffer, path); - strcpy(path, buffer); -@@ -393,13 +416,23 @@ - #endif - #endif - -- /* If there is no slash in the argv0 path, then we have to -- * assume python is on the user's $PATH, since there's no -- * other way to find a directory to start the search from. If -- * $PATH isn't exported, you lose. -- */ -- if (strchr(prog, SEP)) -- strncpy(progpath, prog, MAXPATHLEN); -+ /* If PROG is an absolute name, then we're done. If PROG is not -+ * an absolute name and contains SEP/ALTSEP, then it must be -+ * reachable from CWD. Otherwise, python is on the user's $PATH, -+ * since there's no other way to find a directory to start the -+ * search from. If $PATH isn't exported, you lose. -+ */ -+ if (IS_ABSOLUTE(prog)) -+ strncpy(progpath, prog, MAXPATHLEN); -+ else if (strchr(prog, SEP) -+#ifdef ALTSEP -+ || strchr(prog, ALTSEP) -+#endif /* ALTSEP */ -+ ) -+ { -+ getcwd(progpath, MAXPATHLEN); -+ joinpath(progpath, prog); -+ } - #ifdef __APPLE__ - /* On Mac OS X, if a script uses an interpreter of the form - * "#!/opt/python2.3/bin/python", the kernel only passes "python" -@@ -415,6 +448,9 @@ - ; - #endif /* __APPLE__ */ - else if (path) { -+#ifdef __MINGW32__ -+ char const *ext = strchr(prog, '.') ? "" : ".exe"; -+#endif - while (1) { - char *delim = strchr(path, DELIM); - -@@ -429,9 +465,11 @@ - strncpy(progpath, path, MAXPATHLEN); - - joinpath(progpath, prog); -+#ifdef __MINGW32__ -+ strcat(progpath, ext); -+#endif - if (isxfile(progpath)) - break; -- - if (!delim) { - progpath[0] = '\0'; - break; -@@ -441,7 +479,7 @@ - } - else - progpath[0] = '\0'; -- if (progpath[0] != SEP) -+ if (!IS_ABSOLUTE(progpath)) - absolutize(progpath); - strncpy(argv0_path, progpath, MAXPATHLEN); - argv0_path[MAXPATHLEN] = '\0'; -@@ -487,7 +525,7 @@ - while (linklen != -1) { - /* It's not null terminated! */ - tmpbuffer[linklen] = '\0'; -- if (tmpbuffer[0] == SEP) -+ if (IS_ABSOLUTE(tmpbuffer)) - /* tmpbuffer should never be longer than MAXPATHLEN, - but extra check does not hurt */ - strncpy(argv0_path, tmpbuffer, MAXPATHLEN); -@@ -554,7 +592,7 @@ - while (1) { - char *delim = strchr(defpath, DELIM); - -- if (defpath[0] != SEP) -+ if (!IS_ABSOLUTE(defpath)) - /* Paths are relative to prefix */ - bufsz += prefixsz; - -@@ -599,7 +637,7 @@ - while (1) { - char *delim = strchr(defpath, DELIM); - -- if (defpath[0] != SEP) { -+ if (!IS_ABSOLUTE(defpath)) { - strcat(buf, prefix); - strcat(buf, separator); - } ---- misc/build/Python-2.6.1/Modules/Makefile 1970-01-01 01:00:00.000000000 +0100 -+++ misc/build/Python-2.6.1/Modules/Makefile 2009-05-11 22:34:01.000000000 +0200 -@@ -0,0 +1,15 @@ -+ -+# Rules appended by makedepend -+ -+./posixmodule.o: $(srcdir)/./posixmodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/./posixmodule.c -o ./posixmodule.o -+./ntmodule$(SO): ./posixmodule.o; $(BLDSHARED) ./posixmodule.o -o ./ntmodule$(SO) -+./_sre.o: $(srcdir)/./_sre.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/./_sre.c -o ./_sre.o -+./_sre$(SO): ./_sre.o; $(BLDSHARED) ./_sre.o -o ./_sre$(SO) -+./_codecsmodule.o: $(srcdir)/./_codecsmodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/./_codecsmodule.c -o ./_codecsmodule.o -+./_codecsmodule$(SO): ./_codecsmodule.o; $(BLDSHARED) ./_codecsmodule.o -o ./_codecsmodule$(SO) -+./zipimport.o: $(srcdir)/./zipimport.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/./zipimport.c -o ./zipimport.o -+./zipimport$(SO): ./zipimport.o; $(BLDSHARED) ./zipimport.o -o ./zipimport$(SO) -+./symtablemodule.o: $(srcdir)/./symtablemodule.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/./symtablemodule.c -o ./symtablemodule.o -+./_symtablemodule$(SO): ./symtablemodule.o; $(BLDSHARED) ./symtablemodule.o -o ./_symtablemodule$(SO) -+./xxsubtype.o: $(srcdir)/./xxsubtype.c; $(CC) $(PY_CFLAGS) -c $(srcdir)/./xxsubtype.c -o ./xxsubtype.o -+./xxsubtype$(SO): ./xxsubtype.o; $(BLDSHARED) ./xxsubtype.o -o ./xxsubtype$(SO) ---- misc/build/Python-2.6.1/Modules/posixmodule.c 2009-04-06 08:47:37.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/posixmodule.c 2009-05-09 13:35:04.000000000 +0200 -@@ -96,6 +96,11 @@ - #include <sys/loadavg.h> - #endif - -+/* Additional defines for the mingw32 build */ -+#if defined(__MINGW32__) -+#undef HAVE_DEV_PTMX -+#endif -+ - /* Various compilers have only certain posix functions */ - /* XXX Gosh I wish these were all moved into pyconfig.h */ - #if defined(PYCC_VACPP) && defined(PYOS_OS2) -@@ -131,6 +136,10 @@ - #define HAVE_FSYNC 1 - #define fsync _commit - #else -+#ifdef __MINGW32__ /* MINGW32 (cross-)compiler*/ -+#define HAVE_FSYNC 1 -+#define fsync _commit -+#else - #if defined(PYOS_OS2) && defined(PYCC_GCC) || defined(__VMS) - /* Everything needed is defined in PC/os2emx/pyconfig.h or vms/pyconfig.h */ - #else /* all other compilers */ -@@ -156,12 +165,13 @@ - #define HAVE_WAIT 1 - #define HAVE_TTYNAME 1 - #endif /* PYOS_OS2 && PYCC_GCC && __VMS */ -+#endif /* __MINGW32__ */ - #endif /* _MSC_VER */ - #endif /* __BORLANDC__ */ - #endif /* ! __WATCOMC__ || __QNX__ */ - #endif /* ! __IBMC__ */ - --#ifndef _MSC_VER -+#if !defined(_MSC_VER) && !defined(__MINGW32__) - - #if defined(__sgi)&&_COMPILER_VERSION>=700 - /* declare ctermid_r if compiling with MIPSPro 7.x in ANSI C mode -@@ -173,7 +183,7 @@ - #if defined(PYCC_VACPP) - extern int mkdir(char *); - #else --#if ( defined(__WATCOMC__) || defined(_MSC_VER) ) && !defined(__QNX__) -+#if ( defined(__WATCOMC__) || defined(_MSC_VER) || defined(__MINGW32__)) && !defined(__QNX__) - extern int mkdir(const char *); - #else - extern int mkdir(const char *, mode_t); -@@ -213,7 +223,7 @@ - #endif /* HAVE_LSTAT */ - #endif /* !HAVE_UNISTD_H */ - --#endif /* !_MSC_VER */ -+#endif /* !_MSC_VER && !__MINGW32__ */ - - #ifdef HAVE_UTIME_H - #include <utime.h> -@@ -258,7 +268,7 @@ - #endif - #endif - --#ifdef _MSC_VER -+#if defined (_MSC_VER) || defined (__MINGW32__) - #ifdef HAVE_DIRECT_H - #include <direct.h> - #endif -@@ -273,7 +283,7 @@ - #include <shellapi.h> /* for ShellExecute() */ - #define popen _popen - #define pclose _pclose --#endif /* _MSC_VER */ -+#endif /* _MSC_VER || __MINGW32__ */ - - #if defined(PYCC_VACPP) && defined(PYOS_OS2) - #include <io.h> -@@ -322,7 +332,7 @@ - - /* choose the appropriate stat and fstat functions and return structs */ - #undef STAT --#if defined(MS_WIN64) || defined(MS_WINDOWS) -+#if defined(MS_WIN64) || defined(MS_WINDOWS) || defined(__MINGW32__) - # define STAT win32_stat - # define FSTAT win32_fstat - # define STRUCT_STAT struct win32_stat -@@ -350,9 +360,9 @@ - */ - #include <crt_externs.h> - static char **environ; --#elif !defined(_MSC_VER) && ( !defined(__WATCOMC__) || defined(__QNX__) ) -+#elif !defined(_MSC_VER) && !defined(__MINGW32__) && ( !defined(__WATCOMC__) || defined(__QNX__) ) - extern char **environ; --#endif /* !_MSC_VER */ -+#endif /* !_MSC_VER && ! __MINGW32__ */ - - static PyObject * - convertenviron(void) -@@ -446,7 +456,7 @@ - return rc; - } - --#ifdef MS_WINDOWS -+#if defined (MS_WINDOWS) || defined (__MINGW32__) - static PyObject * - win32_error(char* function, char* filename) - { -@@ -749,7 +759,7 @@ - } - #endif - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - /* The CRT of Windows has a number of flaws wrt. its stat() implementation: - - time stamps are restricted to second resolution - - file modification times suffer from forth-and-back conversions between -@@ -1074,7 +1084,7 @@ - return 0; - } - --#endif /* MS_WINDOWS */ -+#endif /* MS_WINDOWS and __MINGW32__ */ - - PyDoc_STRVAR(stat_result__doc__, - "stat_result: Result from stat or lstat.\n\n\ -@@ -1286,7 +1296,7 @@ - #else - PyStructSequence_SET_ITEM(v, 1, PyInt_FromLong((long)st->st_ino)); - #endif --#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS) -+#if defined(HAVE_LONG_LONG) && !defined(MS_WINDOWS) && !defined(__MINGW32__) - PyStructSequence_SET_ITEM(v, 2, - PyLong_FromLongLong((PY_LONG_LONG)st->st_dev)); - #else -@@ -1369,7 +1379,7 @@ - return v; - } - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - - /* IsUNCRoot -- test whether the supplied path is of the form \\SERVER\SHARE\, - where / can be used in place of \ and the trailing slash is optional. -@@ -1429,7 +1439,7 @@ - #undef ISSLASH - } - #endif /* Py_WIN_WIDE_FILENAMES */ --#endif /* MS_WINDOWS */ -+#endif /* MS_WINDOWS and __MINGW32__ */ - - static PyObject * - posix_do_stat(PyObject *self, PyObject *args, -@@ -1482,7 +1492,7 @@ - Py_END_ALLOW_THREADS - - if (res != 0) { --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - result = win32_error("stat", pathfree); - #else - result = posix_error_with_filename(pathfree); -@@ -1630,7 +1640,7 @@ - static PyObject * - posix_chdir(PyObject *self, PyObject *args) - { --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - return win32_1str(args, "chdir", "s:chdir", win32_chdir, "U:chdir", win32_wchdir); - #elif defined(PYOS_OS2) && defined(PYCC_GCC) - return posix_1str(args, "et:chdir", _chdir2); -@@ -2073,7 +2083,7 @@ - { - /* XXX Should redo this putting the (now four) versions of opendir - in separate files instead of having them all here... */ --#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR) -+#if (defined(MS_WINDOWS) || defined(__MINGW32__)) && !defined(HAVE_OPENDIR) - - PyObject *d, *v; - HANDLE hFindFile; -@@ -2378,7 +2388,7 @@ - #endif /* which OS */ - } /* end of posix_listdir */ - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - /* A helper function for abspath on win32 */ - static PyObject * - posix__getfullpathname(PyObject *self, PyObject *args) -@@ -2433,7 +2443,7 @@ - } - return PyString_FromString(outbuf); - } /* end of posix__getfullpathname */ --#endif /* MS_WINDOWS */ -+#endif /* MS_WINDOWS and __MINGW32__ */ - - PyDoc_STRVAR(posix_mkdir__doc__, - "mkdir(path [, mode=0777])\n\n\ -@@ -2486,7 +2496,7 @@ - Py_FileSystemDefaultEncoding, &path, &mode)) - return NULL; - Py_BEGIN_ALLOW_THREADS --#if ( defined(__WATCOMC__) || defined(PYCC_VACPP) ) && !defined(__QNX__) -+#if ( defined(__WATCOMC__) || defined(PYCC_VACPP)) && !defined(__QNX__) - res = mkdir(path); - #else - res = mkdir(path, mode); -@@ -2550,7 +2560,7 @@ - static PyObject * - posix_rename(PyObject *self, PyObject *args) - { --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - PyObject *o1, *o2; - char *p1, *p2; - BOOL result; -@@ -2598,7 +2608,7 @@ - static PyObject * - posix_rmdir(PyObject *self, PyObject *args) - { --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - return win32_1str(args, "rmdir", "s:rmdir", RemoveDirectoryA, "U:rmdir", RemoveDirectoryW); - #else - return posix_1str(args, "et:rmdir", rmdir); -@@ -2613,7 +2623,7 @@ - static PyObject * - posix_stat(PyObject *self, PyObject *args) - { --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - return posix_do_stat(self, args, "et:stat", STAT, "U:stat", win32_wstat); - #else - return posix_do_stat(self, args, "et:stat", STAT, NULL, NULL); -@@ -2669,7 +2679,7 @@ - static PyObject * - posix_unlink(PyObject *self, PyObject *args) - { --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - return win32_1str(args, "remove", "s:remove", DeleteFileA, "U:remove", DeleteFileW); - #else - return posix_1str(args, "et:remove", unlink); -@@ -4720,7 +4730,7 @@ - - #endif /* PYCC_??? */ - --#elif defined(MS_WINDOWS) -+#elif defined(MS_WINDOWS) || defined(__MINGW32__) - - /* - * Portable 'popen' replacement for Win32. -@@ -5913,7 +5923,7 @@ - #ifdef HAVE_LSTAT - return posix_do_stat(self, args, "et:lstat", lstat, NULL, NULL); - #else /* !HAVE_LSTAT */ --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - return posix_do_stat(self, args, "et:lstat", STAT, "U:lstat", win32_wstat); - #else - return posix_do_stat(self, args, "et:lstat", STAT, NULL, NULL); -@@ -6046,7 +6056,7 @@ - #endif /* HAVE_TIMES */ - - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - #define HAVE_TIMES /* so the method table will pick it up */ - static PyObject * - posix_times(PyObject *self, PyObject *noargs) -@@ -6070,7 +6080,7 @@ - (double)0, - (double)0); - } --#endif /* MS_WINDOWS */ -+#endif /* MS_WINDOWS and __MINGW32__ */ - - #ifdef HAVE_TIMES - PyDoc_STRVAR(posix_times__doc__, -@@ -6186,7 +6196,7 @@ - int mode = 0777; - int fd; - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - if (unicode_file_names()) { - PyUnicodeObject *po; - if (PyArg_ParseTuple(args, "Ui|i:mkdir", &po, &flag, &mode)) { -@@ -6305,7 +6315,7 @@ - posix_lseek(PyObject *self, PyObject *args) - { - int fd, how; --#if defined(MS_WIN64) || defined(MS_WINDOWS) -+#if defined(MS_WIN64) || defined(MS_WINDOWS) || defined(__MINGW32__) - PY_LONG_LONG pos, res; - #else - off_t pos, res; -@@ -6332,7 +6342,7 @@ - return NULL; - - Py_BEGIN_ALLOW_THREADS --#if defined(MS_WIN64) || defined(MS_WINDOWS) -+#if defined(MS_WIN64) || defined(MS_WINDOWS) || defined(__MINGW32__) - res = _lseeki64(fd, pos, how); - #else - res = lseek(fd, pos, how); -@@ -6348,7 +6358,6 @@ - #endif - } - -- - PyDoc_STRVAR(posix_read__doc__, - "read(fd, buffersize) -> string\n\n\ - Read a file descriptor."); -@@ -6423,7 +6432,7 @@ - res = FSTAT(fd, &st); - Py_END_ALLOW_THREADS - if (res != 0) { --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - return win32_error("fstat", NULL); - #else - return posix_error(); -@@ -6462,7 +6471,7 @@ - return NULL; - } - Py_BEGIN_ALLOW_THREADS --#if !defined(MS_WINDOWS) && defined(HAVE_FCNTL_H) -+#if !defined(MS_WINDOWS) || !defined(__MINGW32__) && defined(HAVE_FCNTL_H) - if (mode[0] == 'a') { - /* try to make sure the O_APPEND flag is set */ - int flags; -@@ -6523,7 +6532,7 @@ - - return Py_BuildValue("(ii)", read, write); - #else --#if !defined(MS_WINDOWS) -+#if !defined(MS_WINDOWS) || !defined(__MINGW32__) - int fds[2]; - int res; - Py_BEGIN_ALLOW_THREADS -@@ -6532,7 +6541,7 @@ - if (res != 0) - return posix_error(); - return Py_BuildValue("(ii)", fds[0], fds[1]); --#else /* MS_WINDOWS */ -+#else /* MS_WINDOWS and __MINGW32__ */ - HANDLE read, write; - int read_fd, write_fd; - BOOL ok; -@@ -7078,7 +7087,7 @@ - "tempnam is a potential security risk to your program") < 0) - return NULL; - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - name = _tempnam(dir, pfx); - #else - name = tempnam(dir, pfx); -@@ -8137,7 +8146,7 @@ - return NULL; - } - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - PyDoc_STRVAR(win32_startfile__doc__, - "startfile(filepath [, operation]) - Start a file with its associated\n\ - application.\n\ -@@ -8239,7 +8248,7 @@ - } - #endif - --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) && !defined(__MINGW32__) - - PyDoc_STRVAR(win32_urandom__doc__, - "urandom(n) -> str\n\n\ -@@ -8484,7 +8493,7 @@ - #endif /* HAVE_PLOCK */ - #ifdef HAVE_POPEN - {"popen", posix_popen, METH_VARARGS, posix_popen__doc__}, --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - {"popen2", win32_popen2, METH_VARARGS}, - {"popen3", win32_popen3, METH_VARARGS}, - {"popen4", win32_popen4, METH_VARARGS}, -@@ -8649,13 +8658,13 @@ - {"pathconf", posix_pathconf, METH_VARARGS, posix_pathconf__doc__}, - #endif - {"abort", posix_abort, METH_NOARGS, posix_abort__doc__}, --#ifdef MS_WINDOWS -+#if defined(MS_WINDOWS) || defined(__MINGW32__) - {"_getfullpathname", posix__getfullpathname, METH_VARARGS, NULL}, - #endif - #ifdef HAVE_GETLOADAVG - {"getloadavg", posix_getloadavg, METH_NOARGS, posix_getloadavg__doc__}, - #endif -- #ifdef MS_WINDOWS -+ #if defined(MS_WINDOWS) && !defined(__MINGW32__) - {"urandom", win32_urandom, METH_VARARGS, win32_urandom__doc__}, - #endif - #ifdef __VMS -@@ -8946,7 +8955,7 @@ - } - - --#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__)) && !defined(__QNX__) -+#if (defined(_MSC_VER) || defined(__WATCOMC__) || defined(__BORLANDC__) || defined (__MINGW32__)) && !defined(__QNX__) - #define INITFUNC initnt - #define MODNAME "nt" - ---- misc/build/Python-2.6.1/Modules/pwdmodule.c 2008-06-09 06:58:54.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/pwdmodule.c 2009-05-09 13:35:04.000000000 +0200 -@@ -1,9 +1,10 @@ -- - /* UNIX password file access module */ - - #include "Python.h" - #include "structseq.h" - -+#ifndef __MINGW32__ -+ - #include <sys/types.h> - #include <pwd.h> - -@@ -196,3 +197,9 @@ - PyModule_AddObject(m, "struct_pwent", (PyObject *) &StructPwdType); - initialized = 1; - } -+#else -+PyMODINIT_FUNC -+initpwd(void) -+{ -+} -+#endif // !__MINGW32__ ---- misc/build/Python-2.6.1/Modules/Setup.dist 2008-11-27 11:15:12.000000000 +0100 -+++ misc/build/Python-2.6.1/Modules/Setup.dist 2009-05-12 00:28:08.000000000 +0200 -@@ -91,12 +91,12 @@ - TESTPATH= - - # Path components for machine- or system-dependent modules and shared libraries --MACHDEPPATH=:plat-$(MACHDEP) -+MACHDEPPATH=$(DELIM)plat-$(MACHDEP) - EXTRAMACHDEPPATH= - - # Path component for the Tkinter-related modules - # The TKPATH variable is always enabled, to save you the effort. --TKPATH=:lib-tk -+TKPATH=$(DELIM)lib-tk - - # Path component for old modules. - OLDPATH=:lib-old -@@ -112,9 +112,9 @@ - # This only contains the minimal set of modules required to run the - # setup.py script in the root of the Python source tree. - --posix posixmodule.c # posix (UNIX) system calls -+@POSIX@ posixmodule.c # posix (UNIX) system calls - errno errnomodule.c # posix (UNIX) errno values --pwd pwdmodule.c # this is needed to find out the user's home dir -+#pwd pwdmodule.c # this is needed to find out the user's home dir - # if $HOME is not set - _sre _sre.c # Fredrik Lundh's new regular expressions - _codecs _codecsmodule.c # access to the builtin codecs and codec registry -@@ -162,33 +162,33 @@ - # it, depending on your system -- see the GNU readline instructions. - # It's okay for this to be a shared library, too. - --#readline readline.c -lreadline -ltermcap -+readline readline.c -lreadline -ltermcap - - - # Modules that should always be present (non UNIX dependent): - --#array arraymodule.c # array objects --#cmath cmathmodule.c # -lm # complex math library functions --#math mathmodule.c # -lm # math library functions, e.g. sin() --#_struct _struct.c # binary structure packing/unpacking --#time timemodule.c # -lm # time operations and variables --#operator operator.c # operator.add() and similar goodies --#_weakref _weakref.c # basic weak reference support --#_testcapi _testcapimodule.c # Python C API test module --#_random _randommodule.c # Random number generator --#_collections _collectionsmodule.c # Container types --#itertools itertoolsmodule.c # Functions creating iterators for efficient looping --#strop stropmodule.c # String manipulations --#_functools _functoolsmodule.c # Tools for working with functions and callable objects --#_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator -+array arraymodule.c # array objects -+cmath cmathmodule.c -lm # complex math library functions -+math mathmodule.c -lm # math library functions, e.g. sin() -+_struct _struct.c # binary structure packing/unpacking -+time timemodule.c -lm # time operations and variables -+operator operator.c # operator.add() and similar goodies -+_weakref _weakref.c # basic weak reference support -+_testcapi _testcapimodule.c # Python C API test module -+_random _randommodule.c # Random number generator -+_collections _collectionsmodule.c # Container types -+itertools itertoolsmodule.c # Functions creating iterators for efficient looping -+strop stropmodule.c # String manipulations -+_functools _functoolsmodule.c # Tools for working with functions and callable objects -+_elementtree -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI _elementtree.c # elementtree accelerator - #_pickle _pickle.c # pickle accelerator --#datetime datetimemodule.c # date/time type --#_bisect _bisectmodule.c # Bisection algorithms -+datetime datetimemodule.c # date/time type -+_bisect _bisectmodule.c # Bisection algorithms - --#unicodedata unicodedata.c # static Unicode character database -+unicodedata unicodedata.c # static Unicode character database - - # access to ISO C locale support --#_locale _localemodule.c # -lintl -+_locale _localemodule.c -lintl - - - # Modules with some UNIX dependencies -- on by default: -@@ -198,16 +198,16 @@ - #fcntl fcntlmodule.c # fcntl(2) and ioctl(2) - #spwd spwdmodule.c # spwd(3) - #grp grpmodule.c # grp(3) --#select selectmodule.c # select(2); not on ancient System V -+select selectmodule.c -lws2_32 -lwsock32 # select(2); not on ancient System V - - # Memory-mapped files (also works on Win32). --#mmap mmapmodule.c -+mmap mmapmodule.c - - # CSV file helper --#_csv _csv.c -+_csv _csv.c - - # Socket module helper for socket(2) --#_socket socketmodule.c -+_socket socketmodule.c -lws2_32 -lwsock32 - - # Socket module helper for SSL support; you must comment out the other - # socket line above, and possibly edit the SSL variable: -@@ -248,14 +248,14 @@ - # Message-Digest Algorithm, described in RFC 1321. The necessary files - # md5.c and md5.h are included here. - --#_md5 md5module.c md5.c -+_md5 md5module.c md5.c - - - # The _sha module implements the SHA checksum algorithms. - # (NIST's Secure Hash Algorithms.) --#_sha shamodule.c --#_sha256 sha256module.c --#_sha512 sha512module.c -+_sha shamodule.c -+_sha256 sha256module.c -+_sha512 sha512module.c - - - # SGI IRIX specific modules -- off by default. -@@ -307,7 +307,7 @@ - - # George Neville-Neil's timing module: - --#timing timingmodule.c -+timing timingmodule.c - - - # The _tkinter module. -@@ -411,11 +411,11 @@ - # - # Edit the variables DB and DBLIBVERto point to the db top directory - # and the subdirectory of PORT where you built it. --#DB=/usr/local/BerkeleyDB.4.0 --#DBLIBVER=4.0 --#DBINC=$(DB)/include --#DBLIB=$(DB)/lib --#_bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb-$(DBLIBVER) -+DB=$(prefix) -+DBLIBVER=4.8 -+DBINC=$(DB)/include -+DBLIB=$(DB)/lib -+_bsddb _bsddb.c -I$(DBINC) -L$(DBLIB) -ldb-$(DBLIBVER) - - # Historical Berkeley DB 1.85 - # -@@ -430,14 +430,14 @@ - - - # Helper module for various ascii-encoders --#binascii binascii.c -+binascii binascii.c - - # Fred Drake's interface to the Python parser --#parser parsermodule.c -+parser parsermodule.c - - # cStringIO and cPickle --#cStringIO cStringIO.c --#cPickle cPickle.c -+cStringIO cStringIO.c -+cPickle cPickle.c - - - # Lee Busby's SIGFPE modules. -@@ -460,7 +460,7 @@ - # Andrew Kuchling's zlib module. - # This require zlib 1.1.3 (or later). - # See http://www.gzip.org/zlib/ --#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz -+zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz - - # Interface to the Expat XML parser - # -@@ -473,23 +473,23 @@ - # - # More information on Expat can be found at www.libexpat.org. - # --#pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI -+pyexpat expat/xmlparse.c expat/xmlrole.c expat/xmltok.c pyexpat.c -I$(srcdir)/Modules/expat -DHAVE_EXPAT_CONFIG_H -DUSE_PYEXPAT_CAPI - - - # Hye-Shik Chang's CJKCodecs - - # multibytecodec is required for all the other CJK codec modules --#_multibytecodec cjkcodecs/multibytecodec.c -+_multibytecodec cjkcodecs/multibytecodec.c - --#_codecs_cn cjkcodecs/_codecs_cn.c --#_codecs_hk cjkcodecs/_codecs_hk.c --#_codecs_iso2022 cjkcodecs/_codecs_iso2022.c --#_codecs_jp cjkcodecs/_codecs_jp.c --#_codecs_kr cjkcodecs/_codecs_kr.c --#_codecs_tw cjkcodecs/_codecs_tw.c -+_codecs_cn cjkcodecs/_codecs_cn.c -+_codecs_hk cjkcodecs/_codecs_hk.c -+_codecs_iso2022 cjkcodecs/_codecs_iso2022.c -+_codecs_jp cjkcodecs/_codecs_jp.c -+_codecs_kr cjkcodecs/_codecs_kr.c -+_codecs_tw cjkcodecs/_codecs_tw.c - - # Example -- included for reference only: - # xx xxmodule.c - - # Another example -- the 'xxsubtype' module shows C-level subtyping in action --xxsubtype xxsubtype.c -+# xxsubtype xxsubtype.c ---- misc/build/Python-2.6.1/Modules/timemodule.c 2008-07-05 21:19:50.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/timemodule.c 2009-05-09 13:35:04.000000000 +0200 -@@ -42,6 +42,10 @@ - #include <windows.h> - #include "pythread.h" - -+#ifdef MS_WINDOWS -+#include <winsock2.h> -+#endif -+ - /* helper to allow us to interrupt sleep() on Windows*/ - static HANDLE hInterruptEvent = NULL; - static BOOL WINAPI PyCtrlHandler(DWORD dwCtrlType) -@@ -837,7 +841,9 @@ - If Ctrl+C event delivered while not sleeping - it will be ignored. - */ -+#ifdef WITH_THREAD - main_thread = PyThread_get_thread_ident(); -+#endif - hInterruptEvent = CreateEvent(NULL, TRUE, FALSE, NULL); - SetConsoleCtrlHandler( PyCtrlHandler, TRUE); - #endif /* MS_WINDOWS */ -@@ -939,8 +945,11 @@ - * by Guido, only the main thread can be interrupted. - */ - ul_millis = (unsigned long)millisecs; -- if (ul_millis == 0 || -- main_thread != PyThread_get_thread_ident()) -+ if (ul_millis == 0 -+#ifdef WITH_THREAD -+ || main_thread != PyThread_get_thread_ident() -+#endif -+ ) - Sleep(ul_millis); - else { - DWORD rc; ---- misc/build/Python-2.6.1/Modules/xxsubtype.c 2007-07-21 08:55:02.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/xxsubtype.c 2009-05-09 13:35:04.000000000 +0200 -@@ -1,6 +1,10 @@ - #include "Python.h" - #include "structmember.h" - -+#ifndef CLOCKS_PER_SEC -+#include <bits/time.h> -+#endif -+ - PyDoc_STRVAR(xxsubtype__doc__, - "xxsubtype is an example module showing how to subtype builtin types from C.\n" - "test_descr.py in the standard test suite requires it in order to complete.\n" ---- misc/build/Python-2.6.1/Objects/exceptions.c 2008-07-30 19:45:10.000000000 +0200 -+++ misc/build/Python-2.6.1/Objects/exceptions.c 2009-05-09 13:35:04.000000000 +0200 -@@ -792,7 +792,7 @@ - * WindowsError extends OSError - */ - #ifdef MS_WINDOWS --#include "errmap.h" -+#include "../PC/errmap.h" - - static int - WindowsError_clear(PyWindowsErrorObject *self) ---- misc/build/Python-2.6.1/Python/dynload_shlib.c 2006-01-04 02:30:17.000000000 +0100 -+++ misc/build/Python-2.6.1/Python/dynload_shlib.c 2009-05-09 13:35:04.000000000 +0200 -@@ -32,7 +32,7 @@ - - - const struct filedescr _PyImport_DynLoadFiletab[] = { --#ifdef __CYGWIN__ -+#if defined(__CYGWIN__) || defined(__MINGW32__) - {".dll", "rb", C_EXTENSION}, - {"module.dll", "rb", C_EXTENSION}, - #else ---- misc/build/Python-2.6.1/Python/dynload_win.c 2009-01-28 00:30:15.000000000 +0100 -+++ misc/build/Python-2.6.1/Python/dynload_win.c 2009-05-09 13:35:04.000000000 +0200 -@@ -1,7 +1,112 @@ - - /* Support for dynamic loading of extension modules */ - -+/* -+Entry point for the Windows NT DLL. -+ -+About the only reason for having this, is so initall() can automatically -+be called, removing that burden (and possible source of frustration if -+forgotten) from the programmer. -+ -+*/ -+ - #include "Python.h" -+#include "windows.h" -+ -+#ifdef Py_ENABLE_SHARED -+char dllVersionBuffer[16] = ""; // a private buffer -+ -+// Python Globals -+HMODULE PyWin_DLLhModule = NULL; -+const char *PyWin_DLLVersionString = dllVersionBuffer; -+ -+// Windows "Activation Context" work: -+// Our .pyd extension modules are generally built without a manifest (ie, -+// those included with Python and those built with a default distutils. -+// This requires we perform some "activation context" magic when loading our -+// extensions. In summary: -+// * As our DLL loads we save the context being used. -+// * Before loading our extensions we re-activate our saved context. -+// * After extension load is complete we restore the old context. -+// As an added complication, this magic only works on XP or later - we simply -+// use the existence (or not) of the relevant function pointers from kernel32. -+// See bug 4566 (http://python.org/sf/4566) for more details. -+ -+typedef BOOL (WINAPI * PFN_GETCURRENTACTCTX)(HANDLE *); -+typedef BOOL (WINAPI * PFN_ACTIVATEACTCTX)(HANDLE, ULONG_PTR *); -+typedef BOOL (WINAPI * PFN_DEACTIVATEACTCTX)(DWORD, ULONG_PTR); -+typedef BOOL (WINAPI * PFN_ADDREFACTCTX)(HANDLE); -+typedef BOOL (WINAPI * PFN_RELEASEACTCTX)(HANDLE); -+ -+// locals and function pointers for this activation context magic. -+static HANDLE PyWin_DLLhActivationContext = NULL; // one day it might be public -+static PFN_GETCURRENTACTCTX pfnGetCurrentActCtx = NULL; -+static PFN_ACTIVATEACTCTX pfnActivateActCtx = NULL; -+static PFN_DEACTIVATEACTCTX pfnDeactivateActCtx = NULL; -+static PFN_ADDREFACTCTX pfnAddRefActCtx = NULL; -+static PFN_RELEASEACTCTX pfnReleaseActCtx = NULL; -+ -+void _LoadActCtxPointers() -+{ -+ HINSTANCE hKernel32 = GetModuleHandleW(L"kernel32.dll"); -+ if (hKernel32) -+ pfnGetCurrentActCtx = (PFN_GETCURRENTACTCTX) GetProcAddress(hKernel32, "GetCurrentActCtx"); -+ // If we can't load GetCurrentActCtx (ie, pre XP) , don't bother with the rest. -+ if (pfnGetCurrentActCtx) { -+ pfnActivateActCtx = (PFN_ACTIVATEACTCTX) GetProcAddress(hKernel32, "ActivateActCtx"); -+ pfnDeactivateActCtx = (PFN_DEACTIVATEACTCTX) GetProcAddress(hKernel32, "DeactivateActCtx"); -+ pfnAddRefActCtx = (PFN_ADDREFACTCTX) GetProcAddress(hKernel32, "AddRefActCtx"); -+ pfnReleaseActCtx = (PFN_RELEASEACTCTX) GetProcAddress(hKernel32, "ReleaseActCtx"); -+ } -+} -+ -+ULONG_PTR _Py_ActivateActCtx() -+{ -+ ULONG_PTR ret = 0; -+ if (PyWin_DLLhActivationContext && pfnActivateActCtx) -+ if (!(*pfnActivateActCtx)(PyWin_DLLhActivationContext, &ret)) { -+ OutputDebugString("Python failed to activate the activation context before loading a DLL\n"); -+ ret = 0; // no promise the failing function didn't change it! -+ } -+ return ret; -+} -+ -+void _Py_DeactivateActCtx(ULONG_PTR cookie) -+{ -+ if (cookie && pfnDeactivateActCtx) -+ if (!(*pfnDeactivateActCtx)(0, cookie)) -+ OutputDebugString("Python failed to de-activate the activation context\n"); -+} -+ -+BOOL WINAPI DllMain (HANDLE hInst, -+ ULONG ul_reason_for_call, -+ LPVOID lpReserved) -+{ -+ switch (ul_reason_for_call) -+ { -+ case DLL_PROCESS_ATTACH: -+ PyWin_DLLhModule = hInst; -+ // 1000 is a magic number I picked out of the air. Could do with a #define, I spose... -+ LoadString(hInst, 1000, dllVersionBuffer, sizeof(dllVersionBuffer)); -+ -+ // and capture our activation context for use when loading extensions. -+ _LoadActCtxPointers(); -+ if (pfnGetCurrentActCtx && pfnAddRefActCtx) -+ if ((*pfnGetCurrentActCtx)(&PyWin_DLLhActivationContext)) -+ if (!(*pfnAddRefActCtx)(PyWin_DLLhActivationContext)) -+ OutputDebugString("Python failed to load the default activation context\n"); -+ break; -+ -+ case DLL_PROCESS_DETACH: -+ if (pfnReleaseActCtx) -+ (*pfnReleaseActCtx)(PyWin_DLLhActivationContext); -+ break; -+ } -+ return TRUE; -+} -+ -+#endif /* Py_ENABLE_SHARED */ -+ - - #ifdef HAVE_DIRECT_H - #include <direct.h> -@@ -28,6 +133,9 @@ - /* Case insensitive string compare, to avoid any dependencies on particular - C RTL implementations */ - -+#ifdef __MINGW32__ -+#define strcasecmp py_strcasecmp -+#endif - static int strcasecmp (char *string1, char *string2) - { - int first, second; ---- misc/build/Python-2.6.1/Python/frozenmain.c 2002-06-30 17:26:10.000000000 +0200 -+++ misc/build/Python-2.6.1/Python/frozenmain.c 2009-05-09 13:35:04.000000000 +0200 -@@ -3,7 +3,7 @@ - - #include "Python.h" - --#ifdef MS_WINDOWS -+#if defined (MS_WINDOWS) && ! defined (__MINGW32__) - extern void PyWinFreeze_ExeInit(void); - extern void PyWinFreeze_ExeTerm(void); - extern int PyInitFrozenExtensions(void); -@@ -32,12 +32,12 @@ - setbuf(stderr, (char *)NULL); - } - --#ifdef MS_WINDOWS -+#if defined (MS_WINDOWS) && ! defined (__MINGW32__) - PyInitFrozenExtensions(); - #endif /* MS_WINDOWS */ - Py_SetProgramName(argv[0]); - Py_Initialize(); --#ifdef MS_WINDOWS -+#if defined (MS_WINDOWS) && ! defined (__MINGW32__) - PyWinFreeze_ExeInit(); - #endif - -@@ -60,7 +60,7 @@ - if (inspect && isatty((int)fileno(stdin))) - sts = PyRun_AnyFile(stdin, "<stdin>") != 0; - --#ifdef MS_WINDOWS -+#if defined (MS_WINDOWS) && ! defined (__MINGW32__) - PyWinFreeze_ExeTerm(); - #endif - Py_Finalize(); ---- misc/build/Python-2.6.1/README 2009-04-07 03:54:02.000000000 +0200 -+++ misc/build/Python-2.6.1/README 2009-05-09 13:35:04.000000000 +0200 -@@ -1160,6 +1160,37 @@ - do this. - - -+Cross Compiling -+--------------- -+ -+Python can be cross compiled by supplying different --build and --host -+parameters to configure. Python is compiled on the "build" system and -+executed on the "host" system. Cross compiling python requires a -+native Python on the build host, and a natively compiled tool `Pgen'. -+ -+Before cross compiling, Python must first be compiled and installed on -+the build host. The configure script will use `cc' and `python', or -+environment variables CC_FOR_BUILD or PYTHON_FOR_BUILD, eg: -+ -+ CC_FOR_BUILD=gcc-3.3 \ -+ PYTHON_FOR_BUILD=python2.4 \ -+ .../configure --build=i686-linux --host=i586-mingw32 -+ -+Cross compiling has been tested under linux, mileage may vary for -+other platforms. -+ -+A few reminders on using configure to cross compile: -+- Cross compile tools must be in PATH, -+- Cross compile tools must be prefixed with the host type -+ (ie i586-mingw32-gcc, i586-mingw32-ranlib, ...), -+- CC, CXX, AR, and RANLIB must be undefined when running configure, -+ they will be auto-detected. -+ -+If you need a cross compiler, Debian ships several several (eg: avr, -+m68hc1x, mingw32), while dpkg-cross easily creates others. Otherwise, -+check out Dan Kegel's crosstool: http://www.kegel.com/crosstool . -+ -+ - Miscellaneous issues - ==================== - ---- misc/build/Python-2.6.1/setup.py 2009-03-31 20:20:48.000000000 +0200 -+++ misc/build/Python-2.6.1/setup.py 2009-05-09 13:35:04.000000000 +0200 -@@ -19,6 +19,11 @@ - # This global variable is used to hold the list of modules to be disabled. - disabled_module_list = [] - -+import os -+sysconfig.get_config_vars() -+sysconfig._config_vars.update (os.environ) -+ -+ - def add_dir_to_list(dirlist, dir): - """Add the directory 'dir' to the list 'dirlist' (at the front) if - 1) 'dir' is not already in 'dirlist' -@@ -115,6 +120,8 @@ - # Fix up the autodetected modules, prefixing all the source files - # with Modules/ and adding Python's include directory to the path. - (srcdir,) = sysconfig.get_config_vars('srcdir') -+ if os.environ.get('CROSS_COMPILING') == 'yes': -+ srcdir = os.environ.get('SRCDIR') - if not srcdir: - # Maybe running on Windows but not using CYGWIN? - raise ValueError("No source directory; cannot proceed.") -@@ -267,6 +274,10 @@ - self.announce('WARNING: skipping import check for Cygwin-based "%s"' - % ext.name) - return -+ if os.environ.get('CROSS_COMPILING') == 'yes': -+ self.announce('WARNING: skipping import check for cross compiled "%s"' -+ % ext.name) -+ return - ext_filename = os.path.join( - self.build_lib, - self.get_ext_filename(self.get_ext_fullname(ext.name))) -@@ -302,11 +313,14 @@ - self.failed.append(ext.name) - - def get_platform(self): -- # Get value of sys.platform -- for platform in ['cygwin', 'beos', 'darwin', 'atheos', 'osf1']: -- if sys.platform.startswith(platform): -+ # Get value of target's sys.platform -+ p = sys.platform -+ if os.environ.get('CROSS_COMPILING') == 'yes': -+ p = os.environ.get('CROSS_TARGET') -+ for platform in ['cygwin', 'mingw', 'beos', 'darwin', 'atheos', 'osf1']: -+ if p.startswith(platform): - return platform -- return sys.platform -+ return p - - def detect_modules(self): - # Ensure that /usr/local is always used -@@ -889,13 +903,11 @@ - # We hunt for #define SQLITE_VERSION "n.n.n" - # We need to find >= sqlite version 3.0.8 - sqlite_incdir = sqlite_libdir = None -- sqlite_inc_paths = [ '/usr/include', -- '/usr/include/sqlite', -- '/usr/include/sqlite3', -- '/usr/local/include', -- '/usr/local/include/sqlite', -- '/usr/local/include/sqlite3', -- ] -+ sqlite_inc_paths = [] -+ -+ # Broken for x-compile -+ #'/usr/include', '/usr/include/sqlite', '/usr/include/sqlite3', '/usr/local/include', '/usr/local/include/sqlite', '/usr/local/include/sqlite3', ] -+ - MIN_SQLITE_VERSION_NUMBER = (3, 0, 8) - MIN_SQLITE_VERSION = ".".join([str(x) - for x in MIN_SQLITE_VERSION_NUMBER]) -@@ -1809,6 +1821,8 @@ - # mode 755. All installed directories will get mode 755. - - so_ext = sysconfig.get_config_var("SO") -+ if os.environ.get('CROSS_COMPILING') == 'yes': -+ so_ext = os.environ.get('SO') - - def install(self): - outfiles = install_lib.install(self) ---- misc/build/Python-2.6.1/Python/thread.c 2008-08-04 09:33:37.000000000 +0200 -+++ misc/build/Python-2.6.1/Python/thread.c 2009-05-12 01:00:57.000000000 +0200 -@@ -61,6 +61,13 @@ - - #endif /* _POSIX_THREADS */ - -+#ifdef __MINGW32__ -+#ifdef _POSIX_THREADS -+#undef _POSIX_THREADS -+#endif -+#define NT_THREADS -+#endif -+ - - #ifdef Py_DEBUG - static int thread_debug = 0; ---- misc/build/Python-2.6.1/Modules/addrinfo.h 2009-05-12 01:30:32.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/addrinfo.h 2009-05-12 01:34:34.000000000 +0200 -@@ -123,7 +123,7 @@ - - #endif /* !HAVE_GETNAMEINFO */ - --#ifndef HAVE_ADDRINFO -+#if !defined(HAVE_ADDRINFO) && !defined(_WIN32) - struct addrinfo { - int ai_flags; /* AI_PASSIVE, AI_CANONNAME */ - int ai_family; /* PF_xxx */ -@@ -136,7 +136,7 @@ - }; - #endif /* !HAVE_ADDRINFO */ - --#ifndef HAVE_SOCKADDR_STORAGE -+#if !defined(HAVE_SOCKADDR_STORAGE) && !defined(_WIN32) - /* - * RFC 2553: protocol-independent placeholder for socket addresses - */ ---- misc/build/Python-2.6.1/Modules/socketmodule.c 2009-05-12 01:29:43.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/socketmodule.c 2009-05-12 01:29:51.000000000 +0200 -@@ -3134,7 +3134,11 @@ - if (h->h_addrtype != af) { - /* Let's get real error message to return */ - PyErr_SetString(socket_error, -+#ifdef _WIN32 -+ (char *)strerror(WSAEAFNOSUPPORT)); -+#else - (char *)strerror(EAFNOSUPPORT)); -+#endif - - return NULL; - } ---- misc/build/Python-2.6.1/Modules/socketmodule.h 2009-08-10 17:15:24.000000000 +0200 -+++ misc/build/Python-2.6.1/Modules/socketmodule.h 2009-08-10 17:15:48.000000000 +0200 -@@ -21,7 +21,7 @@ - * I use SIO_GET_MULTICAST_FILTER to detect a decent SDK. - */ - # ifdef SIO_GET_MULTICAST_FILTER --# include <MSTcpIP.h> /* for SIO_RCVALL */ -+# include <mstcpip.h> /* for SIO_RCVALL */ - # define HAVE_ADDRINFO - # define HAVE_SOCKADDR_STORAGE - # define HAVE_GETADDRINFO |