Subject: Re: [bug#49221] [PATCH 00/13] Add go-1.16 and build with gccgo

From: Efraim Flashner <[email-masked]>
Date: Mon, 28 Jun 2021 22:22:15 +0300

On Thu, Jun 24, 2021 at 11:52:55PM -0700, Sarah Morgensen via Guix-patches via wrote:
> Hello Guix,
> 
> This patch adds go 1.16, but does *not* make it the default for other packages
> which use go (as suggested in [2]). There have been a lot of changes between
> 1.14 and 1.16, and while I have fixed many issues, I am sure continued testing
> will uncover many more.
> 
> This patch is based on [0], which adds gccgo-10.

I've applied the patch, so it should now be available in the main repo :)

> With this patch, go automatically bootstraps from gccgo[0][1] on platforms not
> supported by go 1.4, but you can do so on any platform with:
> 
>   guix build go --with-input=[email-masked]=gccgo@10
> 
> Additionally, to build packages with 1.16:
> 
>   guix build <package> --with-input=[email-masked]=[email-masked]
> 
> I would appreciate testing and feedback on the new bootstrap process,
> especially from powerpc64le users, as I have only been able to test on x86-64.
> (Note that it took about two hours for gccgo to build and 30 minutes for gccgo
> to build go.)

I was able to build [email-masked] as-is and with the conditional switched, so
it used gccgo to bootstrap [email-masked]. Additionally on my x86_64 machine
using emulation I was able to build [email-masked] for powerpc64le. On the
powerpc64le box I have access to I was able to build gccgo and I'm still
building out to [email-masked].

> Changes from 1.14:
> 
>   * Bootstrap with gccgo on platforms which do not support go 1.4 (see above)
>   * Use GO_LDSO to set the interpreter rather than patching files
>   * Fix typo in cgoldflags patch ("-rpath=" > "-Wl,-rpath=")
>   * Fix and re-enable some cgo/gccgo tests
>   * Remove references to perl (used for tests) to reduce closure size by 10%
>   * Set GOCACHE so go doesn't complain that it can't access it $HOME
>   * Break out tests into "check" phase so builders have more control
> 
> I have successfully built and tested most go packages on x86-64, including
> restic, syncthing, chezmoi, and exercism.
> 
> However... docker does not pass tests. It should probably be updated to 20.10,
> but it is a very complicated package and I do not have the skill to do so. I
> attempted to backport some of the fixes, but that was also beyond my abilities.
> 
> Perhaps someone else will rise to the challenge? :)

My only concern about the patches is that I've been burned before about
pushing updates to go packages, where some seem to have insufficient
testing and then they'll build and fail. So in the meantime I've pushed
the [email-masked] patch.

> Sarah
> 
> [0] <https://issues.guix.gnu.org/49019> [PATCH 0/1] gnu: Add gccgo-10.
> [1] <https://issues.guix.gnu.org/28226> Build go with gccgo
> [2] <https://issues.guix.gnu.org/45161> [PATCH] Added Go 1.16.2
> 
> Sarah Morgensen (13):
>   gnu: go-github-com-puerkitobio-goquery: Update to 1.7.0.
>   gnu: go-go-uber-org-atomic: Update to 1.8.0.
>   gnu: go-github-com-sergi-go-diff: Update to 1.2.0.
>   gnu: go-github-com-pelletier-go-toml: Update to 1.9.3.
>   gnu: go-github-com-masterminds-goutils: Update to 1.1.1.
>   gnu: go-github-com-magiconair-properties: Update to 1.8.5.
>   gnu: go-github-com-dlclark-regexp2: Update to 1.4.0.
>   gnu: earlyoom: Patch tests for go-1.16.
>   gnu: go-github-com-bmatcuk-doublestar: Remove test incompatible with
>     go-1.16.
>   gnu: restic: Patch tests for go-1.16.
>   gnu: go-gopkg-in-check-v1: Update to latest.
>   gnu: go-etcd-io-bbolt: Update to 1.3.6.
>   gnu: Add go-1.16.
> 
>  gnu/local.mk                                  |   4 +
>  gnu/packages/backup.scm                       |   5 +-
>  gnu/packages/golang.scm                       | 243 +++++++++++++++---
>  gnu/packages/linux.scm                        |   4 +-
>  .../earlyoom-1.6.2-disable-go-module.patch    |  17 ++
>  .../patches/go-fix-script-tests.patch         |  18 ++
>  ...m-bmatcuk-doublestar-1.3-remove-test.patch |  15 ++
>  .../restic-0.9.6-fix-tests-for-go1.15.patch   |  51 ++++
>  8 files changed, 314 insertions(+), 43 deletions(-)
>  create mode 100644 gnu/packages/patches/earlyoom-1.6.2-disable-go-module.patch
>  create mode 100644 gnu/packages/patches/go-fix-script-tests.patch
>  create mode 100644 gnu/packages/patches/go-github-com-bmatcuk-doublestar-1.3-remove-test.patch
>  create mode 100644 gnu/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch
> 
> 
> base-commit: c7804cd97b28ef012acc20c1d861904e9592382b
> prerequisite-patch-id: edb56de17ac3cce58402c83a9671b00381dfee76
> -- 
> 2.31.1
> 
> 
> 
> 

-- 
Efraim Flashner   <[email-masked]>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted