projects.py: Add support for --skip-excluded to command requires-pkg

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2018-03-07 17:28:20 +00:00
commit 9d2e192256

View file

@ -153,14 +153,9 @@ 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 + '<')
patt = is_excluded_from_build(module)
if patt is not None:
print('| Configured to skip build on platform >' + patt + '<')
print('`' + delim + ' <')
return
@ -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')
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 = []