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 return path
raise Exception("module " + name + " not found below " + proj_base) raise Exception("module " + name + " not found below " + proj_base)
def read_deps(cur): def read_deps(cur, prereq_type):
path = find_proj_path(cur) path = find_proj_path(cur)
os.chdir(path) 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() r = Set()
for d in p.stdout.read().split(): for d in p.stdout.read().split():
r.add(d) r.add(d)
@ -36,18 +36,18 @@ def read_deps(cur):
r.remove(cur) r.remove(cur)
return r return r
def build_tree(cur): def build_tree(cur, prereq_type):
if cur in all_deps: if cur in all_deps:
return 0 return 0
all_deps.add(cur) all_deps.add(cur)
deps = read_deps(cur) deps = read_deps(cur, prereq_type)
for d in deps: for d in deps:
build_tree(d) build_tree(d, prereq_type)
dep_tree[cur] = deps dep_tree[cur] = deps
return len(deps) return len(deps)
def calculate_order(cur): def calculate_order(cur, prereq_type):
build_tree(cur) build_tree(cur, prereq_type)
while len(all_deps): while len(all_deps):
for d in all_deps: for d in all_deps:
if not len(dep_tree[d]): 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) raise Exception("failed to make target " + target + " in module " + module)
def build(module, target): 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"]: if target in ["clean", "distclean"]:
for m in reversed(order): for m in reversed(order):
run_make(m, target) run_make(m, target)