Date: Saturday, April 7, 2012 @ 12:18:57 Author: stephane Revision: 155847
archrelease: copy trunk to testing-i686, testing-x86_64 Added: python2/repos/testing-i686/ python2/repos/testing-i686/13156-revert-tls-changeset-subinterpreter.patch (from rev 155846, python2/trunk/13156-revert-tls-changeset-subinterpreter.patch) python2/repos/testing-i686/PKGBUILD (from rev 155846, python2/trunk/PKGBUILD) python2/repos/testing-i686/gdbm-magic-values.patch (from rev 155846, python2/trunk/gdbm-magic-values.patch) python2/repos/testing-i686/linux2.patch (from rev 155846, python2/trunk/linux2.patch) python2/repos/testing-x86_64/ python2/repos/testing-x86_64/13156-revert-tls-changeset-subinterpreter.patch (from rev 155846, python2/trunk/13156-revert-tls-changeset-subinterpreter.patch) python2/repos/testing-x86_64/PKGBUILD (from rev 155846, python2/trunk/PKGBUILD) python2/repos/testing-x86_64/gdbm-magic-values.patch (from rev 155846, python2/trunk/gdbm-magic-values.patch) python2/repos/testing-x86_64/linux2.patch (from rev 155846, python2/trunk/linux2.patch) ----------------------------------------------------------------+ testing-i686/13156-revert-tls-changeset-subinterpreter.patch | 61 ++++++ testing-i686/PKGBUILD | 101 ++++++++++ testing-i686/gdbm-magic-values.patch | 12 + testing-i686/linux2.patch | 23 ++ testing-x86_64/13156-revert-tls-changeset-subinterpreter.patch | 61 ++++++ testing-x86_64/PKGBUILD | 101 ++++++++++ testing-x86_64/gdbm-magic-values.patch | 12 + testing-x86_64/linux2.patch | 23 ++ 8 files changed, 394 insertions(+) Copied: python2/repos/testing-i686/13156-revert-tls-changeset-subinterpreter.patch (from rev 155846, python2/trunk/13156-revert-tls-changeset-subinterpreter.patch) =================================================================== --- testing-i686/13156-revert-tls-changeset-subinterpreter.patch (rev 0) +++ testing-i686/13156-revert-tls-changeset-subinterpreter.patch 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,61 @@ + +# HG changeset patch +# User Charles-François Natali <neolo...@free.fr> +# Date 1318446474 -7200 +# Node ID ee4fe16d9b4822457ad855ea6c44e65030166304 +# Parent f6feed6ec3f9b024cecd0fd587595c403f55624f +Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native +TLS implementations, and fails with the ad-hoc TLS implementation when a thread +doesn't have an auto thread state (e.g. a thread created outside of Python +calling into a subinterpreter). + +diff --git a/Include/pystate.h b/Include/pystate.h +--- a/Include/pystate.h ++++ b/Include/pystate.h +@@ -111,7 +111,6 @@ PyAPI_FUNC(void) PyThreadState_Clear(PyT + PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *); + #ifdef WITH_THREAD + PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void); +-PyAPI_FUNC(void) _PyGILState_Reinit(void); + #endif + + PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void); +diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c +--- a/Modules/signalmodule.c ++++ b/Modules/signalmodule.c +@@ -976,7 +976,6 @@ void + PyOS_AfterFork(void) + { + #ifdef WITH_THREAD +- _PyGILState_Reinit(); + PyEval_ReInitThreads(); + main_thread = PyThread_get_thread_ident(); + main_pid = getpid(); +diff --git a/Python/pystate.c b/Python/pystate.c +--- a/Python/pystate.c ++++ b/Python/pystate.c +@@ -537,23 +537,6 @@ void + autoInterpreterState = NULL; + } + +-/* Reset the TLS key - called by PyOS_AfterFork. +- * This should not be necessary, but some - buggy - pthread implementations +- * don't flush TLS on fork, see issue #10517. +- */ +-void +-_PyGILState_Reinit(void) +-{ +- PyThreadState *tstate = PyGILState_GetThisThreadState(); +- PyThread_delete_key(autoTLSkey); +- if ((autoTLSkey = PyThread_create_key()) == -1) +- Py_FatalError("Could not allocate TLS entry"); +- +- /* re-associate the current thread state with the new key */ +- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0) +- Py_FatalError("Couldn't create autoTLSkey mapping"); +-} +- + /* When a thread state is created for a thread by some mechanism other than + PyGILState_Ensure, it's important that the GILState machinery knows about + it so it doesn't try to create another thread state for the thread (this is + Copied: python2/repos/testing-i686/PKGBUILD (from rev 155846, python2/trunk/PKGBUILD) =================================================================== --- testing-i686/PKGBUILD (rev 0) +++ testing-i686/PKGBUILD 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,101 @@ +# $Id$ +# Maintainer: Stéphane Gaudreault <steph...@archlinux.org> +# Contributer: Allan McRae <al...@archlinux.org> +# Contributer: Jason Chu <ja...@archlinux.org> + +pkgname=python2 +pkgver=2.7.2 +pkgrel=6 +_pybasever=2.7 +pkgdesc="A high-level scripting language" +arch=('i686' 'x86_64') +license=('PSF') +url="http://www.python.org/" +depends=('bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite' 'libffi') +makedepends=('tk') +optdepends=('tk: for IDLE') +conflicts=('python<3') +options=('!makeflags') +source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz + linux2.patch + gdbm-magic-values.patch + 13156-revert-tls-changeset-subinterpreter.patch) +sha1sums=('56700044141402dc35e7a0a24aa7ffda1a8c1a53' + '937c06190899a491d662c7918658313e7640070e' + 'ede2c991b1a91eec5a01cc2d3a11231f17d750ae' + 'd61fa2b8efd1d08a2ee8a9aed434dc94b8297d6b') + +build() { + cd "${srcdir}/Python-${pkgver}" + + # Temporary workaround for FS#22322 + # See http://bugs.python.org/issue10835 for upstream report + sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c + + # Enable built-in SQLite module to load extensions (fix FS#22122) + sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py + + # FS#23997 + sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py + + # Make sure sys.platform is set to linux2, even on kernel 3.X + # cf http://bugs.python.org/issue12326 + patch -Np1 -i ../linux2.patch + + # gdbm has new magic that whichdb does not recognize + # http://bugs.python.org/issue13007 + patch -Np1 -i ../gdbm-magic-values.patch + + # http://bugs.python.org/issue13156 + patch -Np1 -i ../13156-revert-tls-changeset-subinterpreter.patch + + # Ensure that we are using the system copy of various libraries (expat, zlib and libffi), + # rather than copies shipped in the tarball + rm -r Modules/expat + rm -r Modules/zlib + rm -r Modules/_ctypes/{darwin,libffi}* + + export OPT="${CFLAGS}" + ./configure --prefix=/usr --enable-shared --with-threads --enable-ipv6 \ + --enable-unicode=ucs4 --with-system-expat --with-system-ffi \ + --with-dbmliborder=gdbm:ndbm + + make MACHDEP=linux2 +} + +package() { + cd "${srcdir}/Python-${pkgver}" + make DESTDIR="${pkgdir}" altinstall maninstall + + ln -sf python${_pybasever} "${pkgdir}/usr/bin/python2" + ln -sf python${_pybasever}-config "${pkgdir}/usr/bin/python2-config" + ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python2.1" + + ln -sf ../../libpython${_pybasever}.so \ + "${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so" + + mv "${pkgdir}/usr/bin/smtpd.py" "${pkgdir}/usr/lib/python${_pybasever}/" + + # some useful "stuff" + install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts} + install -m755 Tools/i18n/{msgfmt,pygettext}.py \ + "${pkgdir}/usr/lib/python${_pybasever}/Tools/i18n/" + install -m755 Tools/scripts/{README,*py} \ + "${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/" + + # fix conflicts with python + mv "${pkgdir}"/usr/bin/idle{,2} + mv "${pkgdir}"/usr/bin/pydoc{,2} + mv "${pkgdir}"/usr/bin/2to3{,-2.7} + + # clean up #!s + find "${pkgdir}/usr/lib/python${_pybasever}/" -name '*.py' | \ + xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" + + # clean-up reference to build directory + sed -i "s#${srcdir}/Python-${pkgver}:##" \ + "${pkgdir}/usr/lib/python${_pybasever}/config/Makefile" + + # license + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} Copied: python2/repos/testing-i686/gdbm-magic-values.patch (from rev 155846, python2/trunk/gdbm-magic-values.patch) =================================================================== --- testing-i686/gdbm-magic-values.patch (rev 0) +++ testing-i686/gdbm-magic-values.patch 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,12 @@ +diff -up Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic Python-2.7.2/Lib/whichdb.py +--- Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic 2011-06-11 11:46:26.000000000 -0400 ++++ Python-2.7.2/Lib/whichdb.py 2011-09-30 15:45:21.778872290 -0400 +@@ -91,7 +91,7 @@ def whichdb(filename): + return "" + + # Check for GNU dbm +- if magic == 0x13579ace: ++ if magic in (0x13579ace, 0x13579acd, 0x13579acf): + return "gdbm" + + # Check for old Berkeley db hash file format v2 Copied: python2/repos/testing-i686/linux2.patch (from rev 155846, python2/trunk/linux2.patch) =================================================================== --- testing-i686/linux2.patch (rev 0) +++ testing-i686/linux2.patch 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,23 @@ +http://hg.python.org/cpython/rev/c816479f6aaf/ +diff --git a/configure b/configure +--- a/configure ++++ b/configure +@@ -2995,6 +2995,7 @@ then + MACHDEP="$ac_md_system$ac_md_release" + + case $MACHDEP in ++ linux*) MACHDEP="linux2";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + atheos*) MACHDEP="atheos";; +diff --git a/configure.in b/configure.in +--- a/configure.in ++++ b/configure.in +@@ -293,6 +293,7 @@ then + MACHDEP="$ac_md_system$ac_md_release" + + case $MACHDEP in ++ linux*) MACHDEP="linux2";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + atheos*) MACHDEP="atheos";; Copied: python2/repos/testing-x86_64/13156-revert-tls-changeset-subinterpreter.patch (from rev 155846, python2/trunk/13156-revert-tls-changeset-subinterpreter.patch) =================================================================== --- testing-x86_64/13156-revert-tls-changeset-subinterpreter.patch (rev 0) +++ testing-x86_64/13156-revert-tls-changeset-subinterpreter.patch 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,61 @@ + +# HG changeset patch +# User Charles-François Natali <neolo...@free.fr> +# Date 1318446474 -7200 +# Node ID ee4fe16d9b4822457ad855ea6c44e65030166304 +# Parent f6feed6ec3f9b024cecd0fd587595c403f55624f +Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native +TLS implementations, and fails with the ad-hoc TLS implementation when a thread +doesn't have an auto thread state (e.g. a thread created outside of Python +calling into a subinterpreter). + +diff --git a/Include/pystate.h b/Include/pystate.h +--- a/Include/pystate.h ++++ b/Include/pystate.h +@@ -111,7 +111,6 @@ PyAPI_FUNC(void) PyThreadState_Clear(PyT + PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *); + #ifdef WITH_THREAD + PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void); +-PyAPI_FUNC(void) _PyGILState_Reinit(void); + #endif + + PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void); +diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c +--- a/Modules/signalmodule.c ++++ b/Modules/signalmodule.c +@@ -976,7 +976,6 @@ void + PyOS_AfterFork(void) + { + #ifdef WITH_THREAD +- _PyGILState_Reinit(); + PyEval_ReInitThreads(); + main_thread = PyThread_get_thread_ident(); + main_pid = getpid(); +diff --git a/Python/pystate.c b/Python/pystate.c +--- a/Python/pystate.c ++++ b/Python/pystate.c +@@ -537,23 +537,6 @@ void + autoInterpreterState = NULL; + } + +-/* Reset the TLS key - called by PyOS_AfterFork. +- * This should not be necessary, but some - buggy - pthread implementations +- * don't flush TLS on fork, see issue #10517. +- */ +-void +-_PyGILState_Reinit(void) +-{ +- PyThreadState *tstate = PyGILState_GetThisThreadState(); +- PyThread_delete_key(autoTLSkey); +- if ((autoTLSkey = PyThread_create_key()) == -1) +- Py_FatalError("Could not allocate TLS entry"); +- +- /* re-associate the current thread state with the new key */ +- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0) +- Py_FatalError("Couldn't create autoTLSkey mapping"); +-} +- + /* When a thread state is created for a thread by some mechanism other than + PyGILState_Ensure, it's important that the GILState machinery knows about + it so it doesn't try to create another thread state for the thread (this is + Copied: python2/repos/testing-x86_64/PKGBUILD (from rev 155846, python2/trunk/PKGBUILD) =================================================================== --- testing-x86_64/PKGBUILD (rev 0) +++ testing-x86_64/PKGBUILD 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,101 @@ +# $Id$ +# Maintainer: Stéphane Gaudreault <steph...@archlinux.org> +# Contributer: Allan McRae <al...@archlinux.org> +# Contributer: Jason Chu <ja...@archlinux.org> + +pkgname=python2 +pkgver=2.7.2 +pkgrel=6 +_pybasever=2.7 +pkgdesc="A high-level scripting language" +arch=('i686' 'x86_64') +license=('PSF') +url="http://www.python.org/" +depends=('bzip2' 'gdbm' 'openssl' 'zlib' 'expat' 'sqlite' 'libffi') +makedepends=('tk') +optdepends=('tk: for IDLE') +conflicts=('python<3') +options=('!makeflags') +source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz + linux2.patch + gdbm-magic-values.patch + 13156-revert-tls-changeset-subinterpreter.patch) +sha1sums=('56700044141402dc35e7a0a24aa7ffda1a8c1a53' + '937c06190899a491d662c7918658313e7640070e' + 'ede2c991b1a91eec5a01cc2d3a11231f17d750ae' + 'd61fa2b8efd1d08a2ee8a9aed434dc94b8297d6b') + +build() { + cd "${srcdir}/Python-${pkgver}" + + # Temporary workaround for FS#22322 + # See http://bugs.python.org/issue10835 for upstream report + sed -i "/progname =/s/python/python${_pybasever}/" Python/pythonrun.c + + # Enable built-in SQLite module to load extensions (fix FS#22122) + sed -i "/SQLITE_OMIT_LOAD_EXTENSION/d" setup.py + + # FS#23997 + sed -i -e "s|^#.* /usr/local/bin/python|#!/usr/bin/python2|" Lib/cgi.py + + # Make sure sys.platform is set to linux2, even on kernel 3.X + # cf http://bugs.python.org/issue12326 + patch -Np1 -i ../linux2.patch + + # gdbm has new magic that whichdb does not recognize + # http://bugs.python.org/issue13007 + patch -Np1 -i ../gdbm-magic-values.patch + + # http://bugs.python.org/issue13156 + patch -Np1 -i ../13156-revert-tls-changeset-subinterpreter.patch + + # Ensure that we are using the system copy of various libraries (expat, zlib and libffi), + # rather than copies shipped in the tarball + rm -r Modules/expat + rm -r Modules/zlib + rm -r Modules/_ctypes/{darwin,libffi}* + + export OPT="${CFLAGS}" + ./configure --prefix=/usr --enable-shared --with-threads --enable-ipv6 \ + --enable-unicode=ucs4 --with-system-expat --with-system-ffi \ + --with-dbmliborder=gdbm:ndbm + + make MACHDEP=linux2 +} + +package() { + cd "${srcdir}/Python-${pkgver}" + make DESTDIR="${pkgdir}" altinstall maninstall + + ln -sf python${_pybasever} "${pkgdir}/usr/bin/python2" + ln -sf python${_pybasever}-config "${pkgdir}/usr/bin/python2-config" + ln -sf python${_pybasever}.1 "${pkgdir}/usr/share/man/man1/python2.1" + + ln -sf ../../libpython${_pybasever}.so \ + "${pkgdir}/usr/lib/python${_pybasever}/config/libpython${_pybasever}.so" + + mv "${pkgdir}/usr/bin/smtpd.py" "${pkgdir}/usr/lib/python${_pybasever}/" + + # some useful "stuff" + install -dm755 "${pkgdir}"/usr/lib/python${_pybasever}/Tools/{i18n,scripts} + install -m755 Tools/i18n/{msgfmt,pygettext}.py \ + "${pkgdir}/usr/lib/python${_pybasever}/Tools/i18n/" + install -m755 Tools/scripts/{README,*py} \ + "${pkgdir}/usr/lib/python${_pybasever}/Tools/scripts/" + + # fix conflicts with python + mv "${pkgdir}"/usr/bin/idle{,2} + mv "${pkgdir}"/usr/bin/pydoc{,2} + mv "${pkgdir}"/usr/bin/2to3{,-2.7} + + # clean up #!s + find "${pkgdir}/usr/lib/python${_pybasever}/" -name '*.py' | \ + xargs sed -i "s|#[ ]*![ ]*/usr/bin/env python$|#!/usr/bin/env python2|" + + # clean-up reference to build directory + sed -i "s#${srcdir}/Python-${pkgver}:##" \ + "${pkgdir}/usr/lib/python${_pybasever}/config/Makefile" + + # license + install -Dm644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" +} Copied: python2/repos/testing-x86_64/gdbm-magic-values.patch (from rev 155846, python2/trunk/gdbm-magic-values.patch) =================================================================== --- testing-x86_64/gdbm-magic-values.patch (rev 0) +++ testing-x86_64/gdbm-magic-values.patch 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,12 @@ +diff -up Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic Python-2.7.2/Lib/whichdb.py +--- Python-2.7.2/Lib/whichdb.py.gdbm-1.9-magic 2011-06-11 11:46:26.000000000 -0400 ++++ Python-2.7.2/Lib/whichdb.py 2011-09-30 15:45:21.778872290 -0400 +@@ -91,7 +91,7 @@ def whichdb(filename): + return "" + + # Check for GNU dbm +- if magic == 0x13579ace: ++ if magic in (0x13579ace, 0x13579acd, 0x13579acf): + return "gdbm" + + # Check for old Berkeley db hash file format v2 Copied: python2/repos/testing-x86_64/linux2.patch (from rev 155846, python2/trunk/linux2.patch) =================================================================== --- testing-x86_64/linux2.patch (rev 0) +++ testing-x86_64/linux2.patch 2012-04-07 16:18:57 UTC (rev 155847) @@ -0,0 +1,23 @@ +http://hg.python.org/cpython/rev/c816479f6aaf/ +diff --git a/configure b/configure +--- a/configure ++++ b/configure +@@ -2995,6 +2995,7 @@ then + MACHDEP="$ac_md_system$ac_md_release" + + case $MACHDEP in ++ linux*) MACHDEP="linux2";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + atheos*) MACHDEP="atheos";; +diff --git a/configure.in b/configure.in +--- a/configure.in ++++ b/configure.in +@@ -293,6 +293,7 @@ then + MACHDEP="$ac_md_system$ac_md_release" + + case $MACHDEP in ++ linux*) MACHDEP="linux2";; + cygwin*) MACHDEP="cygwin";; + darwin*) MACHDEP="darwin";; + atheos*) MACHDEP="atheos";;