You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
koji/0002-kiwi-Add-support-for-o...

84 lines
3.9 KiB

From 06840501bd7b52ee38a7a0c337cadfbf4512fc5d Mon Sep 17 00:00:00 2001
From: Neal Gompa <ngompa@velocitylimitless.com>
Date: Sun, 11 Aug 2024 15:11:51 -0400
Subject: [PATCH 2/2] kiwi: Add support for overriding kiwi image file name
format
In order to be able to support workflows where the exact structure
of the image filenames matter (e.g. for Linux distribution artifacts),
support optionally overriding the image file name structure.
---
plugins/builder/kiwi.py | 2 ++
plugins/cli/kiwi.py | 3 +++
plugins/hub/kiwi.py | 6 +++++-
3 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/plugins/builder/kiwi.py b/plugins/builder/kiwi.py
index 99737f7c..1b4a9481 100644
--- a/plugins/builder/kiwi.py
+++ b/plugins/builder/kiwi.py
@@ -408,6 +408,8 @@ class KiwiCreateImageTask(BaseBuildTask):
'--target-dir', target_dir,
'--bundle-dir', bundle_dir,
'--id', release]
+ if self.opts.get('result_bundle_name_format'):
+ cmd.extend(['--bundle-format', self.opts['result_bundle_name_format']])
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 7e3e9771..f0172575 100644
--- a/plugins/cli/kiwi.py
+++ b/plugins/cli/kiwi.py
@@ -31,6 +31,7 @@ def handle_kiwi_build(goptions, session, args):
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("--result-bundle-name-format", help="Override default bundle name format")
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",
@@ -73,6 +74,8 @@ def handle_kiwi_build(goptions, session, args):
kwargs['type'] = options.type
if options.type_attr:
kwargs['type_attr'] = options.type_attr
+ if options.result_bundle_name_format:
+ kwargs['result_bundle_name_format'] = options.result_bundle_name_format
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 852cbad1..15f352cc 100644
--- a/plugins/hub/kiwi.py
+++ b/plugins/hub/kiwi.py
@@ -17,7 +17,7 @@ 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_attr=None):
+ type=None, type_attr=None, result_bundle_name_format=None):
context.session.assertPerm('image')
for i in [desc_url, desc_path, profile, release]:
if i is not None:
@@ -26,6 +26,8 @@ def kiwiBuild(target, arches, desc_url, desc_path, optional_arches=None, profile
kojihub.convert_value(repos, cast=list, check_only=True)
if type_attr:
kojihub.convert_value(type_attr, cast=list, check_only=True)
+ if result_bundle_name_format:
+ kojihub.convert_value(result_bundle_name_format, cast=str, check_only=True)
kojihub.get_build_target(target, strict=True)
if isinstance(arches, list):
arches = " ".join(arches)
@@ -62,6 +64,8 @@ def kiwiBuild(target, arches, desc_url, desc_path, optional_arches=None, profile
opts['type'] = type
if type_attr:
opts['type_attr'] = type_attr
+ if result_bundle_name_format:
+ opts['result_bundle_name_format'] = result_bundle_name_format
return kojihub.make_task('kiwiBuild',
[target, arches, desc_url, desc_path, opts],
**taskOpts)
--
2.46.0