Bugfix/update go packages (#2369)
* Update go-bootstrap package The last C based Go src tree was the 1.4 series. For a while they were cutting new releases so that people could bootstrap from a C only system. Now they're recommending that you either use the release-1.4 branch or that you use a date-stamped tarball that they'll produce on an as-needed basis. There are several issues that keep 1.4.2 from building on a CentOS 7 system. I've switched to the date based tarball. The cgo bits were also mis-behaving, but they're not needed for the bootstrapping task so I've set an environment variable that disables them. Details [on the install-from-source page](https://golang.org/doc/install/source#go14) and these issues: - https://github.com/golang/go/issues/17545 - https://github.com/golang/go/issues/16352. * Update go package Switched from pulling from the git repository to using the source tarballs and added digest values. Added support for 1.7.3, continued supporting 1.6.2, including patches for a couple of problems (details in [17545](https://github.com/golang/go/issues/17545) and [17986](https://github.com/golang/go/issues/17986). Dropped support for 1.5.4 and 1.4.2 because they no longer pass their tests and the patches above to not apply.
This commit is contained in:
parent
11bfccd53f
commit
cde8f697a9
@ -41,14 +41,17 @@ class GoBootstrap(Package):
|
||||
|
||||
extendable = True
|
||||
|
||||
# NOTE: Go@1.4.2 is the only supported bootstrapping compiler because all
|
||||
# NOTE: Go@1.4.x is the only supported bootstrapping compiler because all
|
||||
# later versions require a Go compiler to build.
|
||||
# See: https://golang.org/doc/install/source
|
||||
version('1.4.2', git='https://go.googlesource.com/go', tag='go1.4.2')
|
||||
# See: https://golang.org/doc/install/source#go14 and
|
||||
# https://github.com/golang/go/issues/17545 and
|
||||
# https://github.com/golang/go/issues/16352
|
||||
version('1.4-bootstrap-20161024', '76e42c8152e8560ded880a6d1d1f53cb',
|
||||
url='https://storage.googleapis.com/golang/go1.4-bootstrap-20161024.tar.gz')
|
||||
|
||||
variant('test', default=True, description='Build and run tests as part of the build.')
|
||||
|
||||
provides('golang@:1.4.2')
|
||||
provides('golang@:1.4-bootstrap-20161024')
|
||||
|
||||
depends_on('git', type='alldeps')
|
||||
|
||||
@ -69,6 +72,7 @@ def patch(self):
|
||||
pass
|
||||
|
||||
def install(self, spec, prefix):
|
||||
env['CGO_ENABLED'] = '0'
|
||||
bash = which('bash')
|
||||
with working_dir('src'):
|
||||
bash('{0}.bash'.format('all' if '+test' in spec else 'make'))
|
||||
|
@ -0,0 +1,11 @@
|
||||
--- misc/cgo/testcshared/test.bash.orig 2016-11-19 00:00:11.917000000 +0000
|
||||
+++ misc/cgo/testcshared/test.bash 2016-11-19 00:00:22.081000000 +0000
|
||||
@@ -107,7 +107,7 @@
|
||||
|
||||
# test0: exported symbols in shared lib are accessible.
|
||||
# TODO(iant): using _shared here shouldn't really be necessary.
|
||||
-$(go env CC) ${GOGCCFLAGS} -I ${installdir} -o testp main0.c libgo.$libext
|
||||
+$(go env CC) ${GOGCCFLAGS} -I ${installdir} -o testp main0.c ./libgo.$libext
|
||||
binpush testp
|
||||
|
||||
output=$(run LD_LIBRARY_PATH=. ./testp)
|
@ -32,13 +32,12 @@
|
||||
class Go(Package):
|
||||
"""The golang compiler and build environment"""
|
||||
homepage = "https://golang.org"
|
||||
url = "https://go.googlesource.com/go"
|
||||
url='https://storage.googleapis.com/golang/go1.7.3.src.tar.gz'
|
||||
|
||||
extendable = True
|
||||
|
||||
version('1.6.2', git='https://go.googlesource.com/go', tag='go1.6.2')
|
||||
version('1.5.4', git='https://go.googlesource.com/go', tag='go1.5.4')
|
||||
version('1.4.2', git='https://go.googlesource.com/go', tag='go1.4.2')
|
||||
version('1.7.3', '83d1b7bd4281479ab7d153e5152c9fc9')
|
||||
version('1.6.2', 'd1b50fa98d9a71eeee829051411e6207')
|
||||
|
||||
variant('test', default=True, description='Build and run tests as part of the build.')
|
||||
|
||||
@ -49,6 +48,12 @@ class Go(Package):
|
||||
# should be a dep on external go compiler
|
||||
depends_on('go-bootstrap', type='build')
|
||||
|
||||
# https://github.com/golang/go/issues/17545
|
||||
patch('time_test.patch', when='@1.6.2:1.7.3')
|
||||
|
||||
# https://github.com/golang/go/issues/17986
|
||||
patch('misc-cgo-testcshared.patch', level=0, when='@1.6.2:1.7.3')
|
||||
|
||||
# NOTE: Older versions of Go attempt to download external files that have
|
||||
# since been moved while running the test suite. This patch modifies the
|
||||
# test files so that these tests don't cause false failures.
|
||||
@ -65,6 +70,9 @@ def patch(self):
|
||||
def patch(self):
|
||||
pass
|
||||
|
||||
def url_for_version(self, version):
|
||||
return "https://storage.googleapis.com/golang/go{0}.src.tar.gz".format(version)
|
||||
|
||||
def install(self, spec, prefix):
|
||||
bash = which('bash')
|
||||
with working_dir('src'):
|
||||
|
18
var/spack/repos/builtin/packages/go/time_test.patch
Normal file
18
var/spack/repos/builtin/packages/go/time_test.patch
Normal file
@ -0,0 +1,18 @@
|
||||
diff --git a/src/time/time_test.go b/src/time/time_test.go
|
||||
index 68236fd..2e47d08 100644
|
||||
--- a/src/time/time_test.go
|
||||
+++ b/src/time/time_test.go
|
||||
@@ -943,8 +943,11 @@ func TestLoadFixed(t *testing.T) {
|
||||
// but Go and most other systems use "east is positive".
|
||||
// So GMT+1 corresponds to -3600 in the Go zone, not +3600.
|
||||
name, offset := Now().In(loc).Zone()
|
||||
- if name != "GMT+1" || offset != -1*60*60 {
|
||||
- t.Errorf("Now().In(loc).Zone() = %q, %d, want %q, %d", name, offset, "GMT+1", -1*60*60)
|
||||
+ // The zone abbreviation is "-01" since tzdata-2016g, and "GMT+1"
|
||||
+ // on earlier versions; we accept both. (Issue #17276).
|
||||
+ if !(name == "GMT+1" || name == "-01") || offset != -1*60*60 {
|
||||
+ t.Errorf("Now().In(loc).Zone() = %q, %d, want %q or %q, %d",
|
||||
+ name, offset, "GMT+1", "-01", -1*60*60)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user