FS#45077 - [gcc-go] Go and gcc-go conflicting is problematic.

Attached to Project: Arch Linux
Opened by Niklas Schnelle (spacenick) - Monday, 25 May 2015, 11:17 GMT
Last edited by Allan McRae (Allan) - Wednesday, 05 August 2015, 14:01 GMT
Task Type Bug Report
Category Packages: Core
Status Closed
Assigned To Allan McRae (Allan)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

As of now gcc-go and go can't be installed together. This is problematic because one often wants
to check go programs for compatibility between both implementations. It's also not clear which implementation
should be a build dependency for e.g. syncthing it's go even though I have verified that gcc-go 5.1 works too.
So maybe this should be a provides directive?

With version 5.1 gcc-go added a closely following fork of the go tool as well as gofmt so that these tools are available on platforms
that don't have support for the standard go distribution such as MIPS, SPARC (ARM64 and PPC64 are supported
in development builds only) which now conflicts with the same binaries in the standard implementation.
It's important to note that functionality wise gcc-go 5.1 and go 1.4.x should be compatible though go has
better escape analysis and will be faster for memory heavy workloads. Sadly this will change again when
go 1.5 will be released in a couple of weeks though most sources will likely stay gcc-go compatible for a while.

However the go tool from standard go also supports building with gccgo and it would be nice to be able to make use of
it. I have tried renaming the go and gofmt binaries, however then the go tool can't find gofmt. We could either
live with that and have users of gcc-go without go installed symlink it or ideally have it in a separate gcc-go-tools
package.

At the moment the best workaround to be able to use both is to have gcc-go from the repository (as it's much harder to build
than standard go) and standard go build in one's home directory. However since liteide requires go, this means I can't use liteide from
the repository. I haven't tried using liteide with gcc-go but can't see how it wouldn't work as it just uses the go tool to build
things and the one in gcc-go should be close enough.
This task depends upon

Closed by  Allan McRae (Allan)
Wednesday, 05 August 2015, 14:01 GMT
Reason for closing:  Deferred
Additional comments about closing:  See final commemt
Comment by Allan McRae (Allan) - Monday, 25 May 2015, 11:35 GMT
I did not add provides precisely because compatibility was going to be broken with the 1.5 release.

The idea solution is to implement an alternatives system in pacman... (don't hold your breath!)
Comment by Niklas Schnelle (spacenick) - Monday, 25 May 2015, 12:53 GMT
Why no provides go=1.4? Also I have posted on the golang-nuts mailing list for input from the community https://groups.google.com/forum/#!topic/golang-nuts/eFrpHrp7mdQ
Comment by Niklas Schnelle (spacenick) - Wednesday, 17 June 2015, 12:39 GMT
Just saw that Ubuntu has gone the rename route http://packages.ubuntu.com/vivid/amd64/gccgo-5/filelist naming the go and gofmt tools from gccgo go-5 and gofmt-5.
Comment by Allan McRae (Allan) - Wednesday, 05 August 2015, 14:00 GMT
It seems each distribution is doing something different and no real progress was made on the golang-nuts mailing list. And there is no good solution here until pacman supports an alternatives system.

I am deferring this bug until upstream or pacman fix it.

Loading...