From 9ba507e076c744f4d394418e4a849e68cd426a4a Mon Sep 17 00:00:00 2001
From: Alex Kube <alexander.j.kube@gmail.com>
Date: Wed, 23 Oct 2019 21:18:56 +0430
Subject: [PATCH 7/9] cmd/go: make GOROOT precious by default

Upstream-Status: Inappropriate [OE specific]

The go build tool normally rebuilds whatever it detects is
stale.  This can be a problem when GOROOT is intended to
be read-only and the go runtime has been built as a shared
library, since we don't want every application to be rebuilding
the shared runtime - particularly in cross-build/packaging
setups, since that would lead to 'abi mismatch' runtime errors.

This patch prevents the install and linkshared actions from
installing to GOROOT unless overridden with the GOROOT_OVERRIDE
environment variable.

Adapted to Go 1.13 from patches originally submitted to
the meta/recipes-devtools/go tree by
Matt Madison <matt@madison.systems>.

Signed-off-by: Alexander J Kube <alexander.j.kube@gmail.com>
---
 src/cmd/go/internal/work/action.go |  3 +++
 src/cmd/go/internal/work/build.go  |  6 ++++++
 src/cmd/go/internal/work/exec.go   | 25 +++++++++++++++++++++++++
 3 files changed, 34 insertions(+)

diff --git a/src/cmd/go/internal/work/action.go b/src/cmd/go/internal/work/action.go
index 33b7818..7617b4c 100644
--- a/src/cmd/go/internal/work/action.go
+++ b/src/cmd/go/internal/work/action.go
@@ -662,6 +662,9 @@ func (b *Builder) addTransitiveLinkDeps(a, a1 *Action, shlib string) {
 			if p1 == nil || p1.Shlib == "" || haveShlib[filepath.Base(p1.Shlib)] {
 				continue
 			}
+			if goRootPrecious && (p1.Standard || p1.Goroot) {
+				continue
+			}
 			haveShlib[filepath.Base(p1.Shlib)] = true
 			// TODO(rsc): The use of ModeInstall here is suspect, but if we only do ModeBuild,
 			// we'll end up building an overall library or executable that depends at runtime
diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
index 9305b2d..6560317 100644
--- a/src/cmd/go/internal/work/build.go
+++ b/src/cmd/go/internal/work/build.go
@@ -155,6 +155,8 @@ See also: go install, go get, go clean.
 
 const concurrentGCBackendCompilationEnabledByDefault = true
 
+var goRootPrecious bool = true
+
 func init() {
 	// break init cycle
 	CmdBuild.Run = runBuild
@@ -167,6 +169,10 @@ func init() {
 
 	AddBuildFlags(CmdBuild)
 	AddBuildFlags(CmdInstall)
+
+	if x := os.Getenv("GOROOT_OVERRIDE"); x != "" {
+		goRootPrecious = false
+	}
 }
 
 // Note that flags consulted by other parts of the code
diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go
index ccebaf8..59450d7 100644
--- a/src/cmd/go/internal/work/exec.go
+++ b/src/cmd/go/internal/work/exec.go
@@ -455,6 +455,23 @@ func (b *Builder) build(a *Action) (err error) {
 		return errors.New("binary-only packages are no longer supported")
 	}
 
+	if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {
+		_, err := os.Stat(a.Package.Target)
+		if err == nil {
+			a.built = a.Package.Target
+			a.Target = a.Package.Target
+			a.buildID = b.fileHash(a.Package.Target)
+			a.Package.Stale = false
+			a.Package.StaleReason = "GOROOT-resident package"
+			return nil
+		}
+		a.Package.Stale = true
+		a.Package.StaleReason = "missing or invalid GOROOT-resident package"
+		if b.IsCmdList {
+			return nil
+		}
+	}
+
 	if err := b.Mkdir(a.Objdir); err != nil {
 		return err
 	}
@@ -1499,6 +1516,14 @@ func BuildInstallFunc(b *Builder, a *Action) (err error) {
 		return nil
 	}
 
+	if goRootPrecious && a.Package != nil {
+		p := a.Package
+		if p.Standard || p.Goroot {
+			err := fmt.Errorf("attempting to install package %s into read-only GOROOT", p.ImportPath)
+			return err
+		}
+	}
+
 	if err := b.Mkdir(a.Objdir); err != nil {
 		return err
 	}
-- 
2.17.1 (Apple Git-112)

