diff -r a9d06c894afe -r 6e50f7ef9d04 util/regress --- a/util/regress Wed Apr 20 18:45:03 2011 -0700 +++ b/util/regress Wed Apr 20 22:43:55 2011 -0700 @@ -37,10 +37,9 @@ optparser = optparse.OptionParser() add_option = optparser.add_option -add_option('-v', '--verbose', dest='verbose', action='store_true', - default=False, +add_option('-v', '--verbose', action='store_true', default=False, help='echo commands before executing') -add_option('--builds', dest='builds', +add_option('--builds', default='ALPHA_SE,ALPHA_SE_MOESI_hammer,' \ 'ALPHA_SE_MESI_CMP_directory,' \ 'ALPHA_SE_MOESI_CMP_directory,' \ @@ -52,15 +51,18 @@ 'X86_SE,X86_FS,' \ 'ARM_SE,ARM_FS', help="comma-separated build targets to test (default: '%default')") -add_option('--variants', dest='variants', default='opt', +add_option('--test-variants', default='opt', help="comma-separated build variants to test (default: '%default')") -add_option('--scons-opts', dest='scons_opts', default='', metavar='OPTS', +add_option('--compile-variants', default='debug,fast', + help="comma-separated build variants to compile only (not test) " \ + "(default: '%default')", metavar='VARIANTS') +add_option('--scons-opts', default='', metavar='OPTS', help='scons options') -add_option('-j', '--jobs', type='int', default=1, +add_option('-j', '--jobs', type='int', default=1, metavar='N', help='number of parallel jobs to use') add_option('-k', '--keep-going', action='store_true', help='keep going after errors') -add_option('-D', '--build-dir', default='', +add_option('-D', '--build-dir', default='', metavar='DIR', help='build directory location') add_option('-n', "--no-exec", default=False, action='store_true', help="don't actually invoke scons, just echo SCons command line") @@ -68,9 +70,17 @@ (options, tests) = optparser.parse_args() +# split a comma-separated list, but return an empty list if given the +# empty string +def split_if_nonempty(s): + if not s: + return [] + return s.split(',') + # split list options on ',' to get Python lists -builds = options.builds.split(',') -variants = options.variants.split(',') +builds = split_if_nonempty(options.builds) +test_variants = split_if_nonempty(options.test_variants) +compile_variants = split_if_nonempty(options.compile_variants) options.build_dir = os.path.join(options.build_dir, 'build') @@ -91,30 +101,31 @@ 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): - if ' ' in s: - s = "'%s'" % s - return s +# start with compile-only targets, if any +if compile_variants: + targets = ['%s/%s/m5.%s' % (options.build_dir, build, variant) + for variant in compile_variants + for build in builds] +# By default run the 'quick' tests if not tests: - print "No tests specified, just building binaries." - targets = ['%s/%s/m5.%s' % (options.build_dir, build, variant) - for build in builds - for variant in variants] -elif 'all' in tests: - targets = ['%s/%s/tests/%s' % (options.build_dir, build, variant) - for build in builds - for variant in variants] + tests = ['quick'] + +# set up test targets for scons +if 'all' in tests: + targets += ['%s/%s/tests/%s' % (options.build_dir, build, variant) + for build in builds + for variant in test_variants] else: - # Ugly! Since we don't have any quick SPARC_FS tests remove the SPARC_FS target - # If we ever get a quick SPARC_FS test, this code should be removed + # Ugly! Since we don't have any quick SPARC_FS tests remove the + # SPARC_FS target If we ever get a quick SPARC_FS test, this code + # should be removed if 'quick' in tests and 'SPARC_FS' in builds: builds.remove('SPARC_FS') - targets = ['%s/%s/tests/%s/%s' % (options.build_dir, build, variant, test) - for build in builds - for variant in variants - for test in tests] + targets += ['%s/%s/tests/%s/%s' % (options.build_dir, build, variant, test) + for build in builds + for variant in test_variants + for test in tests] def cpu_count(): if 'bsd' in sys.platform or sys.platform == 'darwin':