Thunderbirds are Go 1.6
Michael Hudson-Doyle
michael.hudson at canonical.com
Mon Apr 11 04:26:23 UTC 2016
On 11 April 2016 at 04:55, Curtis Hovey-Canonical <curtis at canonical.com> wrote:
> Ladies and Gentlemen, We build with Go 1.6 everywhere.
>
> Take a moment to consider the implications, because that means we do
> not use Go 1.2, 1.3, or 1.5. Juju 1.x and 2.x for Windows, OS X, and
> Linux (precise, trusty, wily, xenial, and centos7) are built with Go 1.6.
Yay, so happy to see this working out!
> There was concern about how to support precise if the code grew 1.2
> incompatibilities. Michael Hudson-Doyle's fabulous package was trivial
> to backport to precise. We don't need to create a new process to support
> precise. The golang-1.6 packages was also easy to copy to wily. since
> the Go 1.5 unit tests are less reliable than the Go 1.6 unit tests, the
> hour spent setting up wily to build with golang-1.6 will pay for itself
> in a day.
>
> Some unit tests combinations are still using Go 1.2 because the tests
> assume OS features because of the Golang version instead of checking
> the OS:
>
> 1. The Makefile rules for installing deps are very stale. Precise unit
> tests will fail when forced to use Go 1.6 because they cannot
> start mongo:
> error command line: unknown option sslOnNormalPorts
> But we see that actual deployments of precise built with Go 1.6 work.
>
> 2. Centos and Windows unit test are still Go 1.2 because many lxd
> related tests fail when run with Go 1.6.
>
> The git-merge-juju job is using the xenial daily image to gate merges.
> The released image it too stale to do an unattended dist-upgrade
>
> The unit test runs for xenial-amd64, xenial-arm64, xenial-s390x,
> xenial-ppc64el, wily-amd64, trusty-amd64, trusty-i386, and
> trusty-ppc64el will use the golang (1.6) or golang-1.6 (1.6) packages.
> The go1.2 trusty unit tests amd64, arm64, i386, and ppc64el are gone.
FWIW, the golang-1.6 package exists on Xenial to (the version in
trusty is basically a copy of it). So I think you could probably
build-depend on golang-1.6-go everywhere (and invoke
/usr/lib/go-1.6/bin/go or put /usr/lib/go-1.6/bin on $PATH).
> Ubuntu source packages prefer the golang-1.6 package, and fallback to
> golang (>= 1.2). We needed a new builder because Go 1.6 needs more
> memory. We saw errors like this with 2G of memory
> golang-1.6/pkg/tool/linux_amd64/link: running gcc failed:
> fork/exec /usr/bin/gcc: cannot allocate memory
> Centos is created using the same Go package as trusty. Windows is
> cross compiled as 64 bit for agent and 32 bit for clients. OS X is
> natively compiled using Go 1.6 on CI's OS X host.
>
> We also got word is was safe to upgrade our arm64 host to xenial. This
> is done. The ppc64el hosts were also upgraded this week. We are
> expanding tests for arm64 and ppc64el
Cheers,
mwh
More information about the Juju-dev
mailing list