1*4882a593SmuzhiyunFrom 8512964c0bfdfc3c9c3805743ea7de551a1d476a Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Alex Kube <alexander.j.kube@gmail.com>
3*4882a593SmuzhiyunDate: Wed, 23 Oct 2019 21:15:37 +0430
4*4882a593SmuzhiyunSubject: [PATCH] cmd/go: Allow GOTOOLDIR to be overridden in the environment
5*4882a593Smuzhiyun
6*4882a593Smuzhiyunto allow for split host/target build roots
7*4882a593Smuzhiyun
8*4882a593SmuzhiyunAdapted to Go 1.13 from patches originally submitted to
9*4882a593Smuzhiyunthe meta/recipes-devtools/go tree by
10*4882a593SmuzhiyunMatt Madison <matt@madison.systems>.
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunUpstream-Status: Inappropriate [OE specific]
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunSigned-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun---
17*4882a593Smuzhiyun src/cmd/dist/build.go          | 4 +++-
18*4882a593Smuzhiyun src/cmd/go/internal/cfg/cfg.go | 6 +++++-
19*4882a593Smuzhiyun 2 files changed, 8 insertions(+), 2 deletions(-)
20*4882a593Smuzhiyun
21*4882a593Smuzhiyundiff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go
22*4882a593Smuzhiyunindex bec1769..d82f612 100644
23*4882a593Smuzhiyun--- a/src/cmd/dist/build.go
24*4882a593Smuzhiyun+++ b/src/cmd/dist/build.go
25*4882a593Smuzhiyun@@ -248,7 +248,9 @@ func xinit() {
26*4882a593Smuzhiyun 	}
27*4882a593Smuzhiyun 	xatexit(rmworkdir)
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun-	tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
30*4882a593Smuzhiyun+	if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
31*4882a593Smuzhiyun+		tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
32*4882a593Smuzhiyun+	}
33*4882a593Smuzhiyun }
34*4882a593Smuzhiyun
35*4882a593Smuzhiyun // compilerEnv returns a map from "goos/goarch" to the
36*4882a593Smuzhiyundiff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go
37*4882a593Smuzhiyunindex 57a3c1f..825d8c7 100644
38*4882a593Smuzhiyun--- a/src/cmd/go/internal/cfg/cfg.go
39*4882a593Smuzhiyun+++ b/src/cmd/go/internal/cfg/cfg.go
40*4882a593Smuzhiyun@@ -67,7 +67,11 @@ func defaultContext() build.Context {
41*4882a593Smuzhiyun 		// variables. This matches the initialization of ToolDir in
42*4882a593Smuzhiyun 		// go/build, except for using ctxt.GOROOT rather than
43*4882a593Smuzhiyun 		// runtime.GOROOT.
44*4882a593Smuzhiyun-		build.ToolDir = filepath.Join(ctxt.GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
45*4882a593Smuzhiyun+		if s := os.Getenv("GOTOOLDIR"); s != "" {
46*4882a593Smuzhiyun+			build.ToolDir = filepath.Clean(s)
47*4882a593Smuzhiyun+		} else {
48*4882a593Smuzhiyun+			build.ToolDir = filepath.Join(ctxt.GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
49*4882a593Smuzhiyun+		}
50*4882a593Smuzhiyun 	}
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun 	ctxt.GOPATH = envOr("GOPATH", ctxt.GOPATH)
53