<div dir="ltr">Something in this series breaks:<div><br></div><div><div>ERROR: go-helloworld-0.1-r0 do_compile: Function failed: do_compile (log file is located at /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/temp/log.do_compile.12028)</div><div>ERROR: Logfile of failure stored in: /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/temp/log.do_compile.12028</div><div>Log data follows:</div><div>| DEBUG: Executing shell function do_compile</div><div>| <a href="http://github.com/golang/example/stringutil">github.com/golang/example/stringutil</a></div><div>| # /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/go-tmp/go-build469569525/b188/libstd.so</div><div>| /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/recipe-sysroot-native/usr/lib/x86_64-poky-linux/go/pkg/tool/linux_amd64/link: running x86_64-poky-linux-gcc failed: exit status 1</div><div>| /tmp/go-link-351787050/go.o:(.<a href="http://data.rel.ro">data.rel.ro</a>+0x4181b0): undefined reference to `main.init'</div><div>| /tmp/go-link-351787050/go.o:(.<a href="http://data.rel.ro">data.rel.ro</a>+0x4181b8): undefined reference to `main.main'</div><div>| collect2: error: ld returned 1 exit status</div><div>|</div><div>| WARNING: exit code 2 from a shell command.</div><div>| ERROR: Function failed: do_compile (log file is located at /data/poky-tmp/master/work/corei7-64-poky-linux/go-helloworld/0.1-r0/temp/log.do_compile.12028)</div><div>ERROR: Task (/home/ross/Yocto/poky/meta/recipes-extended/go-examples/go-helloworld_0.1.bb:do_compile) failed with exit code '1'</div></div><div><br></div><div>(same recipe built without the series)</div><div><br></div><div>Ross</div></div><div class="gmail_extra"><br><div class="gmail_quote">On 27 February 2018 at 12:36, Matt Madison <span dir="ltr"><<a href="mailto:matt@madison.systems" target="_blank">matt@madison.systems</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">* Patches and recipes reworked for go 1.10's significant<br>
changes to its bootstrap and build steps<br>
<br>
* Update go1.4 source tarball used for go-native<br>
bootstrapping to the version recommended<br>
in the current go documentation<br>
<br>
* Remove test data from installed sources to eliminate<br>
some packaging QA warnings<br>
<br>
* Set GOCACHE to 'off' to disable 1.10's build caching<br>
in the go recipes and bbclass<br>
<br>
Signed-off-by: Matt Madison <matt@madison.systems><br>
---<br>
meta/classes/go.bbclass | 2 +<br>
meta/recipes-devtools/go/go-1.<wbr>10.inc | 21 ++<br>
...1-allow-CC-and-CXX-to-have-<wbr>multiple-words.patch | 49 ++++<br>
...-content-based-hash-<wbr>generation-less-pedan.patch | 220 ++++++++++++++++<br>
...OLDIR-to-be-overridden-in-<wbr>the-environment.patch | 64 +++++<br>
.../0004-ld-add-soname-to-<wbr>shareable-objects.patch | 47 ++++<br>
...verride-CC-when-building-<wbr>dist-and-go_boot.patch | 40 +++<br>
...-cmd-dist-separate-host-<wbr>and-target-builds.patch | 277 +++++++++++++++++++++<br>
...07-cmd-go-make-GOROOT-<wbr>precious-by-default.patch | 97 ++++++++<br>
...ld-replace-glibc-dynamic-<wbr>linker-with-musl.patch | 130 ++++++++++<br>
meta/recipes-devtools/go/go-1.<wbr>9.inc | 26 --<br>
.../0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch | 32 ---<br>
...CC-and-CXX-environment-<wbr>variable-construct.patch | 67 -----<br>
...sh-better-separate-host-<wbr>and-target-builds.patch | 92 -------<br>
...w-GOTOOLDIR-to-be-<wbr>overridden-in-the-envir.patch | 68 -----<br>
...05-cmd-go-make-GOROOT-<wbr>precious-by-default.patch | 41 ---<br>
...dd-GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch | 36 ---<br>
.../0007-ld-add-soname-to-<wbr>shareable-objects.patch | 46 ----<br>
...dd-GOHOSTxx-indirection-<wbr>for-cross-canadia.patch | 33 ---<br>
...dmode-pie-forces-external-<wbr>linking-mode-on.patch | 47 ----<br>
...verride-CC-when-building-<wbr>dist-and-go_boot.patch | 43 ----<br>
.../go/go-1.9/set-external-<wbr>linker.patch | 111 ---------<br>
meta/recipes-devtools/go/go-<wbr>common.inc | 2 +<br>
meta/recipes-devtools/go/go-<wbr>cross-canadian.inc | 28 +--<br>
...<a href="http://s-canadian_1.9.bb" rel="noreferrer" target="_blank">s-canadian_1.9.bb</a> => <a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-cross-canadian_1.10.bb</a>} | 0<br>
meta/recipes-devtools/go/go-<wbr>cross.inc | 55 ++--<br>
.../go/{<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-cross_1.9.bb</a> => <a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-cross_1.10.bb</a>} | 0<br>
meta/recipes-devtools/go/go-<wbr>crosssdk.inc | 16 +-<br>
.../go/{<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-crosssdk_1.9.bb</a> => <a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-crosssdk_1.10.bb</a>} | 0<br>
meta/recipes-devtools/go/go-<wbr>native.inc | 25 +-<br>
.../go/{<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-native_1.9.bb</a> => <a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-native_1.10.bb</a>} | 0<br>
meta/recipes-devtools/go/go-<wbr>runtime.inc | 58 +++--<br>
.../go/{<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-runtime_1.9.bb</a> => <a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-runtime_1.10.bb</a>} | 0<br>
meta/recipes-devtools/go/go-<wbr>target.inc | 21 +-<br>
meta/recipes-devtools/go/{<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_<wbr>1.9.bb</a> => <a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_1.10.bb</a>} | 0<br>
35 files changed, 1048 insertions(+), 746 deletions(-)<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10.inc<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0003-allow-GOTOOLDIR-to-be-<wbr>overridden-in-the-environment.<wbr>patch<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0004-ld-add-soname-to-<wbr>shareable-objects.patch<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0005-make.bash-override-CC-<wbr>when-building-dist-and-go_<wbr>boot.patch<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
create mode 100644 meta/recipes-devtools/go/go-1.<wbr>10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9.inc<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0001-make.bash-quote-CC_FOR_<wbr>TARGET.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0002-cmd-go-fix-CC-and-CXX-<wbr>environment-variable-<wbr>construct.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0004-cmd-go-allow-GOTOOLDIR-<wbr>to-be-overridden-in-the-envir.<wbr>patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0007-ld-add-soname-to-<wbr>shareable-objects.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0008-make.bash-add-GOHOSTxx-<wbr>indirection-for-cross-canadia.<wbr>patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/0010-make.bash-override-CC-<wbr>when-building-dist-and-go_<wbr>boot.patch<br>
delete mode 100644 meta/recipes-devtools/go/go-1.<wbr>9/set-external-linker.patch<br>
rename meta/recipes-devtools/go/{<a href="http://go-cross-canadian_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.9.bb</a> => <a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-cross-canadian_1.10.bb</a>} (100%)<br>
rename meta/recipes-devtools/go/{<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.9.bb</a> => <a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-cross_1.10.bb</a>} (100%)<br>
rename meta/recipes-devtools/go/{<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.9.bb</a> => <a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-crosssdk_1.10.bb</a>} (100%)<br>
rename meta/recipes-devtools/go/{<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.9.bb</a> => <a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-native_1.10.bb</a>} (100%)<br>
rename meta/recipes-devtools/go/{<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.9.bb</a> => <a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-runtime_1.10.bb</a>} (100%)<br>
rename meta/recipes-devtools/go/{<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_<wbr>1.9.bb</a> => <a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_1.10.bb</a>} (100%)<br>
<br>
diff --git a/meta/classes/go.bbclass b/meta/classes/go.bbclass<br>
index 7ecd8c9254..43a262d599 100644<br>
--- a/meta/classes/go.bbclass<br>
+++ b/meta/classes/go.bbclass<br>
@@ -24,6 +24,7 @@ GO_LINKMODE ?= ""<br>
GO_LINKMODE_class-nativesdk = "--linkmode=external"<br>
GO_LDFLAGS ?= '-ldflags="${GO_RPATH} ${GO_LINKMODE} -extldflags '${GO_EXTLDFLAGS}'"'<br>
export GOBUILDFLAGS ?= "-v ${GO_LDFLAGS}"<br>
+export GOPATH_OMIT_IN_ACTIONID ?= "1"<br>
export GOPTESTBUILDFLAGS ?= "${GOBUILDFLAGS} -c"<br>
export GOPTESTFLAGS ?= "-test.v"<br>
GOBUILDFLAGS_prepend_task-<wbr>compile = "${GO_PARALLEL_BUILD} "<br>
@@ -47,6 +48,7 @@ GO_INSTALL_FILTEROUT ?= "${GO_IMPORT}/vendor/"<br>
<br>
B = "${WORKDIR}/build"<br>
export GOPATH = "${B}"<br>
+export GOCACHE = "off"<br>
GO_TMPDIR ?= "${WORKDIR}/go-tmp"<br>
GO_TMPDIR[vardepvalue] = ""<br>
<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10.inc b/meta/recipes-devtools/go/go-<wbr>1.10.inc<br>
new file mode 100644<br>
index 0000000000..3a93773e2a<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10.inc<br>
@@ -0,0 +1,21 @@<br>
+require go-common.inc<br>
+<br>
+GO_BASEVERSION = "1.10"<br>
+FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_<wbr>BASEVERSION}:"<br>
+<br>
+LIC_FILES_CHKSUM = "file://LICENSE;md5=<wbr>5d4950ecb7b26d2c5e4e7b4e0dd747<wbr>07"<br>
+<br>
+SRC_URI += "\<br>
+ file://0001-allow-CC-and-CXX-<wbr>to-have-multiple-words.patch \<br>
+ file://0002-cmd-go-make-<wbr>content-based-hash-generation-<wbr>less-pedan.patch \<br>
+ file://0003-allow-GOTOOLDIR-<wbr>to-be-overridden-in-the-<wbr>environment.patch \<br>
+ file://0004-ld-add-soname-to-<wbr>shareable-objects.patch \<br>
+ file://0005-make.bash-<wbr>override-CC-when-building-<wbr>dist-and-go_boot.patch \<br>
+ file://0006-cmd-dist-separate-<wbr>host-and-target-builds.patch \<br>
+ file://0007-cmd-go-make-<wbr>GOROOT-precious-by-default.<wbr>patch \<br>
+"<br>
+<br>
+SRC_URI_append_libc-musl = " file://0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.<wbr>patch"<br>
+<br>
+SRC_URI[main.md5sum] = "<wbr>07cbb9d0091b846c6aea40bf5bc0ce<wbr>a7"<br>
+SRC_URI[main.sha256sum] = "<wbr>f3de49289405fda5fd1483a8fe6bd2<wbr>fa5469e005fd567df64485c4fa000c<wbr>7f24"<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch<br>
new file mode 100644<br>
index 0000000000..4584590632<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0001-allow-CC-and-CXX-to-<wbr>have-multiple-words.patch<br>
@@ -0,0 +1,49 @@<br>
+From c287c18856575139e4495b320f20cf<wbr>96856896db Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Mon, 19 Feb 2018 08:49:33 -0800<br>
+Subject: [PATCH 1/8] allow CC and CXX to have multiple words<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+---<br>
+ src/cmd/dist/build.go | 4 +++-<br>
+ src/cmd/go/internal/envcmd/<wbr>env.go | 4 ++--<br>
+ 2 files changed, 5 insertions(+), 3 deletions(-)<br>
+<br>
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go<br>
+index 49ed80033e..eb70f17790 100644<br>
+--- a/src/cmd/dist/build.go<br>
++++ b/src/cmd/dist/build.go<br>
+@@ -1406,7 +1406,9 @@ func checkCC() {<br>
+ if !needCC() {<br>
+ return<br>
+ }<br>
+- if output, err := exec.Command(defaultcc[""], "--help").CombinedOutput(); err != nil {<br>
++ cc := strings.Split(defaultcc[""], " ")<br>
++ args := append(cc[1:], "--help")<br>
++ if output, err := exec.Command(cc[0], args...).CombinedOutput(); err != nil {<br>
+ outputHdr := ""<br>
+ if len(output) > 0 {<br>
+ outputHdr = "\nCommand output:\n\n"<br>
+diff --git a/src/cmd/go/internal/envcmd/<wbr>env.go b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+index 603f7b5060..f891123f9c 100644<br>
+--- a/src/cmd/go/internal/envcmd/<wbr>env.go<br>
++++ b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+@@ -82,11 +82,11 @@ func MkEnv() []cfg.EnvVar {<br>
+<br>
+ cc := cfg.DefaultCC(cfg.Goos, cfg.Goarch)<br>
+ if env := strings.Fields(os.Getenv("CC")<wbr>); len(env) > 0 {<br>
+- cc = env[0]<br>
++ cc = strings.Join(env, " ")<br>
+ }<br>
+ cxx := cfg.DefaultCXX(cfg.Goos, cfg.Goarch)<br>
+ if env := strings.Fields(os.Getenv("CXX"<wbr>)); len(env) > 0 {<br>
+- cxx = env[0]<br>
++ cxx = strings.Join(env, " ")<br>
+ }<br>
+ env = append(env, cfg.EnvVar{Name: "CC", Value: cc})<br>
+ env = append(env, cfg.EnvVar{Name: "CXX", Value: cxx})<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch<br>
new file mode 100644<br>
index 0000000000..5fd471960e<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0002-cmd-go-make-content-<wbr>based-hash-generation-less-<wbr>pedan.patch<br>
@@ -0,0 +1,220 @@<br>
+From 4ec2b27c091fbce0e8e2fd7e3ef2c7<wbr>6e068af32f Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Mon, 19 Feb 2018 08:50:59 -0800<br>
+Subject: [PATCH 2/8] cmd/go: make content-based hash generation less pedantic<br>
+<br>
+Go 1.10's build tool now uses content-based hashes to<br>
+determine when something should be built or re-built.<br>
+This same mechanism is used to maintain a built-artifact<br>
+cache for speeding up builds.<br>
+<br>
+However, the hashes it generates include information that<br>
+doesn't work well with OE, nor with using a shared runtime<br>
+library.<br>
+<br>
+First, it embeds path names to source files, unless<br>
+building within GOROOT. This prevents the building<br>
+of a package in GOPATH for later staging into GOROOT.<br>
+<br>
+This patch adds support for the environment variable<br>
+GOPATH_OMIT_IN_ACTIONID. If present, path name<br>
+embedding is disabled.<br>
+<br>
+Second, if cgo is enabled, the build ID for cgo-related<br>
+packages will include the current value of the environment<br>
+variables for invoking the compiler (CC, CXX, FC) and<br>
+any CGO_xxFLAGS variables. Only if the settings used<br>
+during a compilation exactly match, character for character,<br>
+the values used for compiling runtime/cgo or any other<br>
+cgo-enabled package being imported, will the tool<br>
+decide that the imported package is up-to-date.<br>
+<br>
+This is done to help ensure correctness, but is overly<br>
+simplistic and effectively prevents the reuse of built<br>
+artifacts that use cgo (or shared runtime, which includes<br>
+runtime/cgo).<br>
+<br>
+This patch filters out all compiler flags except those<br>
+beginning with '-m'. The default behavior can be restored<br>
+by setting the CGO_PEDANTIC environment variable.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+---<br>
+ src/cmd/go/internal/envcmd/<wbr>env.go | 2 +-<br>
+ src/cmd/go/internal/work/exec.<wbr>go | 63 ++++++++++++++++++++++++++++--<wbr>---------<br>
+ 2 files changed, 46 insertions(+), 19 deletions(-)<br>
+<br>
+diff --git a/src/cmd/go/internal/envcmd/<wbr>env.go b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+index f891123f9c..ebacfbfdbc 100644<br>
+--- a/src/cmd/go/internal/envcmd/<wbr>env.go<br>
++++ b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
+@@ -113,7 +113,7 @@ func findEnv(env []cfg.EnvVar, name string) string {<br>
+ func ExtraEnvVars() []cfg.EnvVar {<br>
+ var b work.Builder<br>
+ b.Init()<br>
+- cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&load.Package{})<br>
++ cppflags, cflags, cxxflags, fflags, ldflags, err := b.CFlags(&load.Package{}, false)<br>
+ if err != nil {<br>
+ // Should not happen - b.CFlags was given an empty package.<br>
+ fmt.Fprintf(os.Stderr, "go: invalid cflags: %v\n", err)<br>
+diff --git a/src/cmd/go/internal/work/<wbr>exec.go b/src/cmd/go/internal/work/<wbr>exec.go<br>
+index c4c1500eb2..b0f6b45647 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>exec.go<br>
++++ b/src/cmd/go/internal/work/<wbr>exec.go<br>
+@@ -173,6 +173,8 @@ func (b *Builder) Do(root *Action) {<br>
+ wg.Wait()<br>
+ }<br>
+<br>
++var omitGopath = os.Getenv("GOPATH_OMIT_IN_<wbr>ACTIONID") != ""<br>
++<br>
+ // buildActionID computes the action ID for a build action.<br>
+ func (b *Builder) buildActionID(a *Action) cache.ActionID {<br>
+ p := a.Package<br>
+@@ -189,7 +191,7 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {<br>
+ // but it does not hide the exact value of $GOPATH.<br>
+ // Include the full dir in that case.<br>
+ // Assume b.WorkDir is being trimmed properly.<br>
+- if !p.Goroot && !strings.HasPrefix(p.Dir, b.WorkDir) {<br>
++ if !p.Goroot && !omitGopath && !strings.HasPrefix(p.Dir, b.WorkDir) {<br>
+ fmt.Fprintf(h, "dir %s\n", p.Dir)<br>
+ }<br>
+ fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)<br>
+@@ -197,13 +199,13 @@ func (b *Builder) buildActionID(a *Action) cache.ActionID {<br>
+ fmt.Fprintf(h, "omitdebug %v standard %v local %v prefix %q\n", p.Internal.OmitDebug, p.Standard, p.Internal.Local, p.Internal.LocalPrefix)<br>
+ if len(p.CgoFiles)+len(p.<wbr>SwigFiles) > 0 {<br>
+ fmt.Fprintf(h, "cgo %q\n", b.toolID("cgo"))<br>
+- cppflags, cflags, cxxflags, fflags, _, _ := b.CFlags(p)<br>
+- fmt.Fprintf(h, "CC=%q %q %q\n", b.ccExe(), cppflags, cflags)<br>
++ cppflags, cflags, cxxflags, fflags, _, _ := b.CFlags(p, true)<br>
++ fmt.Fprintf(h, "CC=%q %q %q\n", b.ccExe(true), cppflags, cflags)<br>
+ if len(p.CXXFiles)+len(p.<wbr>SwigFiles) > 0 {<br>
+- fmt.Fprintf(h, "CXX=%q %q\n", b.cxxExe(), cxxflags)<br>
++ fmt.Fprintf(h, "CXX=%q %q\n", b.cxxExe(true), cxxflags)<br>
+ }<br>
+ if len(p.FFiles) > 0 {<br>
+- fmt.Fprintf(h, "FC=%q %q\n", b.fcExe(), fflags)<br>
++ fmt.Fprintf(h, "FC=%q %q\n", b.fcExe(true), fflags)<br>
+ }<br>
+ // TODO(rsc): Should we include the SWIG version or Fortran/GCC/G++/Objective-C compiler versions?<br>
+ }<br>
+@@ -1731,33 +1733,33 @@ var (<br>
+ // gccCmd returns a gcc command line prefix<br>
+ // defaultCC is defined in zdefaultcc.go, written by cmd/dist.<br>
+ func (b *Builder) GccCmd(incdir, workdir string) []string {<br>
+- return b.compilerCmd(b.ccExe(), incdir, workdir)<br>
++ return b.compilerCmd(b.ccExe(false), incdir, workdir)<br>
+ }<br>
+<br>
+ // gxxCmd returns a g++ command line prefix<br>
+ // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.<br>
+ func (b *Builder) GxxCmd(incdir, workdir string) []string {<br>
+- return b.compilerCmd(b.cxxExe(), incdir, workdir)<br>
++ return b.compilerCmd(b.cxxExe(false), incdir, workdir)<br>
+ }<br>
+<br>
+ // gfortranCmd returns a gfortran command line prefix.<br>
+ func (b *Builder) gfortranCmd(incdir, workdir string) []string {<br>
+- return b.compilerCmd(b.fcExe(), incdir, workdir)<br>
++ return b.compilerCmd(b.fcExe(false), incdir, workdir)<br>
+ }<br>
+<br>
+ // ccExe returns the CC compiler setting without all the extra flags we add implicitly.<br>
+-func (b *Builder) ccExe() []string {<br>
+- return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch))<br>
++func (b *Builder) ccExe(filtered bool) []string {<br>
++ return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch), filtered)<br>
+ }<br>
+<br>
+ // cxxExe returns the CXX compiler setting without all the extra flags we add implicitly.<br>
+-func (b *Builder) cxxExe() []string {<br>
+- return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch))<br>
++func (b *Builder) cxxExe(filtered bool) []string {<br>
++ return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch), filtered)<br>
+ }<br>
+<br>
+ // fcExe returns the FC compiler setting without all the extra flags we add implicitly.<br>
+-func (b *Builder) fcExe() []string {<br>
+- return b.compilerExe(os.Getenv("FC"), "gfortran")<br>
++func (b *Builder) fcExe(filtered bool) []string {<br>
++ return b.compilerExe(os.Getenv("FC"), "gfortran", filtered)<br>
+ }<br>
+<br>
+ // compilerExe returns the compiler to use given an<br>
+@@ -1766,11 +1768,14 @@ func (b *Builder) fcExe() []string {<br>
+ // of the compiler but can have additional arguments if they<br>
+ // were present in the environment value.<br>
+ // For example if CC="gcc -DGOPHER" then the result is ["gcc", "-DGOPHER"].<br>
+-func (b *Builder) compilerExe(envValue string, def string) []string {<br>
++func (b *Builder) compilerExe(envValue string, def string, filtered bool) []string {<br>
+ compiler := strings.Fields(envValue)<br>
+ if len(compiler) == 0 {<br>
+ compiler = []string{def}<br>
+ }<br>
++ if filtered {<br>
++ return append(compiler[0:1], filterCompilerFlags(compiler[<wbr>1:])...)<br>
++ }<br>
+ return compiler<br>
+ }<br>
+<br>
+@@ -1920,8 +1925,23 @@ func envList(key, def string) []string {<br>
+ return strings.Fields(v)<br>
+ }<br>
+<br>
++var filterFlags = os.Getenv("CGO_PEDANTIC") == ""<br>
++<br>
++func filterCompilerFlags(flags []string) []string {<br>
++ var newflags []string<br>
++ if !filterFlags {<br>
++ return flags<br>
++ }<br>
++ for _, flag := range flags {<br>
++ if strings.HasPrefix(flag, "-m") {<br>
++ newflags = append(newflags, flag)<br>
++ }<br>
++ }<br>
++ return newflags<br>
++}<br>
++<br>
+ // CFlags returns the flags to use when invoking the C, C++ or Fortran compilers, or cgo.<br>
+-func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {<br>
++func (b *Builder) CFlags(p *load.Package, filtered bool) (cppflags, cflags, cxxflags, fflags, ldflags []string, err error) {<br>
+ defaults := "-g -O2"<br>
+<br>
+ if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS, checkCompilerFlags); err != nil {<br>
+@@ -1939,6 +1959,13 @@ func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags, fflags, l<br>
+ if ldflags, err = buildFlags("LDFLAGS", defaults, p.CgoLDFLAGS, checkLinkerFlags); err != nil {<br>
+ return<br>
+ }<br>
++ if filtered {<br>
++ cppflags = filterCompilerFlags(cppflags)<br>
++ cflags = filterCompilerFlags(cflags)<br>
++ cxxflags = filterCompilerFlags(cxxflags)<br>
++ fflags = filterCompilerFlags(fflags)<br>
++ ldflags = filterCompilerFlags(ldflags)<br>
++ }<br>
+<br>
+ return<br>
+ }<br>
+@@ -1954,7 +1981,7 @@ var cgoRe = regexp.MustCompile(`[/\\:]`)<br>
+<br>
+ func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, gxxfiles, mfiles, ffiles []string) (outGo, outObj []string, err error) {<br>
+ p := a.Package<br>
+- cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p)<br>
++ cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err := b.CFlags(p, false)<br>
+ if err != nil {<br>
+ return nil, nil, err<br>
+ }<br>
+@@ -2306,7 +2333,7 @@ func (b *Builder) swigIntSize(objdir string) (intsize string, err error) {<br>
+<br>
+ // Run SWIG on one SWIG input file.<br>
+ func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir string, pcCFLAGS []string, cxx bool, intgosize string) (outGo, outC string, err error) {<br>
+- cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p)<br>
++ cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p, false)<br>
+ if err != nil {<br>
+ return "", "", err<br>
+ }<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0003-allow-GOTOOLDIR-to-<wbr>be-overridden-in-the-<wbr>environment.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0003-allow-GOTOOLDIR-to-<wbr>be-overridden-in-the-<wbr>environment.patch<br>
new file mode 100644<br>
index 0000000000..d1a674f3c2<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0003-allow-GOTOOLDIR-to-<wbr>be-overridden-in-the-<wbr>environment.patch<br>
@@ -0,0 +1,64 @@<br>
+From d9bdd1bf03da06572a7a74d7dbf2a2<wbr>6d279cfa55 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Sat, 17 Feb 2018 05:24:20 -0800<br>
+Subject: [PATCH 3/8] allow GOTOOLDIR to be overridden in the environment<br>
+<br>
+to allow for split host/target build roots<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+---<br>
+ src/cmd/dist/build.go | 4 +++-<br>
+ src/cmd/go/internal/cfg/cfg.go | 6 +++++-<br>
+ src/go/build/build.go | 2 +-<br>
+ 3 files changed, 9 insertions(+), 3 deletions(-)<br>
+<br>
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go<br>
+index eb70f17790..e749cbd22e 100644<br>
+--- a/src/cmd/dist/build.go<br>
++++ b/src/cmd/dist/build.go<br>
+@@ -220,7 +220,9 @@ func xinit() {<br>
+ workdir = xworkdir()<br>
+ xatexit(rmworkdir)<br>
+<br>
+- tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)<br>
++ if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {<br>
++ tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)<br>
++ }<br>
+ }<br>
+<br>
+ // compilerEnv returns a map from "goos/goarch" to the<br>
+diff --git a/src/cmd/go/internal/cfg/cfg.<wbr>go b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
+index 1de4f0dc79..4f6010d660 100644<br>
+--- a/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
++++ b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
+@@ -96,7 +96,11 @@ func init() {<br>
+ // as the tool directory does not move based on environment variables.<br>
+ // This matches the initialization of ToolDir in go/build,<br>
+ // except for using GOROOT rather than runtime.GOROOT().<br>
+- build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH)<br>
++ if s := os.Getenv("GOTOOLDIR"); s != "" {<br>
++ build.ToolDir = filepath.Clean(s)<br>
++ } else {<br>
++ build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH)<br>
++ }<br>
+ }<br>
+<br>
+ func findGOROOT() string {<br>
+diff --git a/src/go/build/build.go b/src/go/build/build.go<br>
+index 68fb423983..81b1b32270 100644<br>
+--- a/src/go/build/build.go<br>
++++ b/src/go/build/build.go<br>
+@@ -1594,7 +1594,7 @@ func init() {<br>
+ }<br>
+<br>
+ // ToolDir is the directory containing build tools.<br>
+-var ToolDir = filepath.Join(runtime.GOROOT()<wbr>, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH)<br>
++var ToolDir = envOr("GOTOOLDIR", filepath.Join(runtime.GOROOT()<wbr>, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH))<br>
+<br>
+ // IsLocalImport reports whether the import path is<br>
+ // a local import path, like ".", "..", "./foo", or "../foo".<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0004-ld-add-soname-to-<wbr>shareable-objects.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0004-ld-add-soname-to-<wbr>shareable-objects.patch<br>
new file mode 100644<br>
index 0000000000..a748391659<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0004-ld-add-soname-to-<wbr>shareable-objects.patch<br>
@@ -0,0 +1,47 @@<br>
+From 0346a4271d31aab567f6758711a469<wbr>4fb6108daf Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Sat, 17 Feb 2018 06:26:10 -0800<br>
+Subject: [PATCH 4/8] ld: add soname to shareable objects<br>
+<br>
+so that OE's shared library dependency handling<br>
+can find them.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+---<br>
+ src/cmd/link/internal/ld/lib.<wbr>go | 4 ++++<br>
+ 1 file changed, 4 insertions(+)<br>
+<br>
+diff --git a/src/cmd/link/internal/ld/<wbr>lib.go b/src/cmd/link/internal/ld/<wbr>lib.go<br>
+index 6dcaf64122..11cbb8a8bb 100644<br>
+--- a/src/cmd/link/internal/ld/<wbr>lib.go<br>
++++ b/src/cmd/link/internal/ld/<wbr>lib.go<br>
+@@ -1134,6 +1134,7 @@ func (ctxt *Link) hostlink() {<br>
+ argv = append(argv, "-Wl,-z,relro")<br>
+ }<br>
+ argv = append(argv, "-shared")<br>
++ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))<br>
+ if ctxt.HeadType != objabi.Hwindows {<br>
+ // Pass -z nodelete to mark the shared library as<br>
+ // non-closeable: a dlclose will do nothing.<br>
+@@ -1145,6 +1146,8 @@ func (ctxt *Link) hostlink() {<br>
+ argv = append(argv, "-Wl,-z,relro")<br>
+ }<br>
+ argv = append(argv, "-shared")<br>
++ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))<br>
++<br>
+ case BuildModePlugin:<br>
+ if ctxt.HeadType == objabi.Hdarwin {<br>
+ argv = append(argv, "-dynamiclib")<br>
+@@ -1153,6 +1156,7 @@ func (ctxt *Link) hostlink() {<br>
+ argv = append(argv, "-Wl,-z,relro")<br>
+ }<br>
+ argv = append(argv, "-shared")<br>
++ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))<br>
+ }<br>
+ }<br>
+<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0005-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0005-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
new file mode 100644<br>
index 0000000000..d15f9d299f<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0005-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
@@ -0,0 +1,40 @@<br>
+From 215132a219461a9bcc2ff086474c62<wbr>0f651f463e Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Sat, 17 Feb 2018 06:32:45 -0800<br>
+Subject: [PATCH 5/8] make.bash: override CC when building dist and<br>
+ go_bootstrap<br>
+<br>
+for handling OE cross-canadian builds.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+---<br>
+ src/make.bash | 4 ++--<br>
+ 1 file changed, 2 insertions(+), 2 deletions(-)<br>
+<br>
+diff --git a/src/make.bash b/src/make.bash<br>
+index 93a5c43d11..3a63682bc4 100755<br>
+--- a/src/make.bash<br>
++++ b/src/make.bash<br>
+@@ -162,7 +162,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then<br>
+ exit 1<br>
+ fi<br>
+ rm -f cmd/dist/dist<br>
+-GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist<br>
++CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist<br>
+<br>
+ # -e doesn't propagate out of eval, so check success by hand.<br>
+ eval $(./cmd/dist/dist env -p || echo FAIL=true)<br>
+@@ -193,7 +193,7 @@ fi<br>
+ # Run dist bootstrap to complete make.bash.<br>
+ # Bootstrap installs a proper cmd/dist, built with the new toolchain.<br>
+ # Throw ours, built with Go 1.4, away after bootstrap.<br>
+-./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS "$@"<br>
++CC="${BUILD_CC:-${CC}}" ./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS "$@"<br>
+ rm -f ./cmd/dist/dist<br>
+<br>
+ # DO NOT ADD ANY NEW CODE HERE.<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch<br>
new file mode 100644<br>
index 0000000000..73a9db213c<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0006-cmd-dist-separate-<wbr>host-and-target-builds.patch<br>
@@ -0,0 +1,277 @@<br>
+From 4839007ac75e0d6d15392e84966bd6<wbr>051a68bcc4 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Sat, 17 Feb 2018 10:03:48 -0800<br>
+Subject: [PATCH 6/8] cmd/dist: separate host and target builds<br>
+<br>
+Change the dist tool to allow for OE-style cross-<br>
+and cross-canadian builds:<br>
+<br>
+ - command flags --host-only and --target only are added;<br>
+ if one is present, the other changes mentioned below<br>
+ take effect, and arguments may also be specified on<br>
+ the command line to enumerate the package(s) to be<br>
+ built.<br>
+<br>
+ - for OE cross builds, go_bootstrap is always built for<br>
+ the current build host, and is moved, along with the supporting<br>
+ toolchain (asm, compile, etc.) to a separate 'native_native'<br>
+ directory under GOROOT/pkg/tool.<br>
+<br>
+ - go_bootstrap is not automatically removed after the build,<br>
+ so it can be reused later (e.g., building both static and<br>
+ shared runtime).<br>
+<br>
+Note that for --host-only builds, it would be nice to specify<br>
+just the "cmd" package to build only the go commands/tools,<br>
+the staleness checks in the dist tool will fail if the "std"<br>
+library has not also been built. So host-only builds have to<br>
+build everything anyway.<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+<br>
+more dist cleanup<br>
+---<br>
+ src/cmd/dist/build.go | 149 ++++++++++++++++++++++++++++++<wbr>+++++++-------------<br>
+ 1 file changed, 111 insertions(+), 38 deletions(-)<br>
+<br>
+diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go<br>
+index e749cbd22e..c949429543 100644<br>
+--- a/src/cmd/dist/build.go<br>
++++ b/src/cmd/dist/build.go<br>
+@@ -38,6 +38,7 @@ var (<br>
+ goldflags string<br>
+ workdir string<br>
+ tooldir string<br>
++ build_tooldir string<br>
+ oldgoos string<br>
+ oldgoarch string<br>
+ exe string<br>
+@@ -49,6 +50,7 @@ var (<br>
+<br>
+ rebuildall bool<br>
+ defaultclang bool<br>
++ crossBuild bool<br>
+<br>
+ vflag int // verbosity<br>
+ )<br>
+@@ -223,6 +225,8 @@ func xinit() {<br>
+ if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {<br>
+ tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)<br>
+ }<br>
++ build_tooldir = pathf("%s/pkg/tool/native_<wbr>native", goroot)<br>
++<br>
+ }<br>
+<br>
+ // compilerEnv returns a map from "goos/goarch" to the<br>
+@@ -252,7 +256,6 @@ func compilerEnv(envName, def string) map[string]string {<br>
+ if gohostos != goos || gohostarch != goarch {<br>
+ m[gohostos+"/"+gohostarch] = m[""]<br>
+ }<br>
+- m[""] = env<br>
+ }<br>
+<br>
+ for _, goos := range okgoos {<br>
+@@ -479,8 +482,10 @@ func setup() {<br>
+ // We keep it in pkg/, just like the object directory above.<br>
+ if rebuildall {<br>
+ xremoveall(tooldir)<br>
++ xremoveall(build_tooldir)<br>
+ }<br>
+ xmkdirall(tooldir)<br>
++ xmkdirall(build_tooldir)<br>
+<br>
+ // Remove tool binaries from before the tool/gohostos_gohostarch<br>
+ xremoveall(pathf("%s/bin/tool"<wbr>, goroot))<br>
+@@ -1130,11 +1135,29 @@ func cmdbootstrap() {<br>
+<br>
+ var noBanner bool<br>
+ var debug bool<br>
++ var hostOnly bool<br>
++ var targetOnly bool<br>
++ var toBuild = []string { "std", "cmd" }<br>
++<br>
+ flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all")<br>
+ flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap process")<br>
+ flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print banner")<br>
++ flag.BoolVar(&hostOnly, "host-only", hostOnly, "build only host binaries, not target")<br>
++ flag.BoolVar(&targetOnly, "target-only", targetOnly, "build only target binaries, not host")<br>
+<br>
+- xflagparse(0)<br>
++ xflagparse(-1)<br>
++<br>
++ if (hostOnly && targetOnly) {<br>
++ fatalf("specify only one of --host-only or --target-only\n")<br>
++ }<br>
++ crossBuild = hostOnly || targetOnly<br>
++ if flag.NArg() > 0 {<br>
++ if crossBuild {<br>
++ toBuild = flag.Args()<br>
++ } else {<br>
++ fatalf("package names not permitted without --host-only or --target-only\n")<br>
++ }<br>
++ }<br>
+<br>
+ if debug {<br>
+ // cmd/buildid is used in debug mode.<br>
+@@ -1182,8 +1205,13 @@ func cmdbootstrap() {<br>
+ xprintf("\n")<br>
+ }<br>
+<br>
+- gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now<br>
+- goldflags = os.Getenv("GO_LDFLAGS")<br>
++ // For split host/target cross/cross-canadian builds, we don't<br>
++ // want to be setting these flags until after we have compiled<br>
++ // the toolchain that runs on the build host.<br>
++ if ! crossBuild {<br>
++ gogcflags = os.Getenv("GO_GCFLAGS") // we were using $BOOT_GO_GCFLAGS until now<br>
++ goldflags = os.Getenv("GO_LDFLAGS")<br>
++ }<br>
+ goBootstrap := pathf("%s/go_bootstrap", tooldir)<br>
+ cmdGo := pathf("%s/go", gobin)<br>
+ if debug {<br>
+@@ -1212,7 +1240,11 @@ func cmdbootstrap() {<br>
+ xprintf("\n")<br>
+ }<br>
+ xprintf("Building Go toolchain2 using go_bootstrap and Go toolchain1.\n")<br>
+- os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))<br>
++ if crossBuild {<br>
++ os.Setenv("CC", defaultcc[""])<br>
++ } else {<br>
++ os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))<br>
++ }<br>
+ goInstall(goBootstrap, append([]string{"-i"}, toolchain...)...)<br>
+ if debug {<br>
+ run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")<br>
+@@ -1249,45 +1281,82 @@ func cmdbootstrap() {<br>
+ }<br>
+ checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)<br>
+<br>
+- if goos == oldgoos && goarch == oldgoarch {<br>
+- // Common case - not setting up for cross-compilation.<br>
+- timelog("build", "toolchain")<br>
+- if vflag > 0 {<br>
+- xprintf("\n")<br>
++ if crossBuild {<br>
++ gogcflags = os.Getenv("GO_GCFLAGS")<br>
++ goldflags = os.Getenv("GO_LDFLAGS")<br>
++ tool_files, _ := filepath.Glob(pathf("%s/*", tooldir))<br>
++ for _, f := range tool_files {<br>
++ copyfile(pathf("%s/%s", build_tooldir, filepath.Base(f)), f, writeExec)<br>
++ xremove(f)<br>
++ }<br>
++ os.Setenv("GOTOOLDIR", build_tooldir)<br>
++ goBootstrap = pathf("%s/go_bootstrap", build_tooldir)<br>
++ if hostOnly {<br>
++ timelog("build", "host toolchain")<br>
++ if vflag > 0 {<br>
++ xprintf("\n")<br>
++ }<br>
++ xprintf("Building %s for host, %s/%s.\n", strings.Join(toBuild, ","), goos, goarch)<br>
++ goInstall(goBootstrap, toBuild...)<br>
++ checkNotStale(goBootstrap, toBuild...)<br>
++ // Skip cmdGo staleness checks here, since we can't necessarily run the cmdGo binary<br>
++<br>
++ timelog("build", "target toolchain")<br>
++ if vflag > 0 {<br>
++ xprintf("\n")<br>
++ }<br>
++ } else if targetOnly {<br>
++ goos = oldgoos<br>
++ goarch = oldgoarch<br>
++ os.Setenv("GOOS", goos)<br>
++ os.Setenv("GOARCH", goarch)<br>
++ os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))<br>
++ xprintf("Building %s for target, %s/%s.\n", strings.Join(toBuild, ","), goos, goarch)<br>
++ goInstall(goBootstrap, toBuild...)<br>
++ checkNotStale(goBootstrap, toBuild...)<br>
++ // Skip cmdGo staleness checks here, since we can't run the target's cmdGo binary<br>
+ }<br>
+- xprintf("Building packages and commands for %s/%s.\n", goos, goarch)<br>
+ } else {<br>
+- // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.<br>
+- // Finish GOHOSTOS/GOHOSTARCH installation and then<br>
+- // run GOOS/GOARCH installation.<br>
+- timelog("build", "host toolchain")<br>
+- if vflag > 0 {<br>
+- xprintf("\n")<br>
++ if goos == oldgoos && goarch == oldgoarch {<br>
++ // Common case - not setting up for cross-compilation.<br>
++ timelog("build", "toolchain")<br>
++ if vflag > 0 {<br>
++ xprintf("\n")<br>
++ }<br>
++ xprintf("Building packages and commands for %s/%s.\n", goos, goarch)<br>
++ } else {<br>
++ // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.<br>
++ // Finish GOHOSTOS/GOHOSTARCH installation and then<br>
++ // run GOOS/GOARCH installation.<br>
++ timelog("build", "host toolchain")<br>
++ if vflag > 0 {<br>
++ xprintf("\n")<br>
++ }<br>
++ xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)<br>
++ goInstall(goBootstrap, "std", "cmd")<br>
++ checkNotStale(goBootstrap, "std", "cmd")<br>
++ checkNotStale(cmdGo, "std", "cmd")<br>
++<br>
++ timelog("build", "target toolchain")<br>
++ if vflag > 0 {<br>
++ xprintf("\n")<br>
++ }<br>
++ goos = oldgoos<br>
++ goarch = oldgoarch<br>
++ os.Setenv("GOOS", goos)<br>
++ os.Setenv("GOARCH", goarch)<br>
++ os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))<br>
++ xprintf("Building packages and commands for target, %s/%s.\n", goos, goarch)<br>
+ }<br>
+- xprintf("Building packages and commands for host, %s/%s.\n", goos, goarch)<br>
+ goInstall(goBootstrap, "std", "cmd")<br>
+ checkNotStale(goBootstrap, "std", "cmd")<br>
+ checkNotStale(cmdGo, "std", "cmd")<br>
+-<br>
+- timelog("build", "target toolchain")<br>
+- if vflag > 0 {<br>
+- xprintf("\n")<br>
++ if debug {<br>
++ run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")<br>
++ run("", ShowOutput|CheckExit, pathf("%s/buildid", tooldir), pathf("%s/pkg/%s_%s/runtime/<wbr>internal/sys.a", goroot, goos, goarch))<br>
++ checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)<br>
++ copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)<br>
+ }<br>
+- goos = oldgoos<br>
+- goarch = oldgoarch<br>
+- os.Setenv("GOOS", goos)<br>
+- os.Setenv("GOARCH", goarch)<br>
+- os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))<br>
+- xprintf("Building packages and commands for target, %s/%s.\n", goos, goarch)<br>
+- }<br>
+- goInstall(goBootstrap, "std", "cmd")<br>
+- checkNotStale(goBootstrap, "std", "cmd")<br>
+- checkNotStale(cmdGo, "std", "cmd")<br>
+- if debug {<br>
+- run("", ShowOutput|CheckExit, pathf("%s/compile", tooldir), "-V=full")<br>
+- run("", ShowOutput|CheckExit, pathf("%s/buildid", tooldir), pathf("%s/pkg/%s_%s/runtime/<wbr>internal/sys.a", goroot, goos, goarch))<br>
+- checkNotStale(goBootstrap, append(toolchain, "runtime/internal/sys")...)<br>
+- copyfile(pathf("%s/compile4", tooldir), pathf("%s/compile", tooldir), writeExec)<br>
+ }<br>
+<br>
+ // Check that there are no new files in $GOROOT/bin other than<br>
+@@ -1305,7 +1374,11 @@ func cmdbootstrap() {<br>
+ }<br>
+<br>
+ // Remove go_bootstrap now that we're done.<br>
+- xremove(pathf("%s/go_<wbr>bootstrap", tooldir))<br>
++ // Except that for split host/target cross-builds, we need to<br>
++ // keep it.<br>
++ if ! crossBuild {<br>
++ xremove(pathf("%s/go_<wbr>bootstrap", tooldir))<br>
++ }<br>
+<br>
+ // Print trailing banner unless instructed otherwise.<br>
+ if !noBanner {<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
new file mode 100644<br>
index 0000000000..cadca3012b<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0007-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
@@ -0,0 +1,97 @@<br>
+From 71653883c263093624e6c92d4cd518<wbr>7433887690 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Sun, 18 Feb 2018 15:03:14 -0800<br>
+Subject: [PATCH 7/8] cmd/go: make GOROOT precious by default<br>
+<br>
+The go build tool normally rebuilds whatever it detects is<br>
+stale. This can be a problem when GOROOT is intended to<br>
+be read-only and the go runtime has been built as a shared<br>
+library, since we don't want every application to be rebuilding<br>
+the shared runtime - particularly in cross-build/packaging<br>
+setups, since that would lead to 'abi mismatch' runtime errors.<br>
+<br>
+This patch adds logic to treat the standard library and all<br>
+other GOROOT-resident packages as essentially binary-only.<br>
+If, during compilation, any of those packages are 'stale',<br>
+an error is issued instead of rebuilding the stale components.<br>
+<br>
+For an OE build, staleness errors would indicate a problem<br>
+with the build (missing dependencies, sstate issues, etc.).<br>
+<br>
+Upstream-Status: Inappropriate [OE specific]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+---<br>
+ src/cmd/go/internal/work/<wbr>build.go | 5 +++++<br>
+ src/cmd/go/internal/work/<wbr>buildid.go | 2 +-<br>
+ src/cmd/go/internal/work/exec.<wbr>go | 18 ++++++++++++++++++<br>
+ 3 files changed, 24 insertions(+), 1 deletion(-)<br>
+<br>
+diff --git a/src/cmd/go/internal/work/<wbr>build.go b/src/cmd/go/internal/work/<wbr>build.go<br>
+index 57b7b00879..e2ba95420e 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>build.go<br>
++++ b/src/cmd/go/internal/work/<wbr>build.go<br>
+@@ -143,6 +143,7 @@ See also: go install, go get, go clean.<br>
+ }<br>
+<br>
+ const concurrentGCBackendCompilation<wbr>EnabledByDefault = true<br>
++var goRootPrecious bool = true<br>
+<br>
+ func init() {<br>
+ // break init cycle<br>
+@@ -156,6 +157,10 @@ func init() {<br>
+<br>
+ AddBuildFlags(CmdBuild)<br>
+ AddBuildFlags(CmdInstall)<br>
++<br>
++ if x := os.Getenv("GOROOT_OVERRIDE"); x != "" {<br>
++ goRootPrecious = false<br>
++ }<br>
+ }<br>
+<br>
+ // Note that flags consulted by other parts of the code<br>
+diff --git a/src/cmd/go/internal/work/<wbr>buildid.go b/src/cmd/go/internal/work/<wbr>buildid.go<br>
+index 39ca20ee4f..a047430177 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>buildid.go<br>
++++ b/src/cmd/go/internal/work/<wbr>buildid.go<br>
+@@ -463,7 +463,7 @@ func (b *Builder) useCache(a *Action, p *load.Package, actionHash cache.ActionID<br>
+<br>
+ if b.ComputeStaleOnly {<br>
+ // Invoked during go list only to compute and record staleness.<br>
+- if p := a.Package; p != nil && !p.Stale {<br>
++ if p := a.Package; p != nil && !p.Stale && !(goRootPrecious && (p.Standard || p.Goroot)) {<br>
+ p.Stale = true<br>
+ if cfg.BuildA {<br>
+ p.StaleReason = "build -a flag in use"<br>
+diff --git a/src/cmd/go/internal/work/<wbr>exec.go b/src/cmd/go/internal/work/<wbr>exec.go<br>
+index b0f6b45647..a876d59347 100644<br>
+--- a/src/cmd/go/internal/work/<wbr>exec.go<br>
++++ b/src/cmd/go/internal/work/<wbr>exec.go<br>
+@@ -371,6 +371,24 @@ func (b *Builder) build(a *Action) (err error) {<br>
+ return fmt.Errorf("missing or invalid binary-only package")<br>
+ }<br>
+<br>
++ if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {<br>
++ _, err := os.Stat(a.Package.Target)<br>
++ if err == nil {<br>
++ a.built = a.Package.Target<br>
++ a.Target = a.Package.Target<br>
++ a.buildID = b.fileHash(a.Package.Target)<br>
++ a.Package.Stale = false<br>
++ a.Package.StaleReason = "GOROOT-resident package"<br>
++ return nil<br>
++ }<br>
++ if b.ComputeStaleOnly {<br>
++ a.Package.Stale = true<br>
++ a.Package.StaleReason = "missing or invalid GOROOT-resident package"<br>
++ return nil<br>
++ }<br>
++ return fmt.Errorf("missing or invalid GOROOT-resident package")<br>
++ }<br>
++<br>
+ if err := b.Mkdir(a.Objdir); err != nil {<br>
+ return err<br>
+ }<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch b/meta/recipes-devtools/go/go-<wbr>1.10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch<br>
new file mode 100644<br>
index 0000000000..cc7179cb2c<br>
--- /dev/null<br>
+++ b/meta/recipes-devtools/go/go-<wbr>1.10/0008-ld-replace-glibc-<wbr>dynamic-linker-with-musl.patch<br>
@@ -0,0 +1,130 @@<br>
+From 5c3ed89c29d4f40ea4e66d569b1f6c<wbr>9c4a51cd42 Mon Sep 17 00:00:00 2001<br>
+From: Matt Madison <matt@madison.systems><br>
+Date: Sun, 18 Feb 2018 08:24:05 -0800<br>
+Subject: [PATCH 8/8] ld: replace glibc dynamic linker with musl<br>
+<br>
+Rework of patch by Khem Raj <<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>><br>
+for go 1.10. Should be applied conditionally on<br>
+musl being the system C library.<br>
+<br>
+Upstream-Status: Inappropriate [Real fix should be portable across libcs]<br>
+<br>
+Signed-off-by: Matt Madison <matt@madison.systems><br>
+---<br>
+ src/cmd/link/internal/amd64/<wbr>obj.go | 2 +-<br>
+ src/cmd/link/internal/arm/obj.<wbr>go | 2 +-<br>
+ src/cmd/link/internal/arm64/<wbr>obj.go | 2 +-<br>
+ src/cmd/link/internal/mips/<wbr>obj.go | 2 +-<br>
+ src/cmd/link/internal/mips64/<wbr>obj.go | 2 +-<br>
+ src/cmd/link/internal/ppc64/<wbr>obj.go | 2 +-<br>
+ src/cmd/link/internal/s390x/<wbr>obj.go | 2 +-<br>
+ src/cmd/link/internal/x86/obj.<wbr>go | 2 +-<br>
+ 8 files changed, 8 insertions(+), 8 deletions(-)<br>
+<br>
+diff --git a/src/cmd/link/internal/amd64/<wbr>obj.go b/src/cmd/link/internal/amd64/<wbr>obj.go<br>
+index 87e809166a..f522a63034 100644<br>
+--- a/src/cmd/link/internal/amd64/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/amd64/<wbr>obj.go<br>
+@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ PEreloc1: pereloc1,<br>
+ TLSIEtoLE: tlsIEtoLE,<br>
+<br>
+- Linuxdynld: "/lib64/ld-linux-x86-64.so.2",<br>
++ Linuxdynld: "/lib64/ld-musl-x86-64.so.1",<br>
+ Freebsddynld: "/libexec/ld-elf.so.1",<br>
+ Openbsddynld: "/usr/libexec/ld.so",<br>
+ Netbsddynld: "/libexec/ld.elf_so",<br>
+diff --git a/src/cmd/link/internal/arm/<wbr>obj.go b/src/cmd/link/internal/arm/<wbr>obj.go<br>
+index da16f92345..fd14940ede 100644<br>
+--- a/src/cmd/link/internal/arm/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/arm/<wbr>obj.go<br>
+@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ Gentext: gentext,<br>
+ Machoreloc1: machoreloc1,<br>
+<br>
+- Linuxdynld: "/lib/ld-linux.so.3", // 2 for OABI, 3 for EABI<br>
++ Linuxdynld: "/lib/ld-musl-armhf.so.1",<br>
+ Freebsddynld: "/usr/libexec/ld-elf.so.1",<br>
+ Openbsddynld: "/usr/libexec/ld.so",<br>
+ Netbsddynld: "/libexec/ld.elf_so",<br>
+diff --git a/src/cmd/link/internal/arm64/<wbr>obj.go b/src/cmd/link/internal/arm64/<wbr>obj.go<br>
+index 6b386ad737..99863712cc 100644<br>
+--- a/src/cmd/link/internal/arm64/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/arm64/<wbr>obj.go<br>
+@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ Gentext: gentext,<br>
+ Machoreloc1: machoreloc1,<br>
+<br>
+- Linuxdynld: "/lib/ld-linux-aarch64.so.1",<br>
++ Linuxdynld: "/lib/ld-musl-aarch64.so.1",<br>
+<br>
+ Freebsddynld: "XXX",<br>
+ Openbsddynld: "XXX",<br>
+diff --git a/src/cmd/link/internal/mips/<wbr>obj.go b/src/cmd/link/internal/mips/<wbr>obj.go<br>
+index c5d3451c39..fd85e6368d 100644<br>
+--- a/src/cmd/link/internal/mips/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/mips/<wbr>obj.go<br>
+@@ -60,7 +60,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ Gentext: gentext,<br>
+ Machoreloc1: machoreloc1,<br>
+<br>
+- Linuxdynld: "/lib/ld.so.1",<br>
++ Linuxdynld: "/lib/ld-musl-mipsle.so.1",<br>
+<br>
+ Freebsddynld: "XXX",<br>
+ Openbsddynld: "XXX",<br>
+diff --git a/src/cmd/link/internal/<wbr>mips64/obj.go b/src/cmd/link/internal/<wbr>mips64/obj.go<br>
+index 83974e5b56..097224f6da 100644<br>
+--- a/src/cmd/link/internal/<wbr>mips64/obj.go<br>
++++ b/src/cmd/link/internal/<wbr>mips64/obj.go<br>
+@@ -59,7 +59,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ Gentext: gentext,<br>
+ Machoreloc1: machoreloc1,<br>
+<br>
+- Linuxdynld: "/lib64/ld64.so.1",<br>
++ Linuxdynld: "/lib64/ld-musl-mips64le.so.1"<wbr>,<br>
+ Freebsddynld: "XXX",<br>
+ Openbsddynld: "XXX",<br>
+ Netbsddynld: "XXX",<br>
+diff --git a/src/cmd/link/internal/ppc64/<wbr>obj.go b/src/cmd/link/internal/ppc64/<wbr>obj.go<br>
+index 273d9b42cb..a503abe8ea 100644<br>
+--- a/src/cmd/link/internal/ppc64/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/ppc64/<wbr>obj.go<br>
+@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ Machoreloc1: machoreloc1,<br>
+<br>
+ // TODO(austin): ABI v1 uses /usr/lib/ld.so.1,<br>
+- Linuxdynld: "/lib64/ld64.so.1",<br>
++ Linuxdynld: "/lib64/ld-musl-powerpc64le.<wbr>so.1",<br>
+<br>
+ Freebsddynld: "XXX",<br>
+ Openbsddynld: "XXX",<br>
+diff --git a/src/cmd/link/internal/s390x/<wbr>obj.go b/src/cmd/link/internal/s390x/<wbr>obj.go<br>
+index 9ac7eb8217..3825ff7abe 100644<br>
+--- a/src/cmd/link/internal/s390x/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/s390x/<wbr>obj.go<br>
+@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ Gentext: gentext,<br>
+ Machoreloc1: machoreloc1,<br>
+<br>
+- Linuxdynld: "/lib64/ld64.so.1",<br>
++ Linuxdynld: "/lib64/ld-musl-s390x.so.1",<br>
+<br>
+ // not relevant for s390x<br>
+ Freebsddynld: "XXX",<br>
+diff --git a/src/cmd/link/internal/x86/<wbr>obj.go b/src/cmd/link/internal/x86/<wbr>obj.go<br>
+index 6a744dc04e..d81f392549 100644<br>
+--- a/src/cmd/link/internal/x86/<wbr>obj.go<br>
++++ b/src/cmd/link/internal/x86/<wbr>obj.go<br>
+@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {<br>
+ Machoreloc1: machoreloc1,<br>
+ PEreloc1: pereloc1,<br>
+<br>
+- Linuxdynld: "/lib/ld-linux.so.2",<br>
++ Linuxdynld: "/lib/ld-musl-i386.so.1",<br>
+ Freebsddynld: "/usr/libexec/ld-elf.so.1",<br>
+ Openbsddynld: "/usr/libexec/ld.so",<br>
+ Netbsddynld: "/usr/libexec/ld.elf_so",<br>
+--<br>
+2.14.1<br>
+<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9.inc b/meta/recipes-devtools/go/go-<wbr>1.9.inc<br>
deleted file mode 100644<br>
index 2823304b7c..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9.inc<br>
+++ /dev/null<br>
@@ -1,26 +0,0 @@<br>
-require go-common.inc<br>
-<br>
-GO_BASEVERSION = "1.9"<br>
-GO_MINOR = ".4"<br>
-PV .= "${GO_MINOR}"<br>
-<br>
-FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_<wbr>BASEVERSION}:"<br>
-<br>
-LIC_FILES_CHKSUM = "file://LICENSE;md5=<wbr>5d4950ecb7b26d2c5e4e7b4e0dd747<wbr>07"<br>
-<br>
-SRC_URI += "\<br>
- file://0001-make.bash-quote-<wbr>CC_FOR_TARGET.patch \<br>
- file://0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch \<br>
- file://0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch \<br>
- file://0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch \<br>
- file://0005-cmd-go-make-<wbr>GOROOT-precious-by-default.<wbr>patch \<br>
- file://0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch \<br>
- file://0007-ld-add-soname-to-<wbr>shareable-objects.patch \<br>
- file://0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch \<br>
- file://0009-cmd-go-buildmode-<wbr>pie-forces-external-linking-<wbr>mode-on.patch \<br>
- file://0010-make.bash-<wbr>override-CC-when-building-<wbr>dist-and-go_boot.patch \<br>
-"<br>
-SRC_URI_append_libc-musl = " file://set-external-linker.<wbr>patch"<br>
-<br>
-SRC_URI[main.md5sum] = "<wbr>6816441fd6680c63865cdd5cb8bc19<wbr>60"<br>
-SRC_URI[main.sha256sum] = "<wbr>0573a8df33168977185aa44173305e<wbr>5a0450f55213600e94541604b75d46<wbr>dc06"<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch<br>
deleted file mode 100644<br>
index 7800975e48..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0001-make.bash-quote-CC_<wbr>FOR_TARGET.patch<br>
+++ /dev/null<br>
@@ -1,32 +0,0 @@<br>
-From d24734ad44006791fd48fc45ea34fe<wbr>608ff672fb Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Wed, 13 Sep 2017 08:04:23 -0700<br>
-Subject: [PATCH 1/7] make.bash: quote CC_FOR_TARGET<br>
-<br>
-For OE cross-builds, $CC_FOR_TARGET has more than<br>
-one word and needs to be quoted.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj <<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>><br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/make.bash | 2 +-<br>
- 1 file changed, 1 insertion(+), 1 deletion(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 71e7531..dcf3256 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -175,7 +175,7 @@ echo "##### Building packages and commands for $GOOS/$GOARCH."<br>
-<br>
- old_bin_files=$(cd $GOROOT/bin && echo *)<br>
-<br>
--CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd<br>
-+CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd<br>
-<br>
- # Check that there are no new files in $GOROOT/bin other than go and gofmt<br>
- # and $GOOS_$GOARCH (a directory used when cross-compiling).<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch<br>
deleted file mode 100644<br>
index a4e42261c3..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0002-cmd-go-fix-CC-and-<wbr>CXX-environment-variable-<wbr>construct.patch<br>
+++ /dev/null<br>
@@ -1,67 +0,0 @@<br>
-From a7170d32a13aead608abd18996f6da<wbr>b2e2a631b5 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Wed, 13 Sep 2017 08:06:37 -0700<br>
-Subject: [PATCH 2/7] cmd/go: fix CC and CXX environment variable construction<br>
-<br>
-For OE cross-builds, CC and CXX have multiple words, and<br>
-we need their complete definitions when setting up the<br>
-environment during Go builds.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj <<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>><br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/cmd/go/internal/envcmd/<wbr>env.go | 4 ++--<br>
- src/cmd/go/internal/work/<wbr>build.go | 12 ++++++++++++<br>
- 2 files changed, 14 insertions(+), 2 deletions(-)<br>
-<br>
-diff --git a/src/cmd/go/internal/envcmd/<wbr>env.go b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
-index 43d4334..529d21d 100644<br>
---- a/src/cmd/go/internal/envcmd/<wbr>env.go<br>
-+++ b/src/cmd/go/internal/envcmd/<wbr>env.go<br>
-@@ -74,10 +74,10 @@ func MkEnv() []cfg.EnvVar {<br>
- }<br>
-<br>
- cmd := b.GccCmd(".")<br>
-- env = append(env, cfg.EnvVar{Name: "CC", Value: cmd[0]})<br>
-+ env = append(env, cfg.EnvVar{Name: "CC", Value: strings.Join(b.GccCmdForReal()<wbr>, " ")})<br>
- env = append(env, cfg.EnvVar{Name: "GOGCCFLAGS", Value: strings.Join(cmd[3:], " ")})<br>
- cmd = b.GxxCmd(".")<br>
-- env = append(env, cfg.EnvVar{Name: "CXX", Value: cmd[0]})<br>
-+ env = append(env, cfg.EnvVar{Name: "CXX", Value: strings.Join(b.GxxCmdForReal()<wbr>, " ")})<br>
-<br>
- if cfg.BuildContext.CgoEnabled {<br>
- env = append(env, cfg.EnvVar{Name: "CGO_ENABLED", Value: "1"})<br>
-diff --git a/src/cmd/go/internal/work/<wbr>build.go b/src/cmd/go/internal/work/<wbr>build.go<br>
-index 7d667ff..85df0b3 100644<br>
---- a/src/cmd/go/internal/work/<wbr>build.go<br>
-+++ b/src/cmd/go/internal/work/<wbr>build.go<br>
-@@ -3127,12 +3127,24 @@ func (b *Builder) GccCmd(objdir string) []string {<br>
- return b.ccompilerCmd("CC", cfg.DefaultCC, objdir)<br>
- }<br>
-<br>
-+// gccCmd returns a gcc command line prefix<br>
-+// defaultCC is defined in zdefaultcc.go, written by cmd/dist.<br>
-+func (b *Builder) GccCmdForReal() []string {<br>
-+ return envList("CC", cfg.DefaultCC)<br>
-+}<br>
-+<br>
- // gxxCmd returns a g++ command line prefix<br>
- // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.<br>
- func (b *Builder) GxxCmd(objdir string) []string {<br>
- return b.ccompilerCmd("CXX", cfg.DefaultCXX, objdir)<br>
- }<br>
-<br>
-+// gxxCmd returns a g++ command line prefix<br>
-+// defaultCXX is defined in zdefaultcc.go, written by cmd/dist.<br>
-+func (b *Builder) GxxCmdForReal() []string {<br>
-+ return envList("CXX", cfg.DefaultCXX)<br>
-+}<br>
-+<br>
- // gfortranCmd returns a gfortran command line prefix.<br>
- func (b *Builder) gfortranCmd(objdir string) []string {<br>
- return b.ccompilerCmd("FC", "gfortran", objdir)<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch<br>
deleted file mode 100644<br>
index ffd9f2359c..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0003-make.bash-better-<wbr>separate-host-and-target-<wbr>builds.patch<br>
+++ /dev/null<br>
@@ -1,92 +0,0 @@<br>
-From 31e88f06af7ab787d8fe0c1ca62519<wbr>3e1799e167 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Wed, 13 Sep 2017 08:12:04 -0700<br>
-Subject: [PATCH 3/7] make.bash: better separate host and target builds<br>
-<br>
-Fore OE cross-builds, the simple checks in make.bash are<br>
-insufficient for distinguishing host and target build<br>
-environments, so add some options for telling the<br>
-script which parts are being built.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj <<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>><br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/make.bash | 51 ++++++++++++++++++++++++++++--<wbr>---------------------<br>
- 1 file changed, 28 insertions(+), 23 deletions(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index dcf3256..9553623 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -156,13 +156,22 @@ if [ "$1" = "--no-clean" ]; then<br>
- buildall=""<br>
- shift<br>
- fi<br>
--./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
-+do_host_build="yes"<br>
-+do_target_build="yes"<br>
-+if [ "$1" = "--target-only" ]; then<br>
-+ do_host_build="no"<br>
-+ shift<br>
-+elif [ "$1" = "--host-only" ]; then<br>
-+ do_target_build="no"<br>
-+ shift<br>
-+fi<br>
-<br>
--# Delay move of dist tool to now, because bootstrap may clear tool directory.<br>
--mv cmd/dist/dist "$GOTOOLDIR"/dist<br>
--echo<br>
-+if [ "$do_host_build" = "yes" ]; then<br>
-+ ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
-+ # Delay move of dist tool to now, because bootstrap may clear tool directory.<br>
-+ mv cmd/dist/dist "$GOTOOLDIR"/dist<br>
-+ echo<br>
-<br>
--if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then<br>
- echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH."<br>
- # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,<br>
- # use the host compiler, CC, from `cmd/dist/dist env` instead.<br>
-@@ -171,24 +180,20 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then<br>
- echo<br>
- fi<br>
-<br>
--echo "##### Building packages and commands for $GOOS/$GOARCH."<br>
--<br>
--old_bin_files=$(cd $GOROOT/bin && echo *)<br>
--<br>
--CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd<br>
--<br>
--# Check that there are no new files in $GOROOT/bin other than go and gofmt<br>
--# and $GOOS_$GOARCH (a directory used when cross-compiling).<br>
--(cd $GOROOT/bin && for f in *; do<br>
-- if ! expr " $old_bin_files go gofmt ${GOOS}_${GOARCH} " : ".* $f " >/dev/null 2>/dev/null; then<br>
-- echo 1>&2 "ERROR: unexpected new file in $GOROOT/bin: $f"<br>
-- exit 1<br>
-- fi<br>
--done)<br>
--<br>
--echo<br>
--<br>
--rm -f "$GOTOOLDIR"/go_bootstrap<br>
-+if [ "$do_target_build" = "yes" ]; then<br>
-+ GO_INSTALL="${GO_TARGET_<wbr>INSTALL:-std cmd}"<br>
-+ echo "##### Building packages and commands for $GOOS/$GOARCH."<br>
-+ if [ "$GOHOSTOS" = "$GOOS" -a "$GOHOSTARCH" = "$GOARCH" -a "$do_host_build" = "yes" ]; then<br>
-+ rm -rf ./host-tools<br>
-+ mkdir ./host-tools<br>
-+ mv "$GOTOOLDIR"/* ./host-tools<br>
-+ GOTOOLDIR="$PWD/host-tools"<br>
-+ fi<br>
-+ GOTOOLDIR="$GOTOOLDIR" CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v ${GO_INSTALL}<br>
-+ echo<br>
-+<br>
-+ rm -f "$GOTOOLDIR"/go_bootstrap<br>
-+fi<br>
-<br>
- if [ "$1" != "--no-banner" ]; then<br>
- "$GOTOOLDIR"/dist banner<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch<br>
deleted file mode 100644<br>
index 180b06a4d3..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0004-cmd-go-allow-<wbr>GOTOOLDIR-to-be-overridden-in-<wbr>the-envir.patch<br>
+++ /dev/null<br>
@@ -1,68 +0,0 @@<br>
-From 1369178b497b12088ec4c2794606cc<wbr>9f14cc327c Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Wed, 13 Sep 2017 08:15:03 -0700<br>
-Subject: [PATCH 4/7] cmd/go: allow GOTOOLDIR to be overridden in the<br>
- environment<br>
-<br>
-For OE cross-builds, host-side tools reside in the native<br>
-GOROOT, not the target GOROOT. Allow GOTOOLDIR to be set<br>
-in the environment to allow that split, rather than always<br>
-computing GOTOOLDIR relative to the GOROOT setting.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Khem Raj <<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>><br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/cmd/go/internal/cfg/cfg.go | 7 ++++++-<br>
- src/cmd/go/internal/work/<wbr>build.go | 2 +-<br>
- src/go/build/build.go | 2 +-<br>
- 3 files changed, 8 insertions(+), 3 deletions(-)<br>
-<br>
-diff --git a/src/cmd/go/internal/cfg/cfg.<wbr>go b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
-index b3ad1ce..c1dc974 100644<br>
---- a/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
-+++ b/src/cmd/go/internal/cfg/cfg.<wbr>go<br>
-@@ -91,7 +91,12 @@ func init() {<br>
- // as the tool directory does not move based on environment variables.<br>
- // This matches the initialization of ToolDir in go/build,<br>
- // except for using GOROOT rather than runtime.GOROOT().<br>
-- build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH)<br>
-+ s := os.Getenv("GOTOOLDIR")<br>
-+ if s == "" {<br>
-+ build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH)<br>
-+ } else {<br>
-+ build.ToolDir = s<br>
-+ }<br>
- }<br>
-<br>
- func findGOROOT() string {<br>
-diff --git a/src/cmd/go/internal/work/<wbr>build.go b/src/cmd/go/internal/work/<wbr>build.go<br>
-index 85df0b3..7b9a69e 100644<br>
---- a/src/cmd/go/internal/work/<wbr>build.go<br>
-+++ b/src/cmd/go/internal/work/<wbr>build.go<br>
-@@ -1337,7 +1337,7 @@ func (b *Builder) build(a *Action) (err error) {<br>
- }<br>
-<br>
- var cgoExe string<br>
-- if a.cgo != nil && a.cgo.Target != "" {<br>
-+ if a.cgo != nil && a.cgo.Target != "" && os.Getenv("GOTOOLDIR") == "" {<br>
- cgoExe = a.cgo.Target<br>
- } else {<br>
- cgoExe = base.Tool("cgo")<br>
-diff --git a/src/go/build/build.go b/src/go/build/build.go<br>
-index fd89871..e16145b 100644<br>
---- a/src/go/build/build.go<br>
-+++ b/src/go/build/build.go<br>
-@@ -1588,7 +1588,7 @@ func init() {<br>
- }<br>
-<br>
- // ToolDir is the directory containing build tools.<br>
--var ToolDir = filepath.Join(runtime.GOROOT()<wbr>, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH)<br>
-+var ToolDir = envOr("GOTOOLDIR", filepath.Join(runtime.GOROOT()<wbr>, "pkg/tool/"+runtime.GOOS+"_"+<wbr>runtime.GOARCH))<br>
-<br>
- // IsLocalImport reports whether the import path is<br>
- // a local import path, like ".", "..", "./foo", or "../foo".<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
deleted file mode 100644<br>
index 6e93bcb6ce..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0005-cmd-go-make-GOROOT-<wbr>precious-by-default.patch<br>
+++ /dev/null<br>
@@ -1,41 +0,0 @@<br>
-From 44f961975dac6cf464a77b5f6dd0c4<wbr>7cc192c4fd Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Wed, 13 Sep 2017 08:19:52 -0700<br>
-Subject: [PATCH 5/7] cmd/go: make GOROOT precious by default<br>
-<br>
-For OE builds, we never want packages that have<br>
-already been installed into the build root to be<br>
-modified, so prevent the go build tool from checking<br>
-if they should be rebuilt.<br>
-<br>
-Also add an environment variable to override this<br>
-behavior, just for building the Go runtime.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/cmd/go/internal/load/pkg.<wbr>go | 7 +++++++<br>
- 1 file changed, 7 insertions(+)<br>
-<br>
-diff --git a/src/cmd/go/internal/load/<wbr>pkg.go b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-index 60de666..2660d3f 100644<br>
---- a/src/cmd/go/internal/load/<wbr>pkg.go<br>
-+++ b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-@@ -1530,6 +1530,13 @@ func isStale(p *Package) (bool, string) {<br>
- return true, "build ID mismatch"<br>
- }<br>
-<br>
-+ // For OE builds, make anything in GOROOT non-stale,<br>
-+ // to prevent a package build from overwriting the<br>
-+ // build root.<br>
-+ if p.Goroot && os.Getenv("GOROOT_OVERRIDE") != "1" {<br>
-+ return false, "GOROOT-resident packages do not get rebuilt"<br>
-+ }<br>
-+<br>
- // Package is stale if a dependency is.<br>
- for _, p1 := range p.Internal.Deps {<br>
- if p1.Stale {<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch<br>
deleted file mode 100644<br>
index f0f564044b..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0006-make.bash-add-<wbr>GOTOOLDIR_BOOTSTRAP-<wbr>environment-variab.patch<br>
+++ /dev/null<br>
@@ -1,36 +0,0 @@<br>
-From aae74d1045ca03306ba4159206ee3b<wbr>ac72bcdfbb Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Wed, 13 Sep 2017 08:23:23 -0700<br>
-Subject: [PATCH 6/7] make.bash: add GOTOOLDIR_BOOTSTRAP environment variable<br>
-<br>
-For cross-canadian builds, we need to use the native<br>
-GOTOOLDIR during the bootstrap phase, so provide a way<br>
-to pass that setting into the build script.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/make.bash | 3 ++-<br>
- 1 file changed, 2 insertions(+), 1 deletion(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 9553623..2e6fb05 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -172,10 +172,11 @@ if [ "$do_host_build" = "yes" ]; then<br>
- mv cmd/dist/dist "$GOTOOLDIR"/dist<br>
- echo<br>
-<br>
-+ GOTOOLDIR_BOOTSTRAP="${<wbr>GOTOOLDIR_BOOTSTRAP:-$<wbr>GOTOOLDIR}"<br>
- echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH."<br>
- # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,<br>
- # use the host compiler, CC, from `cmd/dist/dist env` instead.<br>
-- CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH \<br>
-+ CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH GOTOOLDIR="$GOTOOLDIR_<wbr>BOOTSTRAP" \<br>
- "$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd<br>
- echo<br>
- fi<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0007-ld-add-soname-to-<wbr>shareable-objects.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0007-ld-add-soname-to-<wbr>shareable-objects.patch<br>
deleted file mode 100644<br>
index 6459782d81..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0007-ld-add-soname-to-<wbr>shareable-objects.patch<br>
+++ /dev/null<br>
@@ -1,46 +0,0 @@<br>
-From e957c3458d53e37bf416f51d2f8bf5<wbr>4c195e50f5 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Wed, 13 Sep 2017 08:27:02 -0700<br>
-Subject: [PATCH 7/7] ld: add soname to shareable objects<br>
-<br>
-Shared library handling in OE depends on the inclusion<br>
-of an soname header, so update the go linker to add that<br>
-header for both internal and external linking.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/cmd/link/internal/ld/lib.<wbr>go | 3 +++<br>
- 1 file changed, 3 insertions(+)<br>
-<br>
-diff --git a/src/cmd/link/internal/ld/<wbr>lib.go b/src/cmd/link/internal/ld/<wbr>lib.go<br>
-index 0234105..0b9e2d0 100644<br>
---- a/src/cmd/link/internal/ld/<wbr>lib.go<br>
-+++ b/src/cmd/link/internal/ld/<wbr>lib.go<br>
-@@ -1124,12 +1124,14 @@ func (l *Link) hostlink() {<br>
- // Pass -z nodelete to mark the shared library as<br>
- // non-closeable: a dlclose will do nothing.<br>
- argv = append(argv, "-shared", "-Wl,-z,nodelete")<br>
-+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))<br>
- }<br>
- case BuildmodeShared:<br>
- if UseRelro() {<br>
- argv = append(argv, "-Wl,-z,relro")<br>
- }<br>
- argv = append(argv, "-shared")<br>
-+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))<br>
- case BuildmodePlugin:<br>
- if Headtype == objabi.Hdarwin {<br>
- argv = append(argv, "-dynamiclib")<br>
-@@ -1138,6 +1140,7 @@ func (l *Link) hostlink() {<br>
- argv = append(argv, "-Wl,-z,relro")<br>
- }<br>
- argv = append(argv, "-shared")<br>
-+ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile)))<br>
- }<br>
- }<br>
-<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch<br>
deleted file mode 100644<br>
index 0977c78350..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0008-make.bash-add-<wbr>GOHOSTxx-indirection-for-<wbr>cross-canadia.patch<br>
+++ /dev/null<br>
@@ -1,33 +0,0 @@<br>
-From 03e6c339d4fb712fbb8c4ca6ef2fc7<wbr>100dcdb3d7 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Thu, 14 Sep 2017 05:38:10 -0700<br>
-Subject: [PATCH 8/8] make.bash: add GOHOSTxx indirection for cross-canadian<br>
- builds<br>
-<br>
-Add environment variables for specifying the host OS/arch<br>
-that we are building the compiler for, so it can differ from<br>
-the build host OS/arch.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/make.bash | 2 ++<br>
- 1 file changed, 2 insertions(+)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 2e6fb05..0bdadc6 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -173,6 +173,8 @@ if [ "$do_host_build" = "yes" ]; then<br>
- echo<br>
-<br>
- GOTOOLDIR_BOOTSTRAP="${<wbr>GOTOOLDIR_BOOTSTRAP:-$<wbr>GOTOOLDIR}"<br>
-+ GOHOSTOS="${GOHOSTOS_CROSS:-$<wbr>GOHOSTOS}"<br>
-+ GOHOSTARCH="${GOHOSTARCH_<wbr>CROSS:-$GOHOSTARCH}"<br>
- echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH."<br>
- # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however,<br>
- # use the host compiler, CC, from `cmd/dist/dist env` instead.<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch<br>
deleted file mode 100644<br>
index aa5fcfdd23..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0009-cmd-go-buildmode-pie-<wbr>forces-external-linking-mode-<wbr>on.patch<br>
+++ /dev/null<br>
@@ -1,47 +0,0 @@<br>
-From aae44527c8065d54f6acaf87c82cba<wbr>1ac96fae59 Mon Sep 17 00:00:00 2001<br>
-From: Ian Lance Taylor <<a href="mailto:iant@golang.org">iant@golang.org</a>><br>
-Date: Fri, 18 Aug 2017 17:46:03 -0700<br>
-Subject: [PATCH] cmd/go: -buildmode=pie forces external linking mode on all<br>
- systems<br>
-<br>
-The go tool assumed that -buildmode=pie implied internal linking on<br>
-linux-amd64. However, that was changed by CL 36417 for issue #18968.<br>
-<br>
-Fixes #21452<br>
-<br>
-Change-Id: I8ed13aea52959cc5c53223f4c41ba<wbr>35329445545<br>
-Reviewed-on: <a href="https://go-review.googlesource.com/57231" rel="noreferrer" target="_blank">https://go-review.<wbr>googlesource.com/57231</a><br>
-Run-TryBot: Ian Lance Taylor <<a href="mailto:iant@golang.org">iant@golang.org</a>><br>
-TryBot-Result: Gobot Gobot <<a href="mailto:gobot@golang.org">gobot@golang.org</a>><br>
-Reviewed-by: Avelino <t@avelino.xxx><br>
-Reviewed-by: Rob Pike <<a href="mailto:r@golang.org">r@golang.org</a>><br>
----<br>
-Upstream-Status: Backport<br>
-Signed-off-by: Khem Raj <<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>><br>
-<br>
- src/cmd/go/internal/load/pkg.<wbr>go | 7 ++++---<br>
- 1 file changed, 4 insertions(+), 3 deletions(-)<br>
-<br>
-diff --git a/src/cmd/go/internal/load/<wbr>pkg.go b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-index 2660d3f..d40773b 100644<br>
---- a/src/cmd/go/internal/load/<wbr>pkg.go<br>
-+++ b/src/cmd/go/internal/load/<wbr>pkg.go<br>
-@@ -954,11 +954,12 @@ func (p *Package) load(stk *ImportStack, bp *build.Package, err error) *Package<br>
-<br>
- if cfg.BuildContext.CgoEnabled && p.Name == "main" && !p.Goroot {<br>
- // Currently build modes c-shared, pie (on systems that do not<br>
-- // support PIE with internal linking mode), plugin, and<br>
-- // -linkshared force external linking mode, as of course does<br>
-+ // support PIE with internal linking mode (currently all<br>
-+ // systems: issue #18968)), plugin, and -linkshared force<br>
-+ // external linking mode, as of course does<br>
- // -ldflags=-linkmode=external. External linking mode forces<br>
- // an import of runtime/cgo.<br>
-- pieCgo := cfg.BuildBuildmode == "pie" && (cfg.BuildContext.GOOS != "linux" || cfg.BuildContext.GOARCH != "amd64")<br>
-+ pieCgo := cfg.BuildBuildmode == "pie"<br>
- linkmodeExternal := false<br>
- for i, a := range cfg.BuildLdflags {<br>
- if a == "-linkmode=external" {<br>
---<br>
-2.14.1<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/0010-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch b/meta/recipes-devtools/go/go-<wbr>1.9/0010-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
deleted file mode 100644<br>
index 83fd78c3d7..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/0010-make.bash-override-<wbr>CC-when-building-dist-and-go_<wbr>boot.patch<br>
+++ /dev/null<br>
@@ -1,43 +0,0 @@<br>
-From 21d83dd9499e5be30eea28dd7034d1<wbr>ea2a01c838 Mon Sep 17 00:00:00 2001<br>
-From: Matt Madison <matt@madison.systems><br>
-Date: Tue, 14 Nov 2017 07:38:42 -0800<br>
-Subject: [PATCH 10/10] make.bash: override CC when building dist and<br>
- go_bootstrap<br>
-<br>
-For cross-canadian builds, dist and go_bootstrap<br>
-run on the build host, so CC needs to point to the<br>
-build host's C compiler. Add a BUILD_CC environment<br>
-for this, falling back to $CC if not present.<br>
-<br>
-Upstream-Status: Pending<br>
-<br>
-Signed-off-by: Matt Madison <matt@madison.systems><br>
----<br>
- src/make.bash | 4 ++--<br>
- 1 file changed, 2 insertions(+), 2 deletions(-)<br>
-<br>
-diff --git a/src/make.bash b/src/make.bash<br>
-index 0bdadc6..f199349 100755<br>
---- a/src/make.bash<br>
-+++ b/src/make.bash<br>
-@@ -131,7 +131,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then<br>
- exit 1<br>
- fi<br>
- rm -f cmd/dist/dist<br>
--GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist<br>
-+CC=${BUILD_CC:-${CC}} GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist<br>
-<br>
- # -e doesn't propagate out of eval, so check success by hand.<br>
- eval $(./cmd/dist/dist env -p || echo FAIL=true)<br>
-@@ -167,7 +167,7 @@ elif [ "$1" = "--host-only" ]; then<br>
- fi<br>
-<br>
- if [ "$do_host_build" = "yes" ]; then<br>
-- ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
-+ CC=${BUILD_CC:-${CC}} ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap<br>
- # Delay move of dist tool to now, because bootstrap may clear tool directory.<br>
- mv cmd/dist/dist "$GOTOOLDIR"/dist<br>
- echo<br>
---<br>
-2.7.4<br>
-<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>1.9/set-external-linker.patch b/meta/recipes-devtools/go/go-<wbr>1.9/set-external-linker.patch<br>
deleted file mode 100644<br>
index d6bd7fa39c..0000000000<br>
--- a/meta/recipes-devtools/go/go-<wbr>1.9/set-external-linker.patch<br>
+++ /dev/null<br>
@@ -1,111 +0,0 @@<br>
-Change the dynamic linker hardcoding to use musl when not using glibc<br>
-this should be applied conditional to musl being the system C library<br>
-<br>
-Upstream-Status: Inappropriate [Real Fix should be portable across libcs]<br>
-<br>
-Signed-off-by: Khem Raj <<a href="mailto:raj.khem@gmail.com">raj.khem@gmail.com</a>><br>
-<br>
-Index: go/src/cmd/link/internal/<wbr>amd64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>amd64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>amd64/obj.go<br>
-@@ -67,7 +67,7 @@ func Init() {<br>
- ld.Thearch.Append64 = ld.Append64l<br>
- ld.Thearch.TLSIEtoLE = tlsIEtoLE<br>
-<br>
-- ld.Thearch.Linuxdynld = "/lib64/ld-linux-x86-64.so.2"<br>
-+ ld.Thearch.Linuxdynld = "/lib/ld-musl-x86_64.so.1"<br>
- ld.Thearch.Freebsddynld = "/libexec/ld-elf.so.1"<br>
- ld.Thearch.Openbsddynld = "/usr/libexec/ld.so"<br>
- ld.Thearch.Netbsddynld = "/libexec/ld.elf_so"<br>
-Index: go/src/cmd/link/internal/arm/<wbr>obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>arm/obj.go<br>
-+++ go/src/cmd/link/internal/arm/<wbr>obj.go<br>
-@@ -63,7 +63,7 @@ func Init() {<br>
- ld.Thearch.Append32 = ld.Append32l<br>
- ld.Thearch.Append64 = ld.Append64l<br>
-<br>
-- ld.Thearch.Linuxdynld = "/lib/ld-linux.so.3" // 2 for OABI, 3 for EABI<br>
-+ ld.Thearch.Linuxdynld = "/lib/ld-musl-armhf.so.1"<br>
- ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1"<br>
- ld.Thearch.Openbsddynld = "/usr/libexec/ld.so"<br>
- ld.Thearch.Netbsddynld = "/libexec/ld.elf_so"<br>
-Index: go/src/cmd/link/internal/<wbr>arm64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>arm64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>arm64/obj.go<br>
-@@ -62,7 +62,7 @@ func Init() {<br>
- ld.Thearch.Append32 = ld.Append32l<br>
- ld.Thearch.Append64 = ld.Append64l<br>
-<br>
-- ld.Thearch.Linuxdynld = "/lib/ld-linux-aarch64.so.1"<br>
-+ ld.Thearch.Linuxdynld = "/lib/ld-musl-aarch64.so.1"<br>
-<br>
- ld.Thearch.Freebsddynld = "XXX"<br>
- ld.Thearch.Openbsddynld = "XXX"<br>
-Index: go/src/cmd/link/internal/mips/<wbr>obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>mips/obj.go<br>
-+++ go/src/cmd/link/internal/mips/<wbr>obj.go<br>
-@@ -77,7 +77,7 @@ func Init() {<br>
- ld.Thearch.Append64 = ld.Append64b<br>
- }<br>
-<br>
-- ld.Thearch.Linuxdynld = "/lib/ld.so.1"<br>
-+ ld.Thearch.Linuxdynld = "/lib/ld-musl-mipsle.so.1"<br>
-<br>
- ld.Thearch.Freebsddynld = "XXX"<br>
- ld.Thearch.Openbsddynld = "XXX"<br>
-Index: go/src/cmd/link/internal/<wbr>mips64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>mips64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>mips64/obj.go<br>
-@@ -75,7 +75,7 @@ func Init() {<br>
- ld.Thearch.Append64 = ld.Append64b<br>
- }<br>
-<br>
-- ld.Thearch.Linuxdynld = "/lib64/ld64.so.1"<br>
-+ ld.Thearch.Linuxdynld = "/lib64/ld-musl-mips64le.so.1"<br>
-<br>
- ld.Thearch.Freebsddynld = "XXX"<br>
- ld.Thearch.Openbsddynld = "XXX"<br>
-Index: go/src/cmd/link/internal/<wbr>ppc64/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>ppc64/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>ppc64/obj.go<br>
-@@ -77,7 +77,7 @@ func Init() {<br>
- }<br>
-<br>
- // TODO(austin): ABI v1 uses /usr/lib/ld.so.1<br>
-- ld.Thearch.Linuxdynld = "/lib64/ld64.so.1"<br>
-+ ld.Thearch.Linuxdynld = "/lib/ld-musl-powerpc64le.so.<wbr>1"<br>
-<br>
- ld.Thearch.Freebsddynld = "XXX"<br>
- ld.Thearch.Openbsddynld = "XXX"<br>
-Index: go/src/cmd/link/internal/<wbr>s390x/obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>s390x/obj.go<br>
-+++ go/src/cmd/link/internal/<wbr>s390x/obj.go<br>
-@@ -62,7 +62,7 @@ func Init() {<br>
- ld.Thearch.Append32 = ld.Append32b<br>
- ld.Thearch.Append64 = ld.Append64b<br>
-<br>
-- ld.Thearch.Linuxdynld = "/lib64/ld64.so.1"<br>
-+ ld.Thearch.Linuxdynld = "/lib/ld-musl-s390x.so.1"<br>
-<br>
- // not relevant for s390x<br>
- ld.Thearch.Freebsddynld = "XXX"<br>
-Index: go/src/cmd/link/internal/x86/<wbr>obj.go<br>
-=============================<wbr>==============================<wbr>========<br>
---- go.orig/src/cmd/link/internal/<wbr>x86/obj.go<br>
-+++ go/src/cmd/link/internal/x86/<wbr>obj.go<br>
-@@ -63,7 +63,7 @@ func Init() {<br>
- ld.Thearch.Append32 = ld.Append32l<br>
- ld.Thearch.Append64 = ld.Append64l<br>
-<br>
-- ld.Thearch.Linuxdynld = "/lib/ld-linux.so.2"<br>
-+ ld.Thearch.Linuxdynld = "/lib/ld-musl-i386.so.1"<br>
- ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1"<br>
- ld.Thearch.Openbsddynld = "/usr/libexec/ld.so"<br>
- ld.Thearch.Netbsddynld = "/usr/libexec/ld.elf_so"<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>common.inc b/meta/recipes-devtools/go/go-<wbr>common.inc<br>
index 37138b51ed..611775b2cc 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>common.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>common.inc<br>
@@ -22,6 +22,8 @@ UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)\.src\.<wbr>tar"<br>
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"<br>
SSTATE_SCAN_CMD = "true"<br>
<br>
+export GOROOT_OVERRIDE = "1"<br>
+<br>
do_compile_prepend() {<br>
BUILD_CC=${BUILD_CC}<br>
}<br>
diff --git a/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc b/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc<br>
index 8afda6b2ce..c84aa4c9eb 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>cross-canadian.inc<br>
@@ -7,34 +7,34 @@ PN = "go-cross-canadian-${<wbr>TRANSLATED_TARGET_ARCH}"<br>
<br>
export GOHOSTOS = "${BUILD_GOOS}"<br>
export GOHOSTARCH = "${BUILD_GOARCH}"<br>
-export GOHOSTOS_CROSS = "${HOST_GOOS}"<br>
-export GOHOSTARCH_CROSS = "${HOST_GOARCH}"<br>
export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"<br>
export GOTOOLDIR_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/${<wbr>HOST_SYS}/go/pkg/tool/${BUILD_<wbr>GOTUPLE}"<br>
export GOROOT_FINAL = "${libdir}/go"<br>
export CGO_ENABLED = "1"<br>
-export CC_FOR_TARGET = "${TARGET_PREFIX}gcc"<br>
-export CXX_FOR_TARGET = "${TARGET_PREFIX}g++"<br>
-CC = "${HOST_PREFIX}gcc"<br>
-export CGO_CFLAGS = "--sysroot=${STAGING_DIR_<wbr>TARGET} ${HOST_CC_ARCH} ${CFLAGS}"<br>
-export CGO_LDFLAGS = "--sysroot=${STAGING_DIR_<wbr>TARGET} ${HOST_CC_ARCH} ${LDFLAGS}"<br>
-export GO_LDFLAGS = '-linkmode external -extld ${HOST_PREFIX}gcc -extldflags "--sysroot=${STAGING_DIR_<wbr>TARGET} ${HOST_CC_ARCH} ${LDFLAGS}"'<br>
+export GOCACHE = "off"<br>
+export GOTMPDIR ?= "${WORKDIR}/go-tmp"<br>
+GOTMPDIR[vardepvalue] = ""<br>
+#CC = "${HOST_PREFIX}gcc"<br>
+export CGO_CFLAGS = "${CFLAGS}"<br>
+export CGO_LDFLAGS = "${LDFLAGS}"<br>
+export GO_LDFLAGS = '-v -linkmode external -extld ${HOST_PREFIX}gcc -extldflags "--sysroot=${STAGING_DIR_HOST} ${HOST_CC_ARCH} ${LDFLAGS}"'<br>
<br>
do_configure[noexec] = "1"<br>
<br>
do_compile() {<br>
- export GOBIN="${B}/bin"<br>
- rm -rf ${GOBIN} ${B}/pkg<br>
- mkdir ${GOBIN}<br>
+ export CC_FOR_${HOST_GOOS}_${HOST_<wbr>GOARCH}="${HOST_PREFIX}gcc --sysroot=${STAGING_DIR_HOST}$<wbr>{SDKPATHNATIVE}"<br>
+ export CXX_FOR_${HOST_GOOS}_${HOST_<wbr>GOARCH}="${HOST_PREFIX}gxx --sysroot=${STAGING_DIR_HOST}$<wbr>{SDKPATHNATIVE}"<br>
cd src<br>
./make.bash --host-only --no-banner<br>
cd ${B}<br>
}<br>
+do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
+do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
<br>
<br>
make_wrapper() {<br>
- rm -f ${D}${bindir}/$2<br>
- cat <<END >${D}${bindir}/$2<br>
+ rm -f ${D}${bindir}/$2<br>
+ cat <<END >${D}${bindir}/$2<br>
#!/bin/sh<br>
here=\`dirname \$0\`<br>
native_goroot=\`readlink -f \$here/../../lib/${TARGET_SYS}<wbr>/go\`<br>
@@ -46,7 +46,7 @@ export GOTOOLDIR="\$native_goroot/<wbr>pkg/tool/${HOST_GOTUPLE}"<br>
test -n "\$GOROOT" || export GOROOT="\$OECORE_TARGET_<wbr>SYSROOT/${target_libdir}/go"<br>
\$here/../../lib/${TARGET_SYS}<wbr>/go/bin/$1 "\$@"<br>
END<br>
- chmod +x ${D}${bindir}/$2<br>
+ chmod +x ${D}${bindir}/$2<br>
}<br>
<br>
do_install() {<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-cross-canadian_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross-canadian_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>cross.inc b/meta/recipes-devtools/go/go-<wbr>cross.inc<br>
index 3ac7211bc3..fe92651581 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>cross.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>cross.inc<br>
@@ -1,7 +1,7 @@<br>
inherit cross<br>
<br>
PROVIDES = "virtual/${TARGET_PREFIX}go"<br>
-DEPENDS += "go-native"<br>
+DEPENDS = "go-native"<br>
<br>
PN = "go-cross-${TARGET_ARCH}"<br>
<br>
@@ -13,26 +13,27 @@ export GOARM = "${TARGET_GOARM}"<br>
export GO386 = "${TARGET_GO386}"<br>
export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"<br>
export GOROOT_FINAL = "${libdir}/go"<br>
+export GOCACHE = "off"<br>
+export GOTMPDIR ?= "${WORKDIR}/go-tmp"<br>
+GOTMPDIR[vardepvalue] = ""<br>
export CGO_ENABLED = "1"<br>
-export CC_FOR_TARGET="${TARGET_<wbr>PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}"<br>
-export CXX_FOR_TARGET="${TARGET_<wbr>PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}"<br>
CC = "${@d.getVar('BUILD_CC').<wbr>strip()}"<br>
<br>
do_configure[noexec] = "1"<br>
<br>
do_compile() {<br>
- export GOBIN="${B}/bin"<br>
- rm -rf ${GOBIN} ${B}/pkg<br>
- mkdir ${GOBIN}<br>
- cd src<br>
- ./make.bash --host-only<br>
- cd ${B}<br>
+ export CC_FOR_${GOOS}_${GOARCH}="${<wbr>TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}"<br>
+ export CXX_FOR_${GOOS}_${GOARCh}="${<wbr>TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}"<br>
+ cd src<br>
+ ./make.bash --host-only --no-banner<br>
+ cd ${B}<br>
}<br>
-<br>
+do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
+do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
<br>
make_wrapper() {<br>
- rm -f ${D}${bindir}/$2<br>
- cat <<END >${D}${bindir}/$2<br>
+ rm -f ${D}${bindir}/$2<br>
+ cat <<END >${D}${bindir}/$2<br>
#!/bin/bash<br>
here=\`dirname \$0\`<br>
export GOARCH="${TARGET_GOARCH}"<br>
@@ -41,22 +42,22 @@ export GOARM="\${GOARM:-${TARGET_<wbr>GOARM}}"<br>
export GO386="\${GO386:-${TARGET_<wbr>GO386}}"<br>
\$here/../../lib/${CROSS_<wbr>TARGET_SYS_DIR}/go/bin/$1 "\$@"<br>
END<br>
- chmod +x ${D}${bindir}/$2<br>
+ chmod +x ${D}${bindir}/$2<br>
}<br>
<br>
do_install() {<br>
- install -d ${D}${libdir}/go<br>
- cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/<br>
- install -d ${D}${libdir}/go/src<br>
- (cd ${S}/src; for d in *; do \<br>
- [ ! -d $d ] || cp --preserve=mode,timestamps -R ${S}/src/$d ${D}${libdir}/go/src/; \<br>
- done)<br>
- rm -rf ${D}${libdir}/go/src/runtime/<wbr>pprof/testdata<br>
- install -d ${D}${bindir} ${D}${libdir}/go/bin<br>
- for f in ${B}/bin/*<br>
- do<br>
- base=`basename $f`<br>
- install -m755 $f ${D}${libdir}/go/bin<br>
- make_wrapper $base ${TARGET_PREFIX}$base<br>
- done<br>
+ install -d ${D}${libdir}/go<br>
+ cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/<br>
+ install -d ${D}${libdir}/go/src<br>
+ (cd ${S}/src; for d in *; do \<br>
+ [ ! -d $d ] || cp --preserve=mode,timestamps -R ${S}/src/$d ${D}${libdir}/go/src/; \<br>
+ done)<br>
+ find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
+ install -d ${D}${bindir} ${D}${libdir}/go/bin<br>
+ for f in ${B}/bin/*<br>
+ do<br>
+ base=`basename $f`<br>
+ install -m755 $f ${D}${libdir}/go/bin<br>
+ make_wrapper $base ${TARGET_PREFIX}$base<br>
+ done<br>
}<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-cross_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-cross_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>cross_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>crosssdk.inc b/meta/recipes-devtools/go/go-<wbr>crosssdk.inc<br>
index f67e4b92a0..05ca62eba8 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>crosssdk.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>crosssdk.inc<br>
@@ -11,21 +11,21 @@ export GOARCH = "${TARGET_GOARCH}"<br>
export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"<br>
export GOROOT_FINAL = "${libdir}/go"<br>
export CGO_ENABLED = "1"<br>
-export CC_FOR_TARGET="${TARGET_<wbr>PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}"<br>
-export CXX_FOR_TARGET="${TARGET_<wbr>PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}"<br>
-export GO_INSTALL = "cmd"<br>
-CC = "${@d.getVar('BUILD_CC').<wbr>strip()}"<br>
+export GOCACHE = "off"<br>
+export GOTMPDIR ?= "${WORKDIR}/go-tmp"<br>
+GOTMPDIR[vardepvalue] = ""<br>
<br>
do_configure[noexec] = "1"<br>
<br>
do_compile() {<br>
- export GOBIN="${B}/bin"<br>
- rm -rf ${GOBIN} ${B}/pkg<br>
- mkdir ${GOBIN}<br>
+ export CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}="${TARGET_<wbr>PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}"<br>
+ export CXX_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}="${TARGET_<wbr>PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_<wbr>TARGET}${SDKPATHNATIVE}"<br>
cd src<br>
- ./make.bash --host-only<br>
+ ./make.bash --host-only --no-banner<br>
cd ${B}<br>
}<br>
+do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
+do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
<br>
make_wrapper() {<br>
rm -f ${D}${bindir}/$2<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-crosssdk_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-crosssdk_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>crosssdk_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>native.inc b/meta/recipes-devtools/go/go-<wbr>native.inc<br>
index 95db1c2b7c..31e899da82 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>native.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>native.inc<br>
@@ -4,34 +4,33 @@ nonstaging_libdir := "${libdir}"<br>
<br>
inherit native<br>
<br>
-SRC_URI_append = " <a href="http://golang.org/dl/go1.4.3.src.tar.gz;name=bootstrap;subdir=go1.4" rel="noreferrer" target="_blank">http://golang.org/dl/go1.4.3.<wbr>src.tar.gz;name=bootstrap;<wbr>subdir=go1.4</a>"<br>
-SRC_URI[bootstrap.md5sum] = "<wbr>dfb604511115dd402a77a553a5923a<wbr>04"<br>
-SRC_URI[bootstrap.sha256sum] = "<wbr>9947fc705b0b841b5938c48b22dc33<wbr>e9647ec0752bae66e50278df4f23f6<wbr>4959"<br>
+SRC_URI_append = " <a href="https://dl.google.com/go/go1.4-bootstrap-20171003.tar.gz;name=bootstrap;subdir=go1.4" rel="noreferrer" target="_blank">https://dl.google.com/go/go1.<wbr>4-bootstrap-20171003.tar.gz;<wbr>name=bootstrap;subdir=go1.4</a>"<br>
+SRC_URI[bootstrap.md5sum] = "<wbr>dbf727a4b0e365bf88d97cbfde5900<wbr>16"<br>
+SRC_URI[bootstrap.sha256sum] = "<wbr>f4ff5b5eb3a3cae1c993723f3eab51<wbr>9c5bae18866b5e5f96fe1102f0cb5c<wbr>3e52"<br>
<br>
export GOOS = "${BUILD_GOOS}"<br>
export GOARCH = "${BUILD_GOARCH}"<br>
+export GOTMPDIR ?= "${WORKDIR}/go-tmp"<br>
+GOTMPDIR[vardepvalue] = ""<br>
CC = "${@d.getVar('BUILD_CC').<wbr>strip()}"<br>
<br>
export CGO_ENABLED = "1"<br>
<br>
do_configure() {<br>
- cd ${WORKDIR}/go1.4/go/src<br>
- CGO_ENABLED=0 GOROOT=${WORKDIR}/go1.4/go ./make.bash<br>
+ cd ${WORKDIR}/go1.4/go/src<br>
+ CGO_ENABLED=0 GOROOT=${WORKDIR}/go1.4/go ./make.bash<br>
}<br>
<br>
do_compile() {<br>
- export GOBIN="${B}/bin"<br>
export GOROOT_FINAL="${nonstaging_<wbr>libdir}/go"<br>
export GOROOT_BOOTSTRAP="${WORKDIR}/<wbr>go1.4/go"<br>
- rm -rf ${GOBIN}<br>
- mkdir ${GOBIN}<br>
-<br>
- export TMPDIR=${WORKDIR}/build-tmp<br>
- mkdir -p ${WORKDIR}/build-tmp<br>
<br>
cd src<br>
- ./make.bash --host-only<br>
+ ./make.bash --no-banner<br>
+ cd ${B}<br>
}<br>
+do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin"<br>
+do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin"<br>
<br>
make_wrapper() {<br>
rm -f ${D}${bindir}/$2$3<br>
@@ -51,7 +50,7 @@ do_install() {<br>
(cd ${S}/src; for d in *; do \<br>
[ -d $d ] && cp -a ${S}/src/$d ${D}${libdir}/go/src/; \<br>
done)<br>
- rm -rf ${D}${libdir}/go/src/runtime/<wbr>pprof/testdata<br>
+ find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
install -d ${D}${bindir} ${D}${libdir}/go/bin<br>
for f in ${B}/bin/*<br>
do<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-native_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-native_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>native_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>runtime.inc b/meta/recipes-devtools/go/go-<wbr>runtime.inc<br>
index 29ae86e4ee..7a3b415b3f 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>runtime.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>runtime.inc<br>
@@ -10,11 +10,18 @@ export GOARM = "${TARGET_GOARM}"<br>
export GO386 = "${TARGET_GO386}"<br>
export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"<br>
export GOROOT_FINAL = "${libdir}/go"<br>
-export GO_TARGET_INSTALL = "std"<br>
export CGO_ENABLED = "1"<br>
-export CC_FOR_TARGET="${CC}"<br>
-export CXX_FOR_TARGET="${CXX}"<br>
-export GOROOT_OVERRIDE = "1"<br>
+export CGO_CFLAGS = "${CFLAGS}"<br>
+export CGO_CPPFLAGS = "${CPPFLAGS}"<br>
+export CGO_CXXFLAGS = "${CXXFLAGS}"<br>
+export CGO_LDFLAGS = "${LDFLAGS}"<br>
+export GOCACHE = "off"<br>
+export GOTMPDIR ?= "${WORKDIR}/go-tmp"<br>
+GOTMPDIR[vardepvalue] = ""<br>
+GO_EXTLDFLAGS ?= "${HOST_CC_ARCH}${TOOLCHAIN_<wbr>OPTIONS} ${LDFLAGS}"<br>
+GO_LINKMODE ?= ""<br>
+GO_LINKMODE_class-nativesdk = "--linkmode=external"<br>
+GO_LDFLAGS ?= '-ldflags="${GO_LINKMODE} -extldflags '${GO_EXTLDFLAGS}'"'<br>
<br>
do_configure() {<br>
:<br>
@@ -25,21 +32,20 @@ do_configure_libc-musl() {<br>
}<br>
<br>
do_compile() {<br>
- export GOBIN="${B}/bin"<br>
- export CC="${@d.getVar('BUILD_CC').<wbr>strip()}"<br>
- rm -rf ${GOBIN} ${B}/pkg<br>
- mkdir ${GOBIN}<br>
+ export CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}="${CC}"<br>
+ export CXX_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}="${CXX}"<br>
+<br>
cd src<br>
- ./make.bash --host-only<br>
- cp ${B}/pkg/tool/${BUILD_GOTUPLE}<wbr>/go_bootstrap ${B}<br>
- rm -rf ${B}/pkg/${TARGET_GOTUPLE}<br>
- ./make.bash --target-only<br>
+ ./make.bash --target-only --no-banner std<br>
if [ -n "${GO_DYNLINK}" ]; then<br>
- cp ${B}/go_bootstrap ${B}/pkg/tool/${BUILD_GOTUPLE}<br>
- GO_FLAGS="-buildmode=shared" GO_LDFLAGS="-extldflags \"${LDFLAGS}\"" ./make.bash --target-only<br>
+ export GOTOOLDIR="${B}/pkg/tool/<wbr>native_native"<br>
+ CC="$CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}" GOARCH="${TARGET_GOARCH}" GOOS="${TARGET_GOOS}" GOROOT=${B} \<br>
+ $GOTOOLDIR/go_bootstrap install -linkshared -buildmode=shared ${GO_LDFLAGS} std<br>
fi<br>
cd ${B}<br>
}<br>
+do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
+do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
<br>
do_install() {<br>
install -d ${D}${libdir}/go/src<br>
@@ -54,20 +60,10 @@ do_install() {<br>
find src -mindepth 1 -maxdepth 1 -type d | while read srcdir; do<br>
cp --preserve=mode,timestamps -R $srcdir ${D}${libdir}/go/src/<br>
done<br>
+ find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
rm -f ${D}${libdir}/go/src/cmd/dist/<wbr>dist<br>
}<br>
<br>
-# Remove test binaries that cannot be relocated<br>
-do_install_append_class-<wbr>nativesdk() {<br>
- rm -rf ${D}${libdir}/go/src/runtime/<wbr>pprof/testdata<br>
-}<br>
-<br>
-# These testdata directories aren't needed for builds and contain binaries<br>
-# that can cause errors in sysroot_strip(), so just remove them.<br>
-sysroot_stage_all_append() {<br>
- find ${SYSROOT_DESTDIR}${libdir}/<wbr>go/src -depth -type d -name 'testdata' -exec rm -rf {} \;<br>
-}<br>
-<br>
ALLOW_EMPTY_${PN} = "1"<br>
FILES_${PN} = "${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*${SOLIBSDEV}<wbr>"<br>
FILES_${PN}-dev = "${libdir}/go/src ${libdir}/go/pkg/include \<br>
@@ -78,8 +74,6 @@ FILES_${PN}-dev = "${libdir}/go/src ${libdir}/go/pkg/include \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*.<wbr>shlibname \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*.<wbr>shlibname \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*/*<wbr>.shlibname \<br>
-"<br>
-FILES_${PN}-staticdev = "${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE} \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*.a \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*.a \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*.a \<br>
@@ -88,11 +82,15 @@ FILES_${PN}-staticdev = "${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE} \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*.a \<br>
${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}_dynlink/*/*/*/*/*/*/*<wbr>.a \<br>
"<br>
-# The testdata directories in the source tree include some binaries for various<br>
-# architectures, scripts, and .a files<br>
-INSANE_SKIP_${PN}-dev = "staticdev ldflags file-rdeps arch"<br>
+FILES_${PN}-staticdev = "${libdir}/go/pkg/${TARGET_<wbr>GOTUPLE}"<br>
+<br>
+# Go sources include some scripts and pre-built binaries for<br>
+# multiple architectures. The static .a files for dynamically-linked<br>
+# runtime are also required in -dev.<br>
+INSANE_SKIP_${PN}-dev = "staticdev file-rdeps arch"<br>
<br>
INHIBIT_PACKAGE_STRIP = "1"<br>
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"<br>
+INHIBIT_SYSROOT_STRIP = "1"<br>
<br>
BBCLASSEXTEND = "nativesdk"<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go-runtime_1.9.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go-runtime_1.10.bb" rel="noreferrer" target="_blank">go-<wbr>runtime_1.10.bb</a><br>
diff --git a/meta/recipes-devtools/go/go-<wbr>target.inc b/meta/recipes-devtools/go/go-<wbr>target.inc<br>
index cac5d78227..a53a314c78 100644<br>
--- a/meta/recipes-devtools/go/go-<wbr>target.inc<br>
+++ b/meta/recipes-devtools/go/go-<wbr>target.inc<br>
@@ -11,10 +11,9 @@ export GO386 = "${TARGET_GO386}"<br>
export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go"<br>
export GOROOT_FINAL = "${libdir}/go"<br>
export CGO_ENABLED = "1"<br>
-export CC_FOR_TARGET = "${CC}"<br>
-export CXX_FOR_TARGET = "${CXX}"<br>
-export GO_TARGET_INSTALL = "cmd"<br>
-export GO_FLAGS = "-a"<br>
+export GOCACHE = "off"<br>
+export GOTMPDIR ?= "${WORKDIR}/go-tmp"<br>
+GOTMPDIR[vardepvalue] = ""<br>
GO_LDFLAGS = ""<br>
GO_LDFLAGS_class-nativesdk = "-linkmode external"<br>
export GO_LDFLAGS<br>
@@ -25,24 +24,22 @@ SECURITY_LDFLAGS = ""<br>
do_configure[noexec] = "1"<br>
<br>
do_compile() {<br>
- export GOBIN="${B}/bin"<br>
- export CC="${@d.getVar('BUILD_CC').<wbr>strip()}"<br>
- rm -rf ${GOBIN} ${B}/pkg<br>
- mkdir ${GOBIN}<br>
-<br>
- export TMPDIR=${WORKDIR}/build-tmp<br>
- mkdir -p ${WORKDIR}/build-tmp<br>
+ export CC_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}="${CC}"<br>
+ export CXX_FOR_${TARGET_GOOS}_${<wbr>TARGET_GOARCH}="${CXX}"<br>
<br>
cd src<br>
- ./make.bash<br>
+ ./make.bash --target-only --no-banner<br>
cd ${B}<br>
}<br>
+do_compile[dirs] =+ "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
+do_compile[cleandirs] += "${GOTMPDIR} ${B}/bin ${B}/pkg"<br>
<br>
do_install() {<br>
install -d ${D}${libdir}/go/pkg/tool<br>
cp --preserve=mode,timestamps -R ${B}/pkg/tool/${TARGET_<wbr>GOTUPLE} ${D}${libdir}/go/pkg/tool/<br>
install -d ${D}${libdir}/go/src<br>
cp --preserve=mode,timestamps -R ${S}/src/cmd ${D}${libdir}/go/src/<br>
+ find ${D}${libdir}/go/src -depth -type d -name testdata -exec rm -rf {} \;<br>
install -d ${D}${libdir}/go/bin<br>
install -d ${D}${bindir}<br>
for f in ${B}/${GO_BUILD_BINDIR}/*; do<br>
diff --git a/meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_<wbr>1.9.bb</a> b/meta/recipes-devtools/go/<a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_<wbr>1.10.bb</a><br>
similarity index 100%<br>
rename from meta/recipes-devtools/go/<a href="http://go_1.9.bb" rel="noreferrer" target="_blank">go_1.<wbr>9.bb</a><br>
rename to meta/recipes-devtools/go/<a href="http://go_1.10.bb" rel="noreferrer" target="_blank">go_1.<wbr>10.bb</a><br>
<span class="HOEnZb"><font color="#888888">--<br>
2.14.1<br>
<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>core</a><br>
</font></span></blockquote></div><br></div>