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')