From 791448cc3265a0bfa2f34b126a698780e1118720 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lubom=C3=ADr=20Sedl=C3=A1=C5=99?= Date: Thu, 3 Dec 2015 13:12:59 +0100 Subject: [PATCH] Allow specifying which packages to install in variants xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This patch updates the variants DTD and parsing to allow specifying multiple build install packages for each variant. Signed-off-by: Lubomír Sedlář --- pungi/wrappers/variants.py | 9 ++++++++- share/variants.dtd | 5 ++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/pungi/wrappers/variants.py b/pungi/wrappers/variants.py index 6355fdea..ba1e0382 100755 --- a/pungi/wrappers/variants.py +++ b/pungi/wrappers/variants.py @@ -70,6 +70,7 @@ class VariantsXmlParser(object): "arches": [str(i) for i in variant_node.xpath("arches/arch/text()")], "groups": [], "environments": [], + "buildinstallpackages": [], } if self.tree_arches: variant_dict["arches"] = [i for i in variant_dict["arches"] if i in self.tree_arches] @@ -106,6 +107,10 @@ class VariantsXmlParser(object): variant_dict["environments"].append(environment) + for buildinstallpackages_node in variant_node.xpath("buildinstallpackages"): + for package_node in buildinstallpackages_node.xpath("package"): + variant_dict["buildinstallpackages"].append(package_node.text) + variant = Variant(**variant_dict) if variant.type == "layered-product": release_node = variant_node.xpath("release")[0] @@ -157,11 +162,12 @@ class VariantsXmlParser(object): class Variant(object): - def __init__(self, id, name, type, arches, groups, environments=None): + def __init__(self, id, name, type, arches, groups, environments=None, buildinstallpackages=None): if not id.isalnum(): raise ValueError("Variant ID must contain only alphanumeric characters: %s" % id) environments = environments or [] + buildinstallpackages = buildinstallpackages or [] self.id = id self.name = name @@ -169,6 +175,7 @@ class Variant(object): self.arches = sorted(copy.deepcopy(arches)) self.groups = sorted(copy.deepcopy(groups), lambda x, y: cmp(x["name"], y["name"])) self.environments = sorted(copy.deepcopy(environments), lambda x, y: cmp(x["name"], y["name"])) + self.buildinstallpackages = sorted(buildinstallpackages) self.variants = {} self.parent = None diff --git a/share/variants.dtd b/share/variants.dtd index 718510d1..1944d022 100644 --- a/share/variants.dtd +++ b/share/variants.dtd @@ -1,6 +1,6 @@ - + + + +