lit: When running Tcl scripts via shell, try harder to find 'bash', but fall

back to running them internally if that fails. PR5240.

llvm-svn: 84462
This commit is contained in:
Daniel Dunbar 2009-10-19 03:54:21 +00:00
parent bf3dab83fa
commit bb58da6d55
2 changed files with 26 additions and 2 deletions

View File

@ -29,6 +29,7 @@ class LitConfig:
self.noExecute = noExecute
self.debug = debug
self.isWindows = bool(isWindows)
self.bashPath = None
self.numErrors = 0
self.numWarnings = 0
@ -41,6 +42,27 @@ class LitConfig:
mustExist = True,
config = config)
def getBashPath(self):
"""getBashPath - Get the path to 'bash'"""
import os, Util
if self.bashPath is not None:
return self.bashPath
self.bashPath = Util.which('bash', os.pathsep.join(self.path))
if self.bashPath is None:
# Check some known paths.
for path in ('/bin/bash', '/usr/bin/bash'):
if os.path.exists(path):
self.bashPath = path
break
if self.bashPath is None:
self.warning("Unable to find 'bash', running Tcl tests internally.")
self.bashPath = ''
return self.bashPath
def _write_message(self, kind, message):
import inspect, os, sys

View File

@ -237,7 +237,9 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd):
for c in cmds[1:]:
cmd = ShUtil.Seq(cmd, '&&', c)
if litConfig.useTclAsSh:
# FIXME: This is lame, we shouldn't need bash. See PR5240.
bashPath = litConfig.getBashPath()
if litConfig.useTclAsSh and bashPath:
script = tmpBase + '.script'
# Write script file
@ -252,7 +254,7 @@ def executeTclScriptInternal(test, litConfig, tmpBase, commands, cwd):
print >>sys.stdout
return '', '', 0
command = ['/bin/bash', script]
command = [litConfig.getBashPath(), script]
out,err,exitCode = executeCommand(command, cwd=cwd,
env=test.config.environment)