summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/go/go-1.9
diff options
context:
space:
mode:
authorMatt Madison <matt@madison.systems>2017-09-13 14:54:10 -0300
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-09-14 11:35:46 +0100
commit41c51dc28e881f8a12c62725a4d823db804a5cb1 (patch)
tree247fcae541237ec3afbf2a323442d34f622f0536 /meta/recipes-devtools/go/go-1.9
parente6542356b461b510f913eecd3850c075764acc3a (diff)
downloadpoky-41c51dc28e881f8a12c62725a4d823db804a5cb1.tar.gz
go: update to go 1.9
* Rebased patches - dropped armhf-elf patch, should no longer be needed - dropped syslog patch which should not have been imported to begin with - reworked other patches as needed for the updated code base * Updated native, cross, cross-canadian .inc files to remove some testdata directories that contain .a files that strip chokes on during sysroot staging (From OE-Core rev: f2ccf56778433ec16f44eecaa10a610a6630df50) Signed-off-by: Matt Madison <matt@madison.systems> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-devtools/go/go-1.9')
-rw-r--r--meta/recipes-devtools/go/go-1.9/0001-make.bash-quote-CC_FOR_TARGET.patch32
-rw-r--r--meta/recipes-devtools/go/go-1.9/0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch67
-rw-r--r--meta/recipes-devtools/go/go-1.9/0003-make.bash-better-separate-host-and-target-builds.patch92
-rw-r--r--meta/recipes-devtools/go/go-1.9/0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch68
-rw-r--r--meta/recipes-devtools/go/go-1.9/0005-cmd-go-make-GOROOT-precious-by-default.patch41
-rw-r--r--meta/recipes-devtools/go/go-1.9/0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch36
-rw-r--r--meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch46
7 files changed, 382 insertions, 0 deletions
diff --git a/meta/recipes-devtools/go/go-1.9/0001-make.bash-quote-CC_FOR_TARGET.patch b/meta/recipes-devtools/go/go-1.9/0001-make.bash-quote-CC_FOR_TARGET.patch
new file mode 100644
index 0000000000..7800975e48
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.9/0001-make.bash-quote-CC_FOR_TARGET.patch
@@ -0,0 +1,32 @@
1From d24734ad44006791fd48fc45ea34fe608ff672fb Mon Sep 17 00:00:00 2001
2From: Matt Madison <matt@madison.systems>
3Date: Wed, 13 Sep 2017 08:04:23 -0700
4Subject: [PATCH 1/7] make.bash: quote CC_FOR_TARGET
5
6For OE cross-builds, $CC_FOR_TARGET has more than
7one word and needs to be quoted.
8
9Upstream-Status: Pending
10
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12Signed-off-by: Matt Madison <matt@madison.systems>
13---
14 src/make.bash | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/src/make.bash b/src/make.bash
18index 71e7531..dcf3256 100755
19--- a/src/make.bash
20+++ b/src/make.bash
21@@ -175,7 +175,7 @@ echo "##### Building packages and commands for $GOOS/$GOARCH."
22
23 old_bin_files=$(cd $GOROOT/bin && echo *)
24
25-CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd
26+CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd
27
28 # Check that there are no new files in $GOROOT/bin other than go and gofmt
29 # and $GOOS_$GOARCH (a directory used when cross-compiling).
30--
312.7.4
32
diff --git a/meta/recipes-devtools/go/go-1.9/0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch b/meta/recipes-devtools/go/go-1.9/0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch
new file mode 100644
index 0000000000..a4e42261c3
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.9/0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch
@@ -0,0 +1,67 @@
1From a7170d32a13aead608abd18996f6dab2e2a631b5 Mon Sep 17 00:00:00 2001
2From: Matt Madison <matt@madison.systems>
3Date: Wed, 13 Sep 2017 08:06:37 -0700
4Subject: [PATCH 2/7] cmd/go: fix CC and CXX environment variable construction
5
6For OE cross-builds, CC and CXX have multiple words, and
7we need their complete definitions when setting up the
8environment during Go builds.
9
10Upstream-Status: Pending
11
12Signed-off-by: Khem Raj <raj.khem@gmail.com>
13Signed-off-by: Matt Madison <matt@madison.systems>
14---
15 src/cmd/go/internal/envcmd/env.go | 4 ++--
16 src/cmd/go/internal/work/build.go | 12 ++++++++++++
17 2 files changed, 14 insertions(+), 2 deletions(-)
18
19diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go
20index 43d4334..529d21d 100644
21--- a/src/cmd/go/internal/envcmd/env.go
22+++ b/src/cmd/go/internal/envcmd/env.go
23@@ -74,10 +74,10 @@ func MkEnv() []cfg.EnvVar {
24 }
25
26 cmd := b.GccCmd(".")
27- env = append(env, cfg.EnvVar{Name: "CC", Value: cmd[0]})
28+ env = append(env, cfg.EnvVar{Name: "CC", Value: strings.Join(b.GccCmdForReal(), " ")})
29 env = append(env, cfg.EnvVar{Name: "GOGCCFLAGS", Value: strings.Join(cmd[3:], " ")})
30 cmd = b.GxxCmd(".")
31- env = append(env, cfg.EnvVar{Name: "CXX", Value: cmd[0]})
32+ env = append(env, cfg.EnvVar{Name: "CXX", Value: strings.Join(b.GxxCmdForReal(), " ")})
33
34 if cfg.BuildContext.CgoEnabled {
35 env = append(env, cfg.EnvVar{Name: "CGO_ENABLED", Value: "1"})
36diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
37index 7d667ff..85df0b3 100644
38--- a/src/cmd/go/internal/work/build.go
39+++ b/src/cmd/go/internal/work/build.go
40@@ -3127,12 +3127,24 @@ func (b *Builder) GccCmd(objdir string) []string {
41 return b.ccompilerCmd("CC", cfg.DefaultCC, objdir)
42 }
43
44+// gccCmd returns a gcc command line prefix
45+// defaultCC is defined in zdefaultcc.go, written by cmd/dist.
46+func (b *Builder) GccCmdForReal() []string {
47+ return envList("CC", cfg.DefaultCC)
48+}
49+
50 // gxxCmd returns a g++ command line prefix
51 // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.
52 func (b *Builder) GxxCmd(objdir string) []string {
53 return b.ccompilerCmd("CXX", cfg.DefaultCXX, objdir)
54 }
55
56+// gxxCmd returns a g++ command line prefix
57+// defaultCXX is defined in zdefaultcc.go, written by cmd/dist.
58+func (b *Builder) GxxCmdForReal() []string {
59+ return envList("CXX", cfg.DefaultCXX)
60+}
61+
62 // gfortranCmd returns a gfortran command line prefix.
63 func (b *Builder) gfortranCmd(objdir string) []string {
64 return b.ccompilerCmd("FC", "gfortran", objdir)
65--
662.7.4
67
diff --git a/meta/recipes-devtools/go/go-1.9/0003-make.bash-better-separate-host-and-target-builds.patch b/meta/recipes-devtools/go/go-1.9/0003-make.bash-better-separate-host-and-target-builds.patch
new file mode 100644
index 0000000000..ffd9f2359c
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.9/0003-make.bash-better-separate-host-and-target-builds.patch
@@ -0,0 +1,92 @@
1From 31e88f06af7ab787d8fe0c1ca625193e1799e167 Mon Sep 17 00:00:00 2001
2From: Matt Madison <matt@madison.systems>
3Date: Wed, 13 Sep 2017 08:12:04 -0700
4Subject: [PATCH 3/7] make.bash: better separate host and target builds
5
6Fore OE cross-builds, the simple checks in make.bash are
7insufficient for distinguishing host and target build
8environments, so add some options for telling the
9script which parts are being built.
10
11Upstream-Status: Pending
12
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14Signed-off-by: Matt Madison <matt@madison.systems>
15---
16 src/make.bash | 51 ++++++++++++++++++++++++++++-----------------------
17 1 file changed, 28 insertions(+), 23 deletions(-)
18
19diff --git a/src/make.bash b/src/make.bash
20index dcf3256..9553623 100755
21--- a/src/make.bash
22+++ b/src/make.bash
23@@ -156,13 +156,22 @@ if [ "$1" = "--no-clean" ]; then
24 buildall=""
25 shift
26 fi
27-./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap
28+do_host_build="yes"
29+do_target_build="yes"
30+if [ "$1" = "--target-only" ]; then
31+ do_host_build="no"
32+ shift
33+elif [ "$1" = "--host-only" ]; then
34+ do_target_build="no"
35+ shift
36+fi
37
38-# Delay move of dist tool to now, because bootstrap may clear tool directory.
39-mv cmd/dist/dist "$GOTOOLDIR"/dist
40-echo
41+if [ "$do_host_build" = "yes" ]; then
42+ ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap
43+ # Delay move of dist tool to now, because bootstrap may clear tool directory.
44+ mv cmd/dist/dist "$GOTOOLDIR"/dist
45+ echo
46
47-if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then
48 echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH."
49 # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,
50 # use the host compiler, CC, from `cmd/dist/dist env` instead.
51@@ -171,24 +180,20 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then
52 echo
53 fi
54
55-echo "##### Building packages and commands for $GOOS/$GOARCH."
56-
57-old_bin_files=$(cd $GOROOT/bin && echo *)
58-
59-CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd
60-
61-# Check that there are no new files in $GOROOT/bin other than go and gofmt
62-# and $GOOS_$GOARCH (a directory used when cross-compiling).
63-(cd $GOROOT/bin && for f in *; do
64- if ! expr " $old_bin_files go gofmt ${GOOS}_${GOARCH} " : ".* $f " >/dev/null 2>/dev/null; then
65- echo 1>&2 "ERROR: unexpected new file in $GOROOT/bin: $f"
66- exit 1
67- fi
68-done)
69-
70-echo
71-
72-rm -f "$GOTOOLDIR"/go_bootstrap
73+if [ "$do_target_build" = "yes" ]; then
74+ GO_INSTALL="${GO_TARGET_INSTALL:-std cmd}"
75+ echo "##### Building packages and commands for $GOOS/$GOARCH."
76+ if [ "$GOHOSTOS" = "$GOOS" -a "$GOHOSTARCH" = "$GOARCH" -a "$do_host_build" = "yes" ]; then
77+ rm -rf ./host-tools
78+ mkdir ./host-tools
79+ mv "$GOTOOLDIR"/* ./host-tools
80+ GOTOOLDIR="$PWD/host-tools"
81+ fi
82+ GOTOOLDIR="$GOTOOLDIR" CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v ${GO_INSTALL}
83+ echo
84+
85+ rm -f "$GOTOOLDIR"/go_bootstrap
86+fi
87
88 if [ "$1" != "--no-banner" ]; then
89 "$GOTOOLDIR"/dist banner
90--
912.7.4
92
diff --git a/meta/recipes-devtools/go/go-1.9/0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch b/meta/recipes-devtools/go/go-1.9/0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
new file mode 100644
index 0000000000..180b06a4d3
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.9/0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch
@@ -0,0 +1,68 @@
1From 1369178b497b12088ec4c2794606cc9f14cc327c Mon Sep 17 00:00:00 2001
2From: Matt Madison <matt@madison.systems>
3Date: Wed, 13 Sep 2017 08:15:03 -0700
4Subject: [PATCH 4/7] cmd/go: allow GOTOOLDIR to be overridden in the
5 environment
6
7For OE cross-builds, host-side tools reside in the native
8GOROOT, not the target GOROOT. Allow GOTOOLDIR to be set
9in the environment to allow that split, rather than always
10computing GOTOOLDIR relative to the GOROOT setting.
11
12Upstream-Status: Pending
13
14Signed-off-by: Khem Raj <raj.khem@gmail.com>
15Signed-off-by: Matt Madison <matt@madison.systems>
16---
17 src/cmd/go/internal/cfg/cfg.go | 7 ++++++-
18 src/cmd/go/internal/work/build.go | 2 +-
19 src/go/build/build.go | 2 +-
20 3 files changed, 8 insertions(+), 3 deletions(-)
21
22diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go
23index b3ad1ce..c1dc974 100644
24--- a/src/cmd/go/internal/cfg/cfg.go
25+++ b/src/cmd/go/internal/cfg/cfg.go
26@@ -91,7 +91,12 @@ func init() {
27 // as the tool directory does not move based on environment variables.
28 // This matches the initialization of ToolDir in go/build,
29 // except for using GOROOT rather than runtime.GOROOT().
30- build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
31+ s := os.Getenv("GOTOOLDIR")
32+ if s == "" {
33+ build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
34+ } else {
35+ build.ToolDir = s
36+ }
37 }
38
39 func findGOROOT() string {
40diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go
41index 85df0b3..7b9a69e 100644
42--- a/src/cmd/go/internal/work/build.go
43+++ b/src/cmd/go/internal/work/build.go
44@@ -1337,7 +1337,7 @@ func (b *Builder) build(a *Action) (err error) {
45 }
46
47 var cgoExe string
48- if a.cgo != nil && a.cgo.Target != "" {
49+ if a.cgo != nil && a.cgo.Target != "" && os.Getenv("GOTOOLDIR") == "" {
50 cgoExe = a.cgo.Target
51 } else {
52 cgoExe = base.Tool("cgo")
53diff --git a/src/go/build/build.go b/src/go/build/build.go
54index fd89871..e16145b 100644
55--- a/src/go/build/build.go
56+++ b/src/go/build/build.go
57@@ -1588,7 +1588,7 @@ func init() {
58 }
59
60 // ToolDir is the directory containing build tools.
61-var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
62+var ToolDir = envOr("GOTOOLDIR", filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH))
63
64 // IsLocalImport reports whether the import path is
65 // a local import path, like ".", "..", "./foo", or "../foo".
66--
672.7.4
68
diff --git a/meta/recipes-devtools/go/go-1.9/0005-cmd-go-make-GOROOT-precious-by-default.patch b/meta/recipes-devtools/go/go-1.9/0005-cmd-go-make-GOROOT-precious-by-default.patch
new file mode 100644
index 0000000000..6e93bcb6ce
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.9/0005-cmd-go-make-GOROOT-precious-by-default.patch
@@ -0,0 +1,41 @@
1From 44f961975dac6cf464a77b5f6dd0c47cc192c4fd Mon Sep 17 00:00:00 2001
2From: Matt Madison <matt@madison.systems>
3Date: Wed, 13 Sep 2017 08:19:52 -0700
4Subject: [PATCH 5/7] cmd/go: make GOROOT precious by default
5
6For OE builds, we never want packages that have
7already been installed into the build root to be
8modified, so prevent the go build tool from checking
9if they should be rebuilt.
10
11Also add an environment variable to override this
12behavior, just for building the Go runtime.
13
14Upstream-Status: Pending
15
16Signed-off-by: Matt Madison <matt@madison.systems>
17---
18 src/cmd/go/internal/load/pkg.go | 7 +++++++
19 1 file changed, 7 insertions(+)
20
21diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go
22index 60de666..2660d3f 100644
23--- a/src/cmd/go/internal/load/pkg.go
24+++ b/src/cmd/go/internal/load/pkg.go
25@@ -1530,6 +1530,13 @@ func isStale(p *Package) (bool, string) {
26 return true, "build ID mismatch"
27 }
28
29+ // For OE builds, make anything in GOROOT non-stale,
30+ // to prevent a package build from overwriting the
31+ // build root.
32+ if p.Goroot && os.Getenv("GOROOT_OVERRIDE") != "1" {
33+ return false, "GOROOT-resident packages do not get rebuilt"
34+ }
35+
36 // Package is stale if a dependency is.
37 for _, p1 := range p.Internal.Deps {
38 if p1.Stale {
39--
402.7.4
41
diff --git a/meta/recipes-devtools/go/go-1.9/0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch b/meta/recipes-devtools/go/go-1.9/0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch
new file mode 100644
index 0000000000..f0f564044b
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.9/0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch
@@ -0,0 +1,36 @@
1From aae74d1045ca03306ba4159206ee3bac72bcdfbb Mon Sep 17 00:00:00 2001
2From: Matt Madison <matt@madison.systems>
3Date: Wed, 13 Sep 2017 08:23:23 -0700
4Subject: [PATCH 6/7] make.bash: add GOTOOLDIR_BOOTSTRAP environment variable
5
6For cross-canadian builds, we need to use the native
7GOTOOLDIR during the bootstrap phase, so provide a way
8to pass that setting into the build script.
9
10Upstream-Status: Pending
11
12Signed-off-by: Matt Madison <matt@madison.systems>
13---
14 src/make.bash | 3 ++-
15 1 file changed, 2 insertions(+), 1 deletion(-)
16
17diff --git a/src/make.bash b/src/make.bash
18index 9553623..2e6fb05 100755
19--- a/src/make.bash
20+++ b/src/make.bash
21@@ -172,10 +172,11 @@ if [ "$do_host_build" = "yes" ]; then
22 mv cmd/dist/dist "$GOTOOLDIR"/dist
23 echo
24
25+ GOTOOLDIR_BOOTSTRAP="${GOTOOLDIR_BOOTSTRAP:-$GOTOOLDIR}"
26 echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH."
27 # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,
28 # use the host compiler, CC, from `cmd/dist/dist env` instead.
29- CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH \
30+ CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH GOTOOLDIR="$GOTOOLDIR_BOOTSTRAP" \
31 "$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd
32 echo
33 fi
34--
352.7.4
36
diff --git a/meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch b/meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch
new file mode 100644
index 0000000000..6459782d81
--- /dev/null
+++ b/meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch
@@ -0,0 +1,46 @@
1From e957c3458d53e37bf416f51d2f8bf54c195e50f5 Mon Sep 17 00:00:00 2001
2From: Matt Madison <matt@madison.systems>
3Date: Wed, 13 Sep 2017 08:27:02 -0700
4Subject: [PATCH 7/7] ld: add soname to shareable objects
5
6Shared library handling in OE depends on the inclusion
7of an soname header, so update the go linker to add that
8header for both internal and external linking.
9
10Upstream-Status: Pending
11
12Signed-off-by: Matt Madison <matt@madison.systems>
13---
14 src/cmd/link/internal/ld/lib.go | 3 +++
15 1 file changed, 3 insertions(+)
16
17diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go
18index 0234105..0b9e2d0 100644
19--- a/src/cmd/link/internal/ld/lib.go
20+++ b/src/cmd/link/internal/ld/lib.go
21@@ -1124,12 +1124,14 @@ func (l *Link) hostlink() {
22 // Pass -z nodelete to mark the shared library as
23 // non-closeable: a dlclose will do nothing.
24 argv = append(argv, "-shared", "-Wl,-z,nodelete")
25+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))
26 }
27 case BuildmodeShared:
28 if UseRelro() {
29 argv = append(argv, "-Wl,-z,relro")
30 }
31 argv = append(argv, "-shared")
32+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))
33 case BuildmodePlugin:
34 if Headtype == objabi.Hdarwin {
35 argv = append(argv, "-dynamiclib")
36@@ -1138,6 +1140,7 @@ func (l *Link) hostlink() {
37 argv = append(argv, "-Wl,-z,relro")
38 }
39 argv = append(argv, "-shared")
40+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))
41 }
42 }
43
44--
452.7.4
46