Traceback (most recent call last): File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 654, in cli_main main() File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 343, in main latest_link_components=latest_link_components, File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 373, in run_compose compose.read_variants() File "/usr/lib/python3.6/site-packages/pungi/compose.py", line 381, in read_variants shutil.rmtree(tmp_dir) File "/usr/lib64/python3.6/shutil.py", line 490, in rmtree onerror(os.rmdir, path, sys.exc_info()) File "/usr/lib64/python3.6/shutil.py", line 488, in rmtree os.rmdir(path) OSError: [Errno 39] Directory not empty: '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/work/global/tmp/variants_file_0u6huv8m' Frame rmtree in /usr/lib64/python3.6/shutil.py at line 488 481 except Exception: 482 onerror(os.lstat, path, sys.exc_info()) 483 return 484 try: 485 if os.path.samestat(orig_st, os.fstat(fd)): 486 _rmtree_safe_fd(fd, path, onerror) 487 try: --> 488 os.rmdir(path) 489 except OSError: 490 onerror(os.rmdir, path, sys.exc_info()) 491 else: 492 try: 493 # symlinks to directories are forbidden, see bug #1669 494 raise OSError("Cannot call rmtree on a symbolic link") fd = 8 ignore_errors = False onerror = .onerror at 0x7feaa5545510> orig_st = path = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/work/global/tmp/variants_file_0u6huv8m' Frame rmtree in /usr/lib64/python3.6/shutil.py at line 490 483 return 484 try: 485 if os.path.samestat(orig_st, os.fstat(fd)): 486 _rmtree_safe_fd(fd, path, onerror) 487 try: 488 os.rmdir(path) 489 except OSError: --> 490 onerror(os.rmdir, path, sys.exc_info()) 491 else: 492 try: 493 # symlinks to directories are forbidden, see bug #1669 494 raise OSError("Cannot call rmtree on a symbolic link") 495 except OSError: 496 onerror(os.path.islink, path, sys.exc_info()) fd = 8 ignore_errors = False onerror = .onerror at 0x7feaa5545510> orig_st = path = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/work/global/tmp/variants_file_0u6huv8m' Frame read_variants in /usr/lib/python3.6/site-packages/pungi/compose.py at line 381 374 file_name = os.path.basename(scm_dict) 375 scm_dict = os.path.join(self.config_dir, os.path.basename(scm_dict)) 376 377 self.log_debug("Writing variants file: %s", variants_file) 378 tmp_dir = self.mkdtemp(prefix="variants_file_") 379 get_file_from_scm(scm_dict, tmp_dir, compose=self) 380 shutil.copy2(os.path.join(tmp_dir, file_name), variants_file) --> 381 shutil.rmtree(tmp_dir) 382 383 tree_arches = self.conf.get("tree_arches", None) 384 tree_variants = self.conf.get("tree_variants", None) 385 with open(variants_file, "r") as file_obj: 386 parser = VariantsXmlParser( 387 file_obj, tree_arches, tree_variants, logger=self._logger file_name = 'variants.xml' scm_dict = '/root/opencloudos/compose/8/pungi-opencloudos-8.10-origin/variants.xml' self = self._logger = self._status_file = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/STATUS' self.all_variants = {} self.attempted_deliverables = {} self.cache_region = self.ci_base = self.compose_date = '20251116' self.compose_id = 'OpenCloudOS-8.10-updates-20251116.0' self.compose_label = 'RC-8.10' self.compose_label_major_version = 'RC-8' self.compose_respin = 0 self.compose_type = 'production' self.compose_type_suffix = '' self.conf = {'RELEASE_NAME': 'OpenCloudOS', 'RELEASE_SHORT': 'OpenCloudOS', 'RELEASE_VERSION': '8.10', 'PKGSET_KOJI_TAG': 'dist-oc8-compose', 'PKGSET_KOJI_MODULE_TAG': 'dist-oc8-module-compose', 'RUNROOT_CHANNEL' self.config_dir = '/root/opencloudos/compose/8/pungi-opencloudos-8.10-origin' self.containers_metadata = {} self.failed_deliverables = {} self.has_comps = True self.has_module_defaults = True self.im = self.image_release = '8.10' self.image_version = '8.10' self.just_phases = [] self.koji_event = None self.notifier = self.old_composes = ['/mnt/koji/compose/8/8.10/'] self.paths = self.required_deliverables = {} self.should_create_yum_database = True self.skip_phases = ['buildinstall', 'createiso', 'extra_isos', 'productimg', 'image_build'] self.status_file = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/STATUS' self.supported = True self.topdir = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0' self.variants = {} tmp_dir = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/work/global/tmp/variants_file_0u6huv8m' variants_file = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/work/global/variants.xml' Frame run_compose in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 373 366 compose.log_info("User name: %s" % getpass.getuser()) 367 compose.log_info("Working directory: %s" % os.getcwd()) 368 compose.log_info( 369 "Command line: %s" % " ".join([shlex_quote(arg) for arg in sys.argv]) 370 ) 371 compose.log_info("Compose top directory: %s" % compose.topdir) 372 compose.log_info("Current timezone offset: %s" % pungi.util.get_tz_offset()) --> 373 compose.read_variants() 374 375 # dump the config file 376 config_copy_path = os.path.join(compose.paths.log.topdir(), "config-copy") 377 if not os.path.exists(config_copy_path): 378 os.makedirs(config_copy_path) 379 for config_file in compose.conf.opened_files: compose = create_latest_link = True errors = [] latest_link_components = -1 latest_link_status = None pungi = Frame main in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 343 336 notifier.compose = compose 337 COMPOSE = compose 338 try: 339 run_compose( 340 compose, 341 create_latest_link=create_latest_link, 342 latest_link_status=latest_link_status, --> 343 latest_link_components=latest_link_components, 344 ) 345 except UnsignedPackagesError: 346 # There was an unsigned package somewhere. It is not safe to reuse any 347 # package set from this compose (since we could leak the unsigned 348 # package). Let's make sure all reuse files are deleted. 349 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 0x7fea97170048> compose = compose_dir = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0' compose_type = 'production' conf = {'RELEASE_NAME': 'OpenCloudOS', 'RELEASE_SHORT': 'OpenCloudOS', 'RELEASE_VERSION': '8.10', 'PKGSET_KOJI_TAG': 'dist-oc8-compose', 'PKGSET_KOJI_MODULE_TAG': 'dist-oc8-module-compose', 'RUNROOT_CHANNEL' create_latest_link = True errors = [] fail_to_start = .fail_to_start at 0x7fea97166f28> group = kobo = latest_link_components = -1 latest_link_status = None logger = notifier = opts = Namespace(compose_dir=None, compose_type='production', config='/root/opencloudos/compose/8/pungi-opencloudos-8.10-origin/oc-updates.conf', just_phase=[], koji_event=None, label='RC-8.10', latest_link_ parser = ArgumentParser(prog='pungi-koji', usage=None, description=None, formatter_class=, conflict_handler='error', add_help=True) productmd = pungi = warning = 'WARNING: Unrecognized config option: GATHER_PREPOPULATE_REPO.' 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 654 647 648 649 def cli_main(): 650 signal.signal(signal.SIGINT, sigterm_handler) 651 signal.signal(signal.SIGTERM, sigterm_handler) 652 653 try: --> 654 main() 655 except (Exception, KeyboardInterrupt) as ex: 656 if COMPOSE: 657 tb_path = COMPOSE.paths.log.log_file("global", "traceback") 658 COMPOSE.log_error("Compose run failed: %s" % ex) 659 COMPOSE.log_error("Extended traceback in: %s" % tb_path) 660 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir) ex = OSError(39, 'Directory not empty') f = <_io.BufferedWriter name='/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/logs/global/traceback.global.log'> kobo = tb_path = '/mnt/koji/compose/8/8.10/OpenCloudOS-8.10-updates-20251116.0/logs/global/traceback.global.log'