diff options
| author | Dan Willemsen <dwillemsen@google.com> | 2015-11-17 14:21:45 -0800 |
|---|---|---|
| committer | Dan Willemsen <dwillemsen@google.com> | 2015-11-17 17:08:05 -0800 |
| commit | fce63d3c8fa746e31c486b515b1bcce26760b15d (patch) | |
| tree | 85c4b9c8766bff11067cdfdffb7b431e938481c7 /live_tracker.go | |
| parent | ff7104f98ded5222d0dbd2cc7904cdef40a2f265 (diff) | |
| download | platform_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.go | 24 |
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 { |
