From 7d80719f7472debdf7d54a61f9ffc7fc31d57d13 Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Thu, 5 May 2022 12:32:16 +1000 Subject: sb/setbuilder: Control buildsets using the --with-* command line option - Expand macros in buildset file names - Add support to buildsets for `%defineifnot` - Update 6 and 7 to support command line build overrides Closes #4646 --- source-builder/sb/setbuilder.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'source-builder') diff --git a/source-builder/sb/setbuilder.py b/source-builder/sb/setbuilder.py index 63392fe..4d6ca81 100644 --- a/source-builder/sb/setbuilder.py +++ b/source-builder/sb/setbuilder.py @@ -284,6 +284,7 @@ class buildset: line = line[1:b] return line.strip() + bset = macro_expand(self.macros, bset) bsetname = bset if not path.exists(bsetname): @@ -315,15 +316,22 @@ class buildset: if ls[0][-1] == ':' and ls[0][:-1] == 'package': self.bset_pkg = ls[1].strip() self.macros['package'] = self.bset_pkg - elif ls[0][0] == '%': + elif ls[0][0] == '%' and (len(ls[0]) > 1 and ls[0][1] != '{'): def err(msg): raise error.general('%s:%d: %s' % (self.bset, lc, msg)) - if ls[0] == '%define': + if ls[0] == '%define' or ls[0] == '%defineifnot' : + name = ls[1].strip() + value = None if len(ls) > 2: - self.macros.define(ls[1].strip(), - ' '.join([f.strip() for f in ls[2:]])) - else: - self.macros.define(ls[1].strip()) + value = ' '.join([f.strip() for f in ls[2:]]) + if ls[0] == '%defineifnot': + if self.macros.defined(name): + name = None + if name is not None: + if value is not None: + self.macros.define(name, value) + else: + self.macros.define(name) elif ls[0] == '%undefine': if len(ls) > 2: raise error.general('%s:%d: %undefine requires ' \ @@ -336,7 +344,7 @@ class buildset: elif ls[0] == '%hash': sources.hash(ls[1:], self.macros, err) else: - l = l.strip() + l = macro_expand(self.macros, l.strip()) c = build.find_config(l, self.configs) if c is None: raise error.general('%s:%d: cannot find file: %s' % (self.bset, -- cgit v1.2.3