|
@@ -0,0 +1,119 @@
|
|
|
+From 4d43f7c4dd06e6f62be446996019d4505af54764 Mon Sep 17 00:00:00 2001
|
|
|
+From: Christian Stewart <christian@paral.in>
|
|
|
+Date: Thu, 14 Apr 2022 13:34:26 -0700
|
|
|
+Subject: [PATCH] build: bootstrap: set environment before generating buildcfg
|
|
|
+
|
|
|
+The GOOS and GOARCH environment variables should be unset before calling
|
|
|
+mkbuildcfg. This change fixes a build failure when GOARCH=riscv64.
|
|
|
+
|
|
|
+Building Go toolchain1 using go-1.4-bootstrap-20171003.
|
|
|
+src/cmd/compile/internal/ssa/rewriteRISCV64.go:4814
|
|
|
+invalid operation: y << x (shift count type int64, must be unsigned integer)
|
|
|
+
|
|
|
+There is a build issue with go1.4 with the riscv64 code: however, why is the
|
|
|
+riscv64 code being compiled at all?
|
|
|
+
|
|
|
+GOARCH is set when calling mkbuildcfg, so go1.4 is trying to compile riscv64.
|
|
|
+
|
|
|
+[Buildroot]: submitted to upstream:
|
|
|
+
|
|
|
+ - https://github.com/golang/go/issues/52583
|
|
|
+ - https://go-review.googlesource.com/c/go/+/400376
|
|
|
+ - GitHub-Pull-Request: golang/go#52362
|
|
|
+
|
|
|
+Signed-off-by: Christian Stewart <christian@paral.in>
|
|
|
+---
|
|
|
+ src/cmd/dist/buildtool.go | 56 ++++++++++++++++++++-------------------
|
|
|
+ 1 file changed, 29 insertions(+), 27 deletions(-)
|
|
|
+
|
|
|
+diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go
|
|
|
+index f1f3d50b6f..dabf01cf84 100644
|
|
|
+--- a/src/cmd/dist/buildtool.go
|
|
|
++++ b/src/cmd/dist/buildtool.go
|
|
|
+@@ -116,9 +116,6 @@ func bootstrapBuildTools() {
|
|
|
+ }
|
|
|
+ xprintf("Building Go toolchain1 using %s.\n", goroot_bootstrap)
|
|
|
+
|
|
|
+- mkbuildcfg(pathf("%s/src/internal/buildcfg/zbootstrap.go", goroot))
|
|
|
+- mkobjabi(pathf("%s/src/cmd/internal/objabi/zbootstrap.go", goroot))
|
|
|
+-
|
|
|
+ // Use $GOROOT/pkg/bootstrap as the bootstrap workspace root.
|
|
|
+ // We use a subdirectory of $GOROOT/pkg because that's the
|
|
|
+ // space within $GOROOT where we store all generated objects.
|
|
|
+@@ -130,6 +127,34 @@ func bootstrapBuildTools() {
|
|
|
+ base := pathf("%s/src/bootstrap", workspace)
|
|
|
+ xmkdirall(base)
|
|
|
+
|
|
|
++ // Set up environment for invoking Go 1.4 go command.
|
|
|
++ // GOROOT points at Go 1.4 GOROOT,
|
|
|
++ // GOPATH points at our bootstrap workspace,
|
|
|
++ // GOBIN is empty, so that binaries are installed to GOPATH/bin,
|
|
|
++ // and GOOS, GOHOSTOS, GOARCH, and GOHOSTOS are empty,
|
|
|
++ // so that Go 1.4 builds whatever kind of binary it knows how to build.
|
|
|
++ // Restore GOROOT, GOPATH, and GOBIN when done.
|
|
|
++ // Don't bother with GOOS, GOHOSTOS, GOARCH, and GOHOSTARCH,
|
|
|
++ // because setup will take care of those when bootstrapBuildTools returns.
|
|
|
++
|
|
|
++ defer os.Setenv("GOROOT", os.Getenv("GOROOT"))
|
|
|
++ os.Setenv("GOROOT", goroot_bootstrap)
|
|
|
++
|
|
|
++ defer os.Setenv("GOPATH", os.Getenv("GOPATH"))
|
|
|
++ os.Setenv("GOPATH", workspace)
|
|
|
++
|
|
|
++ defer os.Setenv("GOBIN", os.Getenv("GOBIN"))
|
|
|
++ os.Setenv("GOBIN", "")
|
|
|
++
|
|
|
++ os.Setenv("GOOS", "")
|
|
|
++ os.Setenv("GOHOSTOS", "")
|
|
|
++ os.Setenv("GOARCH", "")
|
|
|
++ os.Setenv("GOHOSTARCH", "")
|
|
|
++
|
|
|
++ // Create the build config files.
|
|
|
++ mkbuildcfg(pathf("%s/src/internal/buildcfg/zbootstrap.go", goroot))
|
|
|
++ mkobjabi(pathf("%s/src/cmd/internal/objabi/zbootstrap.go", goroot))
|
|
|
++
|
|
|
+ // Copy source code into $GOROOT/pkg/bootstrap and rewrite import paths.
|
|
|
+ writefile("module bootstrap\n", pathf("%s/%s", base, "go.mod"), 0)
|
|
|
+ for _, dir := range bootstrapDirs {
|
|
|
+@@ -176,30 +201,6 @@ func bootstrapBuildTools() {
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+- // Set up environment for invoking Go 1.4 go command.
|
|
|
+- // GOROOT points at Go 1.4 GOROOT,
|
|
|
+- // GOPATH points at our bootstrap workspace,
|
|
|
+- // GOBIN is empty, so that binaries are installed to GOPATH/bin,
|
|
|
+- // and GOOS, GOHOSTOS, GOARCH, and GOHOSTOS are empty,
|
|
|
+- // so that Go 1.4 builds whatever kind of binary it knows how to build.
|
|
|
+- // Restore GOROOT, GOPATH, and GOBIN when done.
|
|
|
+- // Don't bother with GOOS, GOHOSTOS, GOARCH, and GOHOSTARCH,
|
|
|
+- // because setup will take care of those when bootstrapBuildTools returns.
|
|
|
+-
|
|
|
+- defer os.Setenv("GOROOT", os.Getenv("GOROOT"))
|
|
|
+- os.Setenv("GOROOT", goroot_bootstrap)
|
|
|
+-
|
|
|
+- defer os.Setenv("GOPATH", os.Getenv("GOPATH"))
|
|
|
+- os.Setenv("GOPATH", workspace)
|
|
|
+-
|
|
|
+- defer os.Setenv("GOBIN", os.Getenv("GOBIN"))
|
|
|
+- os.Setenv("GOBIN", "")
|
|
|
+-
|
|
|
+- os.Setenv("GOOS", "")
|
|
|
+- os.Setenv("GOHOSTOS", "")
|
|
|
+- os.Setenv("GOARCH", "")
|
|
|
+- os.Setenv("GOHOSTARCH", "")
|
|
|
+-
|
|
|
+ // Run Go 1.4 to build binaries. Use -gcflags=-l to disable inlining to
|
|
|
+ // workaround bugs in Go 1.4's compiler. See discussion thread:
|
|
|
+ // https://groups.google.com/d/msg/golang-dev/Ss7mCKsvk8w/Gsq7VYI0AwAJ
|
|
|
+@@ -221,6 +222,7 @@ func bootstrapBuildTools() {
|
|
|
+ cmd = append(cmd, "-toolexec="+tool)
|
|
|
+ }
|
|
|
+ cmd = append(cmd, "bootstrap/cmd/...")
|
|
|
++
|
|
|
+ run(base, ShowOutput|CheckExit, cmd...)
|
|
|
+
|
|
|
+ // Copy binaries into tool binary directory.
|
|
|
+--
|
|
|
+2.35.1
|
|
|
+
|