From b076b4f99b958bed185fd03fd65475d9c648adab Mon Sep 17 00:00:00 2001 From: Jordan Justen Date: Mon, 26 Dec 2022 02:52:53 -0800 Subject: [PATCH] intel/genxml: Add support for excluding items when importing Signed-off-by: Jordan Justen Reviewed-by: Lionel Landwerlin Part-of: --- src/intel/genxml/gen_pack_header.py | 4 ++-- src/intel/genxml/intel_genxml.py | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/intel/genxml/gen_pack_header.py b/src/intel/genxml/gen_pack_header.py index 323fa85..9146d9c 100644 --- a/src/intel/genxml/gen_pack_header.py +++ b/src/intel/genxml/gen_pack_header.py @@ -486,7 +486,7 @@ class Parser(object): self.prefix = None elif name == "value": self.values.append(Value(attrs)) - elif name == "import": + elif name in ("import", "exclude"): pass else: assert False @@ -514,7 +514,7 @@ class Parser(object): elif name == "enum": self.emit_enum() self.enum = None - elif name in ("import", "value"): + elif name in ("import", "exclude", "value"): pass else: assert False diff --git a/src/intel/genxml/intel_genxml.py b/src/intel/genxml/intel_genxml.py index 682721e..ddde844 100755 --- a/src/intel/genxml/intel_genxml.py +++ b/src/intel/genxml/intel_genxml.py @@ -86,6 +86,7 @@ class Struct(object): GENXML_DESC = { 'genxml' : [ 'name', 'gen', ], 'import' : [ 'name', ], + 'exclude' : [ 'name', ], 'enum' : [ 'name', 'value', 'prefix', ], 'struct' : [ 'name', 'length', ], 'field' : [ 'name', 'start', 'end', 'type', 'default', 'prefix', 'nonzero' ], @@ -224,6 +225,10 @@ class GenXml(object): if item.tag == 'import': assert 'name' in item.attrib filename = os.path.split(item.attrib['name']) + exceptions = set() + for e in item: + assert e.tag == 'exclude' + exceptions.add(e.attrib['name']) # We should be careful to restrict loaded files to # those under the source or build trees. For now, only # allow siblings of the current xml file. @@ -250,6 +255,8 @@ class GenXml(object): for i in imported_elements: if i.tag not in orig_by_tag: continue + if i.attrib['name'] in exceptions: + continue if i.attrib['name'] in orig_by_tag[i.tag]: # An item with this same name was defined in # the genxml directly. There we should ignore -- 2.7.4