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.
147 lines
6.5 KiB
147 lines
6.5 KiB
From a5dd7950434e4ff8dc37d77803f23dcb480aaa4b Mon Sep 17 00:00:00 2001
|
|
From: Neal Gompa <ngompa@velocitylimitless.com>
|
|
Date: Mon, 26 Aug 2024 10:02:43 -0400
|
|
Subject: [PATCH 6/6] kiwi: Add support for overriding version and releasever
|
|
|
|
This allows for kiwi descriptions that are compatible across
|
|
multiple targets to be easily used without needless modifications.
|
|
|
|
Additionally, it allows for custom values when preparing milestone
|
|
releases without needlessly modifying the descriptions.
|
|
---
|
|
plugins/builder/kiwi.py | 15 +++++++++++----
|
|
plugins/cli/kiwi.py | 6 ++++++
|
|
plugins/hub/kiwi.py | 9 +++++++--
|
|
3 files changed, 24 insertions(+), 6 deletions(-)
|
|
|
|
diff --git a/plugins/builder/kiwi.py b/plugins/builder/kiwi.py
|
|
index 2ac5cb3b..f222dec1 100644
|
|
--- a/plugins/builder/kiwi.py
|
|
+++ b/plugins/builder/kiwi.py
|
|
@@ -103,6 +103,8 @@ class KiwiBuildTask(BuildImageTask):
|
|
name = "%s-%s" % (name, opts.get('profile', default_profile))
|
|
|
|
bld_info = {}
|
|
+ if opts.get('version'):
|
|
+ version = opts['version']
|
|
if opts.get('release'):
|
|
release = opts['release']
|
|
else:
|
|
@@ -188,7 +190,7 @@ class KiwiCreateImageTask(BaseBuildTask):
|
|
Methods = ['createKiwiImage']
|
|
_taskWeight = 2.0
|
|
|
|
- def prepareDescription(self, desc_path, name, version, repos, arch):
|
|
+ def prepareDescription(self, desc_path, name, version, repos, repo_releasever, arch):
|
|
# XML errors should have already been caught by parent task
|
|
newxml = xml.dom.minidom.parse(desc_path) # nosec
|
|
image = newxml.getElementsByTagName('image')[0]
|
|
@@ -229,11 +231,15 @@ class KiwiCreateImageTask(BaseBuildTask):
|
|
|
|
image.setAttribute('name', name)
|
|
preferences = image.getElementsByTagName('preferences')[0]
|
|
+
|
|
+ # Handle version and release-version
|
|
+ preferences.getElementsByTagName('version')[0].childNodes[0].data = version
|
|
try:
|
|
- preferences.getElementsByTagName('release-version')[0].childNodes[0].data = version
|
|
+ preferences.getElementsByTagName('release-version')[0].childNodes[0].data \
|
|
+ = repo_releasever
|
|
except IndexError:
|
|
releasever_node = newxml.createElement('release-version')
|
|
- text = newxml.createTextNode(version)
|
|
+ text = newxml.createTextNode(repo_releasever)
|
|
releasever_node.appendChild(text)
|
|
preferences.appendChild(releasever_node)
|
|
|
|
@@ -357,6 +363,7 @@ class KiwiCreateImageTask(BaseBuildTask):
|
|
baseurl = '%s/%s' % (repopath, arch)
|
|
self.logger.debug('BASEURL: %s' % baseurl)
|
|
repos.append(baseurl)
|
|
+ repo_releasever = self.opts.get('repo_releasever', version)
|
|
|
|
base_path = os.path.dirname(desc_path)
|
|
if opts.get('make_prep'):
|
|
@@ -368,7 +375,7 @@ class KiwiCreateImageTask(BaseBuildTask):
|
|
raise koji.GenericError("Preparation step failed")
|
|
|
|
path = os.path.join(scmsrcdir, desc_path)
|
|
- desc, types = self.prepareDescription(path, name, version, repos, arch)
|
|
+ desc, types = self.prepareDescription(path, name, version, repos, repo_releasever, arch)
|
|
self.uploadFile(desc)
|
|
|
|
target_dir = '/builddir/result/image'
|
|
diff --git a/plugins/cli/kiwi.py b/plugins/cli/kiwi.py
|
|
index 02958373..9d177ac9 100644
|
|
--- a/plugins/cli/kiwi.py
|
|
+++ b/plugins/cli/kiwi.py
|
|
@@ -19,11 +19,13 @@ def handle_kiwi_build(goptions, session, args):
|
|
parser = OptionParser(usage=usage)
|
|
parser.add_option("--scratch", action="store_true", default=False,
|
|
help="Perform a scratch build")
|
|
+ parser.add_option("--version", help="Override default version of the output image")
|
|
parser.add_option("--release", help="Release of the output image")
|
|
parser.add_option("--repo", action="append",
|
|
help="Specify a repo that will override the repo used to install "
|
|
"RPMs in the image. May be used multiple times. The "
|
|
"build tag repo associated with the target is the default.")
|
|
+ parser.add_option("--repo-releasever", help="Override default releasever of the output image")
|
|
parser.add_option("--noprogress", action="store_true",
|
|
help="Do not display progress of the upload")
|
|
parser.add_option("--kiwi-profile", action="store", default=None,
|
|
@@ -71,6 +73,8 @@ def handle_kiwi_build(goptions, session, args):
|
|
if arch]
|
|
if options.kiwi_profile:
|
|
kwargs['profile'] = options.kiwi_profile
|
|
+ if options.version:
|
|
+ kwargs['version'] = options.version
|
|
if options.release:
|
|
kwargs['release'] = options.release
|
|
if options.make_prep:
|
|
@@ -85,6 +89,8 @@ def handle_kiwi_build(goptions, session, args):
|
|
kwargs['arches'] = [canonArch(arch) for arch in options.arches]
|
|
if options.repo:
|
|
kwargs['repos'] = options.repo
|
|
+ if options.repo_releasever:
|
|
+ kwargs['repo_releasever'] = options.repo_releasever
|
|
|
|
if session.hub_version < (1, 35, 0):
|
|
warn("hub version is < 1.35, buildroot repo is always used in addition to specified repos")
|
|
diff --git a/plugins/hub/kiwi.py b/plugins/hub/kiwi.py
|
|
index 81852e52..4aeb1048 100644
|
|
--- a/plugins/hub/kiwi.py
|
|
+++ b/plugins/hub/kiwi.py
|
|
@@ -17,9 +17,10 @@ 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, result_bundle_name_format=None, use_buildroot_repo=True):
|
|
+ type=None, type_attr=None, result_bundle_name_format=None, use_buildroot_repo=True,
|
|
+ version=None, repo_releasever=None):
|
|
context.session.assertPerm('image')
|
|
- for i in [desc_url, desc_path, profile, release]:
|
|
+ for i in [desc_url, desc_path, profile, version, release, repo_releasever]:
|
|
if i is not None:
|
|
kojihub.convert_value(i, cast=str, check_only=True)
|
|
if repos:
|
|
@@ -52,12 +53,16 @@ def kiwiBuild(target, arches, desc_url, desc_path, optional_arches=None, profile
|
|
opts['scratch'] = True
|
|
if profile:
|
|
opts['profile'] = profile
|
|
+ if version:
|
|
+ opts['version'] = version
|
|
if release:
|
|
opts['release'] = release
|
|
if optional_arches:
|
|
opts['optional_arches'] = optional_arches
|
|
if repos:
|
|
opts['repos'] = repos
|
|
+ if repo_releasever:
|
|
+ opts['repo_releasever'] = repo_releasever
|
|
if make_prep:
|
|
opts['make_prep'] = True
|
|
if type:
|
|
--
|
|
2.46.0
|
|
|