Subject: [bug#45161] [PATCH 0/1] Update go?

From: Jack Hill <[email-masked]>
Date: Mon, 14 Dec 2020 16:53:59 -0500 (EST)

On Mon, 14 Dec 2020, David Dashyan wrote:

>
> Hello again!
>
> Jack Hill writes:
>
>> I've tested go 1.15 by trying to build the packages reported by `guix refresh -l
>> go` on x86_64. There are some new build failures, but it doesn't look too
>> bad. In fact, I've already fixed on of them, by updating go-github-com-kr-pretty
>> in #45171 [0]. There were a number of packages whose tests failed because of
>> changes [1] to `go vet`. The new kr-pretty release adjusts to the new vet
>> behavior with a one line change [2] (kr-pretty had fortunately not fallen into
>> the incorrect string() usage for which vet is now warning).
>
> May I ask how do you do afterer redefining "go" to point to go-1.15 and
> getting list of deppending packages?  I mean how one buids all depended
> packages in one move if there such a way to do this?

Sure. For me it involved some manual effort. There might be a more clever 
way to script it that others can share, but I didn't think it was too bad, 
and it allowed me to make notes about what problems I observed as I 
encountered them. Nothing I did was Go-specific. Perhaps a small project 
for another time, we could add a cookbook recipe for testing upgrades to 
languages or other packages with many dependents.

Here's what I did after changing the default go:

* ran `./pre-inst-env guix refresh -l go` and recorded the list of 
packages to build.

* ran `./pre-inst-env guix build` with that list.

* After a while there is a build failure, and the end of the log looks 
like (the actually failure here is unimportant):

```
FAIL	go.etcd.io/bbolt	600.127s
FAIL
command "go" "test" "go.etcd.io/bbolt" failed with status 1

Some deprecated features have been used.  Set the environment
variable GUILE_WARN_DEPRECATED to "detailed" and rerun the
program to get more information.  Set it to "no" to suppress
this message.
builder for `/gnu/store/6dshsgwryfj8g27sf24sp7lhnpf639d1-go-etcd-io-bbolt-1.3.5.drv' failed with exit code 1
@ build-failed /gnu/store/6dshsgwryfj8g27sf24sp7lhnpf639d1-go-etcd-io-bbolt-1.3.5.drv - 1 builder for `/gnu/store/6dshsgwryfj8g27sf24sp7lhnpf639d1-go-etcd-io-bbolt-1.3.5.drv' failed with exit code 1
derivation '/gnu/store/6dshsgwryfj8g27sf24sp7lhnpf639d1-go-etcd-io-bbolt-1.3.5.drv' offloaded to 'libre-02.local' failed: build of `/gnu/store/6dshsgwryfj8g27sf24sp7lhnpf639d1-go-etcd-io-bbolt-1.3.5.drv' failed
build of /gnu/store/6dshsgwryfj8g27sf24sp7lhnpf639d1-go-etcd-io-bbolt-1.3.5.drv failed
View build log at '/var/log/guix/drvs/6d/shsgwryfj8g27sf24sp7lhnpf639d1-go-etcd-io-bbolt-1.3.5.drv.bz2'.
cannot build derivation `/gnu/store/23jx3gb17gdhz662d3dsrmfnpp92abw4-chezmoi-1.8.1.drv': 1 dependencies couldn't be built
guix build: error: build of `/gnu/store/23jx3gb17gdhz662d3dsrmfnpp92abw4-chezmoi-1.8.1.drv' failed
```

* From this, I make a not the go-etcd-io-bbolt has a build failure, and 
that I was unable to attempt chezmoi.

* I remove chezmoi from the list of packages to build and re-run `guix 
build`.

Repeat that process until all the remaining packages build, and you should 
have a nice list of build failures and builds that could not be attempted.

Hope that helps,
Jack