From 7cc60b3887be2d5674b9f5d422d022976cf205e5 Mon Sep 17 00:00:00 2001
From: Matt Madison <matt@madison.systems>
Date: Fri, 2 Mar 2018 06:00:20 -0800
Subject: [PATCH] cmd/go: make GOROOT precious by default

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.

Upstream-Status: Inappropriate [OE specific]

Signed-off-by: Matt Madison <matt@madison.systems>

---
 src/cmd/go/internal/work/action.go |  3 +++
 src/cmd/go/internal/work/build.go  |  5 +++++
 src/cmd/go/internal/work/exec.go   | 25 +++++++++++++++++++++++++
 3 files changed, 33 insertions(+)

Index: go/src/cmd/go/internal/work/action.go
===================================================================
--- go.orig/src/cmd/go/internal/work/action.go
+++ go/src/cmd/go/internal/work/action.go
@@ -600,6 +600,9 @@ func (b *Builder) addTransitiveLinkDeps(
 			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
Index: go/src/cmd/go/internal/work/build.go
===================================================================
--- go.orig/src/cmd/go/internal/work/build.go
+++ go/src/cmd/go/internal/work/build.go
@@ -147,6 +147,7 @@ See also: go install, go get, go clean.
 }
 
 const concurrentGCBackendCompilationEnabledByDefault = true
+var goRootPrecious bool = true
 
 func init() {
 	// break init cycle
@@ -160,6 +161,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
Index: go/src/cmd/go/internal/work/exec.go
===================================================================
--- go.orig/src/cmd/go/internal/work/exec.go
+++ go/src/cmd/go/internal/work/exec.go
@@ -436,6 +436,23 @@ func (b *Builder) build(a *Action) (err
 		return fmt.Errorf("missing or invalid binary-only package; expected file %q", a.Package.Target)
 	}
 
+	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
 	}
@@ -1438,6 +1455,14 @@ func BuildInstallFunc(b *Builder, a *Act
 		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
 	}
