| From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001 |
| From: Christian Stewart <christian@aperture.us> |
| Date: Thu, 27 Jul 2023 21:28:47 -0700 |
| Subject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap |
| |
| When building go-bootstrap as part of the make.bash process, the cmd/dist |
| invokes the bootstrap Go compiler to build the go_bootstrap tool: |
| |
| ${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/... |
| |
| If there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP}, |
| make.bash will fail. Reproduction of the issue: |
| |
| mkdir go-issue-61620 |
| cd ./go-issue-61620 |
| wget https://go.dev/dl/go1.19.11.src.tar.gz |
| mkdir go-bootstrap |
| tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1 |
| cd ./go-bootstrap/src/ |
| bash make.bash |
| cd ../../ |
| wget https://go.dev/dl/go1.20.6.src.tar.gz |
| mkdir go |
| tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1 |
| printf "gitdir: ../../does/not/exist/.git" > ./.git |
| cd ./go/src/ |
| GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash |
| |
| The build fails with the following error: |
| |
| Building Go toolchain1 using [snip]/go-1.19.10. |
| error obtaining VCS status: exit status 128 |
| Use -buildvcs=false to disable VCS stamping. |
| go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \ |
| compiler_bootstrap purego bootstrap/cmd/...: exit status 1 |
| |
| This change unconditionally sets -buildvcs=false when compiling go-bootstrap. We |
| don't need the revision information in those binaries anyway. Setting this flag |
| was previously not done as we were unsure if the go-bootstrap compiler would be |
| new enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the |
| minimum version for go-bootstrap, and supports -buildvcs=false. We can now set |
| -buildvcs=false without worrying about compatibility. |
| |
| Related: https://github.com/golang/go/issues/54852 |
| Fixes: https://github.com/golang/go/issues/61620 |
| |
| Upstream: https://github.com/golang/go/pull/61621 |
| |
| Signed-off-by: Christian Stewart <christian@aperture.us> |
| Signed-off-by: Romain Naour <romain.naour@smile.fr> |
| --- |
| src/cmd/dist/buildtool.go | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go |
| index a528d7aa76..3b411d6ebb 100644 |
| --- a/src/cmd/dist/buildtool.go |
| +++ b/src/cmd/dist/buildtool.go |
| @@ -221,6 +221,9 @@ func bootstrapBuildTools() { |
| cmd := []string{ |
| pathf("%s/bin/go", goroot_bootstrap), |
| "install", |
| + // Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP. |
| + // See: https://github.com/golang/go/issues/61620 |
| + "-buildvcs=false", |
| "-tags=math_big_pure_go compiler_bootstrap purego", |
| } |
| if vflag > 0 { |
| -- |
| 2.41.0 |
| |