[arch-commits] Commit in python2/trunk (3 files)

Stéphane Gaudreault stephane at archlinux.org
Tue Jan 31 13:38:55 UTC 2012


    Date: Tuesday, January 31, 2012 @ 08:38:55
  Author: stephane
Revision: 148408

upgpkg: python2 2.7.2-5

Fix upstream 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).

Added:
  python2/trunk/13156-revert-tls-changeset-subinterpreter.patch
Modified:
  python2/trunk/PKGBUILD
  python2/trunk/gdbm-magic-values.patch

-------------------------------------------------+
 13156-revert-tls-changeset-subinterpreter.patch |   61 ++++++++++++++++++++++
 PKGBUILD                                        |   11 ++-
 gdbm-magic-values.patch                         |    1 
 3 files changed, 69 insertions(+), 4 deletions(-)

Added: 13156-revert-tls-changeset-subinterpreter.patch
===================================================================
--- 13156-revert-tls-changeset-subinterpreter.patch	                        (rev 0)
+++ 13156-revert-tls-changeset-subinterpreter.patch	2012-01-31 13:38:55 UTC (rev 148408)
@@ -0,0 +1,61 @@
+
+# HG changeset patch
+# User Charles-François Natali <neologix at 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
+

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2012-01-31 13:31:47 UTC (rev 148407)
+++ PKGBUILD	2012-01-31 13:38:55 UTC (rev 148408)
@@ -5,7 +5,7 @@
 
 pkgname=python2
 pkgver=2.7.2
-pkgrel=4
+pkgrel=5
 _pybasever=2.7
 pkgdesc="A high-level scripting language"
 arch=('i686' 'x86_64')
@@ -18,10 +18,12 @@
 options=('!makeflags')
 source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz
         linux2.patch
-        gdbm-magic-values.patch)
+        gdbm-magic-values.patch
+        13156-revert-tls-changeset-subinterpreter.patch)
 sha1sums=('56700044141402dc35e7a0a24aa7ffda1a8c1a53'
           '937c06190899a491d662c7918658313e7640070e'
-          '0f4cd9508c9ace620a829a688a9285e0480b5fb5')
+          'ede2c991b1a91eec5a01cc2d3a11231f17d750ae'
+          'd61fa2b8efd1d08a2ee8a9aed434dc94b8297d6b')
 
 build() {
   cd "${srcdir}/Python-${pkgver}"
@@ -44,6 +46,9 @@
   # 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

Modified: gdbm-magic-values.patch
===================================================================
--- gdbm-magic-values.patch	2012-01-31 13:31:47 UTC (rev 148407)
+++ gdbm-magic-values.patch	2012-01-31 13:38:55 UTC (rev 148408)
@@ -10,4 +10,3 @@
          return "gdbm"
  
      # Check for old Berkeley db hash file format v2
-diff -up Python-2.7.2/Misc/NEWS.gdbm-1.9-magic Python-2.7.2/Misc/NEWS




More information about the arch-commits mailing list