Update go-build-system to use Go 1.17.

  • Done
  • quality assurance status badge
Details
3 participants
  • Efraim Flashner
  • Sarah Morgensen
  • Leo Famulari
Owner
unassigned
Submitted by
Sarah Morgensen
Severity
normal
Blocked by
S
S
Sarah Morgensen wrote on 10 Sep 2021 00:14
(address . bug-guix@gnu.org)
865yv9mm5a.fsf@mgsn.dev
Hello Guix,

This is intended to be a tracking issue for updating go-build-system to
use Go 1.17 by default. The build system currently uses Go 1.14, which
no longer receives security updates [0].

Here's what needs to be done:

1. Address the aarch64 bug [1], either by verifying that it only happens
on emulated systems, or by fixing it if not.

2. Make some much-needed improvements to go-build-system [2]:

* replace the *slow* phase 'remove-go-references with -trimpath option

* avoid building a directory union of Go inputs (and then copying it!)

* add a "go-std-cache-for-build" package (hidden; name to be
bikeshedded), which will be an implicit input in go-build-system (needed
since we removed the pre-built standard library in go-1.17)

3. Some/all Docker packages still require Go 1.14; make them use go-1.14
explicitly. Alternatively, update Docker (significant effort involved).

4. Update or patch broken packages. I've got patches for four so far:

go-github-com-urfave-cli
go-github-com-urfave-cli-v2
go-github-com-sevlyar-go-daemon
go-github-com-keybase-go-ps

I'll submit them as a separate patch and block this with it. If anyone
else would like to see if their favorite package works with Go 1.17, you
can build it with:

go build --with-input=go@1.14=go@1.17 <package>


--
Sarah
L
L
Leo Famulari wrote on 10 Sep 2021 00:37
(name . Sarah Morgensen)(address . iskarian@mgsn.dev)(address . 50493@debbugs.gnu.org)
YTqMsUO8pzTgiifZ@jasmine.lan
On Thu, Sep 09, 2021 at 03:14:57PM -0700, Sarah Morgensen wrote:
Toggle quote (4 lines)
> This is intended to be a tracking issue for updating go-build-system to
> use Go 1.17 by default. The build system currently uses Go 1.14, which
> no longer receives security updates [0].

Thanks for putting this together.

Toggle quote (5 lines)
> Here's what needs to be done:
>
> 1. Address the aarch64 bug [1], either by verifying that it only happens
> on emulated systems, or by fixing it if not.

It looks like there was a patch for this issue:


And it was apparently added to Go, but maybe it was not sufficient, did
not make it into a release, or we are seeing a different bug.

Toggle quote (6 lines)
> 2. Make some much-needed improvements to go-build-system [2]:
>
> * replace the *slow* phase 'remove-go-references with -trimpath option
>
> * avoid building a directory union of Go inputs (and then copying it!)

Are these required to use 1.17? I agree they are important problems to
fix but we shouldn't let them block the upgrade.

Toggle quote (4 lines)
> * add a "go-std-cache-for-build" package (hidden; name to be
> bikeshedded), which will be an implicit input in go-build-system (needed
> since we removed the pre-built standard library in go-1.17)

Okay. Feel free to choose the name. I think it's your shed.


Toggle quote (3 lines)
> 3. Some/all Docker packages still require Go 1.14; make them use go-1.14
> explicitly. Alternatively, update Docker (significant effort involved).

Okay.

Toggle quote (11 lines)
> 4. Update or patch broken packages. I've got patches for four so far:
>
> go-github-com-urfave-cli
> go-github-com-urfave-cli-v2
> go-github-com-sevlyar-go-daemon
> go-github-com-keybase-go-ps
>
> I'll submit them as a separate patch and block this with it. If anyone
> else would like to see if their favorite package works with Go 1.17, you
> can build it with:

Okay, great.
Toggle quote (2 lines)
> go build --with-input=go@1.14=go@1.17 <package>

Syncthing builds! That's great.
S
S
Sarah Morgensen wrote on 10 Sep 2021 02:56
control message for bug #50493
(address . control@debbugs.gnu.org)
86zgsll03k.fsf@mgsn.dev
block 50493 by 50495 49921 50227
thanks
S
S
Sarah Morgensen wrote on 20 Sep 2021 02:22
(address . control@debbugs.gnu.org)
E1mS75L-0006Kz-MQ@debbugs.gnu.org
block 50493 by 50688
quit
S
S
Sarah Morgensen wrote on 20 Sep 2021 02:23
(address . control@debbugs.gnu.org)
E1mS75y-0006Lt-Ve@debbugs.gnu.org
unblock 50493 by 50227
quit
S
S
Sarah Morgensen wrote on 20 Sep 2021 07:19
[PATCH staging 0/4] build-system/go: Use go-1.17 by default.
(address . 50493@debbugs.gnu.org)(address . leo@famulari.name)
cover.1632099301.git.iskarian@mgsn.dev
Hello Guix,

This patch series updates the Go build system to use Go 1.17 by default.

