Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 637, in cli_main
main()
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 337, in main
latest_link_components=latest_link_components,
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 480, in run_compose
init_phase.start()
File "/usr/lib/python3.6/site-packages/pungi/phases/base.py", line 63, in start
self.run()
File "/usr/lib/python3.6/site-packages/pungi/phases/init.py", line 47, in run
validate_comps(global_comps)
File "/usr/lib/python3.6/site-packages/pungi/phases/init.py", line 248, in validate_comps
wrapper = CompsWrapper(path)
File "/usr/lib/python3.6/site-packages/pungi/wrappers/comps.py", line 239, in __init__
self.comps.fromxml_f(comps_file)
_libpycomps.ParserError: Fatal parser error
Frame __init__ in /usr/lib/python3.6/site-packages/pungi/wrappers/comps.py at line 239
232 Class for reading and retrieving information from comps XML files. This
233 class is based on libcomps, and therefore only valid comps file with no
234 additional extensions are supported by it.
235 """
236
237 def __init__(self, comps_file):
238 self.comps = libcomps.Comps()
--> 239 self.comps.fromxml_f(comps_file)
240 self.comps_file = comps_file
241
242 def get_comps_groups(self):
243 """Return a list of group IDs."""
244 return [group.id for group in self.comps.groups]
245
comps_file = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/work/global/comps/comps-global.xml'
self =
self.comps = <_libpycomps.Comps object at 0x7f97b04409c0>
Frame validate_comps in /usr/lib/python3.6/site-packages/pungi/phases/init.py at line 248
241 raise RuntimeError(
242 "There are duplicated module defaults:\n%s" % "\n".join(errors)
243 )
244
245
246 def validate_comps(path):
247 """Check that there are whitespace issues in comps."""
--> 248 wrapper = CompsWrapper(path)
249 wrapper.validate()
path = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/work/global/comps/comps-global.xml'
Frame run in /usr/lib/python3.6/site-packages/pungi/phases/init.py at line 47
40 # because it generates data for LIVEIMAGES
41 return False
42
43 def run(self):
44 if self.compose.has_comps:
45 # write global comps and arch comps, create comps repos
46 global_comps = write_global_comps(self.compose)
--> 47 validate_comps(global_comps)
48 num_workers = self.compose.conf["createrepo_num_threads"]
49 run_in_threads(
50 _arch_worker,
51 [(self.compose, arch) for arch in self.compose.get_arches()],
52 threads=num_workers,
53 )
global_comps = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/work/global/comps/comps-global.xml'
self =
self._skipped = False
self.compose =
self.finished = False
self.msg = '---------- PHASE: INIT ----------'
self.name = 'init'
self.used_patterns = None
Frame start in /usr/lib/python3.6/site-packages/pungi/phases/base.py at line 63
56 self._skipped = self.skip()
57 if self._skipped:
58 self.compose.log_warning("[SKIP ] %s" % self.msg)
59 self.finished = True
60 return
61 self.compose.log_info("[BEGIN] %s" % self.msg)
62 self.compose.notifier.send("phase-start", phase_name=self.name)
--> 63 self.run()
64
65 def get_config_block(self, variant, arch=None):
66 """In config for current phase, find a block corresponding to given
67 variant and arch. The arch should be given if and only if the config
68 uses variant/arch mapping.
69 """
self =
self._skipped = False
self.compose =
self.finished = False
self.msg = '---------- PHASE: INIT ----------'
self.name = 'init'
self.used_patterns = None
Frame run_compose in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 480
473 print(err_msg)
474 raise RuntimeError(err_msg)
475
476 if signing_key_password:
477 # Store the password
478 compose.conf["signing_key_password"] = signing_key_password
479
--> 480 init_phase.start()
481 init_phase.stop()
482
483 pkgset_phase.start()
484 pkgset_phase.stop()
485
486 # WEAVER phase - launches other phases which can safely run in parallel
buildinstall_phase =
compose =
config_copy_path = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/logs/global/config-copy'
config_dump_full = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/logs/global/config-dump.global.log'
config_file = '/root/opencloudos/compose/pungi-opencloudos/opencloudos/override.conf'
create_latest_link = True
createiso_phase =
createrepo_phase =
errors = []
extra_isos_phase =
extrafiles_phase =
f = <_io.TextIOWrapper name='/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/logs/global/config-dump.global.log' mode='w' encoding='UTF-8'>
gather_phase =
image_build_phase =
image_checksum_phase =
image_container_phase =
init_phase =
latest_link_components = -1
latest_link_status = None
liveimages_phase =
livemedia_phase =
osbs_phase =
osbuild_phase =
ostree_installer_phase =
ostree_phase =
phase =
pkgset_phase =
pungi =
repoclosure_phase =
test_phase =
Frame main in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 337
330 notifier.compose = compose
331 COMPOSE = compose
332 try:
333 run_compose(
334 compose,
335 create_latest_link=create_latest_link,
336 latest_link_status=latest_link_status,
--> 337 latest_link_components=latest_link_components,
338 )
339 except UnsignedPackagesError:
340 # There was an unsigned package somewhere. It is not safe to reuse any
341 # package set from this compose (since we could leak the unsigned
342 # package). Let's make sure all reuse files are deleted.
343 for fp in glob.glob(compose.paths.work.pkgset_reuse_file("*")):
Compose =
PHASES_NAMES_MODIFIED = ['buildinstall', 'createiso', 'createrepo', 'extra_files', 'extra_isos', 'gather', 'image_build', 'image_checksum', 'image_container', 'init', 'live_images', 'live_media', 'osbs', 'osbuild', 'ostree',
abort = .abort at 0x7f97b0e52048>
compose =
compose_dir = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1'
compose_type = 'production'
conf = {'RELEASE_NAME': 'OpenCloudOS', 'RELEASE_SHORT': 'OpenCloudOS', 'RELEASE_VERSION': '9.0', 'PKGSET_KOJI_TAG': 'dist-oc9-compose', 'RUNROOT_CHANNEL': 'image', 'RUNROOT_TAG': 'dist-oc9-build', 'RELEASE_V
create_latest_link = True
errors = []
fail_to_start = .fail_to_start at 0x7f97b0e49ea0>
group =
kobo =
latest_link_components = -1
latest_link_status = None
logger =
notifier =
opts = Namespace(compose_dir=None, compose_type='production', config='/root/opencloudos/compose/pungi-opencloudos/oc-updates.conf', just_phase=[], koji_event=None, label='RC-9.0', latest_link_components=-1,
parser = ArgumentParser(prog='pungi-koji', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True)
productmd =
pungi =
warning = 'WARNING: Unrecognized config option: RELEASE_VERSION.'
warnings = ["WARNING: Config option runroot was removed and has no effect; remove it. Please specify 'runroot_method' if you want to enable runroot, otherwise run things locally.", 'WARNING: Config option bootab
Frame cli_main in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 637
630
631
632 def cli_main():
633 signal.signal(signal.SIGINT, sigterm_handler)
634 signal.signal(signal.SIGTERM, sigterm_handler)
635
636 try:
--> 637 main()
638 except (Exception, KeyboardInterrupt) as ex:
639 if COMPOSE:
640 tb_path = COMPOSE.paths.log.log_file("global", "traceback")
641 COMPOSE.log_error("Compose run failed: %s" % ex)
642 COMPOSE.log_error("Extended traceback in: %s" % tb_path)
643 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir)
ex = ParserError('Fatal parser error',)
f = <_io.BufferedWriter name='/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/logs/global/traceback.global.log'>
kobo =
tb_path = '/mnt/koji/compose/9/OpenCloudOS-9.0-updates-20231012.1/logs/global/traceback.global.log'