mbox

[bug#45161,0/1] Update go?

Message ID 20201210151024.25316-1-mail@davie.li
Headers show

Message

David Dashyan Dec. 10, 2020, 3:10 p.m. UTC
Yesterday I found packages that won't compile with curent guix's
go-1.14. Apparently 1.15 is the "stable" thing today.

I've updated go package locally but when I try to run './pre-inst-env guix
build --rounds=3 go' guix just spits out currently installed go-1.14 store
directories.  Am I right that this is not how it should work?  It supposed to
find the modified version in source tree, right?

When I do ./pre-inst-env guile - I see local wortree in front of %load-path
tho. Strange.

But I've tested it ;) builds and works.

Additional test file in 'for-each delete' is required for the reasons stated
in the comment above.

David Dashyan (1):
  gnu: Update go

 gnu/packages/golang.scm | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)


base-commit: 0faef871784f4f88e622dd36b492f020387f7a5e

Comments

Jack Hill Dec. 10, 2020, 5:13 p.m. UTC | #1
David,

On Thu, 10 Dec 2020, David Dashyan wrote:

> Yesterday I found packages that won't compile with curent guix's
> go-1.14. Apparently 1.15 is the "stable" thing today.

Awesome, thanks for working on this!

> I've updated go package locally but when I try to run './pre-inst-env guix
> build --rounds=3 go' guix just spits out currently installed go-1.14 store
> directories.  Am I right that this is not how it should work?  It supposed to
> find the modified version in source tree, right?

I think this is because the go still points at 1.14, see the following 
definition:

> (define-public go go-1.14)

We should probably update that so 1.15 is the new default version.

> But I've tested it ;) builds and works.

I've started testing it locally. I'll report back if I notice anything.

Best,
Jack
Leo Famulari Dec. 10, 2020, 5:37 p.m. UTC | #2
On Thu, Dec 10, 2020 at 06:10:24PM +0300, David Dashyan wrote:
> Yesterday I found packages that won't compile with curent guix's
> go-1.14. Apparently 1.15 is the "stable" thing today.

The Go policy is to support 2 major releases. Since 1.15 is the current
major release, that means that 1.14 is still supported upstream. So
please keep 1.14 unless we don't need it anymore. For example, if no
Guix packages require it. That means ensuring that all the existing Go
packages build successfully... or that there is no new breakage :)

https://golang.org/doc/devel/release.html#policy
Jack Hill Dec. 11, 2020, 6:15 a.m. UTC | #3
On Thu, 10 Dec 2020, Leo Famulari wrote:

> On Thu, Dec 10, 2020 at 06:10:24PM +0300, David Dashyan wrote:
>> Yesterday I found packages that won't compile with curent guix's
>> go-1.14. Apparently 1.15 is the "stable" thing today.
>
> The Go policy is to support 2 major releases. Since 1.15 is the current
> major release, that means that 1.14 is still supported upstream. So
> please keep 1.14 unless we don't need it anymore. For example, if no
> Guix packages require it. That means ensuring that all the existing Go
> packages build successfully... or that there is no new breakage :)

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).

[0] https://issues.guix.gnu.org/45171
[1] https://golang.org/doc/go1.15#vet
[2] https://github.com/kr/pretty/compare/v0.2.0...v0.2.1

The other new build failures are:

go-etcd-io-bbolt
syncthing
restic
go-github-com-emicklei-go-restful
docker
go-github-com-magiconair-properties

I was unable to test at least

chezmoi
exercism
syncthing-gtk

because they depend on a package that failed to build.

fiano-fmap [3] and mongo-tools [4] continue to fail to build.

[3] https://issues.guix.gnu.org/45172
[4] https://issues.guix.gnu.org/39637

Best,
Jack
Jack Hill Dec. 12, 2020, 10:51 p.m. UTC | #4
On Fri, 11 Dec 2020, Jack Hill wrote:

> The other new build failures are:

[…]

> go-github-com-magiconair-properties

Updating go-github-com-magiconair-properties to 1.8.4 solves the problem. 
I've sent a patch in #45216

[0] https://issues.guix.gnu.org/45216

Best,
Jack
David Dashyan Dec. 13, 2020, 9:57 p.m. UTC | #5
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?
David Dashyan Dec. 14, 2020, 1:10 p.m. UTC | #6
David writes:

> 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?
Oops.  It should have been something like:

  "what do you do after redefining "go" package and getting list of
  depending packages?  I mean how one buids all packages that depend on
  go in one move if there such a way to do this?"

It was late I was sleepy :)
Jack Hill Dec. 14, 2020, 9:53 p.m. UTC | #7
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