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.
This commit is contained in:
parent
e18e4006cc
commit
a5dd795043
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