123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- 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
|