upload golang1.6 package for trusty
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
golang-1.6 (Ubuntu) |
Fix Released
|
High
|
Michael Hudson-Doyle |
Bug Description
There is a need to provide a version of Go 1.6 in trusty-updates. We can't upgrade the golang package itself in trusty because that will cause other packages to ftbfs so the best place seems to be providing a golang1.6 package that juju and other consumers can build depend upon.
There is an expectation that new versions of juju will be made available in trusty-updates. trusty was released with version 1.2 of Go, which is almost indescribably ancient in Go terms. The Go team maintains at most two versions of Go, so 1.4 and 1.5 at the time of writing but this will be 1.5 and 1.6 in a few weeks, which means that trusty will soon be 3 versions behind a supported version.
In particular, authors of third-party packages that juju depends upon are mostly no longer supporting go 1.2. Specific examples of packages this affects:
* lxd client code requires Go 1.3+ (currently not built on trusty)
the new Azure provider requires Go 1.3+ (needed for centos and windows
workloads in azure)
* vmware provider requires Go 1.3+ (currently vendored and hacked to work
with 1.2)
* the systemd go bindings require Go 1.3+ (currently vendored and hacked
to work with 1.2)
In addition, Go 1.6 is available for all supported architectures in trusty, which means the Juju developers and release managers do not have to worry about bugs and different behaviours in gccgo (such as the rather alarming https:/
[Test Case]
None as such. Just that the golang1.6-go package is installable (and properly conflicts with golang-go).
[Regression Potential]
This is to be a new package, so none.
[Building the packages]
A wrinkle is that Go 1.5+ require Go 1.4 to bootstrap, which is not available in trusty. Also there is no version of the 1.4 gc compiler for arm64 or ppc64le, which means that the only option is to build with gccgo 5. While it presumably would be possible to create temporary gccgo 5 packages for trusty that could be used to build the package, this is an almighty lot of work compared to building the package once in xenial, binary copying this to trusty and then rebuilding it with the copied package there.
I have built packages for Go 1.5 here http://
I have done these steps in a ppa: https:/
There is some more thinking about this on https:/
description: | updated |
summary: |
- upload golang1.5 package for trusty + upload golang1.6 package for trusty |
description: | updated |
tags: | added: docteam |
Changed in golang (Ubuntu): | |
status: | New → In Progress |
assignee: | nobody → Michael Hudson-Doyle (mwhudson) |
Changed in golang (Ubuntu): | |
importance: | Undecided → High |
affects: | golang (Ubuntu) → golang-1.6 (Ubuntu) |
tags: | added: verification-needed |
For a few reasons (same version as LTS, support for external linking on ppc64el), it's now looking like a better idea will be to get Go 1.6 into trusty instead. But it still makes sense to talk about approving the general idea and the tricks required for building the package.