[OE-core] [PATCH v4 4/4] Remove go-1.12

Alexander Kube alexander.j.kube at gmail.com
Fri Oct 25 14:30:18 UTC 2019


This patch worked fine until a `bitbake -c cleanall`. I'm investigating the
root cause right now; please do not merge.

On Fri, Oct 25, 2019 at 6:29 PM Alexander Kube <alexander.j.kube at gmail.com>
wrote:

> From: Alex Kube <alexander.j.kube at gmail.com>
>
> Signed-off-by: Alex Kube <alexander.j.kube at gmail.com>
> ---
>  meta/recipes-devtools/go/go-1.12.inc          |  24 --
>  ...ow-CC-and-CXX-to-have-multiple-words.patch |  31 --
>  ...o1.12-security-net-textproto-don-t-n.patch | 163 ----------
>  ...ent-based-hash-generation-less-pedan.patch | 218 --------------
>  ...-to-be-overridden-in-the-environment.patch |  48 ---
>  ...4-ld-add-soname-to-shareable-objects.patch |  45 ---
>  ...de-CC-when-building-dist-and-go_boot.patch |  37 ---
>  ...dist-separate-host-and-target-builds.patch | 282 ------------------
>  ...d-go-make-GOROOT-precious-by-default.patch | 106 -------
>  ...008-use-GOBUILDMODE-to-set-buildmode.patch |  37 ---
>  ...place-glibc-dynamic-linker-with-musl.patch | 112 -------
>  .../go/go-cross-canadian_1.12.bb              |   2 -
>  meta/recipes-devtools/go/go-cross_1.12.bb     |   2 -
>  meta/recipes-devtools/go/go-crosssdk_1.12.bb  |   2 -
>  meta/recipes-devtools/go/go-native_1.12.bb    |   2 -
>  meta/recipes-devtools/go/go-runtime_1.12.bb   |   2 -
>  meta/recipes-devtools/go/go_1.12.bb           |  14 -
>  17 files changed, 1127 deletions(-)
>  delete mode 100644 meta/recipes-devtools/go/go-1.12.inc
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0006-cmd-dist-separate-host-and-target-builds.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0007-cmd-go-make-GOROOT-precious-by-default.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch
>  delete mode 100644
> meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch
>  delete mode 100644 meta/recipes-devtools/go/go-cross-canadian_1.12.bb
>  delete mode 100644 meta/recipes-devtools/go/go-cross_1.12.bb
>  delete mode 100644 meta/recipes-devtools/go/go-crosssdk_1.12.bb
>  delete mode 100644 meta/recipes-devtools/go/go-native_1.12.bb
>  delete mode 100644 meta/recipes-devtools/go/go-runtime_1.12.bb
>  delete mode 100644 meta/recipes-devtools/go/go_1.12.bb
>
> diff --git a/meta/recipes-devtools/go/go-1.12.inc
> b/meta/recipes-devtools/go/go-1.12.inc
> deleted file mode 100644
> index ed14b175e6..0000000000
> --- a/meta/recipes-devtools/go/go-1.12.inc
> +++ /dev/null
> @@ -1,24 +0,0 @@
> -require go-common.inc
> -
> -GO_BASEVERSION = "1.12"
> -GO_MINOR = ".9"
> -PV .= "${GO_MINOR}"
> -FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
> -
> -LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707"
> -
> -SRC_URI += "\
> -    file://0001-allow-CC-and-CXX-to-have-multiple-words.patch \
> -
> file://0002-cmd-go-make-content-based-hash-generation-less-pedan.patch \
> -    file://0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
> \
> -    file://0004-ld-add-soname-to-shareable-objects.patch \
> -
> file://0005-make.bash-override-CC-when-building-dist-and-go_boot.patch \
> -    file://0006-cmd-dist-separate-host-and-target-builds.patch \
> -    file://0007-cmd-go-make-GOROOT-precious-by-default.patch \
> -    file://0008-use-GOBUILDMODE-to-set-buildmode.patch \
> -
> file://0001-release-branch.go1.12-security-net-textproto-don-t-n.patch \
> -"
> -SRC_URI_append_libc-musl = "
> file://0009-ld-replace-glibc-dynamic-linker-with-musl.patch"
> -
> -SRC_URI[main.md5sum] = "6132109d4050da349eadc9f7b0304ef4"
> -SRC_URI[main.sha256sum] =
> "ab0e56ed9c4732a653ed22e232652709afbf573e710f56a07f7fdeca578d62fc"
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch
> b/meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch
> deleted file mode 100644
> index 4442858c83..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0001-allow-CC-and-CXX-to-have-multiple-words.patch
> +++ /dev/null
> @@ -1,31 +0,0 @@
> -From 7cc519aa5f84cf8fc7ac8c10fc69aa8040330ea0 Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Mon, 19 Feb 2018 08:49:33 -0800
> -Subject: [PATCH] allow CC and CXX to have multiple words
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> ----
> - src/cmd/go/internal/envcmd/env.go | 4 ++--
> - 1 file changed, 2 insertions(+), 2 deletions(-)
> -
> -diff --git a/src/cmd/go/internal/envcmd/env.go
> b/src/cmd/go/internal/envcmd/env.go
> -index afadbad..cedbfbf 100644
> ---- a/src/cmd/go/internal/envcmd/env.go
> -+++ b/src/cmd/go/internal/envcmd/env.go
> -@@ -85,11 +85,11 @@ func MkEnv() []cfg.EnvVar {
> -
> -       cc := cfg.DefaultCC(cfg.Goos, cfg.Goarch)
> -       if env := strings.Fields(os.Getenv("CC")); len(env) > 0 {
> --              cc = env[0]
> -+              cc = strings.Join(env, " ")
> -       }
> -       cxx := cfg.DefaultCXX(cfg.Goos, cfg.Goarch)
> -       if env := strings.Fields(os.Getenv("CXX")); len(env) > 0 {
> --              cxx = env[0]
> -+              cxx = strings.Join(env, " ")
> -       }
> -       env = append(env, cfg.EnvVar{Name: "CC", Value: cc})
> -       env = append(env, cfg.EnvVar{Name: "CXX", Value: cxx})
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch
> b/meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch
> deleted file mode 100644
> index 7b39dbd734..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0001-release-branch.go1.12-security-net-textproto-don-t-n.patch
> +++ /dev/null
> @@ -1,163 +0,0 @@
> -From 265b691ac440bfb711d8de323346f7d72e620efe Mon Sep 17 00:00:00 2001
> -From: Filippo Valsorda <filippo at golang.org>
> -Date: Thu, 12 Sep 2019 12:37:36 -0400
> -Subject: [PATCH] [release-branch.go1.12-security] net/textproto: don't
> - normalize headers with spaces before the colon
> -
> -RFC 7230 is clear about headers with a space before the colon, like
> -
> -X-Answer : 42
> -
> -being invalid, but we've been accepting and normalizing them for
> compatibility
> -purposes since CL 5690059 in 2012.
> -
> -On the client side, this is harmless and indeed most browsers behave the
> same
> -to this day. On the server side, this becomes a security issue when the
> -behavior doesn't match that of a reverse proxy sitting in front of the
> server.
> -
> -For example, if a WAF accepts them without normalizing them, it might be
> -possible to bypass its filters, because the Go server would interpret the
> -header differently. Worse, if the reverse proxy coalesces requests onto a
> -single HTTP/1.1 connection to a Go server, the understanding of the
> request
> -boundaries can get out of sync between them, allowing an attacker to tack
> an
> -arbitrary method and path onto a request by other clients, including
> -authentication headers unknown to the attacker.
> -
> -This was recently presented at multiple security conferences:
> -https://portswigger.net/blog/http-desync-attacks-request-smuggling-reborn
> -
> -net/http servers already reject header keys with invalid characters.
> -Simply stop normalizing extra spaces in net/textproto, let it return them
> -unchanged like it does for other invalid headers, and let net/http enforce
> -RFC 7230, which is HTTP specific. This loses us normalization on the
> client
> -side, but there's no right answer on the client side anyway, and hiding
> the
> -issue sounds worse than letting the application decide.
> -
> -Fixes CVE-2019-16276
> -
> -Change-Id: I6d272de827e0870da85d93df770d6a0e161bbcf1
> -Reviewed-on:
> https://team-review.git.corp.google.com/c/golang/go-private/+/549719
> -Reviewed-by
> <https://team-review.git.corp.google.com/c/golang/go-private/+/549719-Reviewed-by>:
> Brad Fitzpatrick <bradfitz at google.com>
> -(cherry picked from commit 1280b868e82bf173ea3e988be3092d160ee66082)
> -Reviewed-on:
> https://team-review.git.corp.google.com/c/golang/go-private/+/558776
> -Reviewed-by
> <https://team-review.git.corp.google.com/c/golang/go-private/+/558776-Reviewed-by>:
> Dmitri Shuralyov <dmitshur at google.com>
> -
> -CVE: CVE-2019-16276
> -
> -Upstream-Status: Backport [
> https://github.com/golang/go/commit/6e6f4aaf70c8b1cc81e65a26332aa9409de03ad8
> ]
> -
> -Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
> ----
> - src/net/http/serve_test.go       |  4 ++++
> - src/net/http/transport_test.go   | 27 +++++++++++++++++++++++++++
> - src/net/textproto/reader.go      | 10 ++--------
> - src/net/textproto/reader_test.go | 13 ++++++-------
> - 4 files changed, 39 insertions(+), 15 deletions(-)
> -
> -diff --git a/src/net/http/serve_test.go b/src/net/http/serve_test.go
> -index 6eb0088a96..89bfdfbb82 100644
> ---- a/src/net/http/serve_test.go
> -+++ b/src/net/http/serve_test.go
> -@@ -4748,6 +4748,10 @@ func TestServerValidatesHeaders(t *testing.T) {
> -               {"foo\xffbar: foo\r\n", 400},                         //
> binary in header
> -               {"foo\x00bar: foo\r\n", 400},                         //
> binary in header
> -               {"Foo: " + strings.Repeat("x", 1<<21) + "\r\n", 431}, //
> header too large
> -+              // Spaces between the header key and colon are not allowed.
> -+              // See RFC 7230, Section 3.2.4.
> -+              {"Foo : bar\r\n", 400},
> -+              {"Foo\t: bar\r\n", 400},
> -
> -               {"foo: foo foo\r\n", 200},    // LWS space is okay
> -               {"foo: foo\tfoo\r\n", 200},   // LWS tab is okay
> -diff --git a/src/net/http/transport_test.go
> b/src/net/http/transport_test.go
> -index 5c329543e2..5e5438a708 100644
> ---- a/src/net/http/transport_test.go
> -+++ b/src/net/http/transport_test.go
> -@@ -5133,3 +5133,30 @@ func TestTransportIgnores408(t *testing.T) {
> -       }
> -       t.Fatalf("timeout after %v waiting for Transport connections to
> die off", time.Since(t0))
> - }
> -+
> -+func TestInvalidHeaderResponse(t *testing.T) {
> -+      setParallel(t)
> -+      defer afterTest(t)
> -+      cst := newClientServerTest(t, h1Mode, HandlerFunc(func(w
> ResponseWriter, r *Request) {
> -+              conn, buf, _ := w.(Hijacker).Hijack()
> -+              buf.Write([]byte("HTTP/1.1 200 OK\r\n" +
> -+                      "Date: Wed, 30 Aug 2017 19:09:27 GMT\r\n" +
> -+                      "Content-Type: text/html; charset=utf-8\r\n" +
> -+                      "Content-Length: 0\r\n" +
> -+                      "Foo : bar\r\n\r\n"))
> -+              buf.Flush()
> -+              conn.Close()
> -+      }))
> -+      defer cst.close()
> -+      res, err := cst.c.Get(cst.ts.URL)
> -+      if err != nil {
> -+              t.Fatal(err)
> -+      }
> -+      defer res.Body.Close()
> -+      if v := res.Header.Get("Foo"); v != "" {
> -+              t.Errorf(`unexpected "Foo" header: %q`, v)
> -+      }
> -+      if v := res.Header.Get("Foo "); v != "bar" {
> -+              t.Errorf(`bad "Foo " header value: %q, want %q`, v, "bar")
> -+      }
> -+}
> -diff --git a/src/net/textproto/reader.go b/src/net/textproto/reader.go
> -index 2c4f25d5ae..1a5e364cf7 100644
> ---- a/src/net/textproto/reader.go
> -+++ b/src/net/textproto/reader.go
> -@@ -493,18 +493,12 @@ func (r *Reader) ReadMIMEHeader() (MIMEHeader,
> error) {
> -                       return m, err
> -               }
> -
> --              // Key ends at first colon; should not have trailing spaces
> --              // but they appear in the wild, violating specs, so we
> remove
> --              // them if present.
> -+              // Key ends at first colon.
> -               i := bytes.IndexByte(kv, ':')
> -               if i < 0 {
> -                       return m, ProtocolError("malformed MIME header
> line: " + string(kv))
> -               }
> --              endKey := i
> --              for endKey > 0 && kv[endKey-1] == ' ' {
> --                      endKey--
> --              }
> --              key := canonicalMIMEHeaderKey(kv[:endKey])
> -+              key := canonicalMIMEHeaderKey(kv[:i])
> -
> -               // As per RFC 7230 field-name is a token, tokens consist
> of one or more chars.
> -               // We could return a ProtocolError here, but better to be
> liberal in what we
> -diff --git a/src/net/textproto/reader_test.go
> b/src/net/textproto/reader_test.go
> -index f85fbdc36d..b92fdcd3c7 100644
> ---- a/src/net/textproto/reader_test.go
> -+++ b/src/net/textproto/reader_test.go
> -@@ -188,11 +188,10 @@ func TestLargeReadMIMEHeader(t *testing.T) {
> -       }
> - }
> -
> --// Test that we read slightly-bogus MIME headers seen in the wild,
> --// with spaces before colons, and spaces in keys.
> -+// TestReadMIMEHeaderNonCompliant checks that we don't normalize headers
> -+// with spaces before colons, and accept spaces in keys.
> - func TestReadMIMEHeaderNonCompliant(t *testing.T) {
> --      // Invalid HTTP response header as sent by an Axis security
> --      // camera: (this is handled by IE, Firefox, Chrome, curl, etc.)
> -+      // These invalid headers will be rejected by net/http according to
> RFC 7230.
> -       r := reader("Foo: bar\r\n" +
> -               "Content-Language: en\r\n" +
> -               "SID : 0\r\n" +
> -@@ -202,9 +201,9 @@ func TestReadMIMEHeaderNonCompliant(t *testing.T) {
> -       want := MIMEHeader{
> -               "Foo":              {"bar"},
> -               "Content-Language": {"en"},
> --              "Sid":              {"0"},
> --              "Audio Mode":       {"None"},
> --              "Privilege":        {"127"},
> -+              "SID ":             {"0"},
> -+              "Audio Mode ":      {"None"},
> -+              "Privilege ":       {"127"},
> -       }
> -       if !reflect.DeepEqual(m, want) || err != nil {
> -               t.Fatalf("ReadMIMEHeader =\n%v, %v; want:\n%v", m, err,
> want)
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
> b/meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
> deleted file mode 100644
> index 66b8561874..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0002-cmd-go-make-content-based-hash-generation-less-pedan.patch
> +++ /dev/null
> @@ -1,218 +0,0 @@
> -From 47db69e20ed66fb62b01affd83d829654b829893 Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Mon, 19 Feb 2018 08:50:59 -0800
> -Subject: [PATCH] cmd/go: make content-based hash generation less pedantic
> -
> -Go 1.10's build tool now uses content-based hashes to
> -determine when something should be built or re-built.
> -This same mechanism is used to maintain a built-artifact
> -cache for speeding up builds.
> -
> -However, the hashes it generates include information that
> -doesn't work well with OE, nor with using a shared runtime
> -library.
> -
> -First, it embeds path names to source files, unless
> -building within GOROOT.  This prevents the building
> -of a package in GOPATH for later staging into GOROOT.
> -
> -This patch adds support for the environment variable
> -GOPATH_OMIT_IN_ACTIONID.  If present, path name
> -embedding is disabled.
> -
> -Second, if cgo is enabled, the build ID for cgo-related
> -packages will include the current value of the environment
> -variables for invoking the compiler (CC, CXX, FC) and
> -any CGO_xxFLAGS variables.  Only if the settings used
> -during a compilation exactly match, character for character,
> -the values used for compiling runtime/cgo or any other
> -cgo-enabled package being imported, will the tool
> -decide that the imported package is up-to-date.
> -
> -This is done to help ensure correctness, but is overly
> -simplistic and effectively prevents the reuse of built
> -artifacts that use cgo (or shared runtime, which includes
> -runtime/cgo).
> -
> -This patch filters out all compiler flags except those
> -beginning with '-m'.  The default behavior can be restored
> -by setting the CGO_PEDANTIC environment variable.
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> ----
> - src/cmd/go/internal/envcmd/env.go |  2 +-
> - src/cmd/go/internal/work/exec.go  | 63 ++++++++++++++++++++++---------
> - 2 files changed, 46 insertions(+), 19 deletions(-)
> -
> -diff --git a/src/cmd/go/internal/envcmd/env.go
> b/src/cmd/go/internal/envcmd/env.go
> -index cedbfbf..5763a0d 100644
> ---- a/src/cmd/go/internal/envcmd/env.go
> -+++ b/src/cmd/go/internal/envcmd/env.go
> -@@ -128,7 +128,7 @@ func ExtraEnvVars() []cfg.EnvVar {
> - func ExtraEnvVarsCostly() []cfg.EnvVar {
> -       var b work.Builder
> -       b.Init()
> --      cppflags, cflags, cxxflags, fflags, ldflags, err :=
> b.CFlags(&load.Package{})
> -+      cppflags, cflags, cxxflags, fflags, ldflags, err :=
> b.CFlags(&load.Package{}, false)
> -       if err != nil {
> -               // Should not happen - b.CFlags was given an empty package.
> -               fmt.Fprintf(os.Stderr, "go: invalid cflags: %v\n", err)
> -diff --git a/src/cmd/go/internal/work/exec.go
> b/src/cmd/go/internal/work/exec.go
> -index 12e1527..e41bfac 100644
> ---- a/src/cmd/go/internal/work/exec.go
> -+++ b/src/cmd/go/internal/work/exec.go
> -@@ -174,6 +174,8 @@ func (b *Builder) Do(root *Action) {
> -       wg.Wait()
> - }
> -
> -+var omitGopath = os.Getenv("GOPATH_OMIT_IN_ACTIONID") != ""
> -+
> - // buildActionID computes the action ID for a build action.
> - func (b *Builder) buildActionID(a *Action) cache.ActionID {
> -       p := a.Package
> -@@ -190,7 +192,7 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> -       // but it does not hide the exact value of $GOPATH.
> -       // Include the full dir in that case.
> -       // Assume b.WorkDir is being trimmed properly.
> --      if !p.Goroot && !strings.HasPrefix(p.Dir, b.WorkDir) {
> -+      if !p.Goroot && !omitGopath && !strings.HasPrefix(p.Dir,
> b.WorkDir) {
> -               fmt.Fprintf(h, "dir %s\n", p.Dir)
> -       }
> -       fmt.Fprintf(h, "goos %s goarch %s\n", cfg.Goos, cfg.Goarch)
> -@@ -201,13 +203,13 @@ func (b *Builder) buildActionID(a *Action)
> cache.ActionID {
> -       }
> -       if len(p.CgoFiles)+len(p.SwigFiles) > 0 {
> -               fmt.Fprintf(h, "cgo %q\n", b.toolID("cgo"))
> --              cppflags, cflags, cxxflags, fflags, ldflags, _ :=
> b.CFlags(p)
> --              fmt.Fprintf(h, "CC=%q %q %q %q\n", b.ccExe(), cppflags,
> cflags, ldflags)
> -+              cppflags, cflags, cxxflags, fflags, ldflags, _ :=
> b.CFlags(p, true)
> -+              fmt.Fprintf(h, "CC=%q %q %q %q\n", b.ccExe(true),
> cppflags, cflags, ldflags)
> -               if len(p.CXXFiles)+len(p.SwigFiles) > 0 {
> --                      fmt.Fprintf(h, "CXX=%q %q\n", b.cxxExe(), cxxflags)
> -+                      fmt.Fprintf(h, "CXX=%q %q\n", b.cxxExe(true),
> cxxflags)
> -               }
> -               if len(p.FFiles) > 0 {
> --                      fmt.Fprintf(h, "FC=%q %q\n", b.fcExe(), fflags)
> -+                      fmt.Fprintf(h, "FC=%q %q\n", b.fcExe(true), fflags)
> -               }
> -               // TODO(rsc): Should we include the SWIG version or
> Fortran/GCC/G++/Objective-C compiler versions?
> -       }
> -@@ -2096,33 +2098,33 @@ var (
> - // gccCmd returns a gcc command line prefix
> - // defaultCC is defined in zdefaultcc.go, written by cmd/dist.
> - func (b *Builder) GccCmd(incdir, workdir string) []string {
> --      return b.compilerCmd(b.ccExe(), incdir, workdir)
> -+      return b.compilerCmd(b.ccExe(false), incdir, workdir)
> - }
> -
> - // gxxCmd returns a g++ command line prefix
> - // defaultCXX is defined in zdefaultcc.go, written by cmd/dist.
> - func (b *Builder) GxxCmd(incdir, workdir string) []string {
> --      return b.compilerCmd(b.cxxExe(), incdir, workdir)
> -+      return b.compilerCmd(b.cxxExe(false), incdir, workdir)
> - }
> -
> - // gfortranCmd returns a gfortran command line prefix.
> - func (b *Builder) gfortranCmd(incdir, workdir string) []string {
> --      return b.compilerCmd(b.fcExe(), incdir, workdir)
> -+      return b.compilerCmd(b.fcExe(false), incdir, workdir)
> - }
> -
> - // ccExe returns the CC compiler setting without all the extra flags we
> add implicitly.
> --func (b *Builder) ccExe() []string {
> --      return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch))
> -+func (b *Builder) ccExe(filtered bool) []string {
> -+      return b.compilerExe(origCC, cfg.DefaultCC(cfg.Goos, cfg.Goarch),
> filtered)
> - }
> -
> - // cxxExe returns the CXX compiler setting without all the extra flags
> we add implicitly.
> --func (b *Builder) cxxExe() []string {
> --      return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos, cfg.Goarch))
> -+func (b *Builder) cxxExe(filtered bool) []string {
> -+      return b.compilerExe(origCXX, cfg.DefaultCXX(cfg.Goos,
> cfg.Goarch), filtered)
> - }
> -
> - // fcExe returns the FC compiler setting without all the extra flags we
> add implicitly.
> --func (b *Builder) fcExe() []string {
> --      return b.compilerExe(os.Getenv("FC"), "gfortran")
> -+func (b *Builder) fcExe(filtered bool) []string {
> -+      return b.compilerExe(os.Getenv("FC"), "gfortran", filtered)
> - }
> -
> - // compilerExe returns the compiler to use given an
> -@@ -2131,11 +2133,14 @@ func (b *Builder) fcExe() []string {
> - // of the compiler but can have additional arguments if they
> - // were present in the environment value.
> - // For example if CC="gcc -DGOPHER" then the result is ["gcc",
> "-DGOPHER"].
> --func (b *Builder) compilerExe(envValue string, def string) []string {
> -+func (b *Builder) compilerExe(envValue string, def string, filtered
> bool) []string {
> -       compiler := strings.Fields(envValue)
> -       if len(compiler) == 0 {
> -               compiler = []string{def}
> -       }
> -+      if filtered {
> -+              return append(compiler[0:1],
> filterCompilerFlags(compiler[1:])...)
> -+      }
> -       return compiler
> - }
> -
> -@@ -2285,8 +2290,23 @@ func envList(key, def string) []string {
> -       return strings.Fields(v)
> - }
> -
> -+var filterFlags = os.Getenv("CGO_PEDANTIC") == ""
> -+
> -+func filterCompilerFlags(flags []string) []string {
> -+      var newflags []string
> -+      if !filterFlags {
> -+              return flags
> -+      }
> -+      for _, flag := range flags {
> -+              if strings.HasPrefix(flag, "-m") {
> -+                      newflags = append(newflags, flag)
> -+              }
> -+      }
> -+      return newflags
> -+}
> -+
> - // CFlags returns the flags to use when invoking the C, C++ or Fortran
> compilers, or cgo.
> --func (b *Builder) CFlags(p *load.Package) (cppflags, cflags, cxxflags,
> fflags, ldflags []string, err error) {
> -+func (b *Builder) CFlags(p *load.Package, filtered bool) (cppflags,
> cflags, cxxflags, fflags, ldflags []string, err error) {
> -       defaults := "-g -O2"
> -
> -       if cppflags, err = buildFlags("CPPFLAGS", "", p.CgoCPPFLAGS,
> checkCompilerFlags); err != nil {
> -@@ -2304,6 +2324,13 @@ func (b *Builder) CFlags(p *load.Package)
> (cppflags, cflags, cxxflags, fflags, l
> -       if ldflags, err = buildFlags("LDFLAGS", defaults, p.CgoLDFLAGS,
> checkLinkerFlags); err != nil {
> -               return
> -       }
> -+      if filtered {
> -+              cppflags = filterCompilerFlags(cppflags)
> -+              cflags = filterCompilerFlags(cflags)
> -+              cxxflags = filterCompilerFlags(cxxflags)
> -+              fflags = filterCompilerFlags(fflags)
> -+              ldflags = filterCompilerFlags(ldflags)
> -+      }
> -
> -       return
> - }
> -@@ -2319,7 +2346,7 @@ var cgoRe = regexp.MustCompile(`[/\\:]`)
> -
> - func (b *Builder) cgo(a *Action, cgoExe, objdir string, pcCFLAGS,
> pcLDFLAGS, cgofiles, gccfiles, gxxfiles, mfiles, ffiles []string) (outGo,
> outObj []string, err error) {
> -       p := a.Package
> --      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err :=
> b.CFlags(p)
> -+      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, cgoFFLAGS, cgoLDFLAGS, err :=
> b.CFlags(p, false)
> -       if err != nil {
> -               return nil, nil, err
> -       }
> -@@ -2679,7 +2706,7 @@ func (b *Builder) swigIntSize(objdir string)
> (intsize string, err error) {
> -
> - // Run SWIG on one SWIG input file.
> - func (b *Builder) swigOne(a *Action, p *load.Package, file, objdir
> string, pcCFLAGS []string, cxx bool, intgosize string) (outGo, outC string,
> err error) {
> --      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p)
> -+      cgoCPPFLAGS, cgoCFLAGS, cgoCXXFLAGS, _, _, err := b.CFlags(p,
> false)
> -       if err != nil {
> -               return "", "", err
> -       }
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
> b/meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
> deleted file mode 100644
> index b6ca40edee..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0003-allow-GOTOOLDIR-to-be-overridden-in-the-environment.patch
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -From 5c32c38bf19b24f0aadd78012d17ff5caa82151e Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Sat, 17 Feb 2018 05:24:20 -0800
> -Subject: [PATCH] allow GOTOOLDIR to be overridden in the environment
> -
> -to allow for split host/target build roots
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> ----
> - src/cmd/dist/build.go          | 4 +++-
> - src/cmd/go/internal/cfg/cfg.go | 7 +++++--
> - 2 files changed, 8 insertions(+), 3 deletions(-)
> -
> -Index: go/src/cmd/dist/build.go
> -===================================================================
> ---- go.orig/src/cmd/dist/build.go
> -+++ go/src/cmd/dist/build.go
> -@@ -228,7 +228,9 @@ func xinit() {
> -       workdir = xworkdir()
> -       xatexit(rmworkdir)
> -
> --      tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch)
> -+      if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
> -+              tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos,
> gohostarch)
> -+      }
> - }
> -
> - // compilerEnv returns a map from "goos/goarch" to the
> -Index: go/src/cmd/go/internal/cfg/cfg.go
> -===================================================================
> ---- go.orig/src/cmd/go/internal/cfg/cfg.go
> -+++ go/src/cmd/go/internal/cfg/cfg.go
> -@@ -116,7 +116,11 @@ func init() {
> -               // variables. This matches the initialization of ToolDir in
> -               // go/build, except for using GOROOT rather than
> -               // runtime.GOROOT.
> --              build.ToolDir = filepath.Join(GOROOT,
> "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
> -+              if s := os.Getenv("GOTOOLDIR"); s != "" {
> -+                      build.ToolDir = filepath.Clean(s)
> -+              } else {
> -+                      build.ToolDir = filepath.Join(GOROOT,
> "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)
> -+              }
> -       }
> - }
> -
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch
> b/meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch
> deleted file mode 100644
> index 004a33a023..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0004-ld-add-soname-to-shareable-objects.patch
> +++ /dev/null
> @@ -1,45 +0,0 @@
> -From 55eb8c95a89f32aec16b7764e78e8cf75169dc81 Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Sat, 17 Feb 2018 06:26:10 -0800
> -Subject: [PATCH] ld: add soname to shareable objects
> -
> -so that OE's shared library dependency handling
> -can find them.
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> ----
> - src/cmd/link/internal/ld/lib.go | 4 ++++
> - 1 file changed, 4 insertions(+)
> -
> -diff --git a/src/cmd/link/internal/ld/lib.go
> b/src/cmd/link/internal/ld/lib.go
> -index 220aab3..703925f 100644
> ---- a/src/cmd/link/internal/ld/lib.go
> -+++ b/src/cmd/link/internal/ld/lib.go
> -@@ -1135,6 +1135,7 @@ func (ctxt *Link) hostlink() {
> -                               argv = append(argv, "-Wl,-z,relro")
> -                       }
> -                       argv = append(argv, "-shared")
> -+                      argv = append(argv, fmt.Sprintf("-Wl,-soname,%s",
> filepath.Base(*flagOutfile)))
> -                       if ctxt.HeadType != objabi.Hwindows {
> -                               // Pass -z nodelete to mark the shared
> library as
> -                               // non-closeable: a dlclose will do
> nothing.
> -@@ -1146,6 +1147,8 @@ func (ctxt *Link) hostlink() {
> -                       argv = append(argv, "-Wl,-z,relro")
> -               }
> -               argv = append(argv, "-shared")
> -+              argv = append(argv, fmt.Sprintf("-Wl,-soname,%s",
> filepath.Base(*flagOutfile)))
> -+
> -       case BuildModePlugin:
> -               if ctxt.HeadType == objabi.Hdarwin {
> -                       argv = append(argv, "-dynamiclib")
> -@@ -1154,6 +1157,7 @@ func (ctxt *Link) hostlink() {
> -                               argv = append(argv, "-Wl,-z,relro")
> -                       }
> -                       argv = append(argv, "-shared")
> -+                      argv = append(argv, fmt.Sprintf("-Wl,-soname,%s",
> filepath.Base(*flagOutfile)))
> -               }
> -       }
> -
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
> b/meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
> deleted file mode 100644
> index ace8de9eae..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0005-make.bash-override-CC-when-building-dist-and-go_boot.patch
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -From 1bf15aa8fb773604b2524cfdab493fa4d8fa9285 Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Sat, 17 Feb 2018 06:32:45 -0800
> -Subject: [PATCH] make.bash: override CC when building dist and
> go_bootstrap
> -
> -for handling OE cross-canadian builds.
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> ----
> - src/make.bash | 4 ++--
> - 1 file changed, 2 insertions(+), 2 deletions(-)
> -
> -diff --git a/src/make.bash b/src/make.bash
> -index 78882d9..25943d0 100755
> ---- a/src/make.bash
> -+++ b/src/make.bash
> -@@ -163,7 +163,7 @@ if [ "$GOROOT_BOOTSTRAP" = "$GOROOT" ]; then
> -       exit 1
> - fi
> - rm -f cmd/dist/dist
> --GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH="" "$GOROOT_BOOTSTRAP/bin/go"
> build -o cmd/dist/dist ./cmd/dist
> -+CC="${BUILD_CC:-${CC}}" GOROOT="$GOROOT_BOOTSTRAP" GOOS="" GOARCH=""
> "$GOROOT_BOOTSTRAP/bin/go" build -o cmd/dist/dist ./cmd/dist
> -
> - # -e doesn't propagate out of eval, so check success by hand.
> - eval $(./cmd/dist/dist env -p || echo FAIL=true)
> -@@ -194,7 +194,7 @@ fi
> - # Run dist bootstrap to complete make.bash.
> - # Bootstrap installs a proper cmd/dist, built with the new toolchain.
> - # Throw ours, built with Go 1.4, away after bootstrap.
> --./cmd/dist/dist bootstrap $buildall $vflag $GO_DISTFLAGS "$@"
> -+CC="${BUILD_CC:-${CC}}" ./cmd/dist/dist bootstrap $buildall $vflag
> $GO_DISTFLAGS "$@"
> - rm -f ./cmd/dist/dist
> -
> - # DO NOT ADD ANY NEW CODE HERE.
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0006-cmd-dist-separate-host-and-target-builds.patch
> b/meta/recipes-devtools/go/go-1.12/0006-cmd-dist-separate-host-and-target-builds.patch
> deleted file mode 100644
> index 0c0d5da80a..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0006-cmd-dist-separate-host-and-target-builds.patch
> +++ /dev/null
> @@ -1,282 +0,0 @@
> -From fe0fcaf43ef3aab81541dad2a71b46254dc4cf6a Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Sat, 17 Feb 2018 10:03:48 -0800
> -Subject: [PATCH] cmd/dist: separate host and target builds
> -
> -Change the dist tool to allow for OE-style cross-
> -and cross-canadian builds:
> -
> - - command flags --host-only and --target only are added;
> -   if one is present, the other changes mentioned below
> -   take effect, and arguments may also be specified on
> -   the command line to enumerate the package(s) to be
> -   built.
> -
> - - for OE cross builds, go_bootstrap is always built for
> -   the current build host, and is moved, along with the supporting
> -   toolchain (asm, compile, etc.) to a separate 'native_native'
> -   directory under GOROOT/pkg/tool.
> -
> - - go_bootstrap is not automatically removed after the build,
> -   so it can be reused later (e.g., building both static and
> -   shared runtime).
> -
> -Note that for --host-only builds, it would be nice to specify
> -just the "cmd" package to build only the go commands/tools,
> -the staleness checks in the dist tool will fail if the "std"
> -library has not also been built.  So host-only builds have to
> -build everything anyway.
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> -more dist cleanup
> -
> ----
> - src/cmd/dist/build.go | 153 ++++++++++++++++++++++++++++++------------
> - 1 file changed, 111 insertions(+), 42 deletions(-)
> -
> -Index: go/src/cmd/dist/build.go
> -===================================================================
> ---- go.orig/src/cmd/dist/build.go
> -+++ go/src/cmd/dist/build.go
> -@@ -39,6 +39,7 @@ var (
> -       goldflags        string
> -       workdir          string
> -       tooldir          string
> -+      build_tooldir    string
> -       oldgoos          string
> -       oldgoarch        string
> -       exe              string
> -@@ -50,6 +51,7 @@ var (
> -
> -       rebuildall   bool
> -       defaultclang bool
> -+      crossBuild   bool
> -
> -       vflag int // verbosity
> - )
> -@@ -231,6 +233,8 @@ func xinit() {
> -       if tooldir = os.Getenv("GOTOOLDIR"); tooldir == "" {
> -               tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos,
> gohostarch)
> -       }
> -+      build_tooldir = pathf("%s/pkg/tool/native_native", goroot)
> -+
> - }
> -
> - // compilerEnv returns a map from "goos/goarch" to the
> -@@ -260,7 +264,6 @@ func compilerEnv(envName, def string) ma
> -               if gohostos != goos || gohostarch != goarch {
> -                       m[gohostos+"/"+gohostarch] = m[""]
> -               }
> --              m[""] = env
> -       }
> -
> -       for _, goos := range okgoos {
> -@@ -487,8 +490,10 @@ func setup() {
> -       // We keep it in pkg/, just like the object directory above.
> -       if rebuildall {
> -               xremoveall(tooldir)
> -+              xremoveall(build_tooldir)
> -       }
> -       xmkdirall(tooldir)
> -+      xmkdirall(build_tooldir)
> -
> -       // Remove tool binaries from before the tool/gohostos_gohostarch
> -       xremoveall(pathf("%s/bin/tool", goroot))
> -@@ -1155,11 +1160,29 @@ func cmdbootstrap() {
> -
> -       var noBanner bool
> -       var debug bool
> -+      var hostOnly bool
> -+      var targetOnly bool
> -+      var toBuild = []string { "std", "cmd" }
> -+
> -       flag.BoolVar(&rebuildall, "a", rebuildall, "rebuild all")
> -       flag.BoolVar(&debug, "d", debug, "enable debugging of bootstrap
> process")
> -       flag.BoolVar(&noBanner, "no-banner", noBanner, "do not print
> banner")
> -+      flag.BoolVar(&hostOnly, "host-only", hostOnly, "build only host
> binaries, not target")
> -+      flag.BoolVar(&targetOnly, "target-only", targetOnly, "build only
> target binaries, not host")
> -
> --      xflagparse(0)
> -+      xflagparse(-1)
> -+
> -+      if (hostOnly && targetOnly) {
> -+              fatalf("specify only one of --host-only or
> --target-only\n")
> -+      }
> -+      crossBuild = hostOnly || targetOnly
> -+      if flag.NArg() > 0 {
> -+              if crossBuild {
> -+                      toBuild = flag.Args()
> -+              } else {
> -+                      fatalf("package names not permitted without
> --host-only or --target-only\n")
> -+              }
> -+      }
> -
> -       if debug {
> -               // cmd/buildid is used in debug mode.
> -@@ -1207,8 +1230,13 @@ func cmdbootstrap() {
> -               xprintf("\n")
> -       }
> -
> --      gogcflags = os.Getenv("GO_GCFLAGS") // we were using
> $BOOT_GO_GCFLAGS until now
> --      goldflags = os.Getenv("GO_LDFLAGS")
> -+      // For split host/target cross/cross-canadian builds, we don't
> -+      // want to be setting these flags until after we have compiled
> -+      // the toolchain that runs on the build host.
> -+      if ! crossBuild {
> -+              gogcflags = os.Getenv("GO_GCFLAGS") // we were using
> $BOOT_GO_GCFLAGS until now
> -+              goldflags = os.Getenv("GO_LDFLAGS")
> -+      }
> -       goBootstrap := pathf("%s/go_bootstrap", tooldir)
> -       cmdGo := pathf("%s/go", gobin)
> -       if debug {
> -@@ -1237,7 +1265,11 @@ func cmdbootstrap() {
> -               xprintf("\n")
> -       }
> -       xprintf("Building Go toolchain2 using go_bootstrap and Go
> toolchain1.\n")
> --      os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> -+      if crossBuild {
> -+              os.Setenv("CC", defaultcc[""])
> -+      } else {
> -+              os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> -+      }
> -       goInstall(goBootstrap, append([]string{"-i"}, toolchain...)...)
> -       if debug {
> -               run("", ShowOutput|CheckExit, pathf("%s/compile",
> tooldir), "-V=full")
> -@@ -1274,50 +1306,84 @@ func cmdbootstrap() {
> -       }
> -       checkNotStale(goBootstrap, append(toolchain,
> "runtime/internal/sys")...)
> -
> --      if goos == oldgoos && goarch == oldgoarch {
> --              // Common case - not setting up for cross-compilation.
> --              timelog("build", "toolchain")
> --              if vflag > 0 {
> --                      xprintf("\n")
> -+      if crossBuild {
> -+              gogcflags = os.Getenv("GO_GCFLAGS")
> -+              goldflags = os.Getenv("GO_LDFLAGS")
> -+              tool_files, _ := filepath.Glob(pathf("%s/*", tooldir))
> -+              for _, f := range tool_files {
> -+                      copyfile(pathf("%s/%s", build_tooldir,
> filepath.Base(f)), f, writeExec)
> -+                      xremove(f)
> -+              }
> -+              os.Setenv("GOTOOLDIR", build_tooldir)
> -+              goBootstrap = pathf("%s/go_bootstrap", build_tooldir)
> -+              if hostOnly {
> -+                      timelog("build", "host toolchain")
> -+                      if vflag > 0 {
> -+                              xprintf("\n")
> -+                      }
> -+                      xprintf("Building %s for host, %s/%s.\n",
> strings.Join(toBuild, ","), goos, goarch)
> -+                      goInstall(goBootstrap, toBuild...)
> -+                      checkNotStale(goBootstrap, toBuild...)
> -+                      // Skip cmdGo staleness checks here, since we
> can't necessarily run the cmdGo binary
> -+
> -+                      timelog("build", "target toolchain")
> -+                      if vflag > 0 {
> -+                              xprintf("\n")
> -+                      }
> -+              } else if targetOnly {
> -+                      goos = oldgoos
> -+                      goarch = oldgoarch
> -+                      os.Setenv("GOOS", goos)
> -+                      os.Setenv("GOARCH", goarch)
> -+                      os.Setenv("CC", compilerEnvLookup(defaultcc, goos,
> goarch))
> -+                      xprintf("Building %s for target, %s/%s.\n",
> strings.Join(toBuild, ","), goos, goarch)
> -+                      goInstall(goBootstrap, toBuild...)
> -+                      checkNotStale(goBootstrap, toBuild...)
> -+                      // Skip cmdGo staleness checks here, since we
> can't run the target's cmdGo binary
> -               }
> --              xprintf("Building packages and commands for %s/%s.\n",
> goos, goarch)
> -       } else {
> --              // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
> --              // Finish GOHOSTOS/GOHOSTARCH installation and then
> --              // run GOOS/GOARCH installation.
> --              timelog("build", "host toolchain")
> --              if vflag > 0 {
> --                      xprintf("\n")
> -+
> -+              if goos == oldgoos && goarch == oldgoarch {
> -+                      // Common case - not setting up for
> cross-compilation.
> -+                      timelog("build", "toolchain")
> -+                      if vflag > 0 {
> -+                              xprintf("\n")
> -+                      }
> -+                      xprintf("Building packages and commands for
> %s/%s.\n", goos, goarch)
> -+              } else {
> -+                      // GOOS/GOARCH does not match GOHOSTOS/GOHOSTARCH.
> -+                      // Finish GOHOSTOS/GOHOSTARCH installation and then
> -+                      // run GOOS/GOARCH installation.
> -+                      timelog("build", "host toolchain")
> -+                      if vflag > 0 {
> -+                              xprintf("\n")
> -+                      }
> -+                      xprintf("Building packages and commands for host,
> %s/%s.\n", goos, goarch)
> -+                      goInstall(goBootstrap, "std", "cmd")
> -+                      checkNotStale(goBootstrap, "std", "cmd")
> -+                      checkNotStale(cmdGo, "std", "cmd")
> -+
> -+                      timelog("build", "target toolchain")
> -+                      if vflag > 0 {
> -+                              xprintf("\n")
> -+                      }
> -+                      goos = oldgoos
> -+                      goarch = oldgoarch
> -+                      os.Setenv("GOOS", goos)
> -+                      os.Setenv("GOARCH", goarch)
> -+                      os.Setenv("CC", compilerEnvLookup(defaultcc, goos,
> goarch))
> -+                      xprintf("Building packages and commands for
> target, %s/%s.\n", goos, goarch)
> -               }
> --              xprintf("Building packages and commands for host,
> %s/%s.\n", goos, goarch)
> -               goInstall(goBootstrap, "std", "cmd")
> -               checkNotStale(goBootstrap, "std", "cmd")
> -               checkNotStale(cmdGo, "std", "cmd")
> -
> --              timelog("build", "target toolchain")
> --              if vflag > 0 {
> --                      xprintf("\n")
> --              }
> --              goos = oldgoos
> --              goarch = oldgoarch
> --              os.Setenv("GOOS", goos)
> --              os.Setenv("GOARCH", goarch)
> --              os.Setenv("CC", compilerEnvLookup(defaultcc, goos, goarch))
> --              xprintf("Building packages and commands for target,
> %s/%s.\n", goos, goarch)
> --      }
> --      targets := []string{"std", "cmd"}
> --      if goos == "js" && goarch == "wasm" {
> --              // Skip the cmd tools for js/wasm. They're not usable.
> --              targets = targets[:1]
> --      }
> --      goInstall(goBootstrap, targets...)
> --      checkNotStale(goBootstrap, targets...)
> --      checkNotStale(cmdGo, targets...)
> --      if debug {
> --              run("", ShowOutput|CheckExit, pathf("%s/compile",
> tooldir), "-V=full")
> --              run("", ShowOutput|CheckExit, pathf("%s/buildid",
> tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos,
> goarch))
> --              checkNotStale(goBootstrap, append(toolchain,
> "runtime/internal/sys")...)
> --              copyfile(pathf("%s/compile4", tooldir),
> pathf("%s/compile", tooldir), writeExec)
> -+              if debug {
> -+                      run("", ShowOutput|CheckExit, pathf("%s/compile",
> tooldir), "-V=full")
> -+                      run("", ShowOutput|CheckExit, pathf("%s/buildid",
> tooldir), pathf("%s/pkg/%s_%s/runtime/internal/sys.a", goroot, goos,
> goarch))
> -+                      checkNotStale(goBootstrap, append(toolchain,
> "runtime/internal/sys")...)
> -+                      copyfile(pathf("%s/compile4", tooldir),
> pathf("%s/compile", tooldir), writeExec)
> -+              }
> -       }
> -
> -       // Check that there are no new files in $GOROOT/bin other than
> -@@ -1335,7 +1401,11 @@ func cmdbootstrap() {
> -       }
> -
> -       // Remove go_bootstrap now that we're done.
> --      xremove(pathf("%s/go_bootstrap", tooldir))
> -+      // Except that for split host/target cross-builds, we need to
> -+      // keep it.
> -+      if ! crossBuild {
> -+              xremove(pathf("%s/go_bootstrap", tooldir))
> -+      }
> -
> -       // Print trailing banner unless instructed otherwise.
> -       if !noBanner {
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0007-cmd-go-make-GOROOT-precious-by-default.patch
> b/meta/recipes-devtools/go/go-1.12/0007-cmd-go-make-GOROOT-precious-by-default.patch
> deleted file mode 100644
> index 29ef947abd..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0007-cmd-go-make-GOROOT-precious-by-default.patch
> +++ /dev/null
> @@ -1,106 +0,0 @@
> -From 7cc60b3887be2d5674b9f5d422d022976cf205e5 Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Fri, 2 Mar 2018 06:00:20 -0800
> -Subject: [PATCH] cmd/go: make GOROOT precious by default
> -
> -The go build tool normally rebuilds whatever it detects is
> -stale.  This can be a problem when GOROOT is intended to
> -be read-only and the go runtime has been built as a shared
> -library, since we don't want every application to be rebuilding
> -the shared runtime - particularly in cross-build/packaging
> -setups, since that would lead to 'abi mismatch' runtime errors.
> -
> -This patch prevents the install and linkshared actions from
> -installing to GOROOT unless overridden with the GOROOT_OVERRIDE
> -environment variable.
> -
> -Upstream-Status: Inappropriate [OE specific]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> ----
> - src/cmd/go/internal/work/action.go |  3 +++
> - src/cmd/go/internal/work/build.go  |  5 +++++
> - src/cmd/go/internal/work/exec.go   | 25 +++++++++++++++++++++++++
> - 3 files changed, 33 insertions(+)
> -
> -Index: go/src/cmd/go/internal/work/action.go
> -===================================================================
> ---- go.orig/src/cmd/go/internal/work/action.go
> -+++ go/src/cmd/go/internal/work/action.go
> -@@ -600,6 +600,9 @@ func (b *Builder) addTransitiveLinkDeps(
> -                       if p1 == nil || p1.Shlib == "" ||
> haveShlib[filepath.Base(p1.Shlib)] {
> -                               continue
> -                       }
> -+                      if goRootPrecious && (p1.Standard || p1.Goroot) {
> -+                              continue
> -+                      }
> -                       haveShlib[filepath.Base(p1.Shlib)] = true
> -                       // TODO(rsc): The use of ModeInstall here is
> suspect, but if we only do ModeBuild,
> -                       // we'll end up building an overall library or
> executable that depends at runtime
> -Index: go/src/cmd/go/internal/work/build.go
> -===================================================================
> ---- go.orig/src/cmd/go/internal/work/build.go
> -+++ go/src/cmd/go/internal/work/build.go
> -@@ -147,6 +147,7 @@ See also: go install, go get, go clean.
> - }
> -
> - const concurrentGCBackendCompilationEnabledByDefault = true
> -+var goRootPrecious bool = true
> -
> - func init() {
> -       // break init cycle
> -@@ -160,6 +161,10 @@ func init() {
> -
> -       AddBuildFlags(CmdBuild)
> -       AddBuildFlags(CmdInstall)
> -+
> -+      if x := os.Getenv("GOROOT_OVERRIDE"); x != "" {
> -+              goRootPrecious = false
> -+      }
> - }
> -
> - // Note that flags consulted by other parts of the code
> -Index: go/src/cmd/go/internal/work/exec.go
> -===================================================================
> ---- go.orig/src/cmd/go/internal/work/exec.go
> -+++ go/src/cmd/go/internal/work/exec.go
> -@@ -436,6 +436,23 @@ func (b *Builder) build(a *Action) (err
> -               return fmt.Errorf("missing or invalid binary-only package;
> expected file %q", a.Package.Target)
> -       }
> -
> -+      if goRootPrecious && (a.Package.Standard || a.Package.Goroot) {
> -+              _, err := os.Stat(a.Package.Target)
> -+              if err == nil {
> -+                      a.built = a.Package.Target
> -+                      a.Target = a.Package.Target
> -+                      a.buildID = b.fileHash(a.Package.Target)
> -+                      a.Package.Stale = false
> -+                      a.Package.StaleReason = "GOROOT-resident package"
> -+                      return nil
> -+              }
> -+              a.Package.Stale = true
> -+              a.Package.StaleReason = "missing or invalid
> GOROOT-resident package"
> -+              if b.IsCmdList {
> -+                      return nil
> -+              }
> -+      }
> -+
> -       if err := b.Mkdir(a.Objdir); err != nil {
> -               return err
> -       }
> -@@ -1438,6 +1455,14 @@ func BuildInstallFunc(b *Builder, a *Act
> -               return nil
> -       }
> -
> -+      if goRootPrecious && a.Package != nil {
> -+              p := a.Package
> -+              if p.Standard || p.Goroot {
> -+                      err := fmt.Errorf("attempting to install package
> %s into read-only GOROOT", p.ImportPath)
> -+                      return err
> -+              }
> -+      }
> -+
> -       if err := b.Mkdir(a.Objdir); err != nil {
> -               return err
> -       }
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch
> b/meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch
> deleted file mode 100644
> index 225cf439c5..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0008-use-GOBUILDMODE-to-set-buildmode.patch
> +++ /dev/null
> @@ -1,37 +0,0 @@
> -From 0e0c247f0caec23528889ff09d98348cba9028f1 Mon Sep 17 00:00:00 2001
> -From: Hongxu Jia <hongxu.jia at windriver.com>
> -Date: Fri, 26 Oct 2018 15:02:32 +0800
> -Subject: [PATCH] use GOBUILDMODE to set buildmode
> -
> -While building go itself, the go build system does not support
> -to set `-buildmode=pie' from environment.
> -
> -Add GOBUILDMODE to support it which make PIE executables the default
> -build mode, as PIE executables are required as of Yocto
> -
> -Refers: https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI
> -Upstream-Status
> <https://groups.google.com/forum/#!topic/golang-dev/gRCe5URKewI-Upstream-Status>:
> Denied [upstream choose antoher solution: `17a256b
> -cmd/go: -buildmode=pie for android/arm']
> -
> -Signed-off-by: Hongxu Jia <hongxu.jia at windriver.com>
> ----
> - src/cmd/go/internal/work/build.go | 6 +++++-
> - 1 file changed, 5 insertions(+), 1 deletion(-)
> -
> -Index: go/src/cmd/go/internal/work/build.go
> -===================================================================
> ---- go.orig/src/cmd/go/internal/work/build.go
> -+++ go/src/cmd/go/internal/work/build.go
> -@@ -223,7 +223,11 @@ func AddBuildFlags(cmd *base.Command) {
> -
> -       cmd.Flag.Var(&load.BuildAsmflags, "asmflags", "")
> -       cmd.Flag.Var(buildCompiler{}, "compiler", "")
> --      cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", "default", "")
> -+      if bm := os.Getenv("GOBUILDMODE"); bm != "" {
> -+              cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode", bm,
> "")
> -+      } else {
> -+              cmd.Flag.StringVar(&cfg.BuildBuildmode, "buildmode",
> "default", "")
> -+      }
> -       cmd.Flag.Var(&load.BuildGcflags, "gcflags", "")
> -       cmd.Flag.Var(&load.BuildGccgoflags, "gccgoflags", "")
> -       cmd.Flag.StringVar(&cfg.BuildMod, "mod", "", "")
> diff --git
> a/meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch
> b/meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch
> deleted file mode 100644
> index 840cf4bbd7..0000000000
> ---
> a/meta/recipes-devtools/go/go-1.12/0009-ld-replace-glibc-dynamic-linker-with-musl.patch
> +++ /dev/null
> @@ -1,112 +0,0 @@
> -From 35ea4be34e94912b00837e0f7c7385f2e98fe769 Mon Sep 17 00:00:00 2001
> -From: Matt Madison <matt at madison.systems>
> -Date: Sun, 18 Feb 2018 08:24:05 -0800
> -Subject: [PATCH] ld: replace glibc dynamic linker with musl
> -
> -Rework of patch by Khem Raj <raj.khem at gmail.com>
> -for go 1.10.  Should be applied conditionally on
> -musl being the system C library.
> -
> -Upstream-Status: Inappropriate [Real fix should be portable across libcs]
> -
> -Signed-off-by: Matt Madison <matt at madison.systems>
> -
> ----
> - src/cmd/link/internal/amd64/obj.go  | 2 +-
> - src/cmd/link/internal/arm/obj.go    | 2 +-
> - src/cmd/link/internal/arm64/obj.go  | 2 +-
> - src/cmd/link/internal/mips/obj.go   | 2 +-
> - src/cmd/link/internal/mips64/obj.go | 2 +-
> - src/cmd/link/internal/ppc64/obj.go  | 2 +-
> - src/cmd/link/internal/s390x/obj.go  | 2 +-
> - src/cmd/link/internal/x86/obj.go    | 2 +-
> - 8 files changed, 8 insertions(+), 8 deletions(-)
> -
> ---- a/src/cmd/link/internal/amd64/obj.go
> -+++ b/src/cmd/link/internal/amd64/obj.go
> -@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               PEreloc1:         pereloc1,
> -               TLSIEtoLE:        tlsIEtoLE,
> -
> --              Linuxdynld:     "/lib64/ld-linux-x86-64.so.2",
> -+              Linuxdynld:     "/lib64/ld-musl-x86-64.so.1",
> -               Freebsddynld:   "/libexec/ld-elf.so.1",
> -               Openbsddynld:   "/usr/libexec/ld.so",
> -               Netbsddynld:    "/libexec/ld.elf_so",
> ---- a/src/cmd/link/internal/arm/obj.go
> -+++ b/src/cmd/link/internal/arm/obj.go
> -@@ -59,7 +59,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               Machoreloc1:      machoreloc1,
> -               PEreloc1:         pereloc1,
> -
> --              Linuxdynld:     "/lib/ld-linux.so.3", // 2 for OABI, 3 for
> EABI
> -+              Linuxdynld:     "/lib/ld-musl-armhf.so.1",
> -               Freebsddynld:   "/usr/libexec/ld-elf.so.1",
> -               Openbsddynld:   "/usr/libexec/ld.so",
> -               Netbsddynld:    "/libexec/ld.elf_so",
> ---- a/src/cmd/link/internal/arm64/obj.go
> -+++ b/src/cmd/link/internal/arm64/obj.go
> -@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               Gentext:          gentext,
> -               Machoreloc1:      machoreloc1,
> -
> --              Linuxdynld: "/lib/ld-linux-aarch64.so.1",
> -+              Linuxdynld: "/lib/ld-musl-aarch64.so.1",
> -
> -               Freebsddynld:   "XXX",
> -               Openbsddynld:   "XXX",
> ---- a/src/cmd/link/internal/mips/obj.go
> -+++ b/src/cmd/link/internal/mips/obj.go
> -@@ -60,7 +60,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               Gentext:          gentext,
> -               Machoreloc1:      machoreloc1,
> -
> --              Linuxdynld: "/lib/ld.so.1",
> -+              Linuxdynld: "/lib/ld-musl-mipsle.so.1",
> -
> -               Freebsddynld:   "XXX",
> -               Openbsddynld:   "XXX",
> ---- a/src/cmd/link/internal/mips64/obj.go
> -+++ b/src/cmd/link/internal/mips64/obj.go
> -@@ -59,7 +59,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               Gentext:          gentext,
> -               Machoreloc1:      machoreloc1,
> -
> --              Linuxdynld:     "/lib64/ld64.so.1",
> -+              Linuxdynld:     "/lib64/ld-musl-mips64le.so.1",
> -               Freebsddynld:   "XXX",
> -               Openbsddynld:   "XXX",
> -               Netbsddynld:    "XXX",
> ---- a/src/cmd/link/internal/ppc64/obj.go
> -+++ b/src/cmd/link/internal/ppc64/obj.go
> -@@ -62,7 +62,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               Machoreloc1:      machoreloc1,
> -
> -               // TODO(austin): ABI v1 uses /usr/lib/ld.so.1,
> --              Linuxdynld: "/lib64/ld64.so.1",
> -+              Linuxdynld: "/lib64/ld-musl-powerpc64le.so.1",
> -
> -               Freebsddynld:   "XXX",
> -               Openbsddynld:   "XXX",
> ---- a/src/cmd/link/internal/s390x/obj.go
> -+++ b/src/cmd/link/internal/s390x/obj.go
> -@@ -57,7 +57,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               Gentext:          gentext,
> -               Machoreloc1:      machoreloc1,
> -
> --              Linuxdynld: "/lib64/ld64.so.1",
> -+              Linuxdynld: "/lib64/ld-musl-s390x.so.1",
> -
> -               // not relevant for s390x
> -               Freebsddynld:   "XXX",
> ---- a/src/cmd/link/internal/x86/obj.go
> -+++ b/src/cmd/link/internal/x86/obj.go
> -@@ -58,7 +58,7 @@ func Init() (*sys.Arch, ld.Arch) {
> -               Machoreloc1:      machoreloc1,
> -               PEreloc1:         pereloc1,
> -
> --              Linuxdynld:   "/lib/ld-linux.so.2",
> -+              Linuxdynld:   "/lib/ld-musl-i386.so.1",
> -               Freebsddynld: "/usr/libexec/ld-elf.so.1",
> -               Openbsddynld: "/usr/libexec/ld.so",
> -               Netbsddynld:  "/usr/libexec/ld.elf_so",
> diff --git a/meta/recipes-devtools/go/go-cross-canadian_1.12.bb
> b/meta/recipes-devtools/go/go-cross-canadian_1.12.bb
> deleted file mode 100644
> index 7ac9449e47..0000000000
> --- a/meta/recipes-devtools/go/go-cross-canadian_1.12.bb
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -require go-cross-canadian.inc
> -require go-${PV}.inc
> diff --git a/meta/recipes-devtools/go/go-cross_1.12.bb
> b/meta/recipes-devtools/go/go-cross_1.12.bb
> deleted file mode 100644
> index 80b5a03f6c..0000000000
> --- a/meta/recipes-devtools/go/go-cross_1.12.bb
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -require go-cross.inc
> -require go-${PV}.inc
> diff --git a/meta/recipes-devtools/go/go-crosssdk_1.12.bb
> b/meta/recipes-devtools/go/go-crosssdk_1.12.bb
> deleted file mode 100644
> index 1857c8a577..0000000000
> --- a/meta/recipes-devtools/go/go-crosssdk_1.12.bb
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -require go-crosssdk.inc
> -require go-${PV}.inc
> diff --git a/meta/recipes-devtools/go/go-native_1.12.bb
> b/meta/recipes-devtools/go/go-native_1.12.bb
> deleted file mode 100644
> index bbf3c0dd73..0000000000
> --- a/meta/recipes-devtools/go/go-native_1.12.bb
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -require ${PN}.inc
> -require go-${PV}.inc
> diff --git a/meta/recipes-devtools/go/go-runtime_1.12.bb
> b/meta/recipes-devtools/go/go-runtime_1.12.bb
> deleted file mode 100644
> index 43b68b4e46..0000000000
> --- a/meta/recipes-devtools/go/go-runtime_1.12.bb
> +++ /dev/null
> @@ -1,2 +0,0 @@
> -require go-${PV}.inc
> -require go-runtime.inc
> diff --git a/meta/recipes-devtools/go/go_1.12.bb
> b/meta/recipes-devtools/go/go_1.12.bb
> deleted file mode 100644
> index 42cdb0430a..0000000000
> --- a/meta/recipes-devtools/go/go_1.12.bb
> +++ /dev/null
> @@ -1,14 +0,0 @@
> -require go-${PV}.inc
> -require go-target.inc
> -
> -export GOBUILDMODE=""
> -
> -# Add pie to GOBUILDMODE to satisfy "textrel" QA checking, but mips
> -# doesn't support -buildmode=pie, so skip the QA checking for mips and its
> -# variants.
> -python() {
> -    if 'mips' in d.getVar('TARGET_ARCH'):
> -        d.appendVar('INSANE_SKIP_%s' % d.getVar('PN'), " textrel")
> -    else:
> -        d.setVar('GOBUILDMODE', 'pie')
> -}
> --
> 2.17.1 (Apple Git-112)
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20191025/f6cfae05/attachment-0001.html>


More information about the Openembedded-core mailing list