projects.py: Add support for [build.exclude]

Also disable recent switch to in-memory dependency detection, because
it is buggy and messes up the order

Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
Jan Lindemann 2018-03-07 14:26:21 +00:00
commit 775795c8fa

View file

@ -55,6 +55,9 @@ class ResultCache(object):
class Build(object):
def __init__(self):
self.__os_cascade = os_cascade()
def find_proj_path(self, name):
name=name.replace("dspider-", "")
search_path=[".", "dspc/src", "dspc/src/dspcd-plugins", "dspc/src/io" ]
@ -75,10 +78,10 @@ class Build(object):
else:
dep_cache[prereq_type] = {}
if True:
if False:
r = get_modules_from_project_txt(cur, 'pkg.requires.jw',
prereq_type, scope = 2, add_self=False, names_only=True)
else: # legacy
else: # legacy from build.py
projects_py="/usr/bin/python2 " + my_dir + "/projects.py --prefix " + projs_root + " " + os.getenv('PROJECTS_PY_EXTRA_ARGS', "")
cmd = projects_py + " prereq " + prereq_type + " " + cur
debug('running', cmd)
@ -119,7 +122,8 @@ class Build(object):
tree[cur] = deps
return len(deps)
def calculate_order(self, order, modules, prereq_types, all_deps):
def calculate_order(self, order, modules, prereq_types):
all_deps = Set()
dep_tree = {}
for m in modules:
debug("--- adding dependency tree of module " + m)
@ -147,6 +151,17 @@ class Build(object):
delim = delim + '-' * (delim_len - len(delim))
print(',' + delim + ' >')
# -- check exclude
exclude = get_modules_from_project_txt([ module ], 'build', 'exclude',
scope = 1, add_self=False, names_only=True)
for p1 in exclude:
for p2 in self.__os_cascade + [ 'all' ]:
if p1 == p2:
print('| Configured to skip build on platform >' + p1 + '<')
print('`' + delim + ' <')
return
os.chdir(path)
p = subprocess.Popen(make_cmd, shell=False, stdout=subprocess.PIPE, stderr=None, close_fds=True)
for line in iter(p.stdout.readline, ''):
@ -176,14 +191,12 @@ class Build(object):
self.run_make(m, target, cur_project, num_projects)
def run(self, args_):
all_deps = Set()
visited = {}
glob_order = []
projs_root=pwd.getpwuid(os.getuid()).pw_dir + "/local/src/jw.dev/proj"
# -- parse command line
parser = argparse.ArgumentParser(description='janware software project build tool')
parser.add_argument('--base', '-b', nargs='?', default=projs_root, help='Project base directory')
parser.add_argument('--exclude', default='', help='Space seperated ist of modules to be excluded from build')
parser.add_argument('--debug', '-d', action='store_true',
default=False, help='Output debug information to stderr')
@ -217,7 +230,7 @@ class Build(object):
glob_prereq_types = [ "build", "run", "release", "devel" ]
print("using prerequisite types " + ' '.join(glob_prereq_types))
self.calculate_order(order, modules, glob_prereq_types, all_deps)
self.calculate_order(order, modules, glob_prereq_types)
if args.ignore_deps:
order = [m for m in order if m in args.modules]
order = [m for m in order if m not in exclude]