From 9d2e1922561dc862a71a2d08383ac1dbe7ba6ba6 Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Wed, 7 Mar 2018 17:28:20 +0000 Subject: [PATCH] projects.py: Add support for --skip-excluded to command requires-pkg Signed-off-by: Jan Lindemann --- scripts/projects.py | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/scripts/projects.py b/scripts/projects.py index 3eff1247..fc4e1451 100644 --- a/scripts/projects.py +++ b/scripts/projects.py @@ -153,16 +153,11 @@ class Build(object): print(',' + delim + ' >') - # -- check exclude - exclude = get_modules_from_project_txt([ module ], 'build', 'exclude', - scope = 1, add_self=False, names_only=True) - cascade = os_cascade() + [ 'all' ] - for p1 in exclude: - for p2 in cascade: - if p1 == p2: - print('| Configured to skip build on platform >' + p1 + '<') - print('`' + delim + ' <') - return + patt = is_excluded_from_build(module) + if patt is not None: + print('| Configured to skip build on platform >' + patt + '<') + print('`' + delim + ' <') + return os.chdir(path) p = subprocess.Popen(make_cmd, shell=False, stdout=subprocess.PIPE, stderr=None, close_fds=True) @@ -480,7 +475,7 @@ def pkg_relations(rel_type, args_): default=False, help='Always treat VERSION macro as VERSION-REVISION') parser.add_argument('--dont-expand-version-macros', action='store_true', default=False, help='Don\'t expand VERSION and REVISION macros') - args=parser.parse_args(args_) + args = parser.parse_args(args_) version_pattern=re.compile("[0-9-.]*") if args.subsections is None: subsecs = os_cascade() @@ -533,6 +528,17 @@ def get_libname(names): vals.remove('none') return ' '.join(reversed(vals)) +def is_excluded_from_build(module): + debug("checking if module " + module + " is excluded from build") + exclude = get_modules_from_project_txt([ module ], 'build', 'exclude', + scope = 1, add_self=False, names_only=True) + cascade = os_cascade() + [ 'all' ] + for p1 in exclude: + for p2 in cascade: + if p1 == p2: + return p1 + return None + # -L needs to contain more paths than libs linked with -l would require def get_ldpathflags(names, exclude = []): deps = get_modules_from_project_txt(names, 'pkg.requires.jw', 'build', @@ -598,11 +604,18 @@ def cmd_requires_pkg(args_): parser = argparse.ArgumentParser(description='requires-pkg') parser.add_argument('module', nargs='*', help='Modules') parser.add_argument('--flavours', help='Dependency flavours', default='build') - args=parser.parse_args(args_) + parser.add_argument('--skip-excluded', action='store_true', default=False, + help='Output empty prerequisite list if module is excluded') + args = parser.parse_args(args_) + modules = args.module flavours = args.flavours.split() debug("flavours = " + args.flavours) - deps = get_modules_from_project_txt(args.module, 'pkg.requires.jw', flavours, + deps = get_modules_from_project_txt(modules, 'pkg.requires.jw', flavours, scope = 2, add_self=True, names_only=True) + if args.skip_excluded: + for d in deps: + if is_excluded_from_build(d) is not None: + deps.remove(d) subsecs = os_cascade() debug("subsecs = ", subsecs) requires = [] @@ -700,7 +713,7 @@ def cmd_prereq(args_): parser = argparse.ArgumentParser(description='path') parser.add_argument('flavour', help='Flavour') parser.add_argument('module', nargs='*', help='Modules') - args=parser.parse_args(args_) + args = parser.parse_args(args_) deps = get_modules_from_project_txt(args.module, 'pkg.requires.jw', args.flavour, scope = 2, add_self=False, names_only=True) print(' '.join(deps))