As a necessity, because go-1.17 no longer contains its own pre-compiled
standard library, an implicit input is added to the build system which
contains the build cache from building the standard library with the
go-build-system. (This way, we can always guarantee that the cache is valid
because it's built with the same flags as the build system.) The build system
is also modified to make use of this cache.

(We use the build cache rather than archives because the Go project is moving
away from archives towards an authoritative build cache.)

Three packages are modified to keep using an older Go:

* docker now explicitly uses go-1.14

* go-ipfs and go-github-com-go-ipfs-cmdkit-files now explitly use go-1.16
(go-ipfs and gx badly need to be upgraded!)

There are about 900 dependent packages according to `guix refresh -l go', but
I don't know how many are leaf packages, so I marked this for staging. The
actual series is based on master because go-1.17 is only present in master.

I have built them all out successfully on x86_64.

Sarah Morgensen (4):
build-system/go: Add #:substitutable? argument.
build-system/go: Initialize build cache from input packages.
build-system/go: Add pre-built standard library as implicit input.
build-system/go: Use go-1.17 by default.

gnu/packages/docker.scm | 2 +-
gnu/packages/golang.scm | 32 +++++++++++++++++++++++++++++++-
gnu/packages/ipfs.scm | 6 ++++--
guix/build-system/go.scm | 24 ++++++++++++++++++++----
guix/build/go-build-system.scm | 26 +++++++++++++++++++++++---
5 files changed, 79 insertions(+), 11 deletions(-)


base-commit: a640ee7da3311e4fa560c7163d2dd7d24a25585a
--
2.33.0
S
S
Sarah Morgensen wrote on 20 Sep 2021 07:20
[PATCH 1/4] build-system/go: Add #:substitutable? argument.
(address . 50493@debbugs.gnu.org)(address . leo@famulari.name)
886cdf3621d5a9592e833be510d549484f558970.1632099301.git.iskarian@mgsn.dev
* guix/build-system/go.scm (go-build): Add 'substitutable?' argument.
(go-cross-build): Likewise.
---
guix/build-system/go.scm | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)

Toggle diff (42 lines)
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index 4c1a732107..8aa065c4ff 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -169,7 +169,8 @@ (define* (go-build store name inputs
(imported-modules %go-build-system-modules)
(modules '((guix build go-build-system)
(guix build union)
- (guix build utils))))
+ (guix build utils)))
+ (substitutable? #t))
(define builder
`(begin
(use-modules ,@modules)
@@ -211,6 +212,7 @@ (define* (go-build store name inputs
#:system system
#:modules imported-modules
#:outputs outputs
+ #:substitutable? substitutable?
#:guile-for-build guile-for-build))
(define* (go-cross-build store name
@@ -234,7 +236,8 @@ (define* (go-cross-build store name
(imported-modules %go-build-system-modules)
(modules '((guix build go-build-system)
(guix build union)
- (guix build utils))))
+ (guix build utils)))
+ (substitutable? #t))
"Cross-build NAME using GO, where TARGET is a GNU triplet and with INPUTS."
(define builder
`(begin
@@ -303,6 +306,7 @@ (define* (go-cross-build store name
#:inputs (append native-drvs target-drvs)
#:outputs outputs
#:modules imported-modules
+ #:substitutable? substitutable?
#:guile-for-build guile-for-build))
(define go-build-system
--
2.33.0
S
S
Sarah Morgensen wrote on 20 Sep 2021 07:20
[PATCH 3/4] build-system/go: Add pre-built standard library as implicit input.
(address . 50493@debbugs.gnu.org)(address . leo@famulari.name)
b617c44a652424a5b2024963eb988a876dadf92a.1632099301.git.iskarian@mgsn.dev
* gnu/packages/golang.scm (make-go-std): New procedure.
* guix/build-system/go.scm (make-go-std): New procedure.
(lower): Use it. Add pre-built standard library to inputs.
---
gnu/packages/golang.scm | 30 ++++++++++++++++++++++++++++++
guix/build-system/go.scm | 16 ++++++++++++++--
2 files changed, 44 insertions(+), 2 deletions(-)

Toggle diff (98 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index f02d0aa9df..19f1ef37d5 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -792,6 +792,36 @@ (define-public go-1.17
(define-public go go-1.14)
+(define-public (make-go-std go)
+ "Return a package which builds the standard library for Go compiler GO."
+ (package
+ (name (string-append (package-name go) "-std"))
+ (version (package-version go))
+ (source #f)
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "std"
+ #:build-flags `("-pkgdir" "pkg") ; "Install" to build directory.
+ #:allow-go-reference? #t
+ #:substitutable? #f ; Faster to build than download.
+ #:tests? #f ; Already tested in the main Go build.
+ #:go ,go
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'unpack)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (out-cache (string-append out "/var/cache/go/build")))
+ (copy-recursively (getenv "GOCACHE") out-cache)
+ (delete-file (string-append out-cache "/trim.txt"))
+ (delete-file (string-append out-cache "/README")))))
+ (delete 'install-license-files))))
+ (home-page (package-home-page go))
+ (synopsis "Cached standard library build for Go")
+ (description (package-description go))
+ (license (package-license go))))
+
(define-public go-0xacab-org-leap-shapeshifter
(let ((commit "0aa6226582efb8e563540ec1d3c5cfcd19200474")
(revision "12"))
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index 8aa065c4ff..a579477500 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -3,6 +3,7 @@
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -109,6 +110,9 @@ (define (default-go)
(let ((go (resolve-interface '(gnu packages golang))))
(module-ref go 'go)))
+(define (make-go-std)
+ (module-ref (resolve-interface '(gnu packages golang)) 'make-go-std))
+
(define* (lower name
#:key source inputs native-inputs outputs system target
(go (default-go))
@@ -118,6 +122,14 @@ (define* (lower name
(define private-keywords
'(#:source #:target #:go #:inputs #:native-inputs))
+ (define inputs-with-cache
+ ;; XXX: Avoid a circular dependency. This should be rewritten with
+ ;; 'package-mapping' or similar.
+ (let ((go-std-name (string-append (package-name go) "-std")))
+ (if (string-prefix? go-std-name name)
+ inputs
+ (cons `(,go-std-name ,((make-go-std) go)) inputs))))
+
(bag
(name name)
(system system)
@@ -127,7 +139,7 @@ (define* (lower name
'())
,@`(("go" ,go))
,@native-inputs
- ,@(if target '() inputs)
+ ,@(if target '() inputs-with-cache)
,@(if target
;; Use the standard cross inputs of
;; 'gnu-build-system'.
@@ -135,7 +147,7 @@ (define* (lower name
'())
;; Keep the standard inputs of 'gnu-build-system'.
,@(standard-packages)))
- (host-inputs (if target inputs '()))
+ (host-inputs (if target inputs-with-cache '()))
;; The cross-libc is really a target package, but for bootstrapping
;; reasons, we can't put it in 'host-inputs'. Namely, 'cross-gcc' is a
--
2.33.0
S
S
Sarah Morgensen wrote on 20 Sep 2021 07:20
[PATCH 4/4] build-system/go: Use go-1.17 by default.
(address . 50493@debbugs.gnu.org)(address . leo@famulari.name)
2db7749e36277825f029a3b059ca8d4daaa82cbc.1632099301.git.iskarian@mgsn.dev
Build all Go packages with go-1.17 by default. Explicitly specify an
older Go version in packages which cannot build with go-1.17.

* gnu/packages/golang.scm (go): Update from 'go-1.14' to 'go-1.17'.
* gnu/packages/docker.scm (docker)[native-inputs]: Explicitly use
'go-1.14'.
* gnu/packages/ipfs.scm (go-ipfs)[arguments]: Set #:go to 'go-1.16'.
(go-github-com-ipfs-go-ipfs-cmdkit-files)[arguments]: Likewise.
---
gnu/packages/docker.scm | 2 +-
gnu/packages/golang.scm | 2 +-
gnu/packages/ipfs.scm | 6 ++++--
3 files changed, 6 insertions(+), 4 deletions(-)

Toggle diff (52 lines)
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index 8bac1b89ce..fa666cbb04 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -594,7 +594,7 @@ (define-public docker
("xz" ,xz)))
(native-inputs
`(("eudev" ,eudev) ; TODO: Should be propagated by lvm2 (.pc -> .pc)
- ("go" ,go)
+ ("go" ,go-1.14)
("gotestsum" ,gotestsum)
("pkg-config" ,pkg-config)))
(synopsis "Docker container component library, and daemon")
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 19f1ef37d5..d1ed30455c 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -790,7 +790,7 @@ (define-public go-1.17
"README.md" "SECURITY.md"))))))))
(inputs (alist-delete "gcc:lib" (package-inputs go-1.16)))))
-(define-public go go-1.14)
+(define-public go go-1.17)
(define-public (make-go-std go)
"Return a package which builds the standard library for Go compiler GO."
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index 57701991e3..8d5b4f1767 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -46,7 +46,8 @@ (define-public go-github-com-ipfs-go-ipfs-cmdkit-files
"0qk6fshgdmhp8dip2ksm13j6nywi41m9mn0czkvmw6b697z85l2r"))))
(build-system go-build-system)
(arguments
- '(#:unpack-path "github.com/ipfs/go-ipfs-cmdkit"
+ `(#:go ,go-1.16
+ #:unpack-path "github.com/ipfs/go-ipfs-cmdkit"
#:import-path "github.com/ipfs/go-ipfs-cmdkit/files"))
(home-page "https://github.com/ipfs/go-ipfs-cmdkit")
(synopsis "Shared types, functions and values for go-ipfs")
@@ -226,7 +227,8 @@ (define-public go-ipfs
(file-name (string-append name "-" version "-source"))))
(build-system go-build-system)
(arguments
- '(#:unpack-path "github.com/ipfs/go-ipfs"
+ `(#:go ,go-1.16
+ #:unpack-path "github.com/ipfs/go-ipfs"
#:import-path "github.com/ipfs/go-ipfs/cmd/ipfs"
#:phases (modify-phases %standard-phases
(add-before 'reset-gzip-timestamps 'make-files-writable
--
2.33.0
S
S
Sarah Morgensen wrote on 20 Sep 2021 07:20
[PATCH 2/4] build-system/go: Initialize build cache from input packages.
(address . 50493@debbugs.gnu.org)(address . leo@famulari.name)
a40a0ea216c02e45f140f964552347d8ef64b4be.1632099301.git.iskarian@mgsn.dev
* guix/build/go-build-system.com (setup-go-environment): Set GOCACHE to
a location within the build directory. Union "/var/cache/go/build"
input directories to initialize the cache. Generate "trim.txt" within
the cache, with the current time.
---
guix/build/go-build-system.scm | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)

Toggle diff (46 lines)
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 645d2fe680..9f249b0777 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;; Copyright © 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -138,9 +139,28 @@ (define* (setup-go-environment #:key inputs outputs goos goarch #:allow-other-ke
where executables (\"commands\") are installed to. This phase is sometimes used
by packages that use (guix build-system gnu) but have a handful of Go
dependencies, so it should be self-contained."
- ;; The Go cache is required starting in Go 1.12. We don't actually use it but
- ;; we need it to be a writable directory.
- (setenv "GOCACHE" "/tmp/go-cache")
+ (define (search-input-directories dir)
+ (filter directory-exists?
+ (map (match-lambda
+ ((name . directory)
+ (string-append directory "/" dir)))
+ inputs)))
+
+ ;; Seed the Go build cache with the build caches from input packages.
+ (let ((cache (string-append (getcwd) "/go-build")))
+ (setenv "GOCACHE" cache)
+ (union-build cache
+ (search-input-directories "/var/cache/go/build")
+ ;; Creating all directories isn't that bad, because there are
+ ;; only ever 256 of them.
+ #:create-all-directories? #t
+ #:log-port (%make-void-port "w"))
+
+ ;; Tell Go that the cache was recently trimmed, so it doesn't try to.
+ (call-with-output-file (string-append cache "/trim.txt")
+ (lambda (port)
+ (format port "~a" (current-time)))))
+
;; Using the current working directory as GOPATH makes it easier for packagers
;; who need to manipulate the unpacked source code.
(setenv "GOPATH" (getcwd))
--
2.33.0
S
S
Sarah Morgensen wrote on 20 Sep 2021 07:28
Re: bug#50493: Update go-build-system to use Go 1.17.
(name . Leo Famulari)(address . leo@famulari.name)(address . 50493@debbugs.gnu.org)
86bl4nhl32.fsf@mgsn.dev
Hello,

Apologies it's taken so long for a proper response!

Toggle quote (9 lines)
>> 2. Make some much-needed improvements to go-build-system [2]:
>>
>> * replace the *slow* phase 'remove-go-references with -trimpath option
>>
>> * avoid building a directory union of Go inputs (and then copying it!)
>
> Are these required to use 1.17? I agree they are important problems to
> fix but we shouldn't let them block the upgrade.

You're right. I've gone ahead and sent a patch series to this bug which
rolls the cache, docker, and the update all together.

I've added one more blocker: #50688 [0], which is a dependency of chezmoi.

This should just leave #49921, the aarch64 issue, then this is patch is
ready to go. With the patch from #50688, I was to build out all
dependents listed by `guix refresh -l go' (about 900).

Thanks for sticking with this! :)


--
Sarah
S
S
Sarah Morgensen wrote on 20 Sep 2021 07:31
control message for bug #50493
(address . control@debbugs.gnu.org)
86a6k7hkxf.fsf@mgsn.dev
tags 50493 + patch
quit
L
L
Leo Famulari wrote on 14 Dec 2021 21:11
Re: bug#50493: Update go-build-system to use Go 1.17.
(name . Sarah Morgensen)(address . iskarian@mgsn.dev)(address . 50493@debbugs.gnu.org)
Ybj6WNycMfd7TAwi@jasmine.lan
Alright, it's time to land these patches. I tested with a handful of
packages on x86_64 and it seems fine. I can test every package before
pushing.

However, Go 1.17.4 doesn't build for us on aarch64. I tried building the
derivation for this scheduled CI job:

/gnu/store/bldlnwxjwbi1iidm6cdw20kkpgy5gk09-go-1.17.4.drv

And it fails the test suite due to missing libgcc (I think), or maybe
something related to 'hello.exe', which seems weird:

------
$ guix build /gnu/store/bldlnwxjwbi1iidm6cdw20kkpgy5gk09-go-1.17.4.drv
[...]
--- FAIL: TestTrampolineCgo (78.58s)
link_test.go:739: executable failed to run: exit status 127
/tmp/guix-build-go-1.17.4.drv-0/TestTrampolineCgo602252092/001/hello.exe: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
link_test.go:742: unexpected output:
/tmp/guix-build-go-1.17.4.drv-0/TestTrampolineCgo602252092/001/hello.exe: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
FAIL
FAIL cmd/link 425.553s
ok cmd/link/internal/benchmark 0.449s
ok cmd/link/internal/ld 84.727s
ok cmd/link/internal/loader 0.366s
ok cmd/nm 73.342s
ok cmd/objdump 96.072s
ok cmd/pack 77.197s
ok cmd/pprof 155.165s
ok cmd/trace 2.437s
ok cmd/vet 318.126s
FAIL
go tool dist: Failed: exit status 1
command "sh" "run.bash" "--no-rebuild" failed with status 1
builder for `/gnu/store/bldlnwxjwbi1iidm6cdw20kkpgy5gk09-go-1.17.4.drv' failed with exit code 1
------

I notice that we remove libgcc from the dependencies of go-1.17:


Anyways, any ideas?
E
E
Efraim Flashner wrote on 15 Dec 2021 11:40
(name . Leo Famulari)(address . leo@famulari.name)
YbnGB5a/k52E2LK/@3900XT
On Tue, Dec 14, 2021 at 03:11:04PM -0500, Leo Famulari wrote:
Toggle quote (10 lines)
> Alright, it's time to land these patches. I tested with a handful of
> packages on x86_64 and it seems fine. I can test every package before
> pushing.
>
> However, Go 1.17.4 doesn't build for us on aarch64. I tried building the
> derivation for this scheduled CI job:
>
> https://ci.guix.gnu.org/build/1952348/details
> /gnu/store/bldlnwxjwbi1iidm6cdw20kkpgy5gk09-go-1.17.4.drv

The link shows problems with the armhf portion of the bootstrap.

Toggle quote (34 lines)
> And it fails the test suite due to missing libgcc (I think), or maybe
> something related to 'hello.exe', which seems weird:
>
> ------
> $ guix build /gnu/store/bldlnwxjwbi1iidm6cdw20kkpgy5gk09-go-1.17.4.drv
> [...]
> --- FAIL: TestTrampolineCgo (78.58s)
> link_test.go:739: executable failed to run: exit status 127
> /tmp/guix-build-go-1.17.4.drv-0/TestTrampolineCgo602252092/001/hello.exe: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
> link_test.go:742: unexpected output:
> /tmp/guix-build-go-1.17.4.drv-0/TestTrampolineCgo602252092/001/hello.exe: error while loading shared libraries: libgcc_s.so.1: cannot open shared object file: No such file or directory
> FAIL
> FAIL cmd/link 425.553s
> ok cmd/link/internal/benchmark 0.449s
> ok cmd/link/internal/ld 84.727s
> ok cmd/link/internal/loader 0.366s
> ok cmd/nm 73.342s
> ok cmd/objdump 96.072s
> ok cmd/pack 77.197s
> ok cmd/pprof 155.165s
> ok cmd/trace 2.437s
> ok cmd/vet 318.126s
> FAIL
> go tool dist: Failed: exit status 1
> command "sh" "run.bash" "--no-rebuild" failed with status 1
> builder for `/gnu/store/bldlnwxjwbi1iidm6cdw20kkpgy5gk09-go-1.17.4.drv' failed with exit code 1
> ------
>
> I notice that we remove libgcc from the dependencies of go-1.17:
>
> https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/golang.scm?id=b484301f529e246df80380a641822f09a8775755#n799
>
> Anyways, any ideas?

I'll try poking it a bit with my aarch64 board. We can also switch the
aarch64 go builds to bootstrap from gccgo, that might make a difference
too.

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmG5xgcACgkQQarn3Mo9
g1FtARAAqMHgLYVqEJV+x0n3QnhCyzVBVZgXrFniiH7vuBxTuZjTBXtRReFWQlBD
UvhzndxkAzEbba7zDfpnbGmRZbIZRfDrAVS5ZM539D+yBKHfrX8X5inEUZulnn4M
CiSkBOLwXOmfZ8gARFAagFIMXa5mNw5ODfwVia+CrbXsc5rGOCBAWUlWNy73V39U
ZriMbNnc7ueO3aFrwf17D+DyXS2/wMP7FNwjgxGULyP9UmFXKdF/U5FZzOqXGA63
Aup2aj/BIy4FGO+lnc3e1D0bYvnNxkkYbG6Dy7JfELbUJqbkPyyqSVGqqEACPoeN
0ueLJ9rwNGZTl2Hy/UWy00ACiyKPo1wRthpoLLIQxD/ZMnohtFP8ZdNbE7V862l+
R9CkqZCuGKKN46E3zS7DrZUDsVzYCvd1PynR08OfgKDMvyNopJwHnD7AGMSc/8t9
apL3jtrF6ACGr3YYhiPJuBNfDmLOX9DNUI+Ri42AawSPR1ci5xVLQhxjdUDD0bfE
ir+b0G09s3+zk4QKpOTf4Nc3ymb1Ot8du8qf3GijdQhBUw+jmORiIugmjtR4l2T8
s1JHQ8ULBMIozlsaRN6JnhLarlggxMUIXmGBnR2euR5bMwUDERaLxLpX+GjXx7UJ
UBKmjDwUOIie77czsagyXUkhBKZIlpkqegeJfMAWn5h/6GBS5ho=
=bKOe
-----END PGP SIGNATURE-----


L
L
Leo Famulari wrote on 15 Dec 2021 18:44
YbopZR4ZBKWp2hBv@jasmine.lan
On Wed, Dec 15, 2021 at 12:40:07PM +0200, Efraim Flashner wrote:
Toggle quote (4 lines)
> I'll try poking it a bit with my aarch64 board. We can also switch the
> aarch64 go builds to bootstrap from gccgo, that might make a difference
> too.

Thanks, let us know how it goes.

I tried building go-1.17.4 for aarch64 with libgcc as an input, but it
failed in another way. So any progress you can make would be helpful.
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAmG6KWUACgkQJkb6MLrK
fwh17w//ciGmVkH4vTGwAXmEn+zgrRXWO+AHgO++9jHgEdCnaYjCGuMfKl4c7sQw
ohl6zBQADqtBGQJA03F6S1gNpwcI4llmjddDRfN4y3fRXuaulc6nWKdM75Fz6QqM
iD/59HV+Zd/h5ZZluZ0IZM31Z6fFpq4e/73RAZXqp/qyaN9qGrTkxisvs5CPBkjF
OXZJzbHqj7IrHtc1EGlsYdjA/8xOm8ZO3Yee6oWhhl7po4M4Kua4aa0YerpWgkHw
AUL38D/B0R+mBH33HMnQFth1T2zCvHUgyMx49HN5XD9DNU7ZCmjt6rump7kXZrGi
bh8a7ynJA62lKWabg9AOsGBTwd4uBfsX4R3eO3Y79c1Cu/mP8jFMb6n6wKi4m6XC
gW0VdQhVXIqDzvPdxQ5CUkR2vJJGe1pczs/H5/ldcaFNBx7J/gZxvvbeBJkoJc90
n2D5zyc8PkZqYju/ZAVWsqismhGDaHV716FgySo2oTIJXJszs2f+B2wsyvcfvjc8
fxIbYF1/CeLz7nPnvCnweis4fh16OrCVA8fqDvAUVokFLB459r1EqnKx+mnwgsyK
AqEK2YVP1x/Ig/C9UnQy3GsOhRg70dTN30lm6qKl5Ckay7c6foGnIumu5CYvX0cJ
2nDrL8stHsHa27VSdf4sMjhMuE9lGCmDPsUObbwOzP2H2WMLjas=
=mx1K
-----END PGP SIGNATURE-----


E
E
Efraim Flashner wrote on 15 Dec 2021 19:03
(name . Leo Famulari)(address . leo@famulari.name)
Ybot9Mjfqu5lJEIf@3900XT
On Wed, Dec 15, 2021 at 12:44:05PM -0500, Leo Famulari wrote:
Toggle quote (10 lines)
> On Wed, Dec 15, 2021 at 12:40:07PM +0200, Efraim Flashner wrote:
> > I'll try poking it a bit with my aarch64 board. We can also switch the
> > aarch64 go builds to bootstrap from gccgo, that might make a difference
> > too.
>
> Thanks, let us know how it goes.
>
> I tried building go-1.17.4 for aarch64 with libgcc as an input, but it
> failed in another way. So any progress you can make would be helpful.

I got pretty far commenting out binutils-gold and adding back in gcc:lib
and the substitute snippets. Then I started failing tests requiring the
linker, so it looks like I'll actually have to troubleshoot
binutils-gold.

I thought about trying gccgo in place of go-1.4 for the bootstrap, but
I'm pretty sure I'd still need binutils-gold.

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmG6LfAACgkQQarn3Mo9
g1H2hBAAk/CLa8UUlPwrAJWFy269nxYOJ6Ok7EufxhWsMDIBEd9EYV27Z+Qe+SAz
c4af4SEbQXsOKD38E81Qwwu4w1eVgIZgTslait+akWEFYjUi3P1KDb+XYHA6ktQg
Nfw33FD3vkbIQBIn9a8K0BfYk84vXKzcQklvfdMr0lNpHv0SHakGZLxozS3KMjDD
sL2IFOXdiwn6Gu9QmztSnMStW42xj7vO8UzF2pDhtyWnTjXLmigxZRR/6QgppLXv
yQIo60rtWS5Et0YHiS6pFI433ygNNEYO/+G7BHcB06KyMup/xBljdNXqstUA+0rg
IafqqvAeLiomMic9r7sYbyDdmTDIOmRvS0LPUS7KdS5wuZ4LhfMuQDTbO5cylIAP
Z/JXT5es2GbC5sfinZnyMx1/AI+09p5e8f+b385KrT2INsO37sr3vqjPyycc5yTw
pQPeKeinadJAjKMCjx1GNJLgBvG2B/R2CgS069+mL6wSoHHV0tg0idtUE2eFleCE
ApsbFc/IZtOi9TurjWLOywWzI8MBlpoJLM6G9fd+6dg2M0Q9ZbQkl/5HdGDmU9xY
g14xw6GpUuTv+YbTiSB3Lx8xfMGU4oHiblHnNhK85nUF8rj03XAm6/KRp5dpVrPF
MtiEV+fxTlj2kzIXGUzxBw5VQYCtJivm/krIS04flh+dZ+L2fF0=
=TvIw
-----END PGP SIGNATURE-----


L
L
Leo Famulari wrote on 17 Dec 2021 23:09
Yb0KfWlKHod6aX6U@jasmine.lan
On Wed, Dec 15, 2021 at 08:03:32PM +0200, Efraim Flashner wrote:
Toggle quote (8 lines)
> I got pretty far commenting out binutils-gold and adding back in gcc:lib
> and the substitute snippets. Then I started failing tests requiring the
> linker, so it looks like I'll actually have to troubleshoot
> binutils-gold.
>
> I thought about trying gccgo in place of go-1.4 for the bootstrap, but
> I'm pretty sure I'd still need binutils-gold.

Maybe, in the meantime, we could update go-build-system to use go-1.16,
which does at least build on aarch64. This Go release is still
supported, at least for a little while longer.

It would be nice to not be using Go 1.14 by default in the upcoming
release.

What do people think about that idea?
E
E
Efraim Flashner wrote on 19 Dec 2021 09:19
(name . Leo Famulari)(address . leo@famulari.name)
Yb7q9p8wMUYNOTC9@3900XT
On Fri, Dec 17, 2021 at 05:09:01PM -0500, Leo Famulari wrote:
Toggle quote (18 lines)
> On Wed, Dec 15, 2021 at 08:03:32PM +0200, Efraim Flashner wrote:
> > I got pretty far commenting out binutils-gold and adding back in gcc:lib
> > and the substitute snippets. Then I started failing tests requiring the
> > linker, so it looks like I'll actually have to troubleshoot
> > binutils-gold.
> >
> > I thought about trying gccgo in place of go-1.4 for the bootstrap, but
> > I'm pretty sure I'd still need binutils-gold.
>
> Maybe, in the meantime, we could update go-build-system to use go-1.16,
> which does at least build on aarch64. This Go release is still
> supported, at least for a little while longer.
>
> It would be nice to not be using Go 1.14 by default in the upcoming
> release.
>
> What do people think about that idea?

All of go is blocked on aarch64 with binutils-gold not compiling. I have
a patch locally to add gcc:lib for (target-arm?) to go-1.17 which I'll
push after testing with binutils-gold. I think going straight to 1.17 is
fine, there's no regression against the current support for aarch64.

--
Efraim Flashner <efraim@flashner.co.il> ????? ?????
GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEEoov0DD5VE3JmLRT3Qarn3Mo9g1EFAmG+6vMACgkQQarn3Mo9
g1HJiQ//blUr5ypEIIZr6b7bS+8iFVOm1jec/j727KMB4ff7gudEiC0YEhEPFSJ1
9lc/zUCkpo0ULotPpCBi37kE6eampQinuYjLR/hsQ2wv8cUF1pXKOz7Vb6+//Qun
3m1HIJpq2OEuAvPd13Qa9mtOZENBF9hD5dQcBdefjeT44sgR3YVB37jv5HjR6ALb
9a4blt+UAvRrUpsHP/fHejKSNp4Vgnkb3lTRKELM3Dy+HxzbYSj58PprtdPT4WsB
MnpiRh7Knlbi5zlABmMv8z2bn48dG+NcRaSa7i1pLFl62LNfz2m3t4LLpFM7GoD/
KofTJ4pM37ltXz6zxDrGf2vTqagzGDWTFsnMpiKKn441aIC3somx0bRqPr4qXAq5
3yZTD6K0wbx1JRGGIjgvxE0cPTjkmvZhlKx/2HD2HCEAhZdU+QiHTHfd/qNyNmIe
sk35BegvsriqdC2aOYXC+LLDRRXb+3R/r7pBhToc60GVgSAbY8dt3o+mDjqEU4kb
KQ/qeLxai04LeqhBVxTke7cqByEEb9Y4NyJxLLyn32b0bGtNlZNLPYEK4spOUY1c
ng52uipN7sOUeYnP3h6sPaawzBDJzSYKThiCt5m1Se4uQEodey0aXzmHStAUW0a6
uv0HafskS5HnJHO1z7ufzu3Nkwb4nGo7NTOsmsytcJPooOwWoxA=
=wxIl
-----END PGP SIGNATURE-----


L
L
Leo Famulari wrote on 20 Dec 2021 02:30
Yb/cqtRx8I2Nh1ds@jasmine.lan
On Sun, Dec 19, 2021 at 10:19:02AM +0200, Efraim Flashner wrote:
Toggle quote (5 lines)
> All of go is blocked on aarch64 with binutils-gold not compiling. I have
> a patch locally to add gcc:lib for (target-arm?) to go-1.17 which I'll
> push after testing with binutils-gold. I think going straight to 1.17 is
> fine, there's no regression against the current support for aarch64.

Oh, good point.

Based on the attached patches (rebased / adjusted for current master),
I'll proceed with testing the build of all Go packages on x86_64-linux.
From f26d2b8b30867d23a417af2c40ba8062adb87bd7 Mon Sep 17 00:00:00 2001
From: Sarah Morgensen <iskarian@mgsn.dev>
Date: Mon, 13 Dec 2021 20:11:47 -0500
Subject: [PATCH 1/4] build-system/go: Add #:substitutable? argument.

* guix/build-system/go.scm (go-build): Add 'substitutable?' argument.
(go-cross-build): Likewise.

Signed-off-by: Leo Famulari <leo@famulari.name>
---
guix/build-system/go.scm | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)

Toggle diff (36 lines)
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index 18824c79d9..0b2bf1c11b 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -172,7 +172,8 @@ (define* (go-build name inputs
(imported-modules %go-build-system-modules)
(modules '((guix build go-build-system)
(guix build union)
- (guix build utils))))
+ (guix build utils)))
+ (substitutable? #t))
(define builder
(with-imported-modules imported-modules
#~(begin
@@ -182,6 +183,7 @@ (define builder
#:system #$system
#:phases #$phases
#:outputs #$(outputs->gexp outputs)
+ #:substitutable? #$substitutable?
#:goarch #$goarch
#:goos #$goos
#:search-paths '#$(sexp->gexp
@@ -222,7 +224,8 @@ (define* (go-cross-build name
(imported-modules %go-build-system-modules)
(modules '((guix build go-build-system)
(guix build union)
- (guix build utils))))
+ (guix build utils)))
+ (substitutable? #t))
"Cross-build NAME using GO, where TARGET is a GNU triplet and with INPUTS."
(define builder
#~(begin

base-commit: 99f290bf5ba59e3218b95d7505ac27f989250aad
--
2.34.0
From a437f30bfaa4965cb42acb37f387e2c8106c7884 Mon Sep 17 00:00:00 2001
From: Sarah Morgensen <iskarian@mgsn.dev>
Date: Sun, 19 Sep 2021 22:20:49 -0700
Subject: [PATCH 2/4] build-system/go: Initialize build cache from input
packages.

* guix/build/go-build-system.com (setup-go-environment): Set GOCACHE to
a location within the build directory. Union "/var/cache/go/build"
input directories to initialize the cache. Generate "trim.txt" within
the cache, with the current time.

Signed-off-by: Leo Famulari <leo@famulari.name>
---
guix/build/go-build-system.scm | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)

Toggle diff (46 lines)
diff --git a/guix/build/go-build-system.scm b/guix/build/go-build-system.scm
index 4768ee8562..7f25e05d0d 100644
--- a/guix/build/go-build-system.scm
+++ b/guix/build/go-build-system.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;; Copyright © 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -138,9 +139,28 @@ (define* (setup-go-environment #:key inputs outputs goos goarch #:allow-other-ke
where executables (\"commands\") are installed to. This phase is sometimes used
by packages that use (guix build-system gnu) but have a handful of Go
dependencies, so it should be self-contained."
- ;; The Go cache is required starting in Go 1.12. We don't actually use it but
- ;; we need it to be a writable directory.
- (setenv "GOCACHE" "/tmp/go-cache")
+ (define (search-input-directories dir)
+ (filter directory-exists?
+ (map (match-lambda
+ ((name . directory)
+ (string-append directory "/" dir)))
+ inputs)))
+
+ ;; Seed the Go build cache with the build caches from input packages.
+ (let ((cache (string-append (getcwd) "/go-build")))
+ (setenv "GOCACHE" cache)
+ (union-build cache
+ (search-input-directories "/var/cache/go/build")
+ ;; Creating all directories isn't that bad, because there are
+ ;; only ever 256 of them.
+ #:create-all-directories? #t
+ #:log-port (%make-void-port "w"))
+
+ ;; Tell Go that the cache was recently trimmed, so it doesn't try to.
+ (call-with-output-file (string-append cache "/trim.txt")
+ (lambda (port)
+ (format port "~a" (current-time)))))
+
;; Using the current working directory as GOPATH makes it easier for packagers
;; who need to manipulate the unpacked source code.
(setenv "GOPATH" (getcwd))
--
2.34.0
From cddf7d95c9134075aec45e2f2e49073f92aadfcb Mon Sep 17 00:00:00 2001
From: Sarah Morgensen <iskarian@mgsn.dev>
Date: Sun, 19 Sep 2021 22:20:50 -0700
Subject: [PATCH 3/4] build-system/go: Add pre-built standard library as
implicit input.

* gnu/packages/golang.scm (make-go-std): New procedure.
* guix/build-system/go.scm (make-go-std): New procedure.
(lower): Use it. Add pre-built standard library to inputs.

Signed-off-by: Leo Famulari <leo@famulari.name>
---
gnu/packages/golang.scm | 30 ++++++++++++++++++++++++++++++
guix/build-system/go.scm | 16 ++++++++++++++--
2 files changed, 44 insertions(+), 2 deletions(-)

Toggle diff (98 lines)
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index c863388475..7989a3a138 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -806,6 +806,36 @@ (define-public go-1.17
(define-public go go-1.14)
+(define-public (make-go-std go)
+ "Return a package which builds the standard library for Go compiler GO."
+ (package
+ (name (string-append (package-name go) "-std"))
+ (version (package-version go))
+ (source #f)
+ (build-system go-build-system)
+ (arguments
+ `(#:import-path "std"
+ #:build-flags `("-pkgdir" "pkg") ; "Install" to build directory.
+ #:allow-go-reference? #t
+ #:substitutable? #f ; Faster to build than download.
+ #:tests? #f ; Already tested in the main Go build.
+ #:go ,go
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'unpack)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (out-cache (string-append out "/var/cache/go/build")))
+ (copy-recursively (getenv "GOCACHE") out-cache)
+ (delete-file (string-append out-cache "/trim.txt"))
+ (delete-file (string-append out-cache "/README")))))
+ (delete 'install-license-files))))
+ (home-page (package-home-page go))
+ (synopsis "Cached standard library build for Go")
+ (description (package-description go))
+ (license (package-license go))))
+
(define-public go-0xacab-org-leap-shapeshifter
(let ((commit "0aa6226582efb8e563540ec1d3c5cfcd19200474")
(revision "12"))
diff --git a/guix/build-system/go.scm b/guix/build-system/go.scm
index 0b2bf1c11b..09148f8730 100644
--- a/guix/build-system/go.scm
+++ b/guix/build-system/go.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2020 Jakub K?dzio?ka <kuba@kadziolka.net>
;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -112,6 +113,9 @@ (define (default-go)
(let ((go (resolve-interface '(gnu packages golang))))
(module-ref go 'go)))
+(define (make-go-std)
+ (module-ref (resolve-interface '(gnu packages golang)) 'make-go-std))
+
(define* (lower name
#:key source inputs native-inputs outputs system target
(go (default-go))
@@ -121,6 +125,14 @@ (define* (lower name
(define private-keywords
'(#:target #:go #:inputs #:native-inputs))
+ (define inputs-with-cache
+ ;; XXX: Avoid a circular dependency. This should be rewritten with
+ ;; 'package-mapping' or similar.
+ (let ((go-std-name (string-append (package-name go) "-std")))
+ (if (string-prefix? go-std-name name)
+ inputs
+ (cons `(,go-std-name ,((make-go-std) go)) inputs))))
+
(bag
(name name)
(system system)
@@ -130,7 +142,7 @@ (define private-keywords
'())
,@`(("go" ,go))
,@native-inputs
- ,@(if target '() inputs)
+ ,@(if target '() inputs-with-cache)
,@(if target
;; Use the standard cross inputs of
;; 'gnu-build-system'.
@@ -138,7 +150,7 @@ (define private-keywords
'())
;; Keep the standard inputs of 'gnu-build-system'.
,@(standard-packages)))
- (host-inputs (if target inputs '()))
+ (host-inputs (if target inputs-with-cache '()))
;; The cross-libc is really a target package, but for bootstrapping
;; reasons, we can't put it in 'host-inputs'. Namely, 'cross-gcc' is a
--
2.34.0
From 6f9d52c1117279be567e2ee9f56f88e470867e92 Mon Sep 17 00:00:00 2001
From: Sarah Morgensen <iskarian@mgsn.dev>
Date: Sun, 19 Sep 2021 22:20:51 -0700
Subject: [PATCH 4/4] build-system/go: Use go-1.17 by default.

Build all Go packages with go-1.17 by default. Explicitly specify an
older Go version in packages which cannot build with go-1.17.

* gnu/packages/golang.scm (go): Update from 'go-1.14' to 'go-1.17'.
* gnu/packages/docker.scm (docker)[native-inputs]: Explicitly use 'go-1.14'.
* gnu/packages/ipfs.scm (go-github-com-ipfs-go-ipfs-cmdkit-files)[arguments]:
Set #:go to 'go-1.16'.

Signed-off-by: Leo Famulari <leo@famulari.name>
---
gnu/packages/docker.scm | 2 +-
gnu/packages/golang.scm | 2 +-
gnu/packages/ipfs.scm | 3 ++-
3 files changed, 4 insertions(+), 3 deletions(-)

Toggle diff (42 lines)
diff --git a/gnu/packages/docker.scm b/gnu/packages/docker.scm
index cdf62f5e9a..d012ed43c6 100644
--- a/gnu/packages/docker.scm
+++ b/gnu/packages/docker.scm
@@ -585,7 +585,7 @@ (define-public docker
("xz" ,xz)))
(native-inputs
(list eudev ; TODO: Should be propagated by lvm2 (.pc -> .pc)
- go gotestsum pkg-config))
+ go-1.14 gotestsum pkg-config))
(synopsis "Docker container component library, and daemon")
(description "This package provides a framework to assemble specialized
container systems. It includes components for orchestration, image
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm
index 7989a3a138..1ac6c81900 100644
--- a/gnu/packages/golang.scm
+++ b/gnu/packages/golang.scm
@@ -804,7 +804,7 @@ (define-public go-1.17
(alist-replace "go" (list go-1.16) (package-native-inputs go-1.16))
(package-native-inputs go-1.16))))))
-(define-public go go-1.14)
+(define-public go go-1.17)
(define-public (make-go-std go)
"Return a package which builds the standard library for Go compiler GO."
diff --git a/gnu/packages/ipfs.scm b/gnu/packages/ipfs.scm
index f566b850aa..b567b23353 100644
--- a/gnu/packages/ipfs.scm
+++ b/gnu/packages/ipfs.scm
@@ -48,7 +48,8 @@ (define-public go-github-com-ipfs-go-ipfs-cmdkit-files
"0qk6fshgdmhp8dip2ksm13j6nywi41m9mn0czkvmw6b697z85l2r"))))
(build-system go-build-system)
(arguments
- '(#:unpack-path "github.com/ipfs/go-ipfs-cmdkit"
+ `(#:go ,go-1.16
+ #:unpack-path "github.com/ipfs/go-ipfs-cmdkit"
#:import-path "github.com/ipfs/go-ipfs-cmdkit/files"))
(home-page "https://github.com/ipfs/go-ipfs-cmdkit")
(synopsis "Shared types, functions and values for go-ipfs")
--
2.34.0
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAmG/3KkACgkQJkb6MLrK
fwjtXQ/9FIi/NrdS5jiGvBKJsyiHeOAE4Bsfdb0b6LOXK73T9s89W3IIsrLmDtmS
fSfMSX6xwyZOy5gyWYQwudyYHYWY9PORc9BkXjkHMqGT1jiHo0svjSQ8UEnCDlff
vkA2nb+L6TMiQ8WWPZshaSAWgj0/tVAo0oo/5L0zsP8VuNewtZNO2jQRN2zEi/G8
RS/STXDWyyEldQikNAeHuiy8QzPFAYV7V8/8yfPMoClgWtM8rXFEz2HfcBFFAisN
rYnteR98m+pQxgMqbV4iWsSSzDybiHKpMBvdC8Wdgi0VH2KP0k/6v9mgeu+glLxV
vbCj1A3lU/qHfgeV+JFk7F7XyxZRL9HJa+50S6uqPnyK2OLwsAHiFHKubSOYI3Nx
KwVtKXmvcHIat7V3ywiZrDTYvzw5ceHo814zgkT1vCVtEufPWIGQIIRdG6HS4u0f
rfCEClANFIfRc8KfqlsLAIYCiWO2N8CmLmtrbtcqubKa0zXH8MhEiFYtX62pD5rw
tPXpbKpk1FSeqtT+u/9Bi22x7V0+mPDn5cyx4LLCAxjfdWarJZP1vkDLOkEGPhWj
O+tGxm8tDCc1x2SwTWgYFRgp00+OYIxA43uzh5Q1WMuTvoHgMmqqov0fKNkdRSAt
wCuyFAeba7K2Mq9r+DgYE1ppt0TaoItIIP+YHa3J4ry0sCcv0EA=
=SVRu
-----END PGP SIGNATURE-----


L
L
Leo Famulari wrote on 20 Dec 2021 03:31
Yb/rEvbj2b3THXN8@jasmine.lan
On Sun, Dec 19, 2021 at 08:30:18PM -0500, Leo Famulari wrote:
Toggle quote (3 lines)
> Based on the attached patches (rebased / adjusted for current master),
> I'll proceed with testing the build of all Go packages on x86_64-linux.

Well, Go builds are very fast.

There are no new failures of packages using go-build-system with these
patches, assuming I accurately collected all of them.

So, I invite people to apply these patches and try *using* their
favorite Go programs, and hopefully we can push these patches in the
coming days.
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAmG/6xIACgkQJkb6MLrK
fwii3g//X7qr1F2bBG3UV2lwY9GO/eDjaY4/vM2FBvpfrByPM0/w3TgJ/jMbSCuu
QPH0bGrky+FyoDGMNeUfb5tdOTYedCjYQWS/BifWgLfwR0i24EYrwsAd/hIrUBY2
A45/Hg92mPUPLNMlcaXGsHqadQnagudjzCccj6PBMgV1v8LjZ4IKSPLCoUUpxqrj
AiPK4umytbu+fFP02zUvNv/W5oMdc9dciP8fSITeptpQJYYKz3E6i2/rpTQatM24
zOEy2hQdImIhkkGwulQOcPQVvGgQNeHzucQA40gY5ejiJBBNvtKQoWF1TP6VLSX3
76r2pPwUL0z1f1okwyazQnakuYqQq2UyyYimHzOARghQBojOUjnNQDPAxz9auduQ
Y3tRhhE+G4+4Sw/Mhd1K+Gg9UTj3xvWiy/CuqN3eCXAPivdq2e68vX1d6npS22aU
hX76t1vIdB5xylsdTqG/a4Fy+HRLEy3cqSNRzMyQiwpwG2XAlCGpTiNVMQZYz38u
3kjiR0xQcQ4T7+q5ZCjwzAW0aCjCDbvxvJZO+abLC2zbchQQR/VYI1xfUfuTlvzU
iMBAHqPZ+a/3HH69JHBYNYra9N+gSaIaxFSulVswkjnxQYAjSrCDYQnxQOqePZUs
CqSvTWMUfy+KcwuY4vc5Omxvq2/FhNuEussht622j5NbqxQwptM=
=hpxH
-----END PGP SIGNATURE-----


L
L
Leo Famulari wrote on 24 Dec 2021 22:35
YcY9BGLrceh5Avot@jasmine.lan
On Sun, Dec 19, 2021 at 09:31:46PM -0500, Leo Famulari wrote:
Toggle quote (4 lines)
> So, I invite people to apply these patches and try *using* their
> favorite Go programs, and hopefully we can push these patches in the
> coming days.

Pushed as 717be95339c953f53a22b9d98378c76025263737
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEsFFZSPHn08G5gDigJkb6MLrKfwgFAmHGPQQACgkQJkb6MLrK
fwh8cRAAopYlh3o90zaKrErgbGP43F+e67gEon+jKIf+YNN/V7ZiJXatdsLHdzRu
d3LpLStuhP4o6DzJvLT7NupyWTGEcscKmn6cmur0Hid0ZP7waHixnc/6JjOkBNmW
ZlNaWBmbwz/fz/vjmR2ZbiEmd2rONOahwIeHM3yLN4UBltDnWgLh6b8FM/Qy2Euy
J0ZzoHVRI/64s7IyRGZvtETYmS65n/W7osfQc1IDNf6RSp+UDsQcCr0ZmQ600EEb
tWtJ/VGHwrL5p/eyq1x0deA8QRV1dH87YkOvCdNZZFlxwgB5wFRQzzTfZS9+KONk
XLmbje/1eGBBdnRkNgQfaVwYkB+z9iZ0O3AaFdGTjotCQhZD4jEwF59Rp5AJRr9M
awZ0MxREwo0HSaINbgxALd4ZJrAwxTMJ/2uubJXjMIA7tIyovIaJzrfaqTW+PGxm
2yPTYmmyyiLFved2B/4Z0aw8cXjECZhRFzZkSggILB3p6TAEVv+ElT5e05ehUIqM
Ksi6GHt2ASLmulrpC6MdmKs3WoFhh3ftdbCMS7g6HToeEzPQtz5GSux6vNRjhNDx
7wj0m+yUKIqHd1wNM9Pj7p9UypmpP4rCf6w+DWpaP0HMgHa0mb1db4EdP48cCMUC
DsI8lvvxaX5fn+r6V/RqYPG5vBNqVFD3ZhFWuUOJeudpvExeS6Y=
=NHSK
-----END PGP SIGNATURE-----


Closed
?