diff options
author | Ivo Hinkelmann <ihi@openoffice.org> | 2009-04-22 14:05:37 +0000 |
---|---|---|
committer | Ivo Hinkelmann <ihi@openoffice.org> | 2009-04-22 14:05:37 +0000 |
commit | 49817b8e20f5eef9ac75b0a59fe1e7076f9eae6f (patch) | |
tree | 88014e190bc0bf8e98ef79d97111c2cc18a45687 /python/Python-2.6.1-mingw.patch | |
parent | 8157e6e312433fb46fb8c862d815aec59c10453c (diff) |
CWS-TOOLING: integrate CWS python26
2009-04-22 11:57:41 +0200 obo r271091 : #i101079# mingw port (by tono)
2009-04-22 11:56:37 +0200 obo r271090 : #i101079# mingw port (by tono)
2009-04-22 11:55:55 +0200 obo r271089 : #i101079# mingw port (by tono)
2009-04-22 11:26:00 +0200 obo r271084 : #i100492# Patch for FreeBSD (by maho)
2009-04-21 10:19:01 +0200 obo r271020 : #i92413# make python buildable in Hamburg RE environment
2009-04-17 15:52:57 +0200 obo r270952 : #i10000# fix for 4NT shell support
2009-04-17 15:16:39 +0200 hjs r270951 : #i92413# - remove gcc warnings about new struct member. fetched fomr DEV300
2009-04-17 10:30:28 +0200 sb r270927 : #i92413# adaptions for Solaris and/or bash
2009-04-16 00:36:32 +0200 jbu r270861 : #i101080# patch for bash environment provided by tono
2009-04-15 13:50:01 +0200 rene r270842 : #i100997# allow also python < 2.6 again
2009-03-12 14:23:32 +0100 rene r269410 : cleanup: remove Python 2.3.4 - not referenced anymore
2009-03-11 21:48:58 +0100 jbu r269356 : native python modules pyuno.dll -> pyuno.pyd (required by 2.6 python runtime)
2009-03-11 11:11:43 +0100 rene r269307 : fix typo; regen configure
2009-03-10 11:44:54 +0100 rene r269262 : update _AM_PYTHON_INTERPRETER_LIST
2009-03-10 00:30:09 +0100 jbu r269233 : python26 now builds on windows (installation set not built yet)
2009-03-06 21:45:20 +0100 jbu r269050 : python 2.6.1-linuxx86: PYTHONHOME variable removed from set_soenv.in (is now unecessary), added new and removed old python blob, linux x86 builds without patches, windows build still needs to be done and is now broken
2009-03-06 14:08:33 +0100 rene r269004 : #i92413#
Diffstat (limited to 'python/Python-2.6.1-mingw.patch')
-rw-r--r-- | python/Python-2.6.1-mingw.patch | 1265 |
1 files changed, 1265 insertions, 0 deletions
diff --git a/python/Python-2.6.1-mingw.patch b/python/Python-2.6.1-mingw.patch new file mode 100644 index 000000000000..63067227c112 --- /dev/null +++ b/python/Python-2.6.1-mingw.patch @@ -0,0 +1,1265 @@ +--- misc/Python-2.6.1/Include/pyport.h 2008-06-11 16:41:16.000000000 +0900 ++++ misc/build/Python-2.6.1/Include/pyport.h 2009-03-29 23:28:13.859000000 +0900 +@@ -3,6 +3,26 @@ + + #include "pyconfig.h" /* include for defines */ + ++#if defined(__MINGW32__) ++#undef HAVE_FORKPTY ++#undef HAVE_OPENPTY ++#undef HAVE_DEV_PTMX ++#undef _POSIX_THREADS ++#define MS_WINDOWS ++#define MS_WIN32 ++#define Py_WIN_WIDE_FILENAMES ++#ifndef PYTHONPATH ++# define PYTHONPATH ".\\lib;.\\lib\\python" VERSION ";.\\lib\\python" VERSION "\\lib-dynload;.\\lib\\python" VERSION "\\plat-winmingw32;.\\lib\\python" VERSION "\\lib-tk" ++#endif ++#define NT_THREADS ++#define WITH_THREAD ++#define WINVER 0x0501 ++#define HAVE_ADDRINFO ++#define HAVE_GETADDRINFO ++#define HAVE_GETNAMEINFO ++#define HAVE_GETPEERNAME ++#endif ++ + #ifdef HAVE_STDINT_H + #include <stdint.h> + #endif +--- misc/Python-2.6.1/Lib/distutils/ccompiler.py 2008-02-22 03:18:37.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/distutils/ccompiler.py 2009-04-04 01:00:37.014250000 +0900 +@@ -1058,6 +1058,7 @@ + # on a cygwin built python we can use gcc like an ordinary UNIXish + # compiler + ('cygwin.*', 'unix'), ++ ('winmingw*', 'unix'), + ('os2emx', 'emx'), + + # OS name mappings +--- misc/Python-2.6.1/Lib/distutils/command/build_ext.py 2008-08-17 13:16:04.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/distutils/command/build_ext.py 2009-04-04 01:05:32.311125000 +0900 +@@ -223,7 +223,7 @@ + + # for extensions under Cygwin and AtheOS Python's library directory must be + # appended to library_dirs +- if sys.platform[:6] == 'cygwin' or sys.platform[:6] == 'atheos': ++ if sys.platform[:6] == 'cygwin' or sys.platform[:8] == 'winmingw' or sys.platform[:6] == 'atheos': + if sys.executable.startswith(os.path.join(sys.exec_prefix, "bin")): + # building third party extensions + self.library_dirs.append(os.path.join(sys.prefix, "lib", +@@ -729,7 +729,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[:8] == "winmingw": + template = "python%d.%d" + pythonlib = (template % + (sys.hexversion >> 24, (sys.hexversion >> 16) & 0xff)) +--- misc/Python-2.6.1/Lib/distutils/command/install.py 2008-05-07 07:41:46.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/distutils/command/install.py 2009-04-05 23:15:56.540750000 +0900 +@@ -362,9 +362,10 @@ + + # Convert directories from Unix /-separated syntax to the local + # convention. +- self.convert_paths('lib', 'purelib', 'platlib', +- 'scripts', 'data', 'headers', +- 'userbase', 'usersite') ++ if os.sep != '/': ++ self.convert_paths('lib', 'purelib', 'platlib', ++ 'scripts', 'data', 'headers', ++ 'userbase', 'usersite') + + # Well, we're not actually fully completely finalized yet: we still + # have to deal with 'extra_path', which is the hack for allowing +@@ -376,7 +377,7 @@ + + # If a new root directory was supplied, make all the installation + # dirs relative to it. +- if self.root is not None: ++ if self.root is not None and self.root != "": + self.change_roots('libbase', 'lib', 'purelib', 'platlib', + 'scripts', 'data', 'headers') + +@@ -515,7 +516,10 @@ + def convert_paths (self, *names): + for name in names: + attr = "install_" + name +- setattr(self, attr, convert_path(getattr(self, attr))) ++ if self.root is None or self.root == "": ++ setattr(self, attr, getattr(self, attr).replace('/', os.sep)) ++ else: ++ setattr(self, attr, convert_path(getattr(self, attr))) + + + def handle_extra_path (self): +--- misc/Python-2.6.1/Lib/distutils/spawn.py 2004-11-11 07:23:15.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/distutils/spawn.py 2009-03-22 19:38:32.935625000 +0900 +@@ -186,7 +186,7 @@ + path = os.environ['PATH'] + paths = string.split(path, os.pathsep) + (base, ext) = os.path.splitext(executable) +- if (sys.platform == 'win32' or os.name == 'os2') and (ext != '.exe'): ++ if (sys.platform == 'win32' or sys.platform[:8] == "winmingw" or os.name == 'os2') and (ext != '.exe'): + executable = executable + '.exe' + if not os.path.isfile(executable): + for p in paths: +--- misc/Python-2.6.1/Lib/distutils/sysconfig.py 2008-06-05 21:58:24.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/distutils/sysconfig.py 2009-03-29 10:56:10.965750000 +0900 +@@ -381,6 +381,9 @@ + + raise DistutilsPlatformError(my_msg) + ++ if sys.platform[:8] == "winmingw": ++ g['SO'] = '.pyd' ++ + # On MacOSX we need to check the setting of the environment variable + # MACOSX_DEPLOYMENT_TARGET: configure bases some choices on it so + # it needs to be compatible. +@@ -510,6 +513,9 @@ + global _config_vars + if _config_vars is None: + func = globals().get("_init_" + os.name) ++ if sys.platform[:8] == "winmingw": ++ func = globals().get("_init_posix") ++ + if func: + func() + else: +--- misc/Python-2.6.1/Lib/distutils/unixccompiler.py 2008-07-16 22:24:06.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/distutils/unixccompiler.py 2009-04-04 01:11:18.420500000 +0900 +@@ -139,7 +139,7 @@ + shared_lib_extension = ".so" + dylib_lib_extension = ".dylib" + static_lib_format = shared_lib_format = dylib_lib_format = "lib%s%s" +- if sys.platform == "cygwin": ++ if sys.platform == "cygwin" or sys.platform == "winmingw": + exe_extension = ".exe" + + def preprocess(self, source, +--- misc/Python-2.6.1/Lib/os.py 2008-09-02 14:36:11.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/os.py 2009-03-22 16:55:18.356375000 +0900 +@@ -38,7 +38,21 @@ + except AttributeError: + return [n for n in dir(module) if n[0] != '_'] + +-if 'posix' in _names: ++if 'winmingw32' in _names: ++ name = 'nt' ++ linesep = '\r\n' ++ from posix import * ++ try: ++ from posix import _exit ++ except ImportError: ++ pass ++ import ntpath as path ++ ++ import posix ++ __all__.extend(_get_exports_list(posix)) ++ del posix ++ ++elif 'posix' in _names: + name = 'posix' + linesep = '\n' + from posix import * +--- misc/Python-2.6.1/Lib/socket.py 2008-08-08 13:27:28.000000000 +0900 ++++ misc/build/Python-2.6.1/Lib/socket.py 2009-04-02 00:40:46.941750000 +0900 +@@ -148,7 +148,7 @@ + 'sendall', 'setblocking', + 'settimeout', 'gettimeout', 'shutdown') + +-if os.name == "nt": ++if os.name == "nt" and sys.platform[:8] != "winmingw": + _socketmethods = _socketmethods + ('ioctl',) + + if sys.platform == "riscos": +--- misc/Python-2.6.1/Makefile.pre.in 2008-10-22 01:48:37.000000000 +0900 ++++ misc/build/Python-2.6.1/Makefile.pre.in 2009-04-08 23:38:27.989250000 +0900 +@@ -105,6 +105,16 @@ + LDSHARED= @LDSHARED@ + BLDSHARED= @BLDSHARED@ + DESTSHARED= $(BINLIBDEST)/lib-dynload ++ifeq (@MACHDEP@,winmingw32) ++DESTSHAREDFORRULES= $(shell cd $(DESTSHARED) && pwd || echo DESTSHARED) ++LIBPYTHONPATH= $(shell cd $(DESTDIR)$(LIBDEST) && cmd /c cd | sed -e s:\\\\:/:g) ++DESTPYTHONPATH= $(LIBPYTHONPATH);$(shell cd $(DESTDIR)$(DESTSHARED) && cmd /c cd | sed -e s:\\\\:/:g) ++LIBDESTPARAM= $(shell if test -z "$(DESTDIR)" ; then cd $(LIBDEST) && cmd /c cd | sed -e s:\\\\:/:g ; else echo $(LIBDEST) ; fi) ++PREFIXPARAM= $(shell if test -z "$(DESTDIR)" ; then cd $(prefix) && cmd /c cd | sed -e s:\\\\:/:g ; else echo $(prefix) ; fi) ++BINDIRPARAM= $(shell if test -z "$(DESTDIR)" ; then cd $(BINDIR) && cmd /c cd | sed -e s:\\\\:/:g ; else echo $(BINDIR) ; fi) ++DESTSHAREDPARAM= $(shell if test -z "$(DESTDIR)" ; then cd $(DESTSHARED) && cmd /c cd | sed -e s:\\\\:/:g ; else echo $(DESTSHARED) ; fi) ++DESTDIRPARAM= $(shell if test ! -z "$(DESTDIR)" ; then cd $(DESTDIR) && cmd /c | sed -e s:\\\\:/:g ; fi) ++endif + + # Executable suffix (.exe on Windows and Mac OS X) + EXE= @EXEEXT@ +@@ -187,7 +197,7 @@ + # Modules + MODULE_OBJS= \ + Modules/config.o \ +- Modules/getpath.o \ ++ @GETPATH_OBJS@ \ + Modules/main.o \ + Modules/gcmodule.o + +@@ -507,6 +517,10 @@ + -DVPATH='"$(VPATH)"' \ + -o $@ $(srcdir)/Modules/getpath.c + ++PC/getpathp.o: $(srcdir)/PC/getpathp.c Makefile ++ $(CC) -c $(PY_CFLAGS) -DVERSION='"$(VERSION)"' \ ++ -o $@ $(srcdir)/PC/getpathp.c ++ + Modules/python.o: $(srcdir)/Modules/python.c + $(MAINCC) -c $(PY_CFLAGS) -o $@ $(srcdir)/Modules/python.c + +@@ -544,6 +558,12 @@ + Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ + $(srcdir)/Objects/unicodetype_db.h + ++Objects/exceptions.o: $(srcdir)/Objects/exceptions.c ++ $(CC) -c $(PY_CFLAGS) -I$(srcdir)/PC -o $@ $(srcdir)/Objects/exceptions.c ++ ++PC/import_nt.o: $(srcdir)/PC/import_nt.c ++ $(CC) -c $(PY_CFLAGS) -I$(srcdir)/Python -o $@ $(srcdir)/PC/import_nt.c ++ + STRINGLIB_HEADERS= \ + $(srcdir)/Include/bytes_methods.h \ + $(srcdir)/Objects/stringlib/count.h \ +@@ -727,7 +747,11 @@ + # Install shared libraries enabled by Setup + DESTDIRS= $(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED) + ++ifeq (@MACHDEP@,winmingw32) ++oldsharedinstall: $(DESTSHAREDFORRULES) $(SHAREDMODS) ++else + oldsharedinstall: $(DESTSHARED) $(SHAREDMODS) ++endif + @for i in X $(SHAREDMODS); do \ + if test $$i != X; then \ + echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \ +@@ -735,7 +759,11 @@ + fi; \ + done + ++ifeq (@MACHDEP@,winmingw32) ++$(DESTSHAREDFORRULES): ++else + $(DESTSHARED): ++endif + @for i in $(DESTDIRS); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ +@@ -822,7 +850,11 @@ + multiprocessing multiprocessing/dummy \ + lib-old \ + curses $(MACHDEPS) ++ifeq (@MACHDEP@,winmingw32) ++libinstall: build_all $(srcdir)/Lib/$(PLATDIR) sharedinstall ++else + libinstall: build_all $(srcdir)/Lib/$(PLATDIR) ++endif + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ +@@ -878,6 +910,26 @@ + done; \ + done + $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt ++ifeq (@MACHDEP@,winmingw32) ++ PYTHONPATH="$(DESTPYTHONPATH)" $(RUNSHARED) \ ++ ./$(BUILDPYTHON) -Wi -tt $(LIBPYTHONPATH)/compileall.py \ ++ -d $(LIBDESTPARAM) -f \ ++ -x 'bad_coding|badsyntax|site-packages' $(LIBPYTHONPATH) ++ PYTHONPATH="$(DESTPYTHONPATH)" $(RUNSHARED) \ ++ ./$(BUILDPYTHON) -Wi -tt -O $(LIBPYTHONPATH)/compileall.py \ ++ -d $(LIBDESTPARAM) -f \ ++ -x 'bad_coding|badsyntax|site-packages' $(LIBPYTHONPATH) ++ -PYTHONPATH="$(DESTPYTHONPATH)" $(RUNSHARED) \ ++ ./$(BUILDPYTHON) -Wi -t $(LIBPYTHONPATH)/compileall.py \ ++ -d $(LIBDESTPARAM)/site-packages -f \ ++ -x badsyntax $(LIBPYTHONPATH)/site-packages ++ -PYTHONPATH="$(DESTPYTHONPATH)" $(RUNSHARED) \ ++ ./$(BUILDPYTHON) -Wi -t -O $(LIBPYTHONPATH)/compileall.py \ ++ -d $(LIBDESTPARAM)/site-packages -f \ ++ -x badsyntax $(LIBPYTHONPATH)/site-packages ++ -PYTHONPATH="$(DESTPYTHONPATH)" $(RUNSHARED) \ ++ ./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()" ++else + PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + ./$(BUILDPYTHON) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \ + -d $(LIBDEST) -f \ +@@ -896,16 +948,19 @@ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + ./$(BUILDPYTHON) -Wi -t -c "import lib2to3.pygram, lib2to3.patcomp;lib2to3.patcomp.PatternCompiler()" ++endif + + # Create the PLATDIR source directory, if one wasn't distributed.. + $(srcdir)/Lib/$(PLATDIR): + mkdir $(srcdir)/Lib/$(PLATDIR) ++ifneq (@MACHDEP@,winmingw32) + 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`"; \ + export EXE; EXE="$(BUILDEXE)"; \ + cd $(srcdir)/Lib/$(PLATDIR); ./regen ++endif + + # Install the include files + INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY) +@@ -992,12 +1047,21 @@ + + # Install the dynamically loadable modules + # This goes into $(exec_prefix) ++ifeq (@MACHDEP@,winmingw32) ++sharedinstall: $(DESTSHAREDFORRULES) ++ $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ ++ --prefix=$(PREFIXPARAM) \ ++ --install-scripts=$(BINDIRPARAM) \ ++ --install-platlib=$(DESTSHAREDPARAM) \ ++ --root=$(DESTDIRPARAM) ++else + sharedinstall: + $(RUNSHARED) ./$(BUILDPYTHON) -E $(srcdir)/setup.py install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ + --root=/$(DESTDIR) ++endif + + # Here are a couple of targets for MacOSX again, to install a full + # framework-based Python. frameworkinstall installs everything, the +--- misc/Python-2.6.1/Modules/Setup.config.in 2002-12-13 02:37:50.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/Setup.config.in 2009-03-21 18:46:57.988875000 +0900 +@@ -9,5 +9,9 @@ + # The signal module + @USE_SIGNAL_MODULE@signal signalmodule.c + ++# The password module ++@USE_PASSWORD_MODULE@pwd pwdmodule.c # this is needed to find out the user's home dir ++ # if $HOME is not set ++ + # The rest of the modules previously listed in this file are built + # by the setup.py script in Python 2.1 and later. +--- misc/Python-2.6.1/Modules/Setup.dist 2008-11-27 19:15:12.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/Setup.dist 2009-03-21 18:46:53.785750000 +0900 +@@ -114,7 +114,7 @@ + + 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 +--- misc/Python-2.6.1/Modules/_ctypes/libffi/configure 2008-05-24 00:06:50.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/_ctypes/libffi/configure 2009-04-05 08:30:43.964750000 +0900 +@@ -22707,19 +22707,41 @@ + multilib_arg= + fi + ++case $host_os in ++mingw*) ++ srcdir=`cd $srcdir && cmd /c cd | sed -e 's:\\\\:/:g'` ++ ;; ++esac ++ + ac_config_commands="$ac_config_commands include" + + ac_config_commands="$ac_config_commands src" + + ++case $host_os in ++mingw*) ++ac_config_commands="$ac_config_commands mingw_ffitarget.h" ++ ++;; ++*) + ac_config_links="$ac_config_links include/ffitarget.h:src/$TARGETDIR/ffitarget.h" + ++;; ++esac + + ac_config_files="$ac_config_files include/ffi.h" + + ++case $host_os in ++mingw*) ++ac_config_commands="$ac_config_commands mingw_ffi_common.h" ++ ++;; ++*) + ac_config_links="$ac_config_links include/ffi_common.h:include/ffi_common.h" + ++;; ++esac + + ac_config_files="$ac_config_files fficonfig.py" + +@@ -23506,8 +23528,10 @@ + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "include") CONFIG_COMMANDS="$CONFIG_COMMANDS include" ;; + "src") CONFIG_COMMANDS="$CONFIG_COMMANDS src" ;; ++ "mingw_ffitarget.h") CONFIG_COMMANDS="$CONFIG_COMMANDS mingw_ffitarget.h" ;; + "include/ffitarget.h") CONFIG_LINKS="$CONFIG_LINKS include/ffitarget.h:src/$TARGETDIR/ffitarget.h" ;; + "include/ffi.h") CONFIG_FILES="$CONFIG_FILES include/ffi.h" ;; ++ "mingw_ffi_common.h") CONFIG_COMMANDS="$CONFIG_COMMANDS mingw_ffi_common.h" ;; + "include/ffi_common.h") CONFIG_LINKS="$CONFIG_LINKS include/ffi_common.h:include/ffi_common.h" ;; + "fficonfig.py") CONFIG_FILES="$CONFIG_FILES fficonfig.py" ;; + +@@ -24386,6 +24410,16 @@ + test -d src || mkdir src + test -d src/$TARGETDIR || mkdir src/$TARGETDIR + ;; ++ "mingw_ffitarget.h":C) ++{ echo "$as_me:$LINENO: copying $srcdir/src/$TARGETDIR/ffitarget.h to include/ffitarget.h" >&5 ++echo "$as_me: copying $srcdir/src/$TARGETDIR/ffitarget.h to include/ffitarget.h" >&6;} ++cp -p $srcdir/src/$TARGETDIR/ffitarget.h include/ffitarget.h ++ ;; ++ "mingw_ffi_common.h":C) ++{ echo "$as_me:$LINENO: copying $srcdir/include/ffi_common.h to include/ffi_common.h" >&5 ++echo "$as_me: copying $srcdir/include/ffi_common.h to include/ffi_common.h" >&6;} ++cp -p $srcdir/include/ffi_common.h include/ffi_common.h ++ ;; + + esac + done # for ac_tag +--- misc/Python-2.6.1/Modules/_ctypes/libffi/configure.ac 2008-05-24 00:06:50.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/_ctypes/libffi/configure.ac 2009-04-05 08:30:27.527250000 +0900 +@@ -358,17 +358,43 @@ + multilib_arg= + fi + ++case $host_os in ++mingw*) ++ srcdir=`cd $srcdir && cmd /c cd | sed -e 's:\\\\:/:g'` ++ ;; ++esac ++ + AC_CONFIG_COMMANDS(include, [test -d include || mkdir include]) + AC_CONFIG_COMMANDS(src, [ + test -d src || mkdir src + test -d src/$TARGETDIR || mkdir src/$TARGETDIR + ], [TARGETDIR="$TARGETDIR"]) + ++case $host_os in ++mingw*) ++AC_CONFIG_COMMANDS(mingw_ffitarget.h, [ ++AC_MSG_NOTICE(copying $srcdir/src/$TARGETDIR/ffitarget.h to include/ffitarget.h) ++cp -p $srcdir/src/$TARGETDIR/ffitarget.h include/ffitarget.h ++]) ++;; ++*) + AC_CONFIG_LINKS(include/ffitarget.h:src/$TARGETDIR/ffitarget.h) ++;; ++esac + + AC_CONFIG_FILES(include/ffi.h) + ++case $host_os in ++mingw*) ++AC_CONFIG_COMMANDS(mingw_ffi_common.h, [ ++AC_MSG_NOTICE(copying $srcdir/include/ffi_common.h to include/ffi_common.h) ++cp -p $srcdir/include/ffi_common.h include/ffi_common.h ++]) ++;; ++*) + AC_CONFIG_LINKS(include/ffi_common.h:include/ffi_common.h) ++;; ++esac + + AC_CONFIG_FILES(fficonfig.py) + +--- misc/Python-2.6.1/Modules/_ctypes/libffi/include/ffi.h.in 2008-04-05 01:01:54.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/_ctypes/libffi/include/ffi.h.in 2009-03-24 20:53:04.519875000 +0900 +@@ -350,7 +350,11 @@ + ffi_type *rtype, + ffi_type **atypes); + ++#ifdef MS_WIN32 ++int ffi_call(ffi_cif *cif, ++#else + void ffi_call(ffi_cif *cif, ++#endif + void (*fn)(void), + void *rvalue, + void **avalue); +--- misc/Python-2.6.1/Modules/config.c.in 2008-09-19 08:20:28.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/config.c.in 2009-03-22 16:28:09.418875000 +0900 +@@ -48,6 +48,9 @@ + {"__builtin__", NULL}, + {"sys", NULL}, + {"exceptions", NULL}, ++#ifdef __MINGW32__ ++ {"winmingw32", NULL}, ++#endif + + /* This lives in gcmodule.c */ + {"gc", initgc}, +--- misc/Python-2.6.1/Modules/posixmodule.c 2008-10-10 03:06:58.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/posixmodule.c 2009-03-22 20:04:01.404375000 +0900 +@@ -131,6 +131,15 @@ + #define HAVE_FSYNC 1 + #define fsync _commit + #else ++#ifdef __MINGW32__ ++#define HAVE_SPAWNV 1 ++#define HAVE_EXECV 1 ++#define HAVE_GETCWD 1 ++#define HAVE_OPENDIR 1 ++#define HAVE_PIPE 1 ++#define HAVE_POPEN 1 ++#define HAVE_SYSTEM 1 ++#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,6 +165,7 @@ + #define HAVE_WAIT 1 + #define HAVE_TTYNAME 1 + #endif /* PYOS_OS2 && PYCC_GCC && __VMS */ ++#endif /* __MINGW32__ */ + #endif /* _MSC_VER */ + #endif /* __BORLANDC__ */ + #endif /* ! __WATCOMC__ || __QNX__ */ +@@ -275,6 +285,14 @@ + #define pclose _pclose + #endif /* _MSC_VER */ + ++#ifdef __MINGW32__ ++#include "osdefs.h" ++#include <windows.h> ++#include <shellapi.h> /* for ShellExecute() */ ++#define popen _popen ++#define pclose _pclose ++#endif ++ + #if defined(PYCC_VACPP) && defined(PYOS_OS2) + #include <io.h> + #endif /* OS2 */ +@@ -350,7 +368,7 @@ + */ + #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 */ + +@@ -775,7 +793,7 @@ + int st_ctime_nsec; + }; + +-static __int64 secs_between_epochs = 11644473600; /* Seconds between 1.1.1601 and 1.1.1970 */ ++static __int64 secs_between_epochs = 11644473600LL; /* Seconds between 1.1.1601 and 1.1.1970 */ + + static void + FILE_TIME_to_time_t_nsec(FILETIME *in_ptr, int *time_out, int* nsec_out) +@@ -8189,7 +8207,7 @@ + } + #endif + +-#ifdef MS_WINDOWS ++#if defined(MS_WINDOWS) && !defined(__MINGW32__) + + PyDoc_STRVAR(win32_urandom__doc__, + "urandom(n) -> str\n\n\ +@@ -8605,7 +8623,7 @@ + #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 +--- misc/Python-2.6.1/Modules/socketmodule.c 2008-08-12 23:49:50.000000000 +0900 ++++ misc/build/Python-2.6.1/Modules/socketmodule.c 2009-03-29 20:55:19.750375000 +0900 +@@ -312,7 +312,7 @@ + /* Do not include addrinfo.h for MSVC7 or greater. 'addrinfo' and + * EAI_* constants are defined in (the already included) ws2tcpip.h. + */ +-#else ++#elif !defined(__MINGW32__) + # include "addrinfo.h" + #endif + +--- misc/Python-2.6.1/PC/_winreg.c 2008-06-09 13:58:54.000000000 +0900 ++++ misc/build/Python-2.6.1/PC/_winreg.c 2009-04-12 18:25:01.944250000 +0900 +@@ -1630,6 +1630,9 @@ + } + + #define ADD_KEY(val) inskey(d, #val, val) ++#ifndef REG_LEGAL_CHANGE_FILTER ++#define REG_LEGAL_CHANGE_FILTER (REG_NOTIFY_CHANGE_NAME|REG_NOTIFY_CHANGE_ATTRIBUTES|REG_NOTIFY_CHANGE_LAST_SET|REG_NOTIFY_CHANGE_SECURITY) ++#endif + + PyMODINIT_FUNC init_winreg(void) + { +--- misc/Python-2.6.1/Python/dynload_win.c 2008-01-24 02:15:06.000000000 +0900 ++++ misc/build/Python-2.6.1/Python/dynload_win.c 2009-03-21 22:05:59.683125000 +0900 +@@ -24,6 +24,7 @@ + /* Case insensitive string compare, to avoid any dependencies on particular + C RTL implementations */ + ++#ifndef __MINGW32__ + static int strcasecmp (char *string1, char *string2) + { + int first, second; +@@ -37,6 +38,7 @@ + + return (first - second); + } ++#endif + + + /* Function to return the name of the "python" DLL that the supplied module +--- misc/Python-2.6.1/Python/frozenmain.c 2002-07-01 00:26:10.000000000 +0900 ++++ misc/build/Python-2.6.1/Python/frozenmain.c 2009-03-22 15:36:03.993875000 +0900 +@@ -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/Python-2.6.1/configure 2008-11-17 02:57:10.000000000 +0900 ++++ misc/build/Python-2.6.1/configure 2009-04-11 16:57:56.149375000 +0900 +@@ -719,8 +719,10 @@ + USE_THREAD_MODULE + LDLAST + THREADOBJ ++USE_PASSWORD_MODULE + DLINCLDIR + DYNLOADFILE ++GETPATH_OBJS + MACHDEP_OBJS + TRUE + LIBOBJS +@@ -2201,6 +2203,13 @@ + LDFLAGS="$SGI_ABI $LDFLAGS" + MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'` + fi ++case $MACHDEP in ++ *mingw*|*MINGW*|*MinGW*) ++ MACHDEP="winmingw32" ++ ac_sys_system=`uname -s` ++ ac_sys_release=`uname -r` ++ ;; ++esac + { echo "$as_me:$LINENO: result: $MACHDEP" >&5 + echo "${ECHO_T}$MACHDEP" >&6; } + +@@ -3995,7 +4004,7 @@ + if test -z "$enable_shared" + then + case $ac_sys_system in +- CYGWIN* | atheos*) ++ CYGWIN* | MINGW* | atheos*) + enable_shared="yes";; + *) + enable_shared="no";; +@@ -4096,7 +4105,7 @@ + BeOS*) + LDLIBRARY='libpython$(VERSION).so' + ;; +- CYGWIN*) ++ CYGWIN* | MINGW*) + LDLIBRARY='libpython$(VERSION).dll.a' + DLLLIBRARY='libpython$(VERSION).dll' + ;; +@@ -4142,7 +4151,7 @@ + esac + else # shared is disabled + case $ac_sys_system in +- CYGWIN*) ++ CYGWIN* | MINGW*) + BLDLIBRARY='$(LIBRARY)' + LDLIBRARY='libpython$(VERSION).dll.a' + ;; +@@ -12645,6 +12654,10 @@ + _ACEOF + + ++ac_cv_sizeof_off_t=`echo $ac_cv_sizeof_off_t | tr -d '\015'` ++ac_cv_sizeof_long=`echo $ac_cv_sizeof_long | tr -d '\015'` ++ac_cv_sizeof_long_long=`echo $ac_cv_sizeof_long_long | tr -d '\015'` ++ac_cv_sizeof_short=`echo $ac_cv_sizeof_short | tr -d '\015'` + { echo "$as_me:$LINENO: checking whether to enable large file support" >&5 + echo $ECHO_N "checking whether to enable large file support... $ECHO_C" >&6; } + if test "$have_long_long" = yes -a \ +@@ -12985,7 +12998,7 @@ + *) SO=.sl;; + esac + ;; +- CYGWIN*) SO=.dll;; ++ CYGWIN* | MINGW*) SO=.dll;; + *) SO=.so;; + esac + else +@@ -13113,7 +13126,7 @@ + fi;; + 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";; ++ CYGWIN* | MINGW*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base ${LDFLAGS}";; + atheos*) LDSHARED="gcc -shared";; + *) LDSHARED="ld";; + esac +@@ -13205,7 +13218,7 @@ + LINKFORSHARED="-Xlinker --export-dynamic" + fi;; + esac;; +- CYGWIN*) ++ CYGWIN* | MINGW*) + if test $enable_shared = "no" + then + LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' +@@ -13229,7 +13242,7 @@ + if test ! "$LIBRARY" = "$LDLIBRARY" + then + case $ac_sys_system in +- CYGWIN*) ++ CYGWIN* | MINGW*) + # Cygwin needs CCSHARED when building extension DLLs + # but not when building the interpreter DLL. + CFLAGSFORSHARED='';; +@@ -15443,7 +15456,7 @@ + #define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 + _ACEOF + case $ac_sys_system in +- CYGWIN*) ++ CYGWIN* | MINGW*) + + cat >>confdefs.h <<\_ACEOF + #define HAVE_BROKEN_PTHREAD_SIGMASK 1 +@@ -15457,6 +15470,17 @@ + fi + + ++case $MACHDEP in ++winmingw*) ++ THREADOBJ="Python/thread.o" ++ USE_THREAD_MODULE="#" ++ USE_PASSWORD_MODULE="#" ++ ;; ++*) ++ USE_PASSWORD_MODULE="" ++ ;; ++esac ++ + # Check for enable-ipv6 + + +@@ -16057,6 +16081,11 @@ + # 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";; ++ CYGWIN* | MINGW*) ++ case $MACHDEP in ++ winmingw*) DYNLOADFILE="dynload_win.o PC/import_nt.o PC/dl_nt.o";; ++ esac ++ ;; + *) + # use dynload_shlib.c and dlopen() if we have it; otherwise stub + # out any dynamic loading +@@ -16078,6 +16107,21 @@ + + fi + ++ ++{ echo "$as_me:$LINENO: checking GETPATH_OBJS" >&5 ++echo $ECHO_N "checking GETPATH_OBJS... $ECHO_C" >&6; } ++if test -z "$GETPATH_OBJS" ++then ++ case $MACHDEP in ++ winmingw*) ++ GETPATH_OBJS='PC/getpathp.o';; ++ *) ++ GETPATH_OBJS='Modules/getpath.o';; ++ esac ++fi ++{ echo "$as_me:$LINENO: result: $GETPATH_OBJS" >&5 ++echo "${ECHO_T}$GETPATH_OBJS" >&6; } ++ + # MACHDEP_OBJS can be set to platform-specific object files needed by Python + + +@@ -19952,6 +19996,112 @@ + + fi + ++case $MACHDEP in ++winmingw*) ++{ echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 ++echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6; } ++if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then ++ echo $ECHO_N "(cached) $ECHO_C" >&6 ++else ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++static struct stat ac_aggr; ++if (ac_aggr.st_blocks) ++return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_member_struct_stat_st_blocks=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ cat >conftest.$ac_ext <<_ACEOF ++/* confdefs.h. */ ++_ACEOF ++cat confdefs.h >>conftest.$ac_ext ++cat >>conftest.$ac_ext <<_ACEOF ++/* end confdefs.h. */ ++$ac_includes_default ++int ++main () ++{ ++static struct stat ac_aggr; ++if (sizeof ac_aggr.st_blocks) ++return 0; ++ ; ++ return 0; ++} ++_ACEOF ++rm -f conftest.$ac_objext ++if { (ac_try="$ac_compile" ++case "(($ac_try" in ++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; ++ *) ac_try_echo=$ac_try;; ++esac ++eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 ++ (eval "$ac_compile") 2>conftest.er1 ++ ac_status=$? ++ grep -v '^ *+' conftest.er1 >conftest.err ++ rm -f conftest.er1 ++ cat conftest.err >&5 ++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 ++ (exit $ac_status); } && { ++ test -z "$ac_c_werror_flag" || ++ test ! -s conftest.err ++ } && test -s conftest.$ac_objext; then ++ ac_cv_member_struct_stat_st_blocks=yes ++else ++ echo "$as_me: failed program was:" >&5 ++sed 's/^/| /' conftest.$ac_ext >&5 ++ ++ ac_cv_member_struct_stat_st_blocks=no ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++ ++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ++fi ++{ echo "$as_me:$LINENO: result: $ac_cv_member_struct_stat_st_blocks" >&5 ++echo "${ECHO_T}$ac_cv_member_struct_stat_st_blocks" >&6; } ++if test $ac_cv_member_struct_stat_st_blocks = yes; then ++ ++cat >>confdefs.h <<_ACEOF ++#define HAVE_STRUCT_STAT_ST_BLOCKS 1 ++_ACEOF ++ ++ ++fi ++ ++;; ++*) + { echo "$as_me:$LINENO: checking for struct stat.st_blocks" >&5 + echo $ECHO_N "checking for struct stat.st_blocks... $ECHO_C" >&6; } + if test "${ac_cv_member_struct_stat_st_blocks+set}" = set; then +@@ -20066,6 +20216,8 @@ + fi + + ++;; ++esac + + { echo "$as_me:$LINENO: checking for time.h that defines altzone" >&5 + echo $ECHO_N "checking for time.h that defines altzone... $ECHO_C" >&6; } +@@ -22530,6 +22682,7 @@ + + + ++ac_cv_sizeof_wchar_t=`echo $ac_cv_sizeof_wchar_t | tr -d '\015'` + + if test "$enable_unicode" = "no" + then +@@ -25368,8 +25521,10 @@ + USE_THREAD_MODULE!$USE_THREAD_MODULE$ac_delim + LDLAST!$LDLAST$ac_delim + THREADOBJ!$THREADOBJ$ac_delim ++USE_PASSWORD_MODULE!$USE_PASSWORD_MODULE$ac_delim + DLINCLDIR!$DLINCLDIR$ac_delim + DYNLOADFILE!$DYNLOADFILE$ac_delim ++GETPATH_OBJS!$GETPATH_OBJS$ac_delim + MACHDEP_OBJS!$MACHDEP_OBJS$ac_delim + TRUE!$TRUE$ac_delim + LIBOBJS!$LIBOBJS$ac_delim +@@ -25386,7 +25541,7 @@ + LTLIBOBJS!$LTLIBOBJS$ac_delim + _ACEOF + +- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 22; then ++ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 24; then + break + elif $ac_last_try; then + { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +--- misc/Python-2.6.1/configure.in 2008-11-16 17:02:56.000000000 +0900 ++++ misc/build/Python-2.6.1/configure.in 2009-04-11 16:56:07.258750000 +0900 +@@ -359,6 +359,13 @@ + LDFLAGS="$SGI_ABI $LDFLAGS" + MACHDEP=`echo "${MACHDEP}${SGI_ABI}" | sed 's/ *//g'` + fi ++case $MACHDEP in ++ *mingw*|*MINGW*|*MinGW*) ++ MACHDEP="winmingw32" ++ ac_sys_system=`uname -s` ++ ac_sys_release=`uname -r` ++ ;; ++esac + AC_MSG_RESULT($MACHDEP) + + # And add extra plat-mac for darwin +@@ -643,7 +650,7 @@ + if test -z "$enable_shared" + then + case $ac_sys_system in +- CYGWIN* | atheos*) ++ CYGWIN* | MINGW* | atheos*) + enable_shared="yes";; + *) + enable_shared="no";; +@@ -694,7 +701,7 @@ + BeOS*) + LDLIBRARY='libpython$(VERSION).so' + ;; +- CYGWIN*) ++ CYGWIN* | MINGW*) + LDLIBRARY='libpython$(VERSION).dll.a' + DLLLIBRARY='libpython$(VERSION).dll' + ;; +@@ -740,7 +747,7 @@ + esac + else # shared is disabled + case $ac_sys_system in +- CYGWIN*) ++ CYGWIN* | MINGW*) + BLDLIBRARY='$(LIBRARY)' + LDLIBRARY='libpython$(VERSION).dll.a' + ;; +@@ -1402,6 +1409,10 @@ + AC_DEFINE_UNQUOTED(SIZEOF_OFF_T, $ac_cv_sizeof_off_t, + [The number of bytes in an off_t.]) + ++ac_cv_sizeof_off_t=`echo $ac_cv_sizeof_off_t | tr -d '\015'` ++ac_cv_sizeof_long=`echo $ac_cv_sizeof_long | tr -d '\015'` ++ac_cv_sizeof_long_long=`echo $ac_cv_sizeof_long_long | tr -d '\015'` ++ac_cv_sizeof_short=`echo $ac_cv_sizeof_short | tr -d '\015'` + AC_MSG_CHECKING(whether to enable large file support) + if test "$have_long_long" = yes -a \ + "$ac_cv_sizeof_off_t" -gt "$ac_cv_sizeof_long" -a \ +@@ -1581,7 +1592,7 @@ + *) SO=.sl;; + esac + ;; +- CYGWIN*) SO=.dll;; ++ CYGWIN* | MINGW*) SO=.dll;; + *) SO=.so;; + esac + else +@@ -1703,7 +1714,7 @@ + fi;; + 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";; ++ CYGWIN* | MINGW*) LDSHARED="gcc -shared -Wl,--enable-auto-image-base ${LDFLAGS}";; + atheos*) LDSHARED="gcc -shared";; + *) LDSHARED="ld";; + esac +@@ -1791,7 +1802,7 @@ + LINKFORSHARED="-Xlinker --export-dynamic" + fi;; + esac;; +- CYGWIN*) ++ CYGWIN* | MINGW*) + if test $enable_shared = "no" + then + LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)' +@@ -1813,7 +1824,7 @@ + if test ! "$LIBRARY" = "$LDLIBRARY" + then + case $ac_sys_system in +- CYGWIN*) ++ CYGWIN* | MINGW*) + # Cygwin needs CCSHARED when building extension DLLs + # but not when building the interpreter DLL. + CFLAGSFORSHARED='';; +@@ -2149,13 +2160,24 @@ + fi + AC_CHECK_FUNCS(pthread_sigmask, + [case $ac_sys_system in +- CYGWIN*) ++ CYGWIN* | MINGW*) + AC_DEFINE(HAVE_BROKEN_PTHREAD_SIGMASK, 1, + [Define if pthread_sigmask() does not work on your system.]) + ;; + esac]) + fi + ++AC_SUBST(USE_PASSWORD_MODULE) ++case $MACHDEP in ++winmingw*) ++ THREADOBJ="Python/thread.o" ++ USE_THREAD_MODULE="#" ++ USE_PASSWORD_MODULE="#" ++ ;; ++*) ++ USE_PASSWORD_MODULE="" ++ ;; ++esac + + # Check for enable-ipv6 + AH_TEMPLATE(ENABLE_IPV6, [Define if --enable-ipv6 is specified]) +@@ -2415,6 +2437,11 @@ + # 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";; ++ CYGWIN* | MINGW*) ++ case $MACHDEP in ++ winmingw*) DYNLOADFILE="dynload_win.o PC/import_nt.o PC/dl_nt.o";; ++ esac ++ ;; + *) + # use dynload_shlib.c and dlopen() if we have it; otherwise stub + # out any dynamic loading +@@ -2432,6 +2459,19 @@ + [Defined when any dynamic module loading is enabled.]) + fi + ++AC_SUBST(GETPATH_OBJS) ++AC_MSG_CHECKING(GETPATH_OBJS) ++if test -z "$GETPATH_OBJS" ++then ++ case $MACHDEP in ++ winmingw*) ++ GETPATH_OBJS='PC/getpathp.o';; ++ *) ++ GETPATH_OBJS='Modules/getpath.o';; ++ esac ++fi ++AC_MSG_RESULT($GETPATH_OBJS) ++ + # MACHDEP_OBJS can be set to platform-specific object files needed by Python + + AC_SUBST(MACHDEP_OBJS) +@@ -2862,7 +2902,14 @@ + AC_CHECK_MEMBERS([struct stat.st_flags]) + AC_CHECK_MEMBERS([struct stat.st_gen]) + AC_CHECK_MEMBERS([struct stat.st_birthtime]) ++case $MACHDEP in ++winmingw*) ++AC_CHECK_MEMBERS([struct stat.st_blocks]) ++;; ++*) + AC_STRUCT_ST_BLOCKS ++;; ++esac + + AC_MSG_CHECKING(for time.h that defines altzone) + AC_CACHE_VAL(ac_cv_header_time_altzone, +@@ -3247,6 +3294,7 @@ + AH_TEMPLATE(PY_UNICODE_TYPE, + [Define as the integral type used for Unicode representation.]) + ++ac_cv_sizeof_wchar_t=`echo $ac_cv_sizeof_wchar_t | tr -d '\015'` + AC_SUBST(UNICODE_OBJS) + if test "$enable_unicode" = "no" + then +--- misc/Python-2.6.1/setup.py 2008-11-05 05:43:31.000000000 +0900 ++++ misc/build/Python-2.6.1/setup.py 2009-04-12 16:02:22.654125000 +0900 +@@ -234,6 +234,18 @@ + if not self.configure_ctypes(ext): + return + ++ if self.get_platform() == "winmingw": ++ if ext.name == '_ctypes_test': ++ ext.libraries.append('oleaut32') ++ elif ext.name == 'select': ++ ext.libraries.append('ws2_32') ++ elif ext.name == '_socket': ++ ext.libraries.append('ws2_32') ++ if ext.name == '_ctypes': ++ ext.libraries.append('uuid') ++ ext.libraries.append('oleaut32') ++ ext.libraries.append('ole32') ++ + try: + build_ext.build_extension(self, ext) + except (CCompilerError, DistutilsError), why: +@@ -263,7 +275,7 @@ + + # Workaround for Cygwin: Cygwin currently has fork issues when many + # modules have been imported +- if self.get_platform() == 'cygwin': ++ if self.get_platform() in ['cygwin', 'winmingw']: + self.announce('WARNING: skipping import check for Cygwin-based "%s"' + % ext.name) + return +@@ -303,7 +315,7 @@ + + def get_platform(self): + # Get value of sys.platform +- for platform in ['cygwin', 'beos', 'darwin', 'atheos', 'osf1']: ++ for platform in ['cygwin', 'winmingw', 'beos', 'darwin', 'atheos', 'osf1']: + if sys.platform.startswith(platform): + return platform + return sys.platform +@@ -1009,7 +1021,7 @@ + missing.append('bsddb185') + + # The standard Unix dbm module: +- if platform not in ['cygwin']: ++ if platform not in ['cygwin', 'winmingw']: + if find_file("ndbm.h", inc_dirs, []) is not None: + # Some systems have -lndbm, others don't + if self.compiler.find_library_file(lib_dirs, 'ndbm'): +@@ -1053,7 +1065,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', 'winmingw', 'atheos', 'qnx6']: + if (self.compiler.find_library_file(lib_dirs, 'nsl')): + libs = ['nsl'] + else: +@@ -1252,14 +1264,14 @@ + ) + libraries = [] + +- elif platform == 'cygwin': # Cygwin ++ elif platform in ['cygwin', 'winmingw']: # Cygwin + macros = dict( + HAVE_SEM_OPEN=1, + HAVE_SEM_TIMEDWAIT=1, + HAVE_FD_TRANSFER=0, + HAVE_BROKEN_SEM_UNLINK=1 + ) +- libraries = [] ++ libraries = ['ws2_32'] + + elif platform in ('freebsd4', 'freebsd5', 'freebsd6', 'freebsd7', 'freebsd8'): + # FreeBSD's P1003.1b semaphore support is very experimental +@@ -1287,7 +1299,7 @@ + ) + libraries = ['rt'] + +- if platform == 'win32': ++ if platform in ['win32', 'winmingw']: + multiprocessing_srcs = [ '_multiprocessing/multiprocessing.c', + '_multiprocessing/semaphore.c', + '_multiprocessing/pipe_connection.c', +@@ -1305,6 +1317,7 @@ + + exts.append ( Extension('_multiprocessing', multiprocessing_srcs, + define_macros=macros.items(), ++ libraries=libraries, + include_dirs=["Modules/_multiprocessing"])) + # End multiprocessing + +@@ -1423,6 +1436,10 @@ + '-framework', 'Carbon']) ) + + ++ if platform == 'winmingw': ++ exts.append( Extension('_winreg', ['../PC/_winreg.c']) ) ++ exts.append( Extension('winsound', ['../PC/winsound.c'], libraries = ['winmm']) ) ++ + self.extensions.extend(exts) + + # Call the method for detecting whether _tkinter can be compiled +@@ -1575,7 +1592,7 @@ + added_lib_dirs.append('/usr/X11/lib') + + # If Cygwin, then verify that X is installed before proceeding +- if platform == 'cygwin': ++ if platform in ['cygwin', 'winmingw']: + x11_inc = find_file('X11/Xlib.h', [], include_dirs) + if x11_inc is None: + return +@@ -1598,7 +1615,7 @@ + libs.append('ld') + + # Finally, link with the X11 libraries (not appropriate on cygwin) +- if platform != "cygwin": ++ if not platform in ["cygwin", "winmingw"]: + libs.append('X11') + + ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'], +@@ -1669,6 +1686,8 @@ + from distutils.dir_util import mkpath + mkpath(ffi_builddir) + config_args = [] ++ if self.get_platform() == "winmingw": ++ config_args.append(" --build=mingw32") + + # Pass empty CFLAGS because we'll just append the resulting + # CFLAGS to Python's; -g or -O2 is to be avoided. |