mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 12:03:31 +01:00
build.py: Support multiple modules
- Add support for multiple modules - Make some variables local
This commit is contained in:
parent
bb42a40e8f
commit
74358aa3c9
1 changed files with 21 additions and 11 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue