Traceback (most recent call last): File "/usr/lib/python3.11/site-packages/pungi/scripts/pungi_koji.py", line 683, in cli_main main() File "/usr/lib/python3.11/site-packages/pungi/scripts/pungi_koji.py", line 352, in main run_compose( File "/usr/lib/python3.11/site-packages/pungi/scripts/pungi_koji.py", line 512, in run_compose pkgset_phase.start() File "/usr/lib/python3.11/site-packages/pungi/phases/base.py", line 66, in start self.run() File "/usr/lib/python3.11/site-packages/pungi/phases/pkgset/__init__.py", line 36, in run self.package_sets, self.path_prefix = SourceClass(self.compose)() ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pungi/phases/pkgset/sources/source_koji.py", line 198, in __call__ package_sets = get_pkgset_from_koji( ^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pungi/phases/pkgset/sources/source_koji.py", line 206, in get_pkgset_from_koji return populate_global_pkgset(compose, koji_wrapper, path_prefix, event_info) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pungi/phases/pkgset/sources/source_koji.py", line 919, in populate_global_pkgset return MaterializedPackageSet.create_many(partials) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pungi/phases/pkgset/common.py", line 292, in create_many big_pool.stop() File "/usr/lib/python3.11/site-packages/kobo/threads.py", line 117, in stop i.join() File "/usr/lib64/python3.11/threading.py", line 1112, in join self._wait_for_tstate_lock() File "/usr/lib64/python3.11/threading.py", line 1132, in _wait_for_tstate_lock if lock.acquire(block, timeout): ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/site-packages/pungi/scripts/pungi_koji.py", line 674, in sigterm_handler sys.stderr.flush() BrokenPipeError: [Errno 32] Broken pipe Frame sigterm_handler in /usr/lib/python3.11/site-packages/pungi/scripts/pungi_koji.py at line 674 667 COMPOSE.log_error("Compose run failed: signal %s" % signum) 668 COMPOSE.log_error("Traceback:\n%s" % "\n".join(traceback.format_stack(frame))) 669 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir) 670 COMPOSE.write_status("TERMINATED") 671 else: 672 print("Signal %s captured" % signum) 673 sys.stdout.flush() --> 674 sys.stderr.flush() 675 sys.exit(1) 676 677 678 def cli_main(): 679 signal.signal(signal.SIGINT, sigterm_handler) 680 signal.signal(signal.SIGTERM, sigterm_handler) frame = signum = 2 Frame _wait_for_tstate_lock in /usr/lib64/python3.11/threading.py at line 1132 1125 lock = self._tstate_lock 1126 if lock is None: 1127 # already determined that the C code is done 1128 assert self._is_stopped 1129 return 1130 1131 try: --> 1132 if lock.acquire(block, timeout): 1133 lock.release() 1134 self._stop() 1135 except: 1136 if lock.locked(): 1137 # bpo-45274: lock.acquire() acquired the lock, but the function 1138 # was interrupted with an exception before reaching the block = True lock = self = self._args = self._daemonic = False self._ident = 281471648911776 self._initialized = True self._is_stopped = True self._kwargs = {} self._name = 'Thread-54' self._native_id = 1746000 self._started = self._stderr = <_io.TextIOWrapper name='' mode='w' encoding='utf-8'> self._target = None self._tstate_lock = None self.daemon = False self.failed = False self.get_timeout = 1 self.ident = 281471648911776 self.kill = False self.name = 'Thread-54' self.native_id = 1746000 self.pool = self.running = False timeout = -1 Frame join in /usr/lib64/python3.11/threading.py at line 1112 1105 raise RuntimeError("Thread.__init__() not called") 1106 if not self._started.is_set(): 1107 raise RuntimeError("cannot join thread before it is started") 1108 if self is current_thread(): 1109 raise RuntimeError("cannot join current thread") 1110 1111 if timeout is None: --> 1112 self._wait_for_tstate_lock() 1113 else: 1114 # the behavior of a negative timeout isn't documented, but 1115 # historically .join(timeout=x) for x<0 has acted as if timeout=0 1116 self._wait_for_tstate_lock(timeout=max(timeout, 0)) 1117 1118 def _wait_for_tstate_lock(self, block=True, timeout=-1): self = self._args = self._daemonic = False self._ident = 281471648911776 self._initialized = True self._is_stopped = True self._kwargs = {} self._name = 'Thread-54' self._native_id = 1746000 self._started = self._stderr = <_io.TextIOWrapper name='' mode='w' encoding='utf-8'> self._target = None self._tstate_lock = None self.daemon = False self.failed = False self.get_timeout = 1 self.ident = 281471648911776 self.kill = False self.name = 'Thread-54' self.native_id = 1746000 self.pool = self.running = False timeout = None Frame stop in /usr/lib/python3.11/site-packages/kobo/threads.py at line 117 110 It is essential to call this method. If you do any work in between 111 ``start`` and ``stop``, make sure the ``stop`` method will always be 112 called, otherwise the program will never exit. 113 """ 114 for i in self.threads: 115 i.running = False 116 for i in self.threads: --> 117 i.join() 118 if self.exceptions: 119 exc_info = self.exceptions[0] 120 six.reraise(exc_info[0], exc_info[1], exc_info[2]) 121 122 def kill(self): 123 for i in self.threads: i = self = self._logger = None self._results = [] self.exceptions = [] self.queue = self.queue_get_lock = self.queue_processed = 1 self.queue_put_lock = self.queue_total = 1 self.results = [] self.threads = [] Frame create_many in /usr/lib/python3.11/site-packages/pungi/phases/pkgset/common.py at line 292 285 big_pool.start() 286 try: 287 small_pool.stop() 288 except Exception: 289 big_pool.kill() 290 raise 291 finally: --> 292 big_pool.stop() 293 294 return small_pool.results + big_pool.results 295 296 297 def get_all_arches(compose): 298 all_arches = set(["src"]) big_pool = create_partials = [functools.partial(>, , partial = functools.partial(>, , small_pool = Frame populate_global_pkgset in /usr/lib/python3.11/site-packages/pungi/phases/pkgset/sources/source_koji.py at line 919 912 MaterializedPackageSet.create, 913 compose, 914 pkgset, 915 path_prefix, 916 mmd=tag_to_mmd.get(pkgset.name), 917 ) 918 ) --> 919 return MaterializedPackageSet.create_many(partials) 920 921 922 def get_koji_event_info(compose, koji_wrapper): 923 event_file = os.path.join(compose.paths.work.topdir(arch="global"), "koji-event") 924 925 compose.log_info("Getting koji event") all_arches = {'src', 'riscv64', 'noarch'} allow_invalid_sigkeys = False compose = compose_tag = 'f40' compose_tags = ['f40'] comps = event = {'id': 2761697, 'ts': 1694527235.311411} exclude_module_ns = [] extra_builds = [] extra_modules = [] extra_tasks = [] group = 'smb-server' groups = ['server-cfg', 'critical-path-base', 'tomcat', 'critical-path-anaconda', 'server-hardware-support', 'deepin-desktop-office', 'server-product', 'critical-path-xfce', 'libreoffice-development', 'critica inherit = False inherit_modules = False is_traditional = True koji_wrapper = kwargs = {'extra_builds': [], 'extra_tasks': []} modular_koji_tags = [] modular_packages = set() old_cache_path = '/mnt/koji/compose/rawhide/Fedora-Rawhide-20230911.n.1/work/global/pkgset_f40_file_cache.pickle' packages_to_gather = ['eclipse-nls-*', '*', 'hunspell-*', 'man-pages-*', 'kernel*', 'mythes-*', 'hyphen-*', 'autocorr-*', 'glibc-langpack-*', 'langpacks-*', 'python3.*-debuginfo', 'eclipse-nls', 'kde-l10n-*', 'dracut.*', partials = [functools.partial(>, , pkgset_koji_tags = ['f40'] pkgsets = [] populate_only_packages_to_gather = False should_inherit = False tag_to_mmd = {} variant = Variant(id="Server", name="Server", type="variant", parent=None) variant_scratch_modules = [] variant_tags = {Variant(id="Everything", name="Everything", type="variant", parent=None): ['f40'], Variant(id="Server", name="Server", type="variant", parent=None): ['f40']} Frame get_pkgset_from_koji in /usr/lib/python3.11/site-packages/pungi/phases/pkgset/sources/source_koji.py at line 206 199 self.compose, self.koji_wrapper, path_prefix 200 ) 201 return (package_sets, path_prefix) 202 203 204 def get_pkgset_from_koji(compose, koji_wrapper, path_prefix): 205 event_info = get_koji_event_info(compose, koji_wrapper) --> 206 return populate_global_pkgset(compose, koji_wrapper, path_prefix, event_info) 207 208 209 def _add_module_to_variant( 210 koji_wrapper, 211 variant, 212 build, compose = event_info = {'id': 2761697, 'ts': 1694527235.311411} koji_wrapper = path_prefix = '/mnt/koji/' Frame __call__ in /usr/lib/python3.11/site-packages/pungi/phases/pkgset/sources/source_koji.py at line 198 191 192 class PkgsetSourceKoji(pungi.phases.pkgset.source.PkgsetSourceBase): 193 def __call__(self): 194 compose = self.compose 195 self.koji_wrapper = pungi.wrappers.kojiwrapper.KojiWrapper(compose) 196 # path prefix must contain trailing '/' 197 path_prefix = self.koji_wrapper.koji_module.config.topdir.rstrip("/") + "/" --> 198 package_sets = get_pkgset_from_koji( 199 self.compose, self.koji_wrapper, path_prefix 200 ) 201 return (package_sets, path_prefix) 202 203 204 def get_pkgset_from_koji(compose, koji_wrapper, path_prefix): compose = path_prefix = '/mnt/koji/' self = self.compose = self.koji_wrapper = Frame run in /usr/lib/python3.11/site-packages/pungi/phases/pkgset/__init__.py at line 36 29 self.path_prefix = None 30 31 def run(self): 32 from . import sources 33 34 SourceClass = sources.ALL_SOURCES[self.compose.conf["pkgset_source"].lower()] 35 --> 36 self.package_sets, self.path_prefix = SourceClass(self.compose)() 37 38 def validate(self): 39 extra_tasks = self.compose.conf.get("pkgset_koji_scratch_tasks", None) 40 sigkeys = tuple(self.compose.conf["sigkeys"] or [None]) 41 if extra_tasks is not None and None not in sigkeys and "" not in sigkeys: 42 raise ValueError( SourceClass = self = self._skipped = False self._start_time = 1694534733.917999 self.compose = self.finished = False self.msg = '---------- PHASE: PKGSET ----------' self.name = 'pkgset' self.package_sets = [] self.path_prefix = None self.used_patterns = None sources = Frame start in /usr/lib/python3.11/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 = 1694534733.917999 self.compose = self.finished = False self.msg = '---------- PHASE: PKGSET ----------' self.name = 'pkgset' self.package_sets = [] self.path_prefix = None self.used_patterns = None Frame run_compose in /usr/lib/python3.11/site-packages/pungi/scripts/pungi_koji.py at line 512 505 if signing_key_password: 506 # Store the password 507 compose.conf["signing_key_password"] = signing_key_password 508 509 init_phase.start() 510 init_phase.stop() 511 --> 512 pkgset_phase.start() 513 pkgset_phase.stop() 514 515 # WEAVER phase - launches other phases which can safely run in parallel 516 essentials_schema = ( 517 buildinstall_phase, 518 (gather_phase, createrepo_phase), buildinstall_phase = compose = config_copy_path = '/mnt/koji/compose/rawhide/Fedora-Rawhide-20230912.n.2/logs/global/config-copy' config_dump_full = '/mnt/koji/compose/rawhide/Fedora-Rawhide-20230912.n.2/logs/global/config-dump.global.log' config_file = '/root/pungi-fedora/multilib.conf' create_latest_link = True createiso_phase = createrepo_phase = errors = [] extra_isos_phase = extrafiles_phase = f = <_io.TextIOWrapper name='/mnt/koji/compose/rawhide/Fedora-Rawhide-20230912.n.2/logs/global/config-dump.global.log' mode='w' encoding='utf-8'> gather_phase = image_build_phase = image_checksum_phase = image_container_phase = init_phase = installed_pkgs_log = '/mnt/koji/compose/rawhide/Fedora-Rawhide-20230912.n.2/logs/global/installed-pkgs.global.log' 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.11/site-packages/pungi/scripts/pungi_koji.py at line 352 345 logger.error("Config validation failed with the error: %s" % error) 346 fail_to_start("Config validation failed", errors=errors) 347 sys.exit(1) 348 349 notifier.compose = compose 350 COMPOSE = compose 351 try: --> 352 run_compose( 353 compose, 354 create_latest_link=create_latest_link, 355 latest_link_status=latest_link_status, 356 latest_link_components=latest_link_components, 357 ) 358 except UnsignedPackagesError: 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 0xffff9ef74040> compose = compose_dir = '/mnt/koji/compose/rawhide/Fedora-Rawhide-20230912.n.2' compose_type = 'nightly' conf = {'variants_file': 'variants-fedora.xml', 'tree_arches': ['riscv64'], 'hashed_directories': True, 'runroot_channel': 'compose', 'runroot_tag': 'f40-build', 'pkgset_source': 'koji', 'filter_system_relea create_latest_link = True errors = [] fail_to_start = .fail_to_start at 0xffff9ef67ec0> group = kobo = latest_link_components = -1 latest_link_status = None logger = notifier = opts = Namespace(target_dir='/mnt/koji/compose/rawhide', compose_dir=None, label=None, no_label=False, supported=False, old_composes=['/mnt/koji/compose/rawhide'], config='/root/pungi-fedora/fedora.conf', sk parser = ArgumentParser(prog='pungi-koji', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) productmd = pungi = rv = None warnings = [] Frame cli_main in /usr/lib/python3.11/site-packages/pungi/scripts/pungi_koji.py at line 683 676 677 678 def cli_main(): 679 signal.signal(signal.SIGINT, sigterm_handler) 680 signal.signal(signal.SIGTERM, sigterm_handler) 681 682 try: --> 683 main() 684 except (Exception, KeyboardInterrupt) as ex: 685 if COMPOSE: 686 COMPOSE.log_error("Compose run failed: %s" % ex) 687 COMPOSE.traceback(show_locals=getattr(ex, "show_locals", True)) 688 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir) 689 COMPOSE.write_status("DOOMED") ex = BrokenPipeError(32, 'Broken pipe')