Regression: See if using subprocess instead of os.system and erroring immediately will stop regression randomly hanging.
--HG-- extra : convert_revision : a663ae935edd1b6e8f0bb5b08583a5b9761d0939
This commit is contained in:
parent
ef32494e72
commit
b069b81acf
1 changed files with 38 additions and 35 deletions
27
util/regress
27
util/regress
|
@ -31,6 +31,7 @@ import sys
|
|||
import os
|
||||
import optparse
|
||||
import datetime
|
||||
from subprocess import call
|
||||
|
||||
progname = os.path.basename(sys.argv[0])
|
||||
|
||||
|
@ -60,14 +61,20 @@ variants = options.variants.split(',')
|
|||
|
||||
# Call os.system() and raise exception if return status is non-zero
|
||||
def system(cmd):
|
||||
if options.verbose:
|
||||
print cmd
|
||||
status = os.system(cmd)
|
||||
if status != 0:
|
||||
upper = (status & 0xff00) >> 8
|
||||
lower = (status & 0xff)
|
||||
raise OSError, "shell command '%s' failed, status %d:%d" \
|
||||
% (cmd, upper, lower)
|
||||
try:
|
||||
retcode = call(cmd, shell=True)
|
||||
if retcode < 0:
|
||||
print >>sys.stderr, "Child was terminated by signal", -retcode
|
||||
print >>sys.stderr, "When attemping to execute: %s" % cmd
|
||||
sys.exit(1)
|
||||
elif retcode > 0:
|
||||
print >>sys.stderr, "Child returned", retcode
|
||||
print >>sys.stderr, "When attemping to execute: %s" % cmd
|
||||
sys.exit(1)
|
||||
except OSError, e:
|
||||
print >>sys.stderr, "Execution failed:", e
|
||||
print >>sys.stderr, "When attemping to execute: %s" % cmd
|
||||
sys.exit(1)
|
||||
|
||||
# Quote string s so it can be passed as a shell arg
|
||||
def shellquote(s):
|
||||
|
@ -75,7 +82,6 @@ def shellquote(s):
|
|||
s = "'%s'" % s
|
||||
return s
|
||||
|
||||
try:
|
||||
if not tests:
|
||||
print "No tests specified, just building binaries."
|
||||
targets = ['build/%s/m5.%s' % (build, variant)
|
||||
|
@ -103,6 +109,3 @@ try:
|
|||
|
||||
sys.exit(0)
|
||||
|
||||
except OSError, exc:
|
||||
print "%s: " % progname, exc
|
||||
sys.exit(1)
|
||||
|
|
Loading…
Reference in a new issue