aboutsummaryrefslogblamecommitdiff
path: root/math/sage/files/patch-build_pkgs_scons_fbsd-patch-src_engine_SCons_compat__scons_subprocess.py
blob: b7707654008031ab329d23e993fdd4f313437264 (plain) (tree)

































                                                                                                                   
--- /dev/null	2014-02-05 05:15:00.000000000 +0000
+++ build/pkgs/scons/fbsd-patch-src_engine_SCons_compat__scons_subprocess.py	2014-02-05 05:16:45.000000000 +0000
@@ -0,0 +1,31 @@
+--- src/engine/SCons/compat/_scons_subprocess.py.orig	2008-12-21 06:59:59.000000000 +0000
++++ src/engine/SCons/compat/_scons_subprocess.py	2014-02-05 05:11:11.000000000 +0000
+@@ -585,13 +585,19 @@
+     class object:
+         pass
+ 
++import thread
++lock = thread.allocate_lock()
++
+ class Popen(object):
+     def __init__(self, args, bufsize=0, executable=None,
+                  stdin=None, stdout=None, stderr=None,
+                  preexec_fn=None, close_fds=False, shell=False,
+                  cwd=None, env=None, universal_newlines=False,
+                  startupinfo=None, creationflags=0):
+-        """Create new Popen instance."""
++        """Create new Popen instance.
++        Popen is not thread-safe and is therefore protected with a lock.
++        """
++        lock.acquire()
+         _cleanup()
+ 
+         self._child_created = False
+@@ -659,6 +665,7 @@
+                 self.stderr = os.fdopen(errread, 'rU', bufsize)
+             else:
+                 self.stderr = os.fdopen(errread, 'rb', bufsize)
++        lock.release()
+ 
+ 
+     def _translate_newlines(self, data):