Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 648, in cli_main
main()
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 338, in main
latest_link_components=latest_link_components,
File "/usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py", line 368, in run_compose
compose.read_variants()
File "/usr/lib/python3.6/site-packages/pungi/compose.py", line 387, in read_variants
file_obj, tree_arches, tree_variants, logger=self._logger
File "/usr/lib/python3.6/site-packages/pungi/wrappers/variants.py", line 73, in __init__
self.validate()
File "/usr/lib/python3.6/site-packages/pungi/wrappers/variants.py", line 86, in validate
"Variants XML doesn't validate:\n%s" % "\n".join(errors)
pungi.wrappers.variants.VariantsValidationError: Variants XML doesn't validate:
/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/work/global/variants.xml:3:0:ERROR:VALID:DTD_CONTENT_MODEL: Element variants content does not follow the DTD, expecting (ref* , variant*), got (variant variant variant CDATA variant )
Frame validate in /usr/lib/python3.6/site-packages/pungi/wrappers/variants.py at line 86
79 return False
80 raise ValueError("Invalid boolean value in variants XML: %s" % value)
81
82 def validate(self):
83 if not self.dtd.validate(self.tree):
84 errors = [str(i) for i in self.dtd.error_log.filter_from_errors()]
85 raise VariantsValidationError(
--> 86 "Variants XML doesn't validate:\n%s" % "\n".join(errors)
87 )
88
89 errors = []
90 for text in self.tree.xpath("//text()"):
91 if text != text.strip() and not text.is_tail:
92 e = text.getparent()
errors = ['/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/work/global/variants.xml:3:0:ERROR:VALID:DTD_CONTENT_MODEL: Element variants content does not follow the DTD, expecting (ref* , variant*), got (variant
self =
self.addons = {}
self.layered_products = {}
self.logger =
self.tree =
self.tree_arches = ['aarch64', 'x86_64']
self.tree_variants = []
self.variants = {}
Frame __init__ in /usr/lib/python3.6/site-packages/pungi/wrappers/variants.py at line 73
66 self.dtd = lxml.etree.DTD(f)
67 self.addons = {}
68 self.variants = {}
69 self.layered_products = {}
70 self.tree_arches = tree_arches
71 self.tree_variants = tree_variants
72 self.logger = logger
--> 73 self.validate()
74
75 def _is_true(self, value):
76 if value == "true":
77 return True
78 if value == "false":
79 return False
f = <_io.TextIOWrapper name='/usr/share/pungi/variants.dtd' mode='r' encoding='UTF-8'>
file_obj = <_io.TextIOWrapper name='/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/work/global/variants.xml' mode='r' encoding='UTF-8'>
logger =
self =
self.addons = {}
self.layered_products = {}
self.logger =
self.tree =
self.tree_arches = ['aarch64', 'x86_64']
self.tree_variants = []
self.variants = {}
tree_arches = ['aarch64', 'x86_64']
tree_variants = []
Frame read_variants in /usr/lib/python3.6/site-packages/pungi/compose.py at line 387
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
388 )
389 self.variants = parser.parse()
390
391 self.all_variants = {}
392 for variant in self.get_variants():
393 self.all_variants[variant.uid] = variant
file_name = 'variants.xml'
file_obj = <_io.TextIOWrapper name='/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/work/global/variants.xml' mode='r' encoding='UTF-8'>
scm_dict = '/root/opencloudos/compose/pungi-opencloudos/variants.xml'
self =
self._logger =
self._status_file = '/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/STATUS'
self.all_variants = {}
self.attempted_deliverables = {}
self.cache_region =
self.ci_base =
self.compose_date = '20240118'
self.compose_id = 'OpenCloudOS-9.0-20240118.0'
self.compose_label = 'RC-9.0'
self.compose_label_major_version = 'RC-9'
self.compose_respin = 0
self.compose_type = 'production'
self.compose_type_suffix = ''
self.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
self.config_dir = '/root/opencloudos/compose/pungi-opencloudos'
self.containers_metadata = {}
self.failed_deliverables = {}
self.has_comps = True
self.has_module_defaults = False
self.im =
self.image_release = '9.0'
self.image_version = '9.0'
self.just_phases = []
self.koji_event = None
self.notifier =
self.old_composes = []
self.paths =
self.required_deliverables = {}
self.should_create_yum_database = True
self.skip_phases = ['image_build']
self.status_file = '/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/STATUS'
self.supported = True
self.topdir = '/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0'
self.variants = {}
tmp_dir = '/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/work/global/tmp/variants_file_cyxzhwz8'
tree_arches = ['aarch64', 'x86_64']
tree_variants = []
variants_file = '/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/work/global/variants.xml'
Frame run_compose in /usr/lib/python3.6/site-packages/pungi/scripts/pungi_koji.py at line 368
361 compose.log_info("User name: %s" % getpass.getuser())
362 compose.log_info("Working directory: %s" % os.getcwd())
363 compose.log_info(
364 "Command line: %s" % " ".join([shlex_quote(arg) for arg in sys.argv])
365 )
366 compose.log_info("Compose top directory: %s" % compose.topdir)
367 compose.log_info("Current timezone offset: %s" % pungi.util.get_tz_offset())
--> 368 compose.read_variants()
369
370 # dump the config file
371 config_copy_path = os.path.join(compose.paths.log.topdir(), "config-copy")
372 if not os.path.exists(config_copy_path):
373 os.makedirs(config_copy_path)
374 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 338
331 notifier.compose = compose
332 COMPOSE = compose
333 try:
334 run_compose(
335 compose,
336 create_latest_link=create_latest_link,
337 latest_link_status=latest_link_status,
--> 338 latest_link_components=latest_link_components,
339 )
340 except UnsignedPackagesError:
341 # There was an unsigned package somewhere. It is not safe to reuse any
342 # package set from this compose (since we could leak the unsigned
343 # package). Let's make sure all reuse files are deleted.
344 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 0x7f515bf6fea0>
compose =
compose_dir = '/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0'
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 0x7f515bf6fe18>
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.conf', just_phase=[], koji_event=None, label='RC-9.0', latest_link_components=-1, latest_l
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 648
641
642
643 def cli_main():
644 signal.signal(signal.SIGINT, sigterm_handler)
645 signal.signal(signal.SIGTERM, sigterm_handler)
646
647 try:
--> 648 main()
649 except (Exception, KeyboardInterrupt) as ex:
650 if COMPOSE:
651 tb_path = COMPOSE.paths.log.log_file("global", "traceback")
652 COMPOSE.log_error("Compose run failed: %s" % ex)
653 COMPOSE.log_error("Extended traceback in: %s" % tb_path)
654 COMPOSE.log_critical("Compose failed: %s" % COMPOSE.topdir)
ex = VariantsValidationError("Variants XML doesn't validate:\n/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/work/global/variants.xml:3:0:ERROR:VALID:DTD_CONTENT_MODEL: Element variants content does not fo
f = <_io.BufferedWriter name='/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/logs/global/traceback.global.log'>
kobo =
tb_path = '/mnt/koji/compose/9/OpenCloudOS-9.0-20240118.0/logs/global/traceback.global.log'