All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH v2 1/1] package/go: fix go-bootstrap when parent dir contains invalid .git
@ 2023-07-28  4:54 Christian Stewart via buildroot
  2023-07-28  4:55 ` Christian Stewart via buildroot
  2023-07-28 19:28 ` Thomas Petazzoni via buildroot
  0 siblings, 2 replies; 3+ messages in thread
From: Christian Stewart via buildroot @ 2023-07-28  4:54 UTC (permalink / raw)
  To: buildroot
  Cc: Thomas Petazzoni, Anisse Astier, Christian Stewart, Romain Naour,
	Yann E . MORIN

Building host-go within docker fails:

error obtaining VCS status: exit status 128
	Use -buildvcs=false to disable VCS stamping.

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 error only occurs when the .git that git detects in the parent directory of
the GOROOT_BOOTSTRAP is invalid or not present causing errors when running `git`
commands within GOROOT_BOOTSTRAP.

Report: https://lists.buildroot.org/pipermail/buildroot/2023-July/671344.html
Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/4725186525
Upstream issue: https://github.com/golang/go/issues/61620
Upstream PR: https://github.com/golang/go/pull/61621

Signed-off-by: Christian Stewart <christian@aperture.us>

---

v1 -> v2:

 - sort HOST_GO_MAKE_ENV alphabetically
 - simplify the patch to set buildvcs=false unconditionally for go-bootstrap
 - create a minimal reproduction of the issue
 - simplify the commit message with the minimal reproduction

Signed-off-by: Christian Stewart <christian@aperture.us>
---
 ...ldvcs-false-when-building-go-bootstr.patch | 73 +++++++++++++++++++
 package/go/go.mk                              |  1 +
 2 files changed, 74 insertions(+)
 create mode 100644 package/go/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch

diff --git a/package/go/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch b/package/go/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch
new file mode 100644
index 0000000000..e7158a2b3f
--- /dev/null
+++ b/package/go/0002-cmd-dist-set-buildvcs-false-when-building-go-bootstr.patch
@@ -0,0 +1,73 @@
+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 PR: https://github.com/golang/go/pull/61621
+
+Signed-off-by: Christian Stewart <christian@aperture.us>
+
+---
+ 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
+
diff --git a/package/go/go.mk b/package/go/go.mk
index efa47e5781..aef8ab2240 100644
--- a/package/go/go.mk
+++ b/package/go/go.mk
@@ -125,6 +125,7 @@ HOST_GO_HOST_ENV = \
 # HOSTCC_NOCCACHE.  See https://github.com/golang/go/issues/11685.
 HOST_GO_MAKE_ENV = \
 	GO111MODULE=off \
+	GOBOOTSTRAP_BUILDVCS=0 \
 	GOCACHE=$(HOST_GO_HOST_CACHE) \
 	GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_STAGE2_ROOT) \
 	GOROOT_FINAL=$(HOST_GO_ROOT) \
-- 
2.41.0

_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH v2 1/1] package/go: fix go-bootstrap when parent dir contains invalid .git
  2023-07-28  4:54 [Buildroot] [PATCH v2 1/1] package/go: fix go-bootstrap when parent dir contains invalid .git Christian Stewart via buildroot
@ 2023-07-28  4:55 ` Christian Stewart via buildroot
  2023-07-28 19:28 ` Thomas Petazzoni via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Christian Stewart via buildroot @ 2023-07-28  4:55 UTC (permalink / raw)
  To: buildroot; +Cc: Romain Naour, Anisse Astier, Thomas Petazzoni, Yann E . MORIN

Hi all,

On Thu, Jul 27, 2023 at 9:54 PM Christian Stewart <christian@aperture.us> wrote:
> diff --git a/package/go/go.mk b/package/go/go.mk
> index efa47e5781..aef8ab2240 100644
> --- a/package/go/go.mk
> +++ b/package/go/go.mk
> @@ -125,6 +125,7 @@ HOST_GO_HOST_ENV = \
>  # HOSTCC_NOCCACHE.  See https://github.com/golang/go/issues/11685.
>  HOST_GO_MAKE_ENV = \
>         GO111MODULE=off \
> +       GOBOOTSTRAP_BUILDVCS=0 \
>         GOCACHE=$(HOST_GO_HOST_CACHE) \
>         GOROOT_BOOTSTRAP=$(HOST_GO_BOOTSTRAP_STAGE2_ROOT) \
>         GOROOT_FINAL=$(HOST_GO_ROOT) \

This hunk can be dropped. All that's needed is the .patch.

Best regards,
Christian
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Buildroot] [PATCH v2 1/1] package/go: fix go-bootstrap when parent dir contains invalid .git
  2023-07-28  4:54 [Buildroot] [PATCH v2 1/1] package/go: fix go-bootstrap when parent dir contains invalid .git Christian Stewart via buildroot
  2023-07-28  4:55 ` Christian Stewart via buildroot
@ 2023-07-28 19:28 ` Thomas Petazzoni via buildroot
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni via buildroot @ 2023-07-28 19:28 UTC (permalink / raw)
  To: Christian Stewart via buildroot
  Cc: Romain Naour, Anisse Astier, Christian Stewart, Yann E . MORIN

On Thu, 27 Jul 2023 21:54:11 -0700
Christian Stewart via buildroot <buildroot@buildroot.org> wrote:

> Building host-go within docker fails:
> 
> error obtaining VCS status: exit status 128
> 	Use -buildvcs=false to disable VCS stamping.
> 
> 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 error only occurs when the .git that git detects in the parent directory of
> the GOROOT_BOOTSTRAP is invalid or not present causing errors when running `git`
> commands within GOROOT_BOOTSTRAP.
> 
> Report: https://lists.buildroot.org/pipermail/buildroot/2023-July/671344.html
> Fixes: https://gitlab.com/buildroot.org/buildroot/-/jobs/4725186525
> Upstream issue: https://github.com/golang/go/issues/61620
> Upstream PR: https://github.com/golang/go/pull/61621
> 
> Signed-off-by: Christian Stewart <christian@aperture.us>
> 
> ---

Applied to master after dropping the change in go.mk, as you specified.
Thanks!

Thomas
-- 
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2023-07-28 19:28 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-07-28  4:54 [Buildroot] [PATCH v2 1/1] package/go: fix go-bootstrap when parent dir contains invalid .git Christian Stewart via buildroot
2023-07-28  4:55 ` Christian Stewart via buildroot
2023-07-28 19:28 ` Thomas Petazzoni via buildroot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.