Mesa (mesa_7_5_branch): scons: Monkey patch os. spawnve on Windows to become thread safe.
Jose Fonseca
jrfonseca at kemper.freedesktop.org
Tue Jul 14 11:21:51 UTC 2009
Module: Mesa
Branch: mesa_7_5_branch
Commit: 7325c1ebc8cf88249d0adeadc0f52600e727c762
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7325c1ebc8cf88249d0adeadc0f52600e727c762
Author: José Fonseca <jfonseca at vmware.com>
Date: Tue Jul 14 11:09:23 2009 +0100
scons: Monkey patch os.spawnve on Windows to become thread safe.
See also:
- http://bugs.python.org/issue6476
- http://scons.tigris.org/issues/show_bug.cgi?id=2449
---
scons/fixes.py | 27 +++++++++++++++++++++++++++
scons/gallium.py | 2 ++
2 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/scons/fixes.py b/scons/fixes.py
new file mode 100644
index 0000000..714cccf
--- /dev/null
+++ b/scons/fixes.py
@@ -0,0 +1,27 @@
+import sys
+
+# Monkey patch os.spawnve on windows to become thread safe
+if sys.platform == 'win32':
+ import os
+ import threading
+ from os import spawnve as old_spawnve
+
+ spawn_lock = threading.Lock()
+
+ def new_spawnve(mode, file, args, env):
+ spawn_lock.acquire()
+ try:
+ if mode == os.P_WAIT:
+ ret = old_spawnve(os.P_NOWAIT, file, args, env)
+ else:
+ ret = old_spawnve(mode, file, args, env)
+ finally:
+ spawn_lock.release()
+ if mode == os.P_WAIT:
+ pid, status = os.waitpid(ret, 0)
+ ret = status >> 8
+ return ret
+
+ os.spawnve = new_spawnve
+
+
diff --git a/scons/gallium.py b/scons/gallium.py
index 217478b..8082aba 100644
--- a/scons/gallium.py
+++ b/scons/gallium.py
@@ -38,6 +38,8 @@ import SCons.Action
import SCons.Builder
import SCons.Scanner
+import fixes
+
def quietCommandLines(env):
# Quiet command lines
More information about the mesa-commit
mailing list