From 6c762800fcf9b54303a92b13ccd81e0f29542bc4 Mon Sep 17 00:00:00 2001 From: Miroslav Franc <mfranc@suse.cz> Date: Apr 30 2025 09:26:26 +0000 Subject: kss-dashboard: don't process already processed cves --- diff --git a/scripts/python/kss-dashboard b/scripts/python/kss-dashboard index 63d5f4b..38c44b9 100755 --- a/scripts/python/kss-dashboard +++ b/scripts/python/kss-dashboard @@ -465,6 +465,13 @@ def exportpatch(b): for s in b.shas: yield get_backport_string([f'bsc#{b.data.id}', b.cve], s, re.sub(CVE_PATTERN, '', b.data.summary.removeprefix('VUL-0: ').replace('kernel: ', ''))) + '\n' +def output_exists(f, outdir, nopdir): + if os.path.isfile(f): + return f + elif nopdir and os.path.isfile(nopdir + f[len(outdir):]): + return nopdir + f[len(outdir):] + return '' + class ParallelRunner: def __init__(self, blist, directory_pair, j): self.failures = [ f"# {make_url(b.data.id)} # NO CVE NUMBER" for b in blist if not b.cve ] @@ -485,9 +492,15 @@ class ParallelRunner: yield f'{script} > {path}\n' return with ProcessPoolExecutor(max_workers=self.n_workers) as executor: + mod_jobs = [] for job in self.jobs: - yield color_format(T_PURPLE, f"Schedule '{job[0]} > {job[1]}' ... (with {self.n_workers} workers...)\n") - futures = { executor.submit(one_job, job): job for job in self.jobs } + output_f = output_exists(job[1], self.out_idr, self.nop_dir) + if bool(output_f): + yield color_format(T_BLUE, f"Skipping '{job[0]} > {output_f}' ... (already exists)\n") + else: + mod_jobs.append(job) + yield color_format(T_PURPLE, f"Schedule '{job[0]} > {job[1]}' ... (with {self.n_workers} workers...)\n") + futures = { executor.submit(one_job, job): job for job in mod_jobs } for f in as_completed(futures): job = futures[f] file_to_store = str(job[1])