upload golang1.6 package for trusty

Bug #1536882 reported by Michael Hudson-Doyle
10
This bug affects 1 person
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://bugs.launchpad.net/bugs/1517611 ) as well as the gc compiler.

[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://people.canonical.com/~mwh/go15trusty/ -- the plan would be to upload 1.5.3-0ubuntu1~bootstrap to xenial in a devirted all arch PPA, binary copy the result to trusty, upload 1.5.3-0ubuntu1 to trusty in the ppa and then binary copy this to the archive.

I have done these steps in a ppa: https://launchpad.net/~mwhudson/+archive/ubuntu/go15-trusty/+packages but unfortunately made some stupid mistakes which means the version numbers are not quite what I'd want.

There is some more thinking about this on https://wiki.ubuntu.com/MichaelHudsonDoyle/Go15InTrusty

description: updated
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

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.

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)
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

IMO https://launchpad.net/~mwhudson/+archive/ubuntu/go15-trusty/+packages version 1.6-0ubuntu1 is ready for copying to trusty-proposed.

Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

Actually not quite. Rebuilding again.

Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :
Mathew Hodson (mhodson)
Changed in golang (Ubuntu):
importance: Undecided → High
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

One last time, hopefully for sure. This is what I did:

1) Created two ppas:

    https://launchpad.net/~mwhudson/+archive/ubuntu/go16-trusty-3
    https://launchpad.net/~mwhudson/+archive/ubuntu/go16-trusty-2-dep

2) Had both PPAs devirted and enabled for all trusty architectures.
3) Set go16-trusty-2-dep as a dependency for the go16-trusty-3 PPA
4) Copied with binaries golang-1.6 to trusty in the the go16-trusty-2-dep PPA:

    ./copy-package --from=ubuntu --from-suite=xenial --to=~mwhudson/ubuntu/go16-trusty-2-dep -b --to-suite=trusty golang-1.6

5) (Waited for publication, and) uploaded a golang-1.6 package to the go16-trusty-2 PPA with the following debdiff:

    http://people.canonical.com/~mwh/golang-1.6_1.6-0ubuntu1_1.6-0ubuntu1~14.04~stage1.diff

   which resulted in the following builds:

    https://launchpad.net/~mwhudson/+archive/ubuntu/go16-trusty-3/+sourcepub/6226205/+listing-archive-extra

6) Removed go16-trusty-2-dep as a dependency for the go16-trusty-3 PPA
7) (Waited for publication, and) uploaded a final golang-1.6 package to the go16-trusty-3 PPA with the following debdiff:

    http://people.canonical.com/~mwh/golang-1.6_1.6-0ubuntu1~14.04~stage1_1.6-0ubuntu1~14.04.diff

   which resulted in the following builds:

    https://launchpad.net/~mwhudson/+archive/ubuntu/go16-trusty-3/+sourcepub/6226283/+listing-archive-extra

8) Checked the build logs of the latter packages to make sure they built with the ~stage1 package.

And this final package, is, finally, ready for copying to trusty.

(I have verified that the golang-1.6 debs and the golang debs currently in trusty do not try to install any of the same paths, so there is no need for Conflicts or anything like that)

affects: golang (Ubuntu) → golang-1.6 (Ubuntu)
Steve Langasek (vorlon)
tags: added: verification-needed
Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

I used this package to build docker 1.10 in my ppa: https://launchpad.net/~mwhudson/+archive/ubuntu/scratch/+packages, which seems like an adequate test to me.

tags: added: verification-done
removed: verification-needed
Revision history for this message
Peter Matulis (petermatulis) wrote :

What do I need to do to use LXD provider on Trusty? I installed juju2 from the devel PPA and lxd from the lxd-stable PPA and the 2 golang 1.6 packages but Juju says it does not know about the lxd cloud.

Revision history for this message
Michael Hudson-Doyle (mwhudson) wrote :

I don't think the juju packages for trusty have been rebuilt with Go 1.6 yet.

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package golang-1.6 - 1.6-0ubuntu1~14.04

---------------
golang-1.6 (1.6-0ubuntu1~14.04) trusty; urgency=medium

  * Rebuild on trusty, against version that built on trusty. (LP: #1536882)

 -- Michael Hudson-Doyle <email address hidden> Wed, 23 Mar 2016 15:20:44 +1300

Changed in golang-1.6 (Ubuntu):
status: In Progress → Fix Released
Revision history for this message
Adam Conrad (adconrad) wrote : Update Released

The verification of the Stable Release Update for golang-1.6 has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.