From 97e65f61273bd5d84cc2316ce78d15af880c0022 Mon Sep 17 00:00:00 2001 From: Tobias Wolf Date: Mon, 23 Jun 2025 14:44:20 +0200 Subject: [PATCH 1/2] Fix mixed `cname` with separate version argument parsing Signed-off-by: Tobias Wolf --- .github/actions/features_parse/action.yml | 2 +- .github/actions/flavors_parse/action.yml | 2 +- .github/actions/setup/action.yml | 2 +- pyproject.toml | 2 +- src/gardenlinux/features/__main__.py | 29 ++++++++++------------- src/gardenlinux/features/cname_main.py | 16 ++++++------- 6 files changed, 25 insertions(+), 28 deletions(-) diff --git a/.github/actions/features_parse/action.yml b/.github/actions/features_parse/action.yml index e5ce4037..a0327bef 100644 --- a/.github/actions/features_parse/action.yml +++ b/.github/actions/features_parse/action.yml @@ -11,7 +11,7 @@ outputs: runs: using: composite steps: - - uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.8.7 + - uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.8.8 - id: result shell: bash run: | diff --git a/.github/actions/flavors_parse/action.yml b/.github/actions/flavors_parse/action.yml index da0cc821..d0075e0f 100644 --- a/.github/actions/flavors_parse/action.yml +++ b/.github/actions/flavors_parse/action.yml @@ -13,7 +13,7 @@ outputs: runs: using: composite steps: - - uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.8.7 + - uses: gardenlinux/python-gardenlinux-lib/.github/actions/setup@0.8.8 - id: matrix shell: bash run: | diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml index 760a478f..416b1bb3 100644 --- a/.github/actions/setup/action.yml +++ b/.github/actions/setup/action.yml @@ -3,7 +3,7 @@ description: Installs the given GardenLinux Python library inputs: version: description: GardenLinux Python library version - default: "0.8.7" + default: "0.8.8" runs: using: composite steps: diff --git a/pyproject.toml b/pyproject.toml index aa6bd544..bcd4c091 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "gardenlinux" -version = "0.8.7" +version = "0.8.8" description = "Contains tools to work with the features directory of gardenlinux, for example deducting dependencies from feature sets or validating cnames" authors = ["Garden Linux Maintainers "] license = "Apache-2.0" diff --git a/src/gardenlinux/features/__main__.py b/src/gardenlinux/features/__main__.py index 8c70098d..de725d3a 100644 --- a/src/gardenlinux/features/__main__.py +++ b/src/gardenlinux/features/__main__.py @@ -65,24 +65,24 @@ def main() -> None: args.cname ), "Please provide either `--features` or `--cname` argument" - arch = None + arch = args.arch flavor = None commit_id = None gardenlinux_root = path.dirname(args.feature_dir) - version = None - - if args.arch is not None: - arch = args.arch - - if args.version is not None: - version = args.version + version = args.version if arch is None or arch == "": arch = args.default_arch + if gardenlinux_root == "": + gardenlinux_root = "." + if version is None or version == "": - version_data = get_version_and_commit_id_from_files(gardenlinux_root) - version = f"{version_data[0]}-{version_data[1]}" + try: + version_data = get_version_and_commit_id_from_files(gardenlinux_root) + version = f"{version_data[0]}-{version_data[1]}" + except: + version = args.default_version if args.cname: cname = CName(args.cname, arch=arch, version=version) @@ -106,12 +106,6 @@ def main() -> None: feature_dir_name = path.basename(args.feature_dir) - if gardenlinux_root == "": - gardenlinux_root = "." - - if gardenlinux_root == "": - gardenlinux_root = "." - additional_filter_func = lambda node: node not in args.ignore if args.type == "arch": @@ -199,6 +193,9 @@ def get_version_and_commit_id_from_files(gardenlinux_root: str) -> tuple[str, st with open(path.join(gardenlinux_root, "VERSION"), "r") as fp: version = fp.read().strip() + if commit_id is None or version is None: + raise RuntimeError("Failed to read version or commit ID from files") + return (version, commit_id) diff --git a/src/gardenlinux/features/cname_main.py b/src/gardenlinux/features/cname_main.py index e4ec807e..e1954c24 100644 --- a/src/gardenlinux/features/cname_main.py +++ b/src/gardenlinux/features/cname_main.py @@ -44,19 +44,19 @@ def main(): assert re_match, f"Not a valid GardenLinux canonical name {args.cname}" - arch = None + arch = args.arch gardenlinux_root = dirname(args.feature_dir) version = args.version - if args.arch is not None: - arch = args.arch - - if args.version is not None: - version = args.version + if gardenlinux_root == "": + gardenlinux_root = "." if not version: - version_data = get_version_and_commit_id_from_files(gardenlinux_root) - version = f"{version_data[0]}-{version_data[1]}" + try: + version_data = get_version_and_commit_id_from_files(gardenlinux_root) + version = f"{version_data[0]}-{version_data[1]}" + except: + pass cname = CName(args.cname, arch=arch, version=version) From b32c701f2ee7c972c80c83588991b22c43d30a92 Mon Sep 17 00:00:00 2001 From: Tobias Wolf Date: Thu, 31 Jul 2025 06:44:08 +0200 Subject: [PATCH 2/2] Refine exceptions handled while reading data from `COMMIT` and `VERSION` Signed-off-by: Tobias Wolf --- src/gardenlinux/features/__main__.py | 9 ++++++++- src/gardenlinux/features/cname_main.py | 9 +++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/gardenlinux/features/__main__.py b/src/gardenlinux/features/__main__.py index de725d3a..d79e67a6 100644 --- a/src/gardenlinux/features/__main__.py +++ b/src/gardenlinux/features/__main__.py @@ -6,6 +6,7 @@ """ import argparse +import logging import os import re import sys @@ -81,7 +82,13 @@ def main() -> None: try: version_data = get_version_and_commit_id_from_files(gardenlinux_root) version = f"{version_data[0]}-{version_data[1]}" - except: + except RuntimeError as exc: + logging.debug( + "Failed to parse version information for GL root '{0}': {1}".format( + gardenlinux_root, exc + ) + ) + version = args.default_version if args.cname: diff --git a/src/gardenlinux/features/cname_main.py b/src/gardenlinux/features/cname_main.py index e1954c24..fad7e6e2 100644 --- a/src/gardenlinux/features/cname_main.py +++ b/src/gardenlinux/features/cname_main.py @@ -8,6 +8,7 @@ from functools import reduce from os.path import basename, dirname import argparse +import logging import re from .cname import CName @@ -55,8 +56,12 @@ def main(): try: version_data = get_version_and_commit_id_from_files(gardenlinux_root) version = f"{version_data[0]}-{version_data[1]}" - except: - pass + except RuntimeError as exc: + logging.warning( + "Failed to parse version information for GL root '{0}': {1}".format( + gardenlinux_root, exc + ) + ) cname = CName(args.cname, arch=arch, version=version)