From b22449c553b344fd3a1ee7cb49c769754ddfa347 Mon Sep 17 00:00:00 2001 From: Neal Gompa Date: Sun, 11 Aug 2024 14:42:31 -0400 Subject: [PATCH 1/2] kiwi: Add support for overriding image type attributes This allows setting things like the volume and application IDs for ISO builds. --- plugins/builder/kiwi.py | 2 ++ plugins/cli/kiwi.py | 5 +++++ plugins/hub/kiwi.py | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/plugins/builder/kiwi.py b/plugins/builder/kiwi.py index a9d63cf0..99737f7c 100644 --- a/plugins/builder/kiwi.py +++ b/plugins/builder/kiwi.py @@ -389,6 +389,8 @@ class KiwiCreateImageTask(BaseBuildTask): '--description', os.path.join(os.path.basename(scmsrcdir), base_path), '--target-dir', target_dir, ]) + for typeattr in self.opts.get('type_attr', []):: + cmd.extend(['--set-type-attr', typeattr]) rv = broot.mock(['--cwd', broot.tmpdir(within=True), '--chroot', '--'] + cmd) if rv: raise koji.GenericError("Kiwi failed") diff --git a/plugins/cli/kiwi.py b/plugins/cli/kiwi.py index 6e965c05..7e3e9771 100644 --- a/plugins/cli/kiwi.py +++ b/plugins/cli/kiwi.py @@ -28,6 +28,9 @@ def handle_kiwi_build(goptions, session, args): parser.add_option("--kiwi-profile", action="store", default=None, help="Select profile from description file") parser.add_option("--type", help="Override default build type from description") + parser.add_option("--type-attr", action="append", default=[], + help="Override default attributes for the build type from description. " + "May be used multiple times.") parser.add_option("--make-prep", action="store_true", default=False, help="Run 'make prep' in checkout before starting the build") parser.add_option("--can-fail", action="store", dest="optional_arches", @@ -68,6 +71,8 @@ def handle_kiwi_build(goptions, session, args): kwargs['make_prep'] = True if options.type: kwargs['type'] = options.type + if options.type_attr: + kwargs['type_attr'] = options.type_attr if options.arches: kwargs['arches'] = [canonArch(arch) for arch in options.arches] if options.repo: diff --git a/plugins/hub/kiwi.py b/plugins/hub/kiwi.py index 7b0c2f05..852cbad1 100644 --- a/plugins/hub/kiwi.py +++ b/plugins/hub/kiwi.py @@ -17,13 +17,15 @@ koji.tasks.LEGACY_SIGNATURES['createKiwiImage'] = [ @export def kiwiBuild(target, arches, desc_url, desc_path, optional_arches=None, profile=None, scratch=False, priority=None, make_prep=False, repos=None, release=None, - type=None): + type=None, type_attr=None): context.session.assertPerm('image') for i in [desc_url, desc_path, profile, release]: if i is not None: kojihub.convert_value(i, cast=str, check_only=True) if repos: kojihub.convert_value(repos, cast=list, check_only=True) + if type_attr: + kojihub.convert_value(type_attr, cast=list, check_only=True) kojihub.get_build_target(target, strict=True) if isinstance(arches, list): arches = " ".join(arches) @@ -58,6 +60,8 @@ def kiwiBuild(target, arches, desc_url, desc_path, optional_arches=None, profile opts['make_prep'] = True if type: opts['type'] = type + if type_attr: + opts['type_attr'] = type_attr return kojihub.make_task('kiwiBuild', [target, arches, desc_url, desc_path, opts], **taskOpts) -- 2.46.0