build.py: Support multiple modules

- Add support for multiple modules
  - Make some variables local
This commit is contained in:
Jan Lindemann 2012-05-05 13:15:40 +00:00 committed by Jan Lindemann
commit 74358aa3c9

View file

@ -13,9 +13,11 @@ import pwd
all_deps = Set()
dep_tree = {}
order = []
glob_order = []
proj_base=pwd.getpwuid(os.getuid()).pw_dir + "/local/src/cvs.stable/proj"
search_path=[".", "dspc/src", "dspc/src/dspcd-plugins", "dspc/src/io" ]
#glob_prereq_type="BUILD"
glob_prereq_type="RUN"
def find_proj_path(name):
name=name.replace("dspider-", "")
@ -36,18 +38,19 @@ def read_deps(cur, prereq_type):
r.remove(cur)
return r
def build_tree(cur, prereq_type):
def add_tree(cur, prereq_type):
if cur in all_deps:
return 0
all_deps.add(cur)
deps = read_deps(cur, prereq_type)
for d in deps:
build_tree(d, prereq_type)
add_tree(d, prereq_type)
dep_tree[cur] = deps
return len(deps)
def calculate_order(cur, prereq_type):
build_tree(cur, prereq_type)
def calculate_order(order, modules, prereq_type):
for m in modules:
add_tree(m, prereq_type)
while len(all_deps):
for d in all_deps:
if not len(dep_tree[d]):
@ -69,11 +72,7 @@ def run_make(module, target):
if subprocess.call(["make", target]):
raise Exception("failed to make target " + target + " in module " + module)
def build(module, target):
#prereq_type="BUILD"
prereq_type="RUN"
calculate_order(module, prereq_type)
print order
def build(order, target):
if target in ["clean", "distclean"]:
for m in reversed(order):
run_make(m, target)
@ -81,5 +80,16 @@ def build(module, target):
for m in order:
run_make(m, target)
build(sys.argv[2], sys.argv[1])
# -- parse command line
modules = Set()
for i in range(2, len(sys.argv)):
modules.add(sys.argv[i])
target=sys.argv[1]
# -- build
print "calculating order for modules: " + ' '.join(modules)
order = []
calculate_order(order, modules, glob_prereq_type)
print "order is: " + ' '.join(order)
build(order, target)