mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-28 06:00:28 +00:00
Revert "[lit] Use os.devnull instead of named temp files"
This reverts commit r272290. It breaks a test that depends on being able to seek the /dev/null equivalent on Windows: http://bb.pgr.jp/builders/ninja-clang-x64-mingw64-RA/builds/11360 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@272293 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
39ce7152a2
commit
4342472183
@ -20,6 +20,9 @@ kIsWindows = platform.system() == 'Windows'
|
||||
# Don't use close_fds on Windows.
|
||||
kUseCloseFDs = not kIsWindows
|
||||
|
||||
# Use temporary files to replace /dev/null on Windows.
|
||||
kAvoidDevNull = kIsWindows
|
||||
|
||||
class ShellEnvironment(object):
|
||||
|
||||
"""Mutable shell environment containing things like CWD and env vars.
|
||||
@ -189,6 +192,7 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
|
||||
input = subprocess.PIPE
|
||||
stderrTempFiles = []
|
||||
opened_files = []
|
||||
named_temp_files = []
|
||||
# To avoid deadlock, we use a single stderr stream for piped
|
||||
# output. This is null until we have seen some output using
|
||||
# stderr.
|
||||
@ -252,8 +256,8 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
|
||||
else:
|
||||
if r[2] is None:
|
||||
redir_filename = None
|
||||
if kIsWindows and r[0] == '/dev/null':
|
||||
r[2] = open(os.devnull, r[1])
|
||||
if kAvoidDevNull and r[0] == '/dev/null':
|
||||
r[2] = tempfile.TemporaryFile(mode=r[1])
|
||||
elif kIsWindows and r[0] == '/dev/tty':
|
||||
# Simulate /dev/tty on Windows.
|
||||
# "CON" is a special filename for the console.
|
||||
@ -302,11 +306,14 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
|
||||
if not executable:
|
||||
raise InternalShellError(j, '%r: command not found' % j.args[0])
|
||||
|
||||
if kIsWindows:
|
||||
# Replace uses of /dev/null with the Windows equivalent.
|
||||
# Replace uses of /dev/null with temporary files.
|
||||
if kAvoidDevNull:
|
||||
for i,arg in enumerate(args):
|
||||
if arg == "/dev/null":
|
||||
args[i] = os.devnull
|
||||
f = tempfile.NamedTemporaryFile(delete=False)
|
||||
f.close()
|
||||
named_temp_files.append(f.name)
|
||||
args[i] = f.name
|
||||
|
||||
try:
|
||||
procs.append(subprocess.Popen(args, cwd=cmd_shenv.cwd,
|
||||
@ -415,6 +422,13 @@ def _executeShCmd(cmd, shenv, results, timeoutHelper):
|
||||
else:
|
||||
exitCode = res
|
||||
|
||||
# Remove any named temporary files we created.
|
||||
for f in named_temp_files:
|
||||
try:
|
||||
os.remove(f)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
if cmd.negate:
|
||||
exitCode = not exitCode
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user