diff --git a/scripts/json_overview_image_info.py b/scripts/json_overview_image_info.py index 795f3f7e25ee76..0b39fd7350e68c 100755 --- a/scripts/json_overview_image_info.py +++ b/scripts/json_overview_image_info.py @@ -33,12 +33,12 @@ def get_initial_output(image_info): # Pre-compile the regex to improve performance when called repeatedly in loops arch_regex = re.compile(r".*Linux-([^.]*)\.") -def add_artifact(artifact, prefix="openwrt-"): - files = list(output_dir.glob(f"{prefix}{artifact}-*")) - if len(files): +def add_artifact(artifact, dir_files, prefix="openwrt-"): + prefix_str = f"{prefix}{artifact}-" + files = [f for f in dir_files if f.startswith(prefix_str)] + if files: output[artifact] = {} for file in files: - file = str(file.name) # Optimization: Use pre-compiled regex for ~50% faster matching arch = arch_regex.match(file) if arch: @@ -106,9 +106,12 @@ def add_artifact(artifact, prefix="openwrt-"): if git_commit.returncode == 0: output["git_commit"] = git_commit.stdout.strip() + import os + dir_files = os.listdir(output_dir) if output_dir.is_dir() else [] + for artifact in "imagebuilder", "sdk", "toolchain": - filename = add_artifact(artifact) - add_artifact("llvm-bpf", prefix="") + filename = add_artifact(artifact, dir_files) + add_artifact("llvm-bpf", dir_files, prefix="") output_path.write_text(json.dumps(output, sort_keys=True, separators=(",", ":"))) else: diff --git a/scripts/test_json_overview_image_info.py b/scripts/test_json_overview_image_info.py index c60279cd9f055f..39da90a65f984f 100644 --- a/scripts/test_json_overview_image_info.py +++ b/scripts/test_json_overview_image_info.py @@ -70,7 +70,8 @@ def test_add_artifact(self): (self.module.output_dir / artifact_name1).touch() (self.module.output_dir / artifact_name2).touch() - self.module.add_artifact("imagebuilder") + dir_files = [f.name for f in self.module.output_dir.iterdir()] + self.module.add_artifact("imagebuilder", dir_files) self.assertIn("imagebuilder", self.module.output) self.assertIn("x86_64", self.module.output["imagebuilder"]) @@ -82,14 +83,16 @@ def test_add_artifact_no_prefix(self): artifact_name = "llvm-bpf-15.0-Linux-x86_64.tar.xz" (self.module.output_dir / artifact_name).touch() - self.module.add_artifact("llvm-bpf", prefix="") + dir_files = [f.name for f in self.module.output_dir.iterdir()] + self.module.add_artifact("llvm-bpf", dir_files, prefix="") self.assertIn("llvm-bpf", self.module.output) self.assertIn("x86_64", self.module.output["llvm-bpf"]) self.assertEqual(self.module.output["llvm-bpf"]["x86_64"], artifact_name) def test_add_artifact_no_match(self): - self.module.add_artifact("sdk") + dir_files = [f.name for f in self.module.output_dir.iterdir()] + self.module.add_artifact("sdk", dir_files) self.assertNotIn("sdk", self.module.output) if __name__ == '__main__':