diff --git a/share/analysis-scripts/epilogue.mk b/share/analysis-scripts/epilogue.mk index 5918ddd031b35e9f5f6cfa458f4bc1d7ab1ebc51..ca49ed6bc7b9fdf07d6871a42123c6b277941b1f 100644 --- a/share/analysis-scripts/epilogue.mk +++ b/share/analysis-scripts/epilogue.mk @@ -35,3 +35,6 @@ all: eva ifeq ($(TARGETS),) @echo "error: TARGETS is empty" endif + +display-targets: + @echo "$(addprefix .frama-c/,$(TARGETS))" diff --git a/share/analysis-scripts/summary.py b/share/analysis-scripts/summary.py index a23c34e73ac9d5960d75d0140ee09f355e6f3d8d..0b2fc9c9fbaa6724922aae8db70db6d3c45db6f1 100755 --- a/share/analysis-scripts/summary.py +++ b/share/analysis-scripts/summary.py @@ -45,14 +45,22 @@ def build_env(framac): bindir = framac + '/build/bin' return { **os.environ, 'PATH' : bindir + ':' + os.environ['PATH'] } -def list_targets(): +def list_targets(dir): env = build_env(framac) res = subprocess.run( - ["make", "--quiet", "display-targets"], + ["make", "--directory", dir, "--quiet", "display-targets"], env=env, stdout=subprocess.PIPE, encoding='ascii') - return res.stdout.split() + targets = res.stdout.split() + res = [] + for target in targets: + if target.endswith(".eva") or target.endswith(".parse"): + res.append(dir + "/" + target) + else: + res += [dir + "/" + t for t in list_targets(target)] + print(f"list_targets returning: {res}") + return res def clone_frama_c(clonedir, hash): print("Cloning Frama-C", hash, "...") @@ -74,7 +82,7 @@ def run_make(framac, benchmark_tag=None): 'FRAMAC_DIR=' + bindir, 'FRAMAC=' + bindir + '/frama-c'] if benchmark_tag is None: - args += ['-j', '8'] + args += ['-j', str(os.cpu_count ())] else: args += ['BENCHMARK=' + benchmark_tag] return subprocess.Popen(args, env=env, @@ -95,8 +103,10 @@ def terminate_process(process): return errors def smart_rename(target): + target = re.sub('^\./', '', target) target = re.sub('main\.eva$', '', target) target = re.sub('\.eva$', '', target) + target = re.sub('\.frama-c/', '', target) target = re.sub('qds/frama-c', 'qds', target) return target @@ -118,7 +128,7 @@ def poll_results(targets, benchmark_tag): def run_analyses(display, database, framac, benchmark_tag): results = [] - targets = list_targets() + targets = list_targets(".") process = run_make(framac, benchmark_tag) errors = b"" next_poll = time.time()