1
0
mirror of https://github.com/golang/go synced 2024-11-23 12:30:11 -07:00

[dev.cc] cmd/go: do not install tools while executing them

Change-Id: I3417efc203f555a0a6101701f387ead84f9a08d1
Reviewed-on: https://go-review.googlesource.com/5577
Reviewed-by: Rob Pike <r@golang.org>
This commit is contained in:
Russ Cox 2015-02-23 11:47:48 -05:00
parent e8d9c8d163
commit 264c099ba7

View File

@ -347,8 +347,26 @@ func runInstall(cmd *Command, args []string) {
var b builder
b.init()
a := &action{}
var tools []*action
for _, p := range pkgs {
a.deps = append(a.deps, b.action(modeInstall, modeInstall, p))
// If p is a tool, delay the installation until the end of the build.
// This avoids installing assemblers/compilers that are being executed
// by other steps in the build.
// cmd/cgo is handled specially in b.action, so that we can
// both build and use it in the same 'go install'.
action := b.action(modeInstall, modeInstall, p)
if goTools[p.ImportPath] == toTool && p.ImportPath != "cmd/cgo" {
a.deps = append(a.deps, action.deps...)
action.deps = append(action.deps, a)
tools = append(tools, action)
continue
}
a.deps = append(a.deps, action)
}
if len(tools) > 0 {
a = &action{
deps: tools,
}
}
b.do(a)
}