On 2018-02-22, Tim Hardeck
does it make sense to have 5 different go versions in Tumblweed while the really old 1.4 is the default which does not even support cross compilation?
Running `update-alternatives` to use 1.9 is not enough becuase GOROOT still links to the 1.4 path so I manually have to change it.
I have hit this as well (and I think I might have filed a bug on it as well). We've been having quite a few problems with update-alternatives (including when an old Go version is upgraded and then your "go" binary is now the older version). Any help with fixing this would be greatly appreciated, as I'm just not familiar enough with the "right way" of using update-alternatives. I'm not sure how we can handle the GOROOT issue though, aside from making "go" a shell script or something similarly dodgy...
And to make it worse if I install just the package `go` all of these versions are pulled in.
This shouldn't happen -- "go" is supposed to only include the latest go%{version} release (at least that was the intention when we changed "go" to be a metapackage). I haven't seen this -- but if it is reproducible please open a bug because that is broken.
Maybe Go 1.4 is needed to bootstrap Go compilation but besides that do we really have to keep all the Go versions because of the First Factory Policy? As far as I know we do not keep other old packages (at least not the old version) around in Tumbleweed even though they are in SLES. Can't we do this for go or at least not pull in all the in between versions and change the default to the latest go package?
We need more than one Go version for a variety of reasons. We have some older packages that are very picky about their compiler versions (docker-kubic or docker-runc-kubic for instance). In addition there are just a bunch of random packages that will break when you upgrade their BuildRequires go version -- despite what the Go backwards compatibility guidelines might tell you (the amount of build errors I've seen on a Go upgrade is insane -- but we cannot report them upstream because they only appear to happen inside OBS). So, at the very least we currently need go1.4 (for bootstrapping), go1.6 (for docker-kubic), and the latest which is go1.9 right now (I'm not sure if go1.7 is also required but I wouldn't be surprised). -- Aleksa Sarai Senior Software Engineer (Containers) SUSE Linux GmbH https://www.cyphar.com/