build.py: Add some hooks for different prerequisite types

This commit is contained in:
Jan Lindemann 2012-05-01 15:24:45 +00:00 committed by Jan Lindemann
commit 186a291bd9

View file

@ -25,10 +25,10 @@ def find_proj_path(name):
return path
raise Exception("module " + name + " not found below " + proj_base)
def read_deps(cur):
def read_deps(cur, prereq_type):
path = find_proj_path(cur)
os.chdir(path)
p = subprocess.Popen("LD_LIBRARY_PATH= make echo-prereq | sed '/PREREQ_BUILD *=/ !d; s/.*=//'", shell=True, stdout=subprocess.PIPE)
p = subprocess.Popen("LD_LIBRARY_PATH= make echo-prereq | sed '/PREREQ_" + prereq_type + " *=/ !d; s/.*=//'", shell=True, stdout=subprocess.PIPE)
r = Set()
for d in p.stdout.read().split():
r.add(d)
@ -36,18 +36,18 @@ def read_deps(cur):
r.remove(cur)
return r
def build_tree(cur):
def build_tree(cur, prereq_type):
if cur in all_deps:
return 0
all_deps.add(cur)
deps = read_deps(cur)
deps = read_deps(cur, prereq_type)
for d in deps:
build_tree(d)
build_tree(d, prereq_type)
dep_tree[cur] = deps
return len(deps)
def calculate_order(cur):
build_tree(cur)
def calculate_order(cur, prereq_type):
build_tree(cur, prereq_type)
while len(all_deps):
for d in all_deps:
if not len(dep_tree[d]):
@ -70,7 +70,10 @@ def run_make(module, target):
raise Exception("failed to make target " + target + " in module " + module)
def build(module, target):
calculate_order(module)
#prereq_type="BUILD"
prereq_type="RUN"
calculate_order(module, prereq_type)
print order
if target in ["clean", "distclean"]:
for m in reversed(order):
run_make(m, target)