Traceback (most recent call last): File "/usr/lib/python3.12/site-packages/pungi/scripts/pungi_koji.py", line 658, in cli_main main() File "/usr/lib/python3.12/site-packages/pungi/scripts/pungi_koji.py", line 353, in main run_compose( File "/usr/lib/python3.12/site-packages/pungi/scripts/pungi_koji.py", line 470, in run_compose init_phase.start() File "/usr/lib/python3.12/site-packages/pungi/phases/base.py", line 66, in start self.run() File "/usr/lib/python3.12/site-packages/pungi/phases/init.py", line 47, in run global_comps = write_global_comps(self.compose) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/pungi/phases/init.py", line 110, in write_global_comps get_file_from_scm(scm_dict, tmp_dir, compose=compose) File "/usr/lib/python3.12/site-packages/pungi/wrappers/scm.py", line 475, in get_file_from_scm scm.export_file( File "/usr/lib/python3.12/site-packages/pungi/wrappers/scm.py", line 264, in export_file tmp_dir = self.setup_repo(scm_root, scm_branch) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.12/site-packages/pungi/wrappers/scm.py", line 235, in setup_repo self.run_process_command(tmp_dir) File "/usr/lib/python3.12/site-packages/pungi/wrappers/scm.py", line 65, in run_process_command raise RuntimeError( RuntimeError: 'make comps-centos-stream-9.xml DISTRO=centos' failed with exit code 2 Frame run_process_command in /usr/lib/python3.12/site-packages/pungi/wrappers/scm.py at line 65 58 can_fail=True, 59 stdin_data="", 60 text=True, 61 errors="replace", 62 ) 63 if retcode != 0: 64 self.log_error("Output was: %r" % output) --> 65 raise RuntimeError( 66 "%r failed with exit code %s" % (self.command, retcode) 67 ) 68 69 70 class FileWrapper(ScmBase): 71 def export_dir(self, scm_root, scm_dir, target_dir, scm_branch=None): cwd = '/tmp/pungi-temp-git-repos-7151/comps.git-adc1776f7cfab54033e748af0596ddf53c470daa' output = './update-comps comps-centos-stream-9.xml centos\n./update-comps: line 11: intltool-merge: command not found\nwarning: failed to load external entity "comps-centos-stream-9.xml"\nunable to parse comps retcode = 2 self = self._logger = self.command = 'make comps-centos-stream-9.xml DISTRO=centos' self.compose = self.options = {} Frame setup_repo in /usr/lib/python3.12/site-packages/pungi/wrappers/scm.py at line 235 228 229 def setup_repo(self, scm_root, scm_branch): 230 tmp_dir = self.get_temp_repo_path(scm_root, scm_branch) 231 if not os.path.isdir(tmp_dir): 232 makedirs(tmp_dir) 233 with tracing.span("git-clone", repo=scm_root, ref=scm_branch): 234 self._clone(scm_root, scm_branch, tmp_dir) --> 235 self.run_process_command(tmp_dir) 236 return tmp_dir 237 238 def export_dir(self, scm_root, scm_dir, target_dir, scm_branch=None): 239 scm_dir = scm_dir.lstrip("/") 240 scm_branch = scm_branch or "master" 241 scm_branch = 'adc1776f7cfab54033e748af0596ddf53c470daa' scm_root = 'https://gitlab.com/redhat/centos-stream/release-engineering/comps.git' self = self._logger = self.command = 'make comps-centos-stream-9.xml DISTRO=centos' self.compose = self.options = {} tmp_dir = '/tmp/pungi-temp-git-repos-7151/comps.git-adc1776f7cfab54033e748af0596ddf53c470daa' Frame export_file in /usr/lib/python3.12/site-packages/pungi/wrappers/scm.py at line 264 257 258 self.log_debug( 259 "Exporting file %s from git %s (branch %s)..." 260 % (scm_file, scm_root, scm_branch) 261 ) 262 263 with lock: --> 264 tmp_dir = self.setup_repo(scm_root, scm_branch) 265 266 makedirs(target_dir) 267 shutil.copy2(os.path.join(tmp_dir, scm_file), target_path) 268 269 270 class RpmScmWrapper(ScmBase): arch = None scm_branch = 'adc1776f7cfab54033e748af0596ddf53c470daa' scm_file = 'comps-centos-stream-9.xml' scm_root = 'https://gitlab.com/redhat/centos-stream/release-engineering/comps.git' self = self._logger = self.command = 'make comps-centos-stream-9.xml DISTRO=centos' self.compose = self.options = {} target_dir = '/tmp/scm_checkout_315h23ew' target_path = '/tmp/scm_checkout_315h23ew/comps-centos-stream-9.xml' Frame get_file_from_scm in /usr/lib/python3.12/site-packages/pungi/wrappers/scm.py at line 475 468 # Most SCM wrappers need a temporary directory: the git repo is 469 # cloned there, and only relevant files are copied out. But this 470 # doesn't work for the container image fetching. That pulls in only 471 # required files, and the final output needs to be done by skopeo 472 # to correctly handle multiple containers landing in the same OCI 473 # archive. 474 dest = target_path if scm_type == "container-image" else tmp_dir --> 475 scm.export_file( 476 scm_repo, i, scm_branch=scm_branch, target_dir=dest, arch=arch 477 ) 478 if dest == tmp_dir: 479 files_copied += copy_all(tmp_dir, target_path) 480 return files_copied 481 arch = None command = 'make comps-centos-stream-9.xml DISTRO=centos' compose = dest = '/tmp/scm_checkout_315h23ew' files_copied = [] i = 'comps-centos-stream-9.xml' logger = options = {} scm = scm_branch = 'adc1776f7cfab54033e748af0596ddf53c470daa' scm_dict = {'scm': 'git', 'repo': 'https://gitlab.com/redhat/centos-stream/release-engineering/comps.git', 'branch': 'adc1776f7cfab54033e748af0596ddf53c470daa', 'file': 'comps-centos-stream-9.xml', 'command': 'm scm_file = 'comps-centos-stream-9.xml' scm_repo = 'https://gitlab.com/redhat/centos-stream/release-engineering/comps.git' scm_type = 'git' target_path = '/mnt/centos/composes/pungi/20260305-134447/work/global/tmp/comps_lhoqekx6' tmp_dir = '/tmp/scm_checkout_315h23ew' Frame write_global_comps in /usr/lib/python3.12/site-packages/pungi/phases/init.py at line 110 103 scm_dict["file"] = os.path.join(compose.config_dir, scm_dict["file"]) 104 else: 105 comps_name = os.path.basename(scm_dict) 106 scm_dict = os.path.join(compose.config_dir, scm_dict) 107 108 compose.log_debug("Writing global comps file: %s", comps_file_global) 109 tmp_dir = compose.mkdtemp(prefix="comps_") --> 110 get_file_from_scm(scm_dict, tmp_dir, compose=compose) 111 shutil.copy2(os.path.join(tmp_dir, comps_name), comps_file_global) 112 shutil.rmtree(tmp_dir) 113 114 return comps_file_global 115 116 compose = comps_file_global = '/mnt/centos/composes/pungi/20260305-134447/work/global/comps/comps-global.xml' comps_name = 'comps-centos-stream-9.xml' scm_dict = {'scm': 'git', 'repo': 'https://gitlab.com/redhat/centos-stream/release-engineering/comps.git', 'branch': 'adc1776f7cfab54033e748af0596ddf53c470daa', 'file': 'comps-centos-stream-9.xml', 'command': 'm tmp_dir = '/mnt/centos/composes/pungi/20260305-134447/work/global/tmp/comps_lhoqekx6' Frame run in /usr/lib/python3.12/site-packages/pungi/phases/init.py at line 47 40 # INIT must never be skipped, 41 # because it generates data for LIVEIMAGES 42 return False 43 44 def run(self): 45 if self.compose.has_comps: 46 # write global comps and arch comps, create comps repos --> 47 global_comps = write_global_comps(self.compose) 48 validate_comps(global_comps) 49 num_workers = self.compose.conf["createrepo_num_threads"] 50 run_in_threads( 51 _arch_worker, 52 [(self.compose, arch) for arch in self.compose.get_arches()], 53 threads=num_workers, self = self._skipped = False self._start_time = 1772718291.0642393 self.compose = self.finished = False self.msg = '---------- PHASE: INIT ----------' self.name = 'init' self.used_patterns = None Frame start in /usr/lib/python3.12/site-packages/pungi/phases/base.py at line 66 59 if self._skipped: 60 self.compose.log_warning("[SKIP ] %s" % self.msg) 61 self.finished = True 62 return 63 self._start_time = time.time() 64 self.compose.log_info("[BEGIN] %s" % self.msg) 65 self.compose.notifier.send("phase-start", phase_name=self.name) --> 66 self.run() 67 68 def get_config_block(self, variant, arch=None): 69 """In config for current phase, find a block corresponding to given 70 variant and arch. The arch should be given if and only if the config 71 uses variant/arch mapping. 72 """ self = self._skipped = False self._start_time = 1772718291.0642393 self.compose = self.finished = False self.msg = '---------- PHASE: INIT ----------' self.name = 'init' self.used_patterns = None Frame run_compose in /usr/lib/python3.12/site-packages/pungi/scripts/pungi_koji.py at line 470 463 errors.append("%s: %s" % (phase.name.upper(), i)) 464 if errors: 465 for i in errors: 466 compose.log_error(i) 467 print(i) 468 raise RuntimeError("Configuration is not valid") 469 --> 470 init_phase.start() 471 init_phase.stop() 472 473 pkgset_phase.start() 474 pkgset_phase.stop() 475 476 # WEAVER phase - launches other phases which can safely run in parallel buildinstall_phase = compose = config_copy_path = '/mnt/centos/composes/pungi/20260305-134447/logs/global/config-copy' config_dump_full = '/mnt/centos/composes/pungi/20260305-134447/logs/global/config-dump.global.log' config_file = '/home/composer/tests/pungi-centos/centos/variables.conf' create_latest_link = True createiso_phase = createrepo_phase = errors = [] extra_isos_phase = extrafiles_phase = f = <_io.TextIOWrapper name='/mnt/centos/composes/pungi/20260305-134447/logs/global/config-dump.global.log' mode='w' encoding='UTF-8'> gather_phase = image_build_phase = image_checksum_phase = image_container_phase = imagebuilder_phase = init_phase = installed_pkgs_log = '/mnt/centos/composes/pungi/20260305-134447/logs/global/installed-pkgs.global.log' kiwibuild_phase = latest_link_components = -1 latest_link_status = None livemedia_phase = osbs_phase = osbuild_phase = ostree_container_phase = ostree_installer_phase = ostree_phase = phase = pkgset_phase = pungi = repoclosure_phase = test_phase = Frame main in /usr/lib/python3.12/site-packages/pungi/scripts/pungi_koji.py at line 353 346 logger.error("Config validation failed with the error: %s" % error) 347 fail_to_start("Config validation failed", errors=errors) 348 sys.exit(1) 349 350 notifier.compose = compose 351 COMPOSE = compose 352 try: --> 353 run_compose( 354 compose, 355 create_latest_link=create_latest_link, 356 latest_link_status=latest_link_status, 357 latest_link_components=latest_link_components, 358 ) 359 except UnsignedPackagesError: Compose = PHASES_NAMES_MODIFIED = ['buildinstall', 'createiso', 'createrepo', 'extra_files', 'extra_isos', 'gather', 'image_build', 'imagebuilder', 'image_checksum', 'image_container', 'init', 'kiwibuild', 'live_media', 'osbs', 'osbui abort = .abort at 0x7f60fc924ae0> ci = ci_path = '/mnt/centos/composes/pungi/20260305-134447/work/global/composeinfo-base.json' compose = compose_dir = '/mnt/centos/composes/pungi/20260305-134447' compose_type = 'test' conf = {'RELEASE_NAME': 'CentOS Stream', 'RELEASE_SHORT': 'CentOS-Stream', 'RELEASE_VERSION': '9', 'PKGSET_KOJI_TAG': 'c9s-compose', 'PKGSET_KOJI_MODULE_TAG': 'el9-modules-pending-signed', 'RUNROOT_CHANNEL': create_latest_link = True errors = [] fail_to_start = .fail_to_start at 0x7f60fc9249a0> group = kobo = latest_link_components = -1 latest_link_status = None logger = notifier = opts = Namespace(target_dir=None, compose_dir='/mnt/centos/composes/pungi/20260305-134447', label=None, no_label=True, supported=False, old_composes=[], config='/home/composer/tests/pungi-centos/centos.conf' parser = ArgumentParser(prog='pungi-koji', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) productmd = pungi = rv = None warning = 'WARNING: Unrecognized config option: RELEASE_VERSION.' warnings = ["WARNING: Config option release_is_layered was removed and has no effect; remove it. It's layered if there's configuration for base product.", "WARNING: Config option runroot was removed and has no e Frame cli_main in /usr/lib/python3.12/site-packages/pungi/scripts/pungi_koji.py at line 658 651 signal.signal(signal.SIGINT, sigterm_handler) 652 signal.signal(signal.SIGTERM, sigterm_handler) 653 654 tracing.setup() 655 656 with tracing.span("run-compose"): 657 try: --> 658 main() 659 except (Exception, KeyboardInterrupt) as ex: 660 tracing.record_exception(ex) 661 if COMPOSE: 662 COMPOSE.log_error("Compose run failed: %s" % ex) 663 COMPOSE.traceback(show_locals=getattr(ex, "show_locals", True)) 664 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir) ex = RuntimeError("'make comps-centos-stream-9.xml DISTRO=centos' failed with exit code 2")