aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--devel/scons/Makefile1
-rw-r--r--devel/scons/files/patch-engine-SCons-compat-__init__.py29
-rw-r--r--devel/scons/files/patch-engine-SCons-compat-_scons_subprocess.py33
3 files changed, 63 insertions, 0 deletions
diff --git a/devel/scons/Makefile b/devel/scons/Makefile
index 49eac104cf48..ea267cbb9adc 100644
--- a/devel/scons/Makefile
+++ b/devel/scons/Makefile
@@ -7,6 +7,7 @@
PORTNAME= scons
PORTVERSION= 1.2.0
+PORTREVISION= 1
CATEGORIES= devel python
MASTER_SITES= SF
diff --git a/devel/scons/files/patch-engine-SCons-compat-__init__.py b/devel/scons/files/patch-engine-SCons-compat-__init__.py
new file mode 100644
index 000000000000..647570112d25
--- /dev/null
+++ b/devel/scons/files/patch-engine-SCons-compat-__init__.py
@@ -0,0 +1,29 @@
+Index: engine/SCons/compat/__init__.py
+===================================================================
+--- engine/SCons/compat/__init__.py (revision 2695)
++++ engine/SCons/compat/__init__.py (working copy)
+@@ -167,11 +167,17 @@
+ del shlex
+ import_as('_scons_shlex', 'shlex')
+
+-try:
+- import subprocess
+-except ImportError:
+- # Pre-2.4 Python has no subprocess module.
+- import_as('_scons_subprocess', 'subprocess')
++#try:
++# import subprocess
++#except ImportError:
++# # Pre-2.4 Python has no subprocess module.
++# import_as('_scons_subprocess', 'subprocess')
++
++# Import subprocess unconditionally to avoid possible race conditions in
++# the official subprocess API. If there are API versions without known
++# problems, we can version-check and use the original subprocess module
++# in these cases.
++import_as('_scons_subprocess', 'subprocess')
+
+ import sys
+ try:
+
+
diff --git a/devel/scons/files/patch-engine-SCons-compat-_scons_subprocess.py b/devel/scons/files/patch-engine-SCons-compat-_scons_subprocess.py
new file mode 100644
index 000000000000..1e60040700ee
--- /dev/null
+++ b/devel/scons/files/patch-engine-SCons-compat-_scons_subprocess.py
@@ -0,0 +1,33 @@
+Index: engine/SCons/compat/_scons_subprocess.py
+===================================================================
+--- engine/SCons/compat/_scons_subprocess.py (revision 2695)
++++ engine/SCons/compat/_scons_subprocess.py (working copy)
+@@ -581,13 +581,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
+@@ -655,6 +661,7 @@
+ self.stderr = os.fdopen(errread, 'rU', bufsize)
+ else:
+ self.stderr = os.fdopen(errread, 'rb', bufsize)
++ lock.release()
+
+
+ def _translate_newlines(self, data):