PR#4184: kiwi: Add support for overriding version and releasever
Merges #4184 https://pagure.io/koji/pull-request/4184 Fixes: #4183 https://pagure.io/koji/issue/4183 kiwi: Add support for overriding version and release-version attributes
This commit is contained in:
commit
7ce96c9ec3
3 changed files with 24 additions and 6 deletions
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue