You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by pf...@apache.org on 2016/01/02 16:17:19 UTC
svn commit: r1722635 [1/2] - in /openoffice/trunk/main: ./ python/
python/prj/
Author: pfg
Date: Sat Jan 2 15:17:18 2016
New Revision: 1722635
URL: http://svn.apache.org/viewvc?rev=1722635&view=rev
Log:
Update Python bundled version to 2.7.8
Highlights include:
- A regression in the mimetypes module on Windows has been fixed.
- A possible overflow in the buffer type has been fixed.
- A bug in the CGIHTTPServer module which allows arbitrary execution of
code in the server root has been patched.
- A regression in the handling of UNC paths in os.path.join has been
fixed.
- Many bugfixes.
As a side note: building with mingw remains supported and, given that
the status of clang in Windows keeps improving, it is very likely to
disappear in the future.
Added:
openoffice/trunk/main/python/python-2.7.8-mingw.patch
openoffice/trunk/main/python/python-2.7.8-nohardlink.patch
openoffice/trunk/main/python/python-2.7.8-pcbuild.patch
openoffice/trunk/main/python/python-2.7.8-sysbase.patch
Removed:
openoffice/trunk/main/python/python-2.7.6-mingw.patch
openoffice/trunk/main/python/python-2.7.6-nohardlink.patch
openoffice/trunk/main/python/python-2.7.6-pcbuild.patch
openoffice/trunk/main/python/python-2.7.6-sysbase.patch
Modified:
openoffice/trunk/main/external_deps.lst
openoffice/trunk/main/python/makefile.mk
openoffice/trunk/main/python/prj/d.lst
openoffice/trunk/main/python/python-freebsd.patch
openoffice/trunk/main/python/python-md5.patch
openoffice/trunk/main/python/python-solaris.patch
openoffice/trunk/main/python/python-solver-before-std.patch
openoffice/trunk/main/python/python-ssl.patch
openoffice/trunk/main/python/pyversion.mk
Modified: openoffice/trunk/main/external_deps.lst
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/external_deps.lst?rev=1722635&r1=1722634&r2=1722635&view=diff
==============================================================================
--- openoffice/trunk/main/external_deps.lst (original)
+++ openoffice/trunk/main/external_deps.lst Sat Jan 2 15:17:18 2016
@@ -204,9 +204,9 @@ if (ENABLE_MEDIAWIKI == YES)
URL2 = $(OOO_EXTRAS)$(MD5)-$(name)
if (SYSTEM_PYTHON != YES)
- MD5 = 1d8728eb0dfcac72a0fd99c17ec7f386
- name = Python-2.7.6.tgz
- URL1 = http://www.python.org/ftp/python/2.7.6/Python-2.7.6.tgz
+ MD5 = d4bca0159acb0b44a781292b5231936f
+ name = Python-2.7.8.tgz
+ URL1 = http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz
URL2 = $(OOO_EXTRAS)$(MD5)-$(name)
if (SYSTEM_BOOST != YES)
Modified: openoffice/trunk/main/python/makefile.mk
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/python/makefile.mk?rev=1722635&r1=1722634&r2=1722635&view=diff
==============================================================================
--- openoffice/trunk/main/python/makefile.mk (original)
+++ openoffice/trunk/main/python/makefile.mk Sat Jan 2 15:17:18 2016
@@ -42,7 +42,7 @@ all:
TARFILE_NAME=Python-$(PYVERSION)
-TARFILE_MD5=1d8728eb0dfcac72a0fd99c17ec7f386
+TARFILE_MD5=d4bca0159acb0b44a781292b5231936f
PATCH_FILES=\
python-solaris.patch \
python-freebsd.patch \
Modified: openoffice/trunk/main/python/prj/d.lst
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/python/prj/d.lst?rev=1722635&r1=1722634&r2=1722635&view=diff
==============================================================================
--- openoffice/trunk/main/python/prj/d.lst (original)
+++ openoffice/trunk/main/python/prj/d.lst Sat Jan 2 15:17:18 2016
@@ -36,51 +36,51 @@ mkdir: %_DEST%\lib%_EXT%\python\multipro
mkdir: %_DEST%\lib%_EXT%\python\unittest
mkdir: %_DEST%\lib%_EXT%\python\python2.7\config
-..\%__SRC%\misc\build\Python-2.7.6\Lib\* %_DEST%\lib%_EXT%\python\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\lib-old\* %_DEST%\lib%_EXT%\python\lib-old\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\lib-tk\* %_DEST%\lib%_EXT%\python\lib-tk\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\site-packages\* %_DEST%\lib%_EXT%\python\site-packages\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\encodings\* %_DEST%\lib%_EXT%\python\encodings\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\email\* %_DEST%\lib%_EXT%\python\email\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\email\mime\* %_DEST%\lib%_EXT%\python\email\mime\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\compiler\* %_DEST%\lib%_EXT%\python\compiler\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\hotshot\* %_DEST%\lib%_EXT%\python\hotshot\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\distutils\* %_DEST%\lib%_EXT%\python\distutils\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\distutils\command\* %_DEST%\lib%_EXT%\python\distutils\command\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\xml\* %_DEST%\lib%_EXT%\python\xml\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\xml\dom\* %_DEST%\lib%_EXT%\python\xml\dom\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\xml\parsers\* %_DEST%\lib%_EXT%\python\xml\parsers\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\xml\sax\* %_DEST%\lib%_EXT%\python\xml\sax\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\curses\* %_DEST%\lib%_EXT%\python\curses\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\plat-linux2\* %_DEST%\lib%_EXT%\python\plat-linux2\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\config\* %_DEST%\lib%_EXT%\python\config\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\bsddb\* %_DEST%\lib%_EXT%\python\bsddb\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\logging\* %_DEST%\lib%_EXT%\python\logging\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\idlelib\* %_DEST%\lib%_EXT%\python\idlelib\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\idlelib\Icons\* %_DEST%\lib%_EXT%\python\idlelib\Icons\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\wsgiref\* %_DEST%\lib%_EXT%\python\wsgiref\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\json\* %_DEST%\lib%_EXT%\python\json\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\lib2to3\* %_DEST%\lib%_EXT%\python\lib2to3\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\lib2to3\fixes\* %_DEST%\lib%_EXT%\python\lib2to3\fixes\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\lib2to3\pgen2\* %_DEST%\lib%_EXT%\python\lib2to3\pgen2\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\sqlite3\* %_DEST%\lib%_EXT%\python\sqlite3\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\ctypes\* %_DEST%\lib%_EXT%\python\ctypes\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\ctypes\macholib\* %_DEST%\lib%_EXT%\python\ctypes\macholib\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\xml\etree\* %_DEST%\lib%_EXT%\python\xml\etree
-..\%__SRC%\misc\build\Python-2.7.6\Lib\xml\etree\* %_DEST%\lib%_EXT%\python\xml\etree
-..\%__SRC%\misc\build\Python-2.7.6\Lib\importlib\* %_DEST%\lib%_EXT%\python\importlib\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\multiprocessing\* %_DEST%\lib%_EXT%\python\multiprocessing\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\multiprocessing\dummy\* %_DEST%\lib%_EXT%\python\multiprocessing\dummy\*
-..\%__SRC%\misc\build\Python-2.7.6\Lib\unittest\* %_DEST%\lib%_EXT%\python\unittest\*
-..\%__SRC%\misc\build\Python-2.7.6\Makefile %_DEST%\lib%_EXT%\python\python2.7\config\Makefile
+..\%__SRC%\misc\build\Python-2.7.8\Lib\* %_DEST%\lib%_EXT%\python\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\lib-old\* %_DEST%\lib%_EXT%\python\lib-old\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\lib-tk\* %_DEST%\lib%_EXT%\python\lib-tk\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\site-packages\* %_DEST%\lib%_EXT%\python\site-packages\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\encodings\* %_DEST%\lib%_EXT%\python\encodings\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\email\* %_DEST%\lib%_EXT%\python\email\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\email\mime\* %_DEST%\lib%_EXT%\python\email\mime\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\compiler\* %_DEST%\lib%_EXT%\python\compiler\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\hotshot\* %_DEST%\lib%_EXT%\python\hotshot\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\distutils\* %_DEST%\lib%_EXT%\python\distutils\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\distutils\command\* %_DEST%\lib%_EXT%\python\distutils\command\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\xml\* %_DEST%\lib%_EXT%\python\xml\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\xml\dom\* %_DEST%\lib%_EXT%\python\xml\dom\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\xml\parsers\* %_DEST%\lib%_EXT%\python\xml\parsers\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\xml\sax\* %_DEST%\lib%_EXT%\python\xml\sax\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\curses\* %_DEST%\lib%_EXT%\python\curses\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\plat-linux2\* %_DEST%\lib%_EXT%\python\plat-linux2\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\config\* %_DEST%\lib%_EXT%\python\config\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\bsddb\* %_DEST%\lib%_EXT%\python\bsddb\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\logging\* %_DEST%\lib%_EXT%\python\logging\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\idlelib\* %_DEST%\lib%_EXT%\python\idlelib\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\idlelib\Icons\* %_DEST%\lib%_EXT%\python\idlelib\Icons\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\wsgiref\* %_DEST%\lib%_EXT%\python\wsgiref\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\json\* %_DEST%\lib%_EXT%\python\json\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\lib2to3\* %_DEST%\lib%_EXT%\python\lib2to3\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\lib2to3\fixes\* %_DEST%\lib%_EXT%\python\lib2to3\fixes\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\lib2to3\pgen2\* %_DEST%\lib%_EXT%\python\lib2to3\pgen2\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\sqlite3\* %_DEST%\lib%_EXT%\python\sqlite3\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\ctypes\* %_DEST%\lib%_EXT%\python\ctypes\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\ctypes\macholib\* %_DEST%\lib%_EXT%\python\ctypes\macholib\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\xml\etree\* %_DEST%\lib%_EXT%\python\xml\etree
+..\%__SRC%\misc\build\Python-2.7.8\Lib\xml\etree\* %_DEST%\lib%_EXT%\python\xml\etree
+..\%__SRC%\misc\build\Python-2.7.8\Lib\importlib\* %_DEST%\lib%_EXT%\python\importlib\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\multiprocessing\* %_DEST%\lib%_EXT%\python\multiprocessing\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\multiprocessing\dummy\* %_DEST%\lib%_EXT%\python\multiprocessing\dummy\*
+..\%__SRC%\misc\build\Python-2.7.8\Lib\unittest\* %_DEST%\lib%_EXT%\python\unittest\*
+..\%__SRC%\misc\build\Python-2.7.8\Makefile %_DEST%\lib%_EXT%\python\python2.7\config\Makefile
..\%__SRC%\misc\build\python-inst\lib\python2.7\_sysconfigdata.py %_DEST%\lib%_EXT%\python\_sysconfigdata.py
..\pyversion.mk %_DEST%\inc%_EXT%\pyversion.mk
-..\%__SRC%\misc\build\Python-2.7.6\Include\* %_DEST%\inc%_EXT%\python\*
+..\%__SRC%\misc\build\Python-2.7.8\Include\* %_DEST%\inc%_EXT%\python\*
#unix ONLY !
..\%__SRC%\misc\build\python-inst\bin\python %_DEST%\bin%_EXT%\python
-..\%__SRC%\misc\build\Python-2.7.6\pyconfig.h %_DEST%\inc%_EXT%\python\pyconfig.h
+..\%__SRC%\misc\build\Python-2.7.8\pyconfig.h %_DEST%\inc%_EXT%\python\pyconfig.h
..\%__SRC%\misc\build\python-inst\lib\python2.7\lib-dynload\* %_DEST%\lib%_EXT%\python\lib-dynload\*
..\%__SRC%\misc\build\python-inst\bin\python2.7 %_DEST%\bin%_EXT%\python
..\%__SRC%\misc\build\python-inst\lib\libpython2.7.so.1.0 %_DEST%\lib%_EXT%\libpython2.7.so.1.0
@@ -91,24 +91,24 @@ symlink: %_DEST%\lib%_EXT%\libpython2.7.
#MingW ONLY !
..\%__SRC%\misc\build\python-inst\bin\python.exe %_DEST%\bin%_EXT%\python.exe
-..\%__SRC%\misc\build\Python-2.7.6\libpython2.7.dll %_DEST%\bin%_EXT%\libpython2.7.dll
+..\%__SRC%\misc\build\Python-2.7.8\libpython2.7.dll %_DEST%\bin%_EXT%\libpython2.7.dll
# WINDOWS ONLY !
..\%__SRC%\misc\build\pyconfig.h %_DEST%\inc%_EXT%\python\pyconfig.h
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\python.exe %_DEST%\bin%_EXT%\python.exe
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\python27.dll %_DEST%\bin%_EXT%\python27.dll
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\python27.lib %_DEST%\lib%_EXT%\python27.lib
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\_socket.pyd %_DEST%\lib%_EXT%\python\_socket.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\_ssl.pyd %_DEST%\lib%_EXT%\python\_ssl.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\select.pyd %_DEST%\lib%_EXT%\python\select.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\unicodedata.pyd %_DEST%\lib%_EXT%\python\unicodedata.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\winsound.pyd %_DEST%\lib%_EXT%\python\winsound.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\pyexpat.pyd %_DEST%\lib%_EXT%\python\pyexpat.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\_testcapi.pyd %_DEST%\lib%_EXT%\python\_testcapi.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\_multiprocessing.pyd %_DEST%\lib%_EXT%\python\_multiprocessing.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\_msi.pyd %_DEST%\lib%_EXT%\python\_msi.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\_elementtree.pyd %_DEST%\lib%_EXT%\python\_elementtree.pyd
-..\%__SRC%\misc\build\Python-2.7.6\PCbuild\_ctypes.pyd %_DEST%\lib%_EXT%\python\_ctypes.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\python.exe %_DEST%\bin%_EXT%\python.exe
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\python27.dll %_DEST%\bin%_EXT%\python27.dll
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\python27.lib %_DEST%\lib%_EXT%\python27.lib
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\_socket.pyd %_DEST%\lib%_EXT%\python\_socket.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\_ssl.pyd %_DEST%\lib%_EXT%\python\_ssl.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\select.pyd %_DEST%\lib%_EXT%\python\select.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\unicodedata.pyd %_DEST%\lib%_EXT%\python\unicodedata.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\winsound.pyd %_DEST%\lib%_EXT%\python\winsound.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\pyexpat.pyd %_DEST%\lib%_EXT%\python\pyexpat.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\_testcapi.pyd %_DEST%\lib%_EXT%\python\_testcapi.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\_multiprocessing.pyd %_DEST%\lib%_EXT%\python\_multiprocessing.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\_msi.pyd %_DEST%\lib%_EXT%\python\_msi.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\_elementtree.pyd %_DEST%\lib%_EXT%\python\_elementtree.pyd
+..\%__SRC%\misc\build\Python-2.7.8\PCbuild\_ctypes.pyd %_DEST%\lib%_EXT%\python\_ctypes.pyd
#linklib: libpython.so.*.*.*
Added: openoffice/trunk/main/python/python-2.7.8-mingw.patch
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/python/python-2.7.8-mingw.patch?rev=1722635&view=auto
==============================================================================
--- openoffice/trunk/main/python/python-2.7.8-mingw.patch (added)
+++ openoffice/trunk/main/python/python-2.7.8-mingw.patch Sat Jan 2 15:17:18 2016
@@ -0,0 +1,1056 @@
+diff -ru misc/Python-2.7.8/Include/pyport.h misc/build/Python-2.7.8/Include/pyport.h
+--- misc/Python-2.7.8/Include/pyport.h 2014-06-29 21:05:24.000000000 -0500
++++ misc/build/Python-2.7.8/Include/pyport.h 2016-01-01 17:49:55.171717963 -0500
+@@ -9,6 +9,30 @@
+ #include <inttypes.h>
+ #endif
+
++#if defined(__MINGW32__)
++#undef HAVE_FORKPTY
++#undef HAVE_OPENPTY
++#undef HAVE_DEV_PTMX
++#undef _POSIX_THREADS
++#undef HAVE_PTHREAD_H
++#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
++#ifdef socklen_t
++#undef socklen_t
++#endif
++#define HAVE_ADDRINFO
++#define HAVE_GETADDRINFO
++#define HAVE_GETNAMEINFO
++#define HAVE_GETPEERNAME
++#endif
++
+ #ifdef HAVE_STDINT_H
+ #include <stdint.h>
+ #endif
+diff -ru misc/Python-2.7.8/Lib/distutils/ccompiler.py misc/build/Python-2.7.8/Lib/distutils/ccompiler.py
+--- misc/Python-2.7.8/Lib/distutils/ccompiler.py 2014-06-29 21:05:25.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/distutils/ccompiler.py 2016-01-01 17:49:55.172717391 -0500
+@@ -895,6 +895,7 @@
+ # on a cygwin built python we can use gcc like an ordinary UNIXish
+ # compiler
+ ('cygwin.*', 'unix'),
++ ('winmingw*', 'unix'),
+ ('os2emx', 'emx'),
+
+ # OS name mappings
+diff -ru misc/Python-2.7.8/Lib/distutils/command/build_ext.py misc/build/Python-2.7.8/Lib/distutils/command/build_ext.py
+--- misc/Python-2.7.8/Lib/distutils/command/build_ext.py 2014-06-29 21:05:25.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/distutils/command/build_ext.py 2016-01-01 17:49:55.173717798 -0500
+@@ -221,7 +221,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",
+@@ -723,7 +723,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))
+diff -ru misc/Python-2.7.8/Lib/distutils/command/install.py misc/build/Python-2.7.8/Lib/distutils/command/install.py
+--- misc/Python-2.7.8/Lib/distutils/command/install.py 2014-06-29 21:05:25.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/distutils/command/install.py 2016-01-01 17:49:55.174717925 -0500
+@@ -348,9 +348,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
+@@ -362,7 +363,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')
+
+@@ -501,7 +502,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):
+diff -ru misc/Python-2.7.8/Lib/distutils/spawn.py misc/build/Python-2.7.8/Lib/distutils/spawn.py
+--- misc/Python-2.7.8/Lib/distutils/spawn.py 2014-06-29 21:05:26.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/distutils/spawn.py 2016-01-01 17:49:55.175718681 -0500
+@@ -212,7 +212,7 @@
+ paths = path.split(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):
+diff -ru misc/Python-2.7.8/Lib/distutils/sysconfig.py misc/build/Python-2.7.8/Lib/distutils/sysconfig.py
+--- misc/Python-2.7.8/Lib/distutils/sysconfig.py 2014-06-29 21:05:26.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/distutils/sysconfig.py 2016-01-01 17:49:55.175718681 -0500
+@@ -449,6 +449,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:
+diff -ru misc/Python-2.7.8/Lib/distutils/unixccompiler.py misc/build/Python-2.7.8/Lib/distutils/unixccompiler.py
+--- misc/Python-2.7.8/Lib/distutils/unixccompiler.py 2014-06-29 21:05:26.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/distutils/unixccompiler.py 2016-01-01 17:49:55.176718668 -0500
+@@ -80,7 +80,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,
+diff -ru misc/Python-2.7.8/Lib/os.py misc/build/Python-2.7.8/Lib/os.py
+--- misc/Python-2.7.8/Lib/os.py 2014-06-29 21:05:30.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/os.py 2016-01-01 17:49:55.177718586 -0500
+@@ -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 *
+diff -ru misc/Python-2.7.8/Lib/socket.py misc/build/Python-2.7.8/Lib/socket.py
+--- misc/Python-2.7.8/Lib/socket.py 2014-06-29 21:05:30.000000000 -0500
++++ misc/build/Python-2.7.8/Lib/socket.py 2016-01-01 17:49:55.178717595 -0500
+@@ -153,7 +153,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":
+diff -ru misc/Python-2.7.8/Makefile.pre.in misc/build/Python-2.7.8/Makefile.pre.in
+--- misc/Python-2.7.8/Makefile.pre.in 2014-06-29 21:05:39.000000000 -0500
++++ misc/build/Python-2.7.8/Makefile.pre.in 2016-01-01 17:49:55.179718421 -0500
+@@ -121,6 +121,16 @@
+ BLDSHARED= @BLDSHARED@ $(LDFLAGS)
+ LDCXXSHARED= @LDCXXSHARED@
+ 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@
+@@ -211,7 +221,7 @@
+ # Modules
+ MODULE_OBJS= \
+ Modules/config.o \
+- Modules/getpath.o \
++ @GETPATH_OBJS@ \
+ Modules/main.o \
+ Modules/gcmodule.o
+
+@@ -586,6 +596,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
+
+@@ -634,6 +648,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 \
+@@ -829,7 +849,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`; \
+@@ -837,7 +861,11 @@
+ fi; \
+ done
+
++ifeq (@MACHDEP@,winmingw32)
++$(DESTSHAREDFORRULES):
++else
+ $(DESTSHARED):
++endif
+ @for i in $(DESTDIRS); \
+ do \
+ if test ! -d $(DESTDIR)$$i; then \
+@@ -949,7 +977,11 @@
+ unittest unittest/test \
+ lib-old \
+ curses pydoc_data $(MACHDEPS)
++ifeq (@MACHDEP@,winmingw32)
++libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c sharedinstall
++else
+ libinstall: build_all $(srcdir)/Lib/$(PLATDIR) $(srcdir)/Modules/xxmodule.c
++endif
+ @for i in $(SCRIPTDIR) $(LIBDEST); \
+ do \
+ if test ! -d $(DESTDIR)$$i; then \
+@@ -1009,6 +1041,26 @@
+ $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \
+ $(DESTDIR)$(LIBDEST)/distutils/tests ; \
+ fi
++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) \
+ $(PYTHON_FOR_BUILD) -Wi -tt $(DESTDIR)$(LIBDEST)/compileall.py \
+ -d $(LIBDEST) -f \
+@@ -1035,6 +1087,7 @@
+ # 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="$(srcdir)/Lib:$(abs_builddir)/`cat pybuilddir.txt`"; \
+@@ -1048,6 +1101,7 @@
+ PYTHON_FOR_BUILD="$(PYTHON_FOR_BUILD)"; \
+ fi; \
+ cd $(srcdir)/Lib/$(PLATDIR); $(RUNSHARED) ./regen
++endif
+
+ python-config: $(srcdir)/Misc/python-config.in
+ # Substitution happens here, as the completely-expanded BINDIR
+@@ -1141,6 +1195,15 @@
+
+ # 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: sharedmods
+ $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \
+ --prefix=$(prefix) \
+@@ -1148,6 +1211,7 @@
+ --install-platlib=$(DESTSHARED) \
+ --root=$(DESTDIR)/
+ -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata.py*
++endif
+
+ # Here are a couple of targets for MacOSX again, to install a full
+ # framework-based Python. frameworkinstall installs everything, the
+diff -ru misc/Python-2.7.8/Modules/Setup.config.in misc/build/Python-2.7.8/Modules/Setup.config.in
+--- misc/Python-2.7.8/Modules/Setup.config.in 2014-06-29 21:05:40.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/Setup.config.in 2016-01-01 17:49:55.179718421 -0500
+@@ -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.
+diff -ru misc/Python-2.7.8/Modules/Setup.dist misc/build/Python-2.7.8/Modules/Setup.dist
+--- misc/Python-2.7.8/Modules/Setup.dist 2014-06-29 21:05:40.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/Setup.dist 2016-01-01 17:49:55.180717640 -0500
+@@ -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
+diff -ru misc/Python-2.7.8/Modules/_ctypes/libffi/configure misc/build/Python-2.7.8/Modules/_ctypes/libffi/configure
+--- misc/Python-2.7.8/Modules/_ctypes/libffi/configure 2014-06-29 21:05:40.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/_ctypes/libffi/configure 2016-01-01 17:49:55.235718066 -0500
+@@ -14855,6 +14855,12 @@
+ 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"
+diff -ru misc/Python-2.7.8/Modules/_ctypes/libffi/configure.ac misc/build/Python-2.7.8/Modules/_ctypes/libffi/configure.ac
+--- misc/Python-2.7.8/Modules/_ctypes/libffi/configure.ac 2014-06-29 21:05:40.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/_ctypes/libffi/configure.ac 2016-01-01 17:49:55.236718053 -0500
+@@ -564,6 +564,12 @@
+ fi
+ AC_SUBST(toolexeclibdir)
+
++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
+diff -ru misc/Python-2.7.8/Modules/_ctypes/libffi/include/ffi.h.in misc/build/Python-2.7.8/Modules/_ctypes/libffi/include/ffi.h.in
+--- misc/Python-2.7.8/Modules/_ctypes/libffi/include/ffi.h.in 2014-06-29 21:05:40.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/_ctypes/libffi/include/ffi.h.in 2016-01-01 17:49:55.236718053 -0500
+@@ -428,7 +428,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);
+diff -ru misc/Python-2.7.8/Modules/config.c.in misc/build/Python-2.7.8/Modules/config.c.in
+--- misc/Python-2.7.8/Modules/config.c.in 2014-06-29 21:05:42.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/config.c.in 2016-01-01 17:49:55.237718460 -0500
+@@ -48,6 +48,9 @@
+ {"__builtin__", NULL},
+ {"sys", NULL},
+ {"exceptions", NULL},
++#ifdef __MINGW32__
++ {"winmingw32", NULL},
++#endif
+
+ /* This lives in gcmodule.c */
+ {"gc", initgc},
+diff -ru misc/Python-2.7.8/Modules/posixmodule.c misc/build/Python-2.7.8/Modules/posixmodule.c
+--- misc/Python-2.7.8/Modules/posixmodule.c 2014-06-29 21:05:43.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/posixmodule.c 2016-01-01 17:49:55.241719248 -0500
+@@ -132,6 +132,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 */
+@@ -157,6 +166,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__ */
+@@ -277,6 +287,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 */
+@@ -575,7 +593,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 */
+
+@@ -994,7 +1012,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, time_t *time_out, int* nsec_out)
+@@ -1514,7 +1532,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.
+diff -ru misc/Python-2.7.8/Modules/socketmodule.c misc/build/Python-2.7.8/Modules/socketmodule.c
+--- misc/Python-2.7.8/Modules/socketmodule.c 2014-06-29 21:05:43.000000000 -0500
++++ misc/build/Python-2.7.8/Modules/socketmodule.c 2016-01-01 17:49:55.244718023 -0500
+@@ -313,7 +313,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
+
+diff -ru misc/Python-2.7.8/PC/_winreg.c misc/build/Python-2.7.8/PC/_winreg.c
+--- misc/Python-2.7.8/PC/_winreg.c 2014-06-29 21:05:46.000000000 -0500
++++ misc/build/Python-2.7.8/PC/_winreg.c 2016-01-01 17:49:55.246717928 -0500
+@@ -1790,6 +1790,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)
+ {
+diff -ru misc/Python-2.7.8/Python/dynload_win.c misc/build/Python-2.7.8/Python/dynload_win.c
+--- misc/Python-2.7.8/Python/dynload_win.c 2014-06-29 21:05:47.000000000 -0500
++++ misc/build/Python-2.7.8/Python/dynload_win.c 2016-01-01 17:49:55.246717928 -0500
+@@ -28,6 +28,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;
+@@ -41,6 +42,7 @@
+
+ return (first - second);
+ }
++#endif
+
+
+ /* Function to return the name of the "python" DLL that the supplied module
+diff -ru misc/Python-2.7.8/Python/frozenmain.c misc/build/Python-2.7.8/Python/frozenmain.c
+--- misc/Python-2.7.8/Python/frozenmain.c 2014-06-29 21:05:47.000000000 -0500
++++ misc/build/Python-2.7.8/Python/frozenmain.c 2016-01-01 17:49:55.247717915 -0500
+@@ -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
++#ifdef MS_WINDOWS && !defined(__MINGW32__)
+ PyInitFrozenExtensions();
+ #endif /* MS_WINDOWS */
+ Py_SetProgramName(argv[0]);
+ Py_Initialize();
+-#ifdef MS_WINDOWS
++#ifdef 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
++#ifdef MS_WINDOWS && !defined(__MINGW32__)
+ PyWinFreeze_ExeTerm();
+ #endif
+ Py_Finalize();
+diff -ru misc/Python-2.7.8/configure misc/build/Python-2.7.8/configure
+--- misc/Python-2.7.8/configure 2014-06-29 21:05:48.000000000 -0500
++++ misc/build/Python-2.7.8/configure 2016-01-01 17:49:55.307717091 -0500
+@@ -637,8 +637,10 @@
+ LIBOBJS
+ TRUE
+ MACHDEP_OBJS
++GETPATH_OBJS
+ DYNLOADFILE
+ DLINCLDIR
++USE_PASSWORD_MODULE
+ THREADOBJ
+ LDLAST
+ USE_THREAD_MODULE
+@@ -3359,6 +3361,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
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MACHDEP" >&5
+ $as_echo "$MACHDEP" >&6; }
+
+@@ -5272,7 +5281,7 @@
+ if test -z "$enable_shared"
+ then
+ case $ac_sys_system in
+- CYGWIN* | atheos*)
++ CYGWIN* | MINGW* | atheos*)
+ enable_shared="yes";;
+ *)
+ enable_shared="no";;
+@@ -5341,7 +5350,7 @@
+ BeOS*)
+ LDLIBRARY='libpython$(VERSION).so'
+ ;;
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ LDLIBRARY='libpython$(VERSION).dll.a'
+ DLLLIBRARY='libpython$(VERSION).dll'
+ ;;
+@@ -5397,7 +5406,7 @@
+ esac
+ else # shared is disabled
+ case $ac_sys_system in
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ BLDLIBRARY='$(LIBRARY)'
+ LDLIBRARY='libpython$(VERSION).dll.a'
+ ;;
+@@ -7812,6 +7821,10 @@
+
+
+
++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'`
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable large file support" >&5
+ $as_echo_n "checking whether to enable large file support... " >&6; }
+ if test "$have_long_long" = yes
+@@ -8128,7 +8141,7 @@
+ *) SO=.sl;;
+ esac
+ ;;
+- CYGWIN*) SO=.dll;;
++ CYGWIN* | MINGW*) SO=.dll;;
+ *) SO=.so;;
+ esac
+ else
+@@ -8292,7 +8305,7 @@
+ SCO_SV*)
+ LDSHARED='$(CC) -Wl,-G,-Bexport'
+ LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
+ LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
+ atheos*)
+@@ -8388,7 +8401,7 @@
+ LINKFORSHARED="-Xlinker --export-dynamic"
+ fi;;
+ esac;;
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ if test $enable_shared = "no"
+ then
+ LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
+@@ -8412,7 +8425,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='';;
+@@ -9663,7 +9676,7 @@
+ #define HAVE_PTHREAD_SIGMASK 1
+ _ACEOF
+ case $ac_sys_system in
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+
+ $as_echo "#define HAVE_BROKEN_PTHREAD_SIGMASK 1" >>confdefs.h
+
+@@ -9686,6 +9699,17 @@
+ fi
+
+
++case $MACHDEP in
++winmingw*)
++ THREADOBJ="Python/thread.o"
++ USE_THREAD_MODULE="#"
++ USE_PASSWORD_MODULE="#"
++ ;;
++*)
++ USE_PASSWORD_MODULE=""
++ ;;
++esac
++
+ # Check for enable-ipv6
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if --enable-ipv6 is specified" >&5
+@@ -10120,6 +10144,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
+@@ -10139,6 +10168,21 @@
+
+ fi
+
++
++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking GETPATH_OBJS" >&5
++$as_echo_n "checking GETPATH_OBJS... " >&6; }
++if test -z "$GETPATH_OBJS"
++then
++ case $MACHDEP in
++ winmingw*)
++ GETPATH_OBJS='PC/getpathp.o';;
++ *)
++ GETPATH_OBJS='Modules/getpath.o';;
++ esac
++fi
++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $GETPATH_OBJS" >&5
++$as_echo "$GETPATH_OBJS" >&6; }
++
+ # MACHDEP_OBJS can be set to platform-specific object files needed by Python
+
+
+@@ -11737,6 +11781,20 @@
+
+ fi
+
++case $MACHDEP in
++winmingw*)
++ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
++if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
++
++cat >>confdefs.h <<_ACEOF
++#define HAVE_STRUCT_STAT_ST_BLOCKS 1
++_ACEOF
++
++
++fi
++
++;;
++*)
+ ac_fn_c_check_member "$LINENO" "struct stat" "st_blocks" "ac_cv_member_struct_stat_st_blocks" "$ac_includes_default"
+ if test "x$ac_cv_member_struct_stat_st_blocks" = xyes; then :
+
+@@ -11757,6 +11815,8 @@
+ fi
+
+
++;;
++esac
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for time.h that defines altzone" >&5
+ $as_echo_n "checking for time.h that defines altzone... " >&6; }
+@@ -13140,6 +13200,7 @@
+
+
+
++ac_cv_sizeof_wchar_t=`echo $ac_cv_sizeof_wchar_t | tr -d '\015'`
+
+ if test "$enable_unicode" = "no"
+ then
+diff -ru misc/Python-2.7.8/configure.ac misc/build/Python-2.7.8/configure.ac
+--- misc/Python-2.7.8/configure.ac 2014-06-29 21:05:48.000000000 -0500
++++ misc/build/Python-2.7.8/configure.ac 2016-01-01 17:49:55.310717403 -0500
+@@ -488,6 +488,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
+@@ -821,7 +828,7 @@
+ if test -z "$enable_shared"
+ then
+ case $ac_sys_system in
+- CYGWIN* | atheos*)
++ CYGWIN* | MINGW* | atheos*)
+ enable_shared="yes";;
+ *)
+ enable_shared="no";;
+@@ -873,7 +880,7 @@
+ BeOS*)
+ LDLIBRARY='libpython$(VERSION).so'
+ ;;
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ LDLIBRARY='libpython$(VERSION).dll.a'
+ DLLLIBRARY='libpython$(VERSION).dll'
+ ;;
+@@ -929,7 +936,7 @@
+ esac
+ else # shared is disabled
+ case $ac_sys_system in
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ BLDLIBRARY='$(LIBRARY)'
+ LDLIBRARY='libpython$(VERSION).dll.a'
+ ;;
+@@ -1711,6 +1718,10 @@
+ #endif
+ ])
+
++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
+ then
+@@ -1916,7 +1927,7 @@
+ *) SO=.sl;;
+ esac
+ ;;
+- CYGWIN*) SO=.dll;;
++ CYGWIN* | MINGW*) SO=.dll;;
+ *) SO=.so;;
+ esac
+ else
+@@ -2074,7 +2085,7 @@
+ SCO_SV*)
+ LDSHARED='$(CC) -Wl,-G,-Bexport'
+ LDCXXSHARED='$(CXX) -Wl,-G,-Bexport';;
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ LDSHARED="gcc -shared -Wl,--enable-auto-image-base"
+ LDCXXSHARED="g++ -shared -Wl,--enable-auto-image-base";;
+ atheos*)
+@@ -2166,7 +2177,7 @@
+ LINKFORSHARED="-Xlinker --export-dynamic"
+ fi;;
+ esac;;
+- CYGWIN*)
++ CYGWIN* | MINGW*)
+ if test $enable_shared = "no"
+ then
+ LINKFORSHARED='-Wl,--out-implib=$(LDLIBRARY)'
+@@ -2188,7 +2199,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='';;
+@@ -2598,7 +2609,7 @@
+ 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.])
+ ;;
+@@ -2606,6 +2617,17 @@
+ AC_CHECK_FUNCS(pthread_atfork)
+ 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])
+@@ -2877,6 +2899,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
+@@ -2894,6 +2921,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)
+@@ -3355,7 +3395,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,[
+@@ -3976,6 +4023,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
+diff -ru misc/Python-2.7.8/setup.py misc/build/Python-2.7.8/setup.py
+--- misc/Python-2.7.8/setup.py 2014-06-29 21:05:48.000000000 -0500
++++ misc/build/Python-2.7.8/setup.py 2016-01-01 17:49:55.312719892 -0500
+@@ -285,6 +285,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:
+@@ -314,7 +326,7 @@
+
+ # Workaround for Cygwin: Cygwin currently has fork issues when many
+ # modules have been imported
+- if host_platform == 'cygwin':
++ if host_platform in ['cygwin', 'winmingw']:
+ self.announce('WARNING: skipping import check for Cygwin-based "%s"'
+ % ext.name)
+ return
+@@ -1233,7 +1245,7 @@
+
+ dbm_order = ['gdbm']
+ # The standard Unix dbm module:
+- if host_platform not in ['cygwin']:
++ if host_platform not in ['cygwin', 'winmingw']:
+ config_args = [arg.strip("'")
+ for arg in sysconfig.get_config_var("CONFIG_ARGS").split()]
+ dbm_args = [arg for arg in config_args
+@@ -1325,7 +1337,7 @@
+ missing.append('resource')
+
+ # Sun yellow pages. Some systems have the functions in libc.
+- if (host_platform not in ['cygwin', 'atheos', 'qnx6'] and
++ if (host_platform not in ['cygwin', 'winmingw', 'atheos', 'qnx6'] and
+ find_file('rpcsvc/yp_prot.h', inc_dirs, []) is not None):
+ if (self.compiler.find_library_file(lib_dirs, 'nsl')):
+ libs = ['nsl']
+@@ -1547,7 +1559,7 @@
+ macros = dict()
+ libraries = []
+
+- elif host_platform == 'cygwin': # Cygwin
++ elif host_platform == 'cygwin', 'winmingw': # Cygwin
+ macros = dict()
+ libraries = []
+
+@@ -1569,7 +1581,7 @@
+ macros = dict()
+ libraries = ['rt']
+
+- if host_platform == 'win32':
++ if host_platform in ['win32', 'winmingw']:
+ multiprocessing_srcs = [ '_multiprocessing/multiprocessing.c',
+ '_multiprocessing/semaphore.c',
+ '_multiprocessing/pipe_connection.c',
+@@ -1588,6 +1600,7 @@
+ if sysconfig.get_config_var('WITH_THREAD'):
+ exts.append ( Extension('_multiprocessing', multiprocessing_srcs,
+ define_macros=macros.items(),
++ libraries=libraries,
+ include_dirs=["Modules/_multiprocessing"]))
+ else:
+ missing.append('_multiprocessing')
+@@ -1721,6 +1734,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
+@@ -1930,7 +1947,7 @@
+ added_lib_dirs.append('/usr/X11/lib')
+
+ # If Cygwin, then verify that X is installed before proceeding
+- if host_platform == 'cygwin':
++ if host_platform in ['cygwin', 'winmingw']:
+ x11_inc = find_file('X11/Xlib.h', [], include_dirs)
+ if x11_inc is None:
+ return
+@@ -1953,7 +1970,7 @@
+ libs.append('ld')
+
+ # Finally, link with the X11 libraries (not appropriate on cygwin)
+- if host_platform != "cygwin":
++ if not host_platform in ["cygwin", "winmingw"]:
+ libs.append('X11')
+
+ ext = Extension('_tkinter', ['_tkinter.c', 'tkappinit.c'],
+@@ -2023,6 +2040,8 @@
+ if (('--host=' in arg) or ('--build=' in arg))]
+ if not self.verbose:
+ config_args.append("-q")
++ 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.
Added: openoffice/trunk/main/python/python-2.7.8-nohardlink.patch
URL: http://svn.apache.org/viewvc/openoffice/trunk/main/python/python-2.7.8-nohardlink.patch?rev=1722635&view=auto
==============================================================================
--- openoffice/trunk/main/python/python-2.7.8-nohardlink.patch (added)
+++ openoffice/trunk/main/python/python-2.7.8-nohardlink.patch Sat Jan 2 15:17:18 2016
@@ -0,0 +1,11 @@
+--- misc/Python-2.7.8/Makefile.pre.in 2012-04-09 18:07:33.000000000 -0500
++++ misc/build/Python-2.7.8/Makefile.pre.in 2012-07-22 14:54:26.000000000 -0500
+@@ -478,7 +478,7 @@
+ libpython$(VERSION).so: $(LIBRARY_OBJS)
+ if test $(INSTSONAME) != $(LDLIBRARY); then \
+ $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
+- $(LN) -f $(INSTSONAME) $@; \
++ $(LN) -fs $(INSTSONAME) $@; \
+ else \
+ $(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) $(LDLAST); \
+ fi