From e6ba8ccfcc2b7920ff4b41a022ffdac05cf91a63 Mon Sep 17 00:00:00 2001 From: Ray Donnelly Date: Tue, 29 Dec 2015 03:56:12 +0000 Subject: [PATCH] python2: Fix --with-pydebug --- .../0840-add-builddir-to-library_dirs.patch | 5 +-- ...ler-lib-dirs-from-extension-lib-dirs.patch | 26 +++++++++++ mingw-w64-python2/PKGBUILD | 43 +++++++++++-------- 3 files changed, 53 insertions(+), 21 deletions(-) create mode 100644 mingw-w64-python2/0845-Remove-compiler-lib-dirs-from-extension-lib-dirs.patch diff --git a/mingw-w64-python2/0840-add-builddir-to-library_dirs.patch b/mingw-w64-python2/0840-add-builddir-to-library_dirs.patch index c2f958418d..8959aa02a5 100644 --- a/mingw-w64-python2/0840-add-builddir-to-library_dirs.patch +++ b/mingw-w64-python2/0840-add-builddir-to-library_dirs.patch @@ -1,12 +1,11 @@ diff -Naur Python-2.7.9-orig/setup.py Python-2.7.9/setup.py --- Python-2.7.9-orig/setup.py 2014-12-11 13:51:17.891000000 +0300 +++ Python-2.7.9/setup.py 2014-12-11 13:51:18.015800000 +0300 -@@ -272,6 +272,9 @@ +@@ -272,6 +272,8 @@ args['compiler_so'] = compiler + ' ' + ccshared + ' ' + cflags self.compiler.set_executables(**args) -+ if host_platform not in ['mingw', 'win32']: -+ self.compiler.library_dirs.insert(0, '.') ++ self.compiler.library_dirs.insert(0, '.') + build_ext.build_extensions(self) diff --git a/mingw-w64-python2/0845-Remove-compiler-lib-dirs-from-extension-lib-dirs.patch b/mingw-w64-python2/0845-Remove-compiler-lib-dirs-from-extension-lib-dirs.patch new file mode 100644 index 0000000000..4762b0abfc --- /dev/null +++ b/mingw-w64-python2/0845-Remove-compiler-lib-dirs-from-extension-lib-dirs.patch @@ -0,0 +1,26 @@ +--- Python-2.7.10/setup.py.orig 2015-12-28 12:34:14.075841800 +0000 ++++ Python-2.7.10/setup.py 2015-12-28 15:47:57.770679100 +0000 +@@ -1731,6 +1731,23 @@ + if '_tkinter' not in [e.name for e in self.extensions]: + missing.append('_tkinter') + ++ # Remove any extensions.library_dirs that are also in compiler.library_dirs ++ # Rationale: It's wrong. Ok, better. The compiler.library_dirs appear first ++ # in the link command line and (finally, not yet) include "." which ++ # causes the build dir to be searched in for -lpython2.7 before ++ # $sysroot/lib. This is necessary as otherwise the old python import ++ # library is used instead of the new one. This affects sqlite (and ++ # some others). I could go into fixing these individually .. but I ++ # worry I'll be back here in 6 months fixing the same bug again if ++ # I do for some other module(s) in Python 2.7.12. In our case, ++ # C:/msys64/mingw64/lib was turning up as that's where libsqlite was ++ # and this prevented me from switching from an installed release to ++ # an new debug Python. We should be building in clean sysroots but ++ # that's another matter really. ++ for ext in self.extensions: ++ ext.library_dirs = [dir for dir in ext.library_dirs ++ if dir not in self.compiler.library_dirs] ++ + ## # Uncomment these lines if you want to play with xxmodule.c + ## ext = Extension('xx', ['xxmodule.c']) + ## self.extensions.append(ext) diff --git a/mingw-w64-python2/PKGBUILD b/mingw-w64-python2/PKGBUILD index c107c12371..66a6e50196 100644 --- a/mingw-w64-python2/PKGBUILD +++ b/mingw-w64-python2/PKGBUILD @@ -1,11 +1,11 @@ # Maintainer: Alexey Pavlov -# Contributor: Ray Donnelly +# Maintainer: Ray Donnelly # Contributor: Saul Ibarra Corretge _realname=python2 pkgname="${MINGW_PACKAGE_PREFIX}-${_realname}" pkgver=2.7.10 -pkgrel=5 +pkgrel=6 _pybasever=${pkgver%.*} pkgdesc="A high-level scripting language (mingw-w64)" arch=('any') @@ -24,7 +24,7 @@ depends=("${MINGW_PACKAGE_PREFIX}-gcc-libs" "${MINGW_PACKAGE_PREFIX}-zlib" ) makedepends=("${MINGW_PACKAGE_PREFIX}-gcc" "${MINGW_PACKAGE_PREFIX}-pkg-config") -options=('!makeflags' 'staticlibs' 'strip' '!debug') +options=('!makeflags') # 'debug' '!strip') source=("http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz" 0000-make-_sysconfigdata.py-relocatable.patch 0100-MINGW-BASE-use-NT-thread-model.patch @@ -93,6 +93,7 @@ source=("http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz" 0820-mingw-reorder-bininstall-ln-symlink-creation.patch 0830-add-build-sysroot-config-option.patch 0840-add-builddir-to-library_dirs.patch + 0845-Remove-compiler-lib-dirs-from-extension-lib-dirs.patch 0850-cross-PYTHON_FOR_BUILD-gteq-276-and-fullpath-it.patch 0855-mingw-fix-ssl-dont-use-enum_certificates.patch 0860-mingw-build-optimized-ext.patch @@ -187,6 +188,7 @@ prepare() { patch -p1 -i "${srcdir}"/0820-mingw-reorder-bininstall-ln-symlink-creation.patch patch -p1 -i "${srcdir}"/0830-add-build-sysroot-config-option.patch patch -p1 -i "${srcdir}"/0840-add-builddir-to-library_dirs.patch + patch -p1 -i "${srcdir}"/0845-Remove-compiler-lib-dirs-from-extension-lib-dirs.patch patch -p1 -i "${srcdir}"/0850-cross-PYTHON_FOR_BUILD-gteq-276-and-fullpath-it.patch patch -p1 -i "${srcdir}"/0855-mingw-fix-ssl-dont-use-enum_certificates.patch patch -p1 -i "${srcdir}"/0860-mingw-build-optimized-ext.patch @@ -235,6 +237,7 @@ prepare() { } build() { + declare -a extra_config local PREFIX_WIN=$(cygpath -wm ${MINGW_PREFIX}) CFLAGS+=" -fwrapv -D__USE_MINGW_ANSI_STDIO=1 " @@ -244,15 +247,16 @@ build() { if check_option "strip" "y"; then LDFLAGS+=" -s " fi + + # Most of this is unnecessary, perhaps just + # the extra_config bit? if check_option "debug" "n"; then CFLAGS+=" -DNDEBUG " CXXFLAGS+=" -DNDEBUG " else - plain " -DDEBUG -DPy_DEBUG -D_DEBUG does not work unfortunately .." - # CFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG " - # CXXFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG " - CFLAGS+=" -O0 -ggdb" - CXXFLAGS+=" -O0 -ggdb" + CFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG " + CXXFLAGS+=" -DDEBUG -DPy_DEBUG -D_DEBUG " + extra_config+=("--with-pydebug") fi local LIBFFI_INC=`${MINGW_PREFIX}/bin/pkg-config libffi --cflags-only-I | sed "s|\-I||g"` @@ -272,15 +276,16 @@ build() { --with-threads \ --with-system-expat \ --with-system-ffi \ + "${extra_config[@]}" \ OPT="" #--with-dbmliborder='gdbm:ndbm' make } -check() { - cd "${srcdir}/build-${CARCH}" - make test -} +#check() { +# cd "${srcdir}/build-${CARCH}" +# make test +#} package() { cd "${srcdir}/build-${CARCH}" @@ -288,18 +293,19 @@ package() { MSYSTEM=MINGW \ MSYS2_ARG_CONV_EXCL="--prefix=;--install-scripts=;--install-platlib=" \ - make install DESTDIR="$pkgdir" + make install DESTDIR="${pkgdir}" mv "${pkgdir}${MINGW_PREFIX}"/bin/smtpd.py "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/ - # gdb pretty printers for debugging Python itself; to use: + # gdb support for debugging Python itself (needs options='debug', + # *may* work better on i686 due to frame pointer always being available) to use: # python # sys.path.append('C:/msys64/mingw64/share/gdb/python2') - # import python-gdb - # reload(python-gdb) + # import python_gdb + # reload(python_gdb) # end [[ -d "${pkgdir}${MINGW_PREFIX}"/share/gdb/python2/ ]] || mkdir -p "${pkgdir}${MINGW_PREFIX}"/share/gdb/python2/ - cp -f python.exe-gdb.py "${pkgdir}${MINGW_PREFIX}"/share/gdb/python2/python-gdb.py + cp -f python.exe-gdb.py "${pkgdir}${MINGW_PREFIX}"/share/gdb/python2/python_gdb.py # Copy python import library to $prefix/lib because some programs can't find it in other locations cp -f "${pkgdir}${MINGW_PREFIX}"/lib/python${_pybasever}/config/libpython${_pybasever}.dll.a "${pkgdir}${MINGW_PREFIX}"/lib/libpython${_pybasever}.dll.a @@ -420,7 +426,8 @@ sha1sums=('ee5a50c5562e7448f037d35fdedc18d95c748b9e' '23c0bcdb082006d6bde3eb9fc72044272c7a08f3' 'fbefe2d0d2d4c9f995c9c49a66c93071587b7045' '15e055c4cce32a0c1940953062fd2db7c22364c4' - 'f0f5efb98c610d0caf3ccbf0850460af49f92c96' + '731ac1d1e54af3906d836a6595cb3a76ce165260' + '415ae19daf7dddc8db20009f2c708b900822e6b4' '78b039f8ab595750b2f7aee3e2fc6d7a466a5c9c' 'aa295dd8c4f60b70c61753fc4be9c8ff50101577' 'de01d87f5070992f305d5375da1deb69f80ea8bb'