1From 6b05378097c6a386ed9912d2471976dc39504e86 Mon Sep 17 00:00:00 2001 2From: Christian Stewart <christian@aperture.us> 3Date: Thu, 27 Jul 2023 21:28:47 -0700 4Subject: [PATCH] cmd/dist: set buildvcs=false when building go-bootstrap 5 6When building go-bootstrap as part of the make.bash process, the cmd/dist 7invokes the bootstrap Go compiler to build the go_bootstrap tool: 8 9${GOROOT_BOOTSTRAP}/bin/go install -tags=math_big_pure_go compiler_bootstrap purego bootstrap/cmd/... 10 11If there is an invalid .git directory in a parent of ${GOROOT_BOOTSTRAP}, 12make.bash will fail. Reproduction of the issue: 13 14 mkdir go-issue-61620 15 cd ./go-issue-61620 16 wget https://go.dev/dl/go1.19.11.src.tar.gz 17 mkdir go-bootstrap 18 tar -xf go1.19.11.src.tar.gz -C ./go-bootstrap --strip-components=1 19 cd ./go-bootstrap/src/ 20 bash make.bash 21 cd ../../ 22 wget https://go.dev/dl/go1.20.6.src.tar.gz 23 mkdir go 24 tar -xf go1.20.6.src.tar.gz -C ./go/ --strip-components=1 25 printf "gitdir: ../../does/not/exist/.git" > ./.git 26 cd ./go/src/ 27 GOROOT_BOOTSTRAP=$(pwd)/../../go-bootstrap/ bash make.bash 28 29The build fails with the following error: 30 31 Building Go toolchain1 using [snip]/go-1.19.10. 32 error obtaining VCS status: exit status 128 33 Use -buildvcs=false to disable VCS stamping. 34 go tool dist: FAILED: [snip]/go-1.19.10/bin/go install -tags=math_big_pure_go \ 35 compiler_bootstrap purego bootstrap/cmd/...: exit status 1 36 37This change unconditionally sets -buildvcs=false when compiling go-bootstrap. We 38don't need the revision information in those binaries anyway. Setting this flag 39was previously not done as we were unsure if the go-bootstrap compiler would be 40new enough to support the buildvcs build flag. Since Go 1.20.x, Go 1.19.x is the 41minimum version for go-bootstrap, and supports -buildvcs=false. We can now set 42-buildvcs=false without worrying about compatibility. 43 44Related: https://github.com/golang/go/issues/54852 45Fixes: https://github.com/golang/go/issues/61620 46 47Upstream: https://github.com/golang/go/pull/61621 48 49Signed-off-by: Christian Stewart <christian@aperture.us> 50Signed-off-by: Romain Naour <romain.naour@smile.fr> 51--- 52 src/cmd/dist/buildtool.go | 3 +++ 53 1 file changed, 3 insertions(+) 54 55diff --git a/src/cmd/dist/buildtool.go b/src/cmd/dist/buildtool.go 56index a528d7aa76..3b411d6ebb 100644 57--- a/src/cmd/dist/buildtool.go 58+++ b/src/cmd/dist/buildtool.go 59@@ -221,6 +221,9 @@ func bootstrapBuildTools() { 60 cmd := []string{ 61 pathf("%s/bin/go", goroot_bootstrap), 62 "install", 63+ // Fixes cases where an invalid .git is present in a parent of GOROOT_BOOTSTRAP. 64+ // See: https://github.com/golang/go/issues/61620 65+ "-buildvcs=false", 66 "-tags=math_big_pure_go compiler_bootstrap purego", 67 } 68 if vflag > 0 { 69-- 702.41.0 71 72