aboutsummaryrefslogtreecommitdiffstats
path: root/live_tracker.go
diff options
context:
space:
mode:
authorDan Willemsen <dwillemsen@google.com>2015-11-17 14:21:45 -0800
committerDan Willemsen <dwillemsen@google.com>2015-11-17 17:08:05 -0800
commitfce63d3c8fa746e31c486b515b1bcce26760b15d (patch)
tree85c4b9c8766bff11067cdfdffb7b431e938481c7 /live_tracker.go
parentff7104f98ded5222d0dbd2cc7904cdef40a2f265 (diff)
downloadplatform_build_blueprint-fce63d3c8fa746e31c486b515b1bcce26760b15d.tar.gz
platform_build_blueprint-fce63d3c8fa746e31c486b515b1bcce26760b15d.tar.bz2
platform_build_blueprint-fce63d3c8fa746e31c486b515b1bcce26760b15d.zip
Add common implicit deps to Rules
For implicit dependencies that will be common to all users of a Rule, add a new field 'CommandDeps' to the RuleParam. This is a list of strings to be prepended to the implicit dependencies in each BuildParam. This lets us have the dependencies declared next to where they are used, instead of duplicated in areas that may be far apart. I looked at passing this information down to ninja too, but it only saves us a few percent of ninja file, and requires a modification to the ninja file format. Change-Id: Ifd910dee1506d4e32a76ed06206f853c4caec622
Diffstat (limited to 'live_tracker.go')
-rw-r--r--live_tracker.go24
1 files changed, 15 insertions, 9 deletions
diff --git a/live_tracker.go b/live_tracker.go
index 3b41d06..8348988 100644
--- a/live_tracker.go
+++ b/live_tracker.go
@@ -42,10 +42,11 @@ func (l *liveTracker) AddBuildDefDeps(def *buildDef) error {
l.Lock()
defer l.Unlock()
- err := l.addRule(def.Rule)
+ ruleDef, err := l.addRule(def.Rule)
if err != nil {
return err
}
+ def.RuleDef = ruleDef
err = l.addNinjaStringListDeps(def.Outputs)
if err != nil {
@@ -77,36 +78,41 @@ func (l *liveTracker) AddBuildDefDeps(def *buildDef) error {
return nil
}
-func (l *liveTracker) addRule(r Rule) error {
- _, ok := l.rules[r]
+func (l *liveTracker) addRule(r Rule) (def *ruleDef, err error) {
+ def, ok := l.rules[r]
if !ok {
- def, err := r.def(l.config)
+ def, err = r.def(l.config)
if err == errRuleIsBuiltin {
// No need to do anything for built-in rules.
- return nil
+ return nil, nil
}
if err != nil {
- return err
+ return nil, err
}
if def.Pool != nil {
err = l.addPool(def.Pool)
if err != nil {
- return err
+ return nil, err
}
}
+ err = l.addNinjaStringListDeps(def.CommandDeps)
+ if err != nil {
+ return nil, err
+ }
+
for _, value := range def.Variables {
err = l.addNinjaStringDeps(value)
if err != nil {
- return err
+ return nil, err
}
}
l.rules[r] = def
}
- return nil
+ return
}
func (l *liveTracker) addPool(p Pool) error {