systemc: Make the verify.py script work when run from different dirs.

The verify.py script ran scons from the CWD, and that would fail if
there wasn't a SConstruct in that directory, ie if it wasn't from the
source of the checkout.

This change makes verify.py use scons' --directory option to run from
where the SConstruct is, or at least the SConstruct which was checked
out alongside that copy of verify.py. That location can be overridden
using the new -C or --scons-dir options.

Change-Id: I9f033d6dd30e0c2992b7f3102c573b34ea9c49e0
Reviewed-on: https://gem5-review.googlesource.com/c/16562
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
Gabe Black
2019-02-20 16:08:50 -08:00
parent 36a5473537
commit 84a9094ef7

View File

@@ -45,6 +45,10 @@ import sys
script_path = os.path.abspath(inspect.getfile(inspect.currentframe()))
script_dir = os.path.dirname(script_path)
config_path = os.path.join(script_dir, 'config.py')
# Parent directories if checked out as part of gem5.
systemc_dir = os.path.dirname(script_dir)
src_dir = os.path.dirname(systemc_dir)
checkout_dir = os.path.dirname(src_dir)
systemc_rel_path = 'systemc'
tests_rel_path = os.path.join(systemc_rel_path, 'tests')
@@ -131,7 +135,8 @@ class CompilePhase(TestPhaseBase):
if args.j == 0:
self.args = ('-j', str(self.main_args.j)) + self.args
scons_args = [ 'USE_SYSTEMC=1' ] + list(self.args) + targets
scons_args = [ '--directory', self.main_args.scons_dir,
'USE_SYSTEMC=1' ] + list(self.args) + targets
scons(*scons_args)
class RunPhase(TestPhaseBase):
@@ -512,6 +517,10 @@ parser.add_argument('-j', type=int, default=1,
help='Default level of parallelism, can be overriden '
'for individual stages')
parser.add_argument('-C', '--scons-dir', metavar='SCONS_DIR',
default=checkout_dir,
help='Directory to run scons from')
filter_opts = parser.add_mutually_exclusive_group()
filter_opts.add_argument('--filter', default='True',
help='Python expression which filters tests based '
@@ -549,7 +558,7 @@ if len(phases) == 0:
json_path = os.path.join(main_args.build_dir, json_rel_path)
if main_args.update_json:
scons(os.path.join(json_path))
scons('--directory', main_args.scons_dir, os.path.join(json_path))
with open(json_path) as f:
test_data = json.load(f)