From 8e8f26ae95a23c4aa90a34a8be96425bcf9788d5 Mon Sep 17 00:00:00 2001 From: Simone Date: Sun, 3 May 2026 01:43:48 +0200 Subject: [PATCH] refactor: unify bundle-symlink scripts into setup_bundle_symlinks.py The three per-version setup_*_bundle_symlinks.py scripts were logically identical, differing only in the version string. Replace the duplicated logic with a single parameterised script: tools/linux/setup_bundle_symlinks.py The three named scripts are kept as one-liner thin wrappers that forward to the unified script, preserving backwards compatibility. --- tools/linux/setup_25_01_bundle_symlinks.py | 51 ++------------- tools/linux/setup_26_00_bundle_symlinks.py | 51 ++------------- tools/linux/setup_26_01_bundle_symlinks.py | 51 ++------------- tools/linux/setup_bundle_symlinks.py | 72 ++++++++++++++++++++++ 4 files changed, 84 insertions(+), 141 deletions(-) create mode 100644 tools/linux/setup_bundle_symlinks.py diff --git a/tools/linux/setup_25_01_bundle_symlinks.py b/tools/linux/setup_25_01_bundle_symlinks.py index 2973bd6..761db56 100644 --- a/tools/linux/setup_25_01_bundle_symlinks.py +++ b/tools/linux/setup_25_01_bundle_symlinks.py @@ -1,48 +1,5 @@ #!/usr/bin/env python3 -"""Creates symlinks in versions/25.01-bundle to mirror vendor directory structure.""" -import os -from pathlib import Path - -ROOT = Path(__file__).resolve().parents[2] -bundle_root = ROOT / "versions/25.01-bundle" -vendor_root = ROOT / "versions/25.01" -bundle_7zip = bundle_root / "CPP/7zip" -vendor_7zip = vendor_root / "CPP/7zip" -bundle_cpp = bundle_root / "CPP" -vendor_cpp = vendor_root / "CPP" - -# Root-level symlinks: C and Asm -for name in ("C", "Asm"): - target = bundle_root / name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(vendor_root / name, bundle_root) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -for item in vendor_7zip.iterdir(): - target = bundle_7zip / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_7zip) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -bundle_ui = bundle_7zip / "UI" -vendor_ui = vendor_7zip / "UI" -bundle_ui.mkdir(exist_ok=True) -for item in vendor_ui.iterdir(): - target = bundle_ui / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_ui) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -for item in vendor_cpp.iterdir(): - if item.name == "7zip": - continue - target = bundle_cpp / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_cpp) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -print("Done") +"""Thin wrapper — delegates to setup_bundle_symlinks.py for version 25.01.""" +import subprocess, sys, pathlib +script = pathlib.Path(__file__).parent / "setup_bundle_symlinks.py" +sys.exit(subprocess.call([sys.executable, str(script), "25.01"])) diff --git a/tools/linux/setup_26_00_bundle_symlinks.py b/tools/linux/setup_26_00_bundle_symlinks.py index e2d991d..02baaf9 100644 --- a/tools/linux/setup_26_00_bundle_symlinks.py +++ b/tools/linux/setup_26_00_bundle_symlinks.py @@ -1,48 +1,5 @@ #!/usr/bin/env python3 -"""Creates symlinks in versions/26.00-bundle to mirror vendor directory structure.""" -import os -from pathlib import Path - -ROOT = Path(__file__).resolve().parents[2] -bundle_root = ROOT / "versions/26.00-bundle" -vendor_root = ROOT / "versions/26.00" -bundle_7zip = bundle_root / "CPP/7zip" -vendor_7zip = vendor_root / "CPP/7zip" -bundle_cpp = bundle_root / "CPP" -vendor_cpp = vendor_root / "CPP" - -# Root-level symlinks: C and Asm -for name in ("C", "Asm"): - target = bundle_root / name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(vendor_root / name, bundle_root) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -for item in vendor_7zip.iterdir(): - target = bundle_7zip / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_7zip) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -bundle_ui = bundle_7zip / "UI" -vendor_ui = vendor_7zip / "UI" -bundle_ui.mkdir(exist_ok=True) -for item in vendor_ui.iterdir(): - target = bundle_ui / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_ui) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -for item in vendor_cpp.iterdir(): - if item.name == "7zip": - continue - target = bundle_cpp / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_cpp) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -print("Done") +"""Thin wrapper — delegates to setup_bundle_symlinks.py for version 26.00.""" +import subprocess, sys, pathlib +script = pathlib.Path(__file__).parent / "setup_bundle_symlinks.py" +sys.exit(subprocess.call([sys.executable, str(script), "26.00"])) diff --git a/tools/linux/setup_26_01_bundle_symlinks.py b/tools/linux/setup_26_01_bundle_symlinks.py index 20e5a1f..ced1d57 100644 --- a/tools/linux/setup_26_01_bundle_symlinks.py +++ b/tools/linux/setup_26_01_bundle_symlinks.py @@ -1,48 +1,5 @@ #!/usr/bin/env python3 -"""Creates symlinks in versions/26.01-bundle to mirror vendor directory structure.""" -import os -from pathlib import Path - -ROOT = Path(__file__).resolve().parents[2] -bundle_root = ROOT / "versions/26.01-bundle" -vendor_root = ROOT / "versions/26.01" -bundle_7zip = bundle_root / "CPP/7zip" -vendor_7zip = vendor_root / "CPP/7zip" -bundle_cpp = bundle_root / "CPP" -vendor_cpp = vendor_root / "CPP" - -# Root-level symlinks: C and Asm -for name in ("C", "Asm"): - target = bundle_root / name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(vendor_root / name, bundle_root) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -for item in vendor_7zip.iterdir(): - target = bundle_7zip / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_7zip) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -bundle_ui = bundle_7zip / "UI" -vendor_ui = vendor_7zip / "UI" -bundle_ui.mkdir(exist_ok=True) -for item in vendor_ui.iterdir(): - target = bundle_ui / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_ui) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -for item in vendor_cpp.iterdir(): - if item.name == "7zip": - continue - target = bundle_cpp / item.name - if not target.exists() and not target.is_symlink(): - rel = os.path.relpath(item, bundle_cpp) - os.symlink(rel, target) - print(f" symlink: {target.relative_to(ROOT)} -> {rel}") - -print("Done") +"""Thin wrapper — delegates to setup_bundle_symlinks.py for version 26.01.""" +import subprocess, sys, pathlib +script = pathlib.Path(__file__).parent / "setup_bundle_symlinks.py" +sys.exit(subprocess.call([sys.executable, str(script), "26.01"])) diff --git a/tools/linux/setup_bundle_symlinks.py b/tools/linux/setup_bundle_symlinks.py new file mode 100644 index 0000000..86869ae --- /dev/null +++ b/tools/linux/setup_bundle_symlinks.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +"""Creates symlinks in versions/-bundle to mirror vendor directory structure. + +Usage: + python3 setup_bundle_symlinks.py + +Example: + python3 setup_bundle_symlinks.py 25.01 + python3 setup_bundle_symlinks.py 26.00 + python3 setup_bundle_symlinks.py 26.01 +""" +import os +import sys +from pathlib import Path + +if len(sys.argv) != 2: + print(f"Usage: {sys.argv[0]} ", file=sys.stderr) + sys.exit(1) + +version = sys.argv[1] + +ROOT = Path(__file__).resolve().parents[2] +bundle_root = ROOT / f"versions/{version}-bundle" +vendor_root = ROOT / f"versions/{version}" + +if not vendor_root.exists(): + print(f"Error: vendor directory not found: {vendor_root}", file=sys.stderr) + sys.exit(1) +if not bundle_root.exists(): + print(f"Error: bundle directory not found: {bundle_root}", file=sys.stderr) + sys.exit(1) + +bundle_7zip = bundle_root / "CPP/7zip" +vendor_7zip = vendor_root / "CPP/7zip" +bundle_cpp = bundle_root / "CPP" +vendor_cpp = vendor_root / "CPP" + +# Root-level symlinks: C and Asm +for name in ("C", "Asm"): + target = bundle_root / name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(vendor_root / name, bundle_root) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +for item in vendor_7zip.iterdir(): + target = bundle_7zip / item.name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(item, bundle_7zip) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +bundle_ui = bundle_7zip / "UI" +vendor_ui = vendor_7zip / "UI" +bundle_ui.mkdir(exist_ok=True) +for item in vendor_ui.iterdir(): + target = bundle_ui / item.name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(item, bundle_ui) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +for item in vendor_cpp.iterdir(): + if item.name == "7zip": + continue + target = bundle_cpp / item.name + if not target.exists() and not target.is_symlink(): + rel = os.path.relpath(item, bundle_cpp) + os.symlink(rel, target) + print(f" symlink: {target.relative_to(ROOT)} -> {rel}") + +print("Done")