Browse Source

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
tags/mesa_7_5
José Fonseca 16 years ago
parent
commit
7325c1ebc8
2 changed files with 29 additions and 0 deletions
  1. 27
    0
      scons/fixes.py
  2. 2
    0
      scons/gallium.py

+ 27
- 0
scons/fixes.py View File

@@ -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



+ 2
- 0
scons/gallium.py View File

@@ -38,6 +38,8 @@ import SCons.Action
import SCons.Builder
import SCons.Scanner

import fixes


def quietCommandLines(env):
# Quiet command lines

Loading…
Cancel
Save