From 7f6d4ef38cae3793d4a53d31557b08562f62980f Mon Sep 17 00:00:00 2001 From: Pat Riehecky Date: Sep 03 2019 14:38:27 +0000 Subject: Permit adding alternate variants Signed-off-by: Pat Riehecky --- diff --git a/pungi/metadata.py b/pungi/metadata.py index 34b9a2b..0615b4f 100644 --- a/pungi/metadata.py +++ b/pungi/metadata.py @@ -282,6 +282,21 @@ def write_tree_info(compose, arch, variant, timestamp=None, bi=None): if os.path.isfile(repomd_path): ti.checksums.add(repomd_path, createrepo_checksum, root_dir=os_tree) + for i in variant.get_variants(types=["variant"], arch=arch): + related_variant = productmd.treeinfo.Variant(ti) + related_variant.id = i.id + related_variant.uid = i.uid + related_variant.name = i.name + related_variant.type = i.type + + real_variant = copy.deepcopy(i) + real_variant.parent = None + + os_tree = compose.paths.compose.os_tree(arch=arch, variant=variant).rstrip("/") + "/" + related_variant.paths.packages = relative_path(compose.paths.compose.packages(arch=arch, variant=real_variant, create_dir=False).rstrip("/") + "/", os_tree).rstrip("/") or "." + related_variant.paths.repository = relative_path(compose.paths.compose.repository(arch=arch, variant=real_variant, create_dir=False).rstrip("/") + "/", os_tree).rstrip("/") or "." + ti.variants.add(related_variant) + class LoraxProduct(productmd.treeinfo.Release): def _validate_short(self): # HACK: set self.short so .treeinfo produced by lorax can be read diff --git a/pungi/wrappers/variants.py b/pungi/wrappers/variants.py index 7a93e5d..ba02ec0 100755 --- a/pungi/wrappers/variants.py +++ b/pungi/wrappers/variants.py @@ -193,12 +193,15 @@ class VariantsXmlParser(object): self.add_child(optional, variant) for ref in variant_node.xpath("variants/ref/@id"): - try: + if ref in self.addons: child_variant = self.parse_variant_node(self.addons[ref], variant) - except KeyError: + self.add_child(child_variant, variant) + elif ref in self.variants: + child_variant = copy.deepcopy(self.variants[ref]) + self.add_child(child_variant, variant) + else: raise RuntimeError("Variant %s references non-existing variant %s" % (variant.uid, ref)) - self.add_child(child_variant, variant) # XXX: top-level optional # for ref in variant_node.xpath("variants/ref/@id"): diff --git a/tests/data/dummy-pungi.conf b/tests/data/dummy-pungi.conf index 5225f34..f3645ed 100644 --- a/tests/data/dummy-pungi.conf +++ b/tests/data/dummy-pungi.conf @@ -101,6 +101,15 @@ createiso_skip = [ '*': True, 'src': True }), + ('^Everything-Client$', { + '*': True + }), +] + +buildinstall_skip = [ + ('^Everything-Client$', { + '*': True + }), ] extra_isos = { diff --git a/tests/data/dummy-variants.xml b/tests/data/dummy-variants.xml index f842736..0f36e01 100644 --- a/tests/data/dummy-variants.xml +++ b/tests/data/dummy-variants.xml @@ -30,13 +30,6 @@ - - - i386 - x86_64 - - - i386 @@ -55,6 +48,16 @@ + + + i386 + x86_64 + + + + + + x86_64