From 5c8f9c3e09e55b9445c88a64e3ce35a841b9335d Mon Sep 17 00:00:00 2001 From: Igor Raits Date: Jan 19 2022 14:26:32 +0000 Subject: kiwi: Collect all files from bundle directory Bundle directory has slightly different files (compressed, etc.) and does not contain any JSON files so let's just collect all files from there. Signed-off-by: Igor Raits --- diff --git a/plugins/builder/kiwi.py b/plugins/builder/kiwi.py index cac54ee..e2b2e83 100644 --- a/plugins/builder/kiwi.py +++ b/plugins/builder/kiwi.py @@ -1,6 +1,4 @@ import glob -import json -from json.decoder import JSONDecodeError import os import xml.dom.minidom from fnmatch import fnmatch @@ -374,17 +372,6 @@ class KiwiCreateImageTask(BaseBuildTask): if rv: raise koji.GenericError("Kiwi failed") - resultdir = joinpath(broot.rootdir(), target_dir[1:]) - try: - # new version has json format, older pickle (needs python3-kiwi installed) - result_files = json.load(open(joinpath(resultdir, 'kiwi.result.json'))) - except (FileNotFoundError, JSONDecodeError): - # try old variant - import pickle - result = pickle.load(open(joinpath(resultdir, 'kiwi.result'), 'rb')) # nosec - # convert from namedtuple's to normal dict - result_files = {k: v._asdict() for k, v in result.result_files.items()} - imgdata = { 'arch': arch, 'task_id': self.id, @@ -404,25 +391,18 @@ class KiwiCreateImageTask(BaseBuildTask): if os.path.exists(root_log_path): self.uploadFile(root_log_path, remoteName="image-root.log") - for ftype, fdata in result_files.items(): - # hack to use correct paths derived from results - filename = os.path.basename(fdata['filename']) - (name, ext) = os.path.splitext(filename) - filename = f'{name}-{release}{ext}' - fpath = os.path.dirname(fdata['filename'])[len(target_dir) + 1:] - fpath = os.path.join(broot.rootdir(), bundle_dir[1:], fpath, filename) - img_file = os.path.basename(fpath) - if os.path.exists(fpath): - self.uploadFile(fpath, remoteName=os.path.basename(img_file)) - imgdata['files'].append(img_file) - else: - self.logger.debug(f'File {img_file} is not present in bundle but is in results') + bundle_path = os.path.join(broot.rootdir(), bundle_dir[1:]) + for fname in os.listdir(bundle_path): + self.uploadFile(os.path.join(bundle_path, fname), remoteName=fname) + imgdata['files'].append(fname) if not self.opts.get('scratch'): if False: # should be used after kiwi update - fpath = os.path.join(broot.rootdir(), - result_files['image_packages'].filename[1:]) + fpath = os.path.join( + bundle_path, + next(f for f in imgdata['files'] if f.endswith('.packages')), + ) hdrlist = self.getImagePackages(fpath) else: cachepath = os.path.join(broot.rootdir(), 'var/cache/kiwi/dnf')