freedreno/registers: allow skipping the validation

We don't need to run the validation of the XML files if we are just
compiling the kernel. Skip the validation unless the user enables
corresponding Kconfig option. This removes a warning from gen_header.py
about lxml being not installed.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/28780>
This commit is contained in:
Dmitry Baryshkov 2024-04-09 17:22:54 +03:00 committed by Marge Bot
parent 9540139f43
commit 84e93daa26

View file

@ -550,6 +550,9 @@ class Parser(object):
self.variants.add(reg.domain) self.variants.add(reg.domain)
def do_validate(self, schemafile): def do_validate(self, schemafile):
if self.validate == False:
return
try: try:
from lxml import etree from lxml import etree
@ -579,7 +582,7 @@ class Parser(object):
if not xmlschema.validate(xml_doc): if not xmlschema.validate(xml_doc):
error_str = str(xmlschema.error_log.filter_from_errors()[0]) error_str = str(xmlschema.error_log.filter_from_errors()[0])
raise self.error("Schema validation failed for: " + filename + "\n" + error_str) raise self.error("Schema validation failed for: " + filename + "\n" + error_str)
except ImportError: except ImportError as e:
print("lxml not found, skipping validation", file=sys.stderr) print("lxml not found, skipping validation", file=sys.stderr)
def do_parse(self, filename): def do_parse(self, filename):
@ -598,9 +601,10 @@ class Parser(object):
self.stack.pop() self.stack.pop()
file.close() file.close()
def parse(self, rnn_path, filename): def parse(self, rnn_path, filename, validate):
self.path = rnn_path self.path = rnn_path
self.stack = [] self.stack = []
self.validate = validate
self.do_parse(filename) self.do_parse(filename)
def parse_reg(self, attrs, bit_size): def parse_reg(self, attrs, bit_size):
@ -868,7 +872,7 @@ def dump_c(args, guard, func):
p = Parser() p = Parser()
try: try:
p.parse(args.rnn, args.xml) p.parse(args.rnn, args.xml, args.validate)
except Error as e: except Error as e:
print(e, file=sys.stderr) print(e, file=sys.stderr)
exit(1) exit(1)
@ -937,7 +941,7 @@ def dump_py_defines(args):
p = Parser() p = Parser()
try: try:
p.parse(args.rnn, args.xml) p.parse(args.rnn, args.xml, args.validate)
except Error as e: except Error as e:
print(e, file=sys.stderr) print(e, file=sys.stderr)
exit(1) exit(1)
@ -956,6 +960,7 @@ def main():
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()
parser.add_argument('--rnn', type=str, required=True) parser.add_argument('--rnn', type=str, required=True)
parser.add_argument('--xml', type=str, required=True) parser.add_argument('--xml', type=str, required=True)
parser.add_argument('--validate', action=argparse.BooleanOptionalAction)
subparsers = parser.add_subparsers(required=True) subparsers = parser.add_subparsers(required=True)