mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-02 05:48:07 +02:00
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
This commit is contained in:
parent
4ed1de8b84
commit
7325c1ebc8
2 changed files with 29 additions and 0 deletions
27
scons/fixes.py
Normal file
27
scons/fixes.py
Normal 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
|
||||
|
||||
|
||||
|
|
@ -38,6 +38,8 @@ import SCons.Action
|
|||
import SCons.Builder
|
||||
import SCons.Scanner
|
||||
|
||||
import fixes
|
||||
|
||||
|
||||
def quietCommandLines(env):
|
||||
# Quiet command lines
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue