mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-24 06:40:39 +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()
|
all_deps = Set()
|
||||||
dep_tree = {}
|
dep_tree = {}
|
||||||
order = []
|
glob_order = []
|
||||||
proj_base=pwd.getpwuid(os.getuid()).pw_dir + "/local/src/cvs.stable/proj"
|
proj_base=pwd.getpwuid(os.getuid()).pw_dir + "/local/src/cvs.stable/proj"
|
||||||
search_path=[".", "dspc/src", "dspc/src/dspcd-plugins", "dspc/src/io" ]
|
search_path=[".", "dspc/src", "dspc/src/dspcd-plugins", "dspc/src/io" ]
|
||||||
|
#glob_prereq_type="BUILD"
|
||||||
|
glob_prereq_type="RUN"
|
||||||
|
|
||||||
def find_proj_path(name):
|
def find_proj_path(name):
|
||||||
name=name.replace("dspider-", "")
|
name=name.replace("dspider-", "")
|
||||||
|
|
@ -36,18 +38,19 @@ def read_deps(cur, prereq_type):
|
||||||
r.remove(cur)
|
r.remove(cur)
|
||||||
return r
|
return r
|
||||||
|
|
||||||
def build_tree(cur, prereq_type):
|
def add_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, prereq_type)
|
deps = read_deps(cur, prereq_type)
|
||||||
for d in deps:
|
for d in deps:
|
||||||
build_tree(d, prereq_type)
|
add_tree(d, prereq_type)
|
||||||
dep_tree[cur] = deps
|
dep_tree[cur] = deps
|
||||||
return len(deps)
|
return len(deps)
|
||||||
|
|
||||||
def calculate_order(cur, prereq_type):
|
def calculate_order(order, modules, prereq_type):
|
||||||
build_tree(cur, prereq_type)
|
for m in modules:
|
||||||
|
add_tree(m, 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]):
|
||||||
|
|
@ -69,11 +72,7 @@ def run_make(module, target):
|
||||||
if subprocess.call(["make", target]):
|
if subprocess.call(["make", 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(order, target):
|
||||||
#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)
|
||||||
|
|
@ -81,5 +80,16 @@ def build(module, target):
|
||||||
for m in order:
|
for m in order:
|
||||||
run_make(m, target)
|
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