alter name by selected profile

This commit is contained in:
Tomas Kopecek 2021-10-26 14:43:53 +02:00
parent 2d6b03eeba
commit 2d6a14845f

View file

@ -14,7 +14,7 @@ class KiwiBuildTask(BuildImageTask):
Methods = ['kiwiBuild']
_taskWeight = 4.0
def get_nvr(self, desc_path):
def get_nvrp(self, desc_path):
# TODO: update release in desc
kiwi_files = glob.glob('%s/*.kiwi' % desc_path)
if len(kiwi_files) != 1:
@ -37,9 +37,17 @@ class KiwiBuildTask(BuildImageTask):
release = preferences.getElementsByTagName('release')[0].childNodes[0].data
except Exception:
release = None
profile = None
try:
for p in image.getElementsByTagName('profiles')[0].getElementsByTagName('profile'):
if p.getAttribute('image') == 'true':
profile = p.getAttribute('name')
except IndexError:
# missing profiles section
pass
if not version:
raise koji.BuildError("Description file doesn't contain preferences/version")
return name, version, release
return name, version, release, profile
def handler(self, target, arches, desc_url, desc_path, opts=None):
target_info = self.session.getBuildTarget(target, strict=True)
@ -91,7 +99,12 @@ class KiwiBuildTask(BuildImageTask):
srcdir=scmsrcdir)
path = os.path.join(scmsrcdir, desc_path)
name, version, release = self.get_nvr(path)
name, version, release, default_profile = self.get_nvrp(path)
if opts.get('profile') or default_profile:
# package name is a combination of name + profile
# in case profiles are not used, let's use the standalone name
name = "%s-%s" % (name, opts.get('profile', default_profile))
bld_info = {}
if not opts['scratch']:
@ -177,7 +190,7 @@ class KiwiCreateImageTask(BaseBuildTask):
Methods = ['createKiwiImage']
_taskWeight = 2.0
def prepareDescription(self, desc_path, release, repos):
def prepareDescription(self, desc_path, name, release, repos):
# TODO: update release in desc
kiwi_files = glob.glob('%s/*.kiwi' % desc_path)
if len(kiwi_files) != 1:
@ -212,6 +225,7 @@ class KiwiCreateImageTask(BaseBuildTask):
repo_node.appendChild(source)
image.appendChild(repo_node)
image.setAttribute('name', name)
# TODO: release is part of version (major.minor.release)
# preferences = image.getElementsByTagName('preferences')[0]
# try:
@ -229,7 +243,10 @@ class KiwiCreateImageTask(BaseBuildTask):
# write file back
with open(cfg, 'wt') as f:
f.write(newxml.toprettyxml())
s = newxml.toprettyxml()
# toprettyxml adds too many whitespaces/newlines
s = '\n'.join([x for x in s.splitlines() if x.strip()])
f.write(s)
return cfg, types
@ -335,7 +352,7 @@ class KiwiCreateImageTask(BaseBuildTask):
repos.append(baseurl)
path = os.path.join(scmsrcdir, desc_path)
desc, types = self.prepareDescription(path, release, repos)
desc, types = self.prepareDescription(path, name, release, repos)
self.uploadFile(desc)
cmd = ['kiwi-ng']
@ -351,13 +368,15 @@ class KiwiCreateImageTask(BaseBuildTask):
if rv:
raise koji.GenericError("Kiwi failed")
result = json.load(open(joinpath(broot.rootdir(), target_dir[1:], 'kiwi.result'), 'rb'))
#result = json.load(open(joinpath(broot.rootdir(), target_dir[1:], 'kiwi.result'), 'rb'))
import pickle
result = pickle.load(open(joinpath(broot.rootdir(), target_dir[1:], 'kiwi.result'), 'rb'))
imgdata = {
'arch': arch,
'task_id': self.id,
'logs': [
os.path.basename(desc)
os.path.basename(desc),
],
'name': name,
'version': version,
@ -365,19 +384,25 @@ class KiwiCreateImageTask(BaseBuildTask):
'rpmlist': [],
'files': [],
}
# TODO: upload detailed log?
# build/image-root.log
# os.path.join(broot.tmpdir(), target_dir[1:], "build/image-root.log")
root_log_path = os.path.join(broot.tmpdir(), target_dir[1:], "build/image-root.log")
if os.path.exists(root_log_path):
self.uploadFile(root_log_path, remoteName="image-root.log")
# for type in types:
# img_file = '%s.%s-%s.%s' % (name, version, arch, type)
# self.uploadFile(os.path.join(broot.rootdir()), remoteName=img_file)
# imgdata['files'].append(img_file)
fpath = os.path.join(broot.rootdir(),
result['result_files']['disk_format_image'].filename[1:])
img_file = os.path.basename(fpath)
self.uploadFile(fpath, remoteName=os.path.basename(img_file))
imgdata['files'].append(img_file)
for ftype in ('disk_format_image', 'installation_image'):
fdata = result.result_files.get(ftype)
if not fdata:
continue
fpath = os.path.join(broot.rootdir(), fdata.filename[1:])
img_file = os.path.basename(fpath)
self.uploadFile(fpath, remoteName=os.path.basename(img_file))
imgdata['files'].append(img_file)
if not self.opts.get('scratch'):
if False: