diff options
Diffstat (limited to 'import-layers/yocto-poky/meta/recipes-devtools/go')
57 files changed, 981 insertions, 1246 deletions
diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4.inc deleted file mode 100644 index 2f500f32b..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4.inc +++ /dev/null @@ -1,16 +0,0 @@ -require go-common.inc - -PV = "1.4.3" -GO_BASEVERSION = "1.4" -FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:" - -SRC_URI += "\ - file://016-armhf-elf-header.patch \ - file://go-cross-backport-cmd-link-support-new-386-amd64-rel.patch \ - file://syslog.patch \ - file://0001-cmd-ld-set-alignment-for-the-.rel.plt-section-on-32-.patch \ -" - -LIC_FILES_CHKSUM = "file://LICENSE;md5=591778525c869cdde0ab5a1bf283cd81" -SRC_URI[md5sum] = "dfb604511115dd402a77a553a5923a04" -SRC_URI[sha256sum] = "9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/0001-cmd-ld-set-alignment-for-the-.rel.plt-section-on-32-.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/0001-cmd-ld-set-alignment-for-the-.rel.plt-section-on-32-.patch deleted file mode 100644 index f2adc200b..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/0001-cmd-ld-set-alignment-for-the-.rel.plt-section-on-32-.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 855145d5c03c4b4faf60736c38d7a299c682af4a Mon Sep 17 00:00:00 2001 -From: Shenghou Ma <minux@golang.org> -Date: Sat, 7 Feb 2015 14:06:02 -0500 -Subject: [PATCH] cmd/ld: set alignment for the .rel.plt section on 32-bit - architectures - -Fixes #9802. - -Change-Id: I22c52a37bdb23a14cc4615c9519431bb14ca81ca -Reviewed-on: https://go-review.googlesource.com/4170 -Reviewed-by: Ian Lance Taylor <iant@golang.org> ---- -Upstream-Status: Backport -Signed-off-by: Khem Raj <raj.khem@gmail.com> - - src/cmd/ld/elf.c | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/src/cmd/ld/elf.c b/src/cmd/ld/elf.c -index 12ced98..97ed4bd 100644 ---- a/src/cmd/ld/elf.c -+++ b/src/cmd/ld/elf.c -@@ -1363,6 +1363,7 @@ asmbelf(vlong symo) - sh->type = SHT_REL; - sh->flags = SHF_ALLOC; - sh->entsize = ELF32RELSIZE; -+ sh->addralign = 4; - sh->link = elfshname(".dynsym")->shnum; - shsym(sh, linklookup(ctxt, ".rel.plt", 0)); - --- -1.9.1 - diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/016-armhf-elf-header.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/016-armhf-elf-header.patch deleted file mode 100644 index e6e414e52..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/016-armhf-elf-header.patch +++ /dev/null @@ -1,24 +0,0 @@ -Description: Use correct ELF header for armhf binaries. -Author: Adam Conrad <adconrad@ubuntu.com> -Last-Update: 2013-07-08 - -Upstream-Status: Pending -Signed-off-by: Khem Raj <raj.khem@gmail.com> - -Index: go/src/cmd/ld/elf.c -=================================================================== ---- go.orig/src/cmd/ld/elf.c 2015-02-20 10:49:58.763451586 -0800 -+++ go/src/cmd/ld/elf.c 2015-02-20 10:49:27.895478521 -0800 -@@ -57,7 +57,11 @@ - case '5': - // we use EABI on both linux/arm and freebsd/arm. - if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd) -- hdr.flags = 0x5000002; // has entry point, Version5 EABI -+#ifdef __ARM_PCS_VFP -+ hdr.flags = 0x5000402; // has entry point, Version5 EABI, hard-float ABI -+#else -+ hdr.flags = 0x5000202; // has entry point, Version5 EABI, soft-float ABI -+#endif - // fallthrough - default: - hdr.phoff = ELF32HDRSIZE; /* Must be be ELF32HDRSIZE: first PHdr must follow ELF header */ diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/go-cross-backport-cmd-link-support-new-386-amd64-rel.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/go-cross-backport-cmd-link-support-new-386-amd64-rel.patch deleted file mode 100644 index 95ca9d3aa..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/go-cross-backport-cmd-link-support-new-386-amd64-rel.patch +++ /dev/null @@ -1,225 +0,0 @@ -From d6eefad445831c161fca130f9bdf7b3848aac23c Mon Sep 17 00:00:00 2001 -From: Paul Gortmaker <paul.gortmaker@windriver.com> -Date: Tue, 29 Mar 2016 21:14:33 -0400 -Subject: [PATCH] go-cross: backport "cmd/link: support new 386/amd64 - relocations" - -Newer binutils won't support building older go-1.4.3 as per: - -https://github.com/golang/go/issues/13114 - -Upstream commit 914db9f060b1fd3eb1f74d48f3bd46a73d4ae9c7 (see subj) -was identified as the fix and nominated for 1.4.4 but that release -never happened. The paths in 1.4.3 aren't the same as go1.6beta1~662 -where this commit appeared, but the NetBSD folks indicated what a -1.4.3 backport would look like here: https://gnats.netbsd.org/50777 - -This is based on that, but without the BSD wrapper infrastructure -layer that makes things look like patches of patches. - -Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> - -Upstream-Status: Backport [ Partial ] - -diff --git a/src/cmd/6l/asm.c b/src/cmd/6l/asm.c -index 18b5aa311981..2e9d339aef87 100644 ---- a/src/cmd/6l/asm.c -+++ b/src/cmd/6l/asm.c -@@ -118,6 +118,8 @@ adddynrel(LSym *s, Reloc *r) - return; - - case 256 + R_X86_64_GOTPCREL: -+ case 256 + R_X86_64_GOTPCRELX: -+ case 256 + R_X86_64_REX_GOTPCRELX: - if(targ->type != SDYNIMPORT) { - // have symbol - if(r->off >= 2 && s->p[r->off-2] == 0x8b) { -diff --git a/src/cmd/8l/asm.c b/src/cmd/8l/asm.c -index 98c04240374f..cff29488e8af 100644 ---- a/src/cmd/8l/asm.c -+++ b/src/cmd/8l/asm.c -@@ -115,6 +115,7 @@ adddynrel(LSym *s, Reloc *r) - return; - - case 256 + R_386_GOT32: -+ case 256 + R_386_GOT32X: - if(targ->type != SDYNIMPORT) { - // have symbol - if(r->off >= 2 && s->p[r->off-2] == 0x8b) { -diff --git a/src/cmd/ld/elf.h b/src/cmd/ld/elf.h -index e84d996f2596..bbf2cfaa3cc0 100644 ---- a/src/cmd/ld/elf.h -+++ b/src/cmd/ld/elf.h -@@ -478,32 +478,47 @@ typedef struct { - * Relocation types. - */ - --#define R_X86_64_NONE 0 /* No relocation. */ --#define R_X86_64_64 1 /* Add 64 bit symbol value. */ --#define R_X86_64_PC32 2 /* PC-relative 32 bit signed sym value. */ --#define R_X86_64_GOT32 3 /* PC-relative 32 bit GOT offset. */ --#define R_X86_64_PLT32 4 /* PC-relative 32 bit PLT offset. */ --#define R_X86_64_COPY 5 /* Copy data from shared object. */ --#define R_X86_64_GLOB_DAT 6 /* Set GOT entry to data address. */ --#define R_X86_64_JMP_SLOT 7 /* Set GOT entry to code address. */ --#define R_X86_64_RELATIVE 8 /* Add load address of shared object. */ --#define R_X86_64_GOTPCREL 9 /* Add 32 bit signed pcrel offset to GOT. */ --#define R_X86_64_32 10 /* Add 32 bit zero extended symbol value */ --#define R_X86_64_32S 11 /* Add 32 bit sign extended symbol value */ --#define R_X86_64_16 12 /* Add 16 bit zero extended symbol value */ --#define R_X86_64_PC16 13 /* Add 16 bit signed extended pc relative symbol value */ --#define R_X86_64_8 14 /* Add 8 bit zero extended symbol value */ --#define R_X86_64_PC8 15 /* Add 8 bit signed extended pc relative symbol value */ --#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */ --#define R_X86_64_DTPOFF64 17 /* Offset in TLS block */ --#define R_X86_64_TPOFF64 18 /* Offset in static TLS block */ --#define R_X86_64_TLSGD 19 /* PC relative offset to GD GOT entry */ --#define R_X86_64_TLSLD 20 /* PC relative offset to LD GOT entry */ --#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */ --#define R_X86_64_GOTTPOFF 22 /* PC relative offset to IE GOT entry */ --#define R_X86_64_TPOFF32 23 /* Offset in static TLS block */ -- --#define R_X86_64_COUNT 24 /* Count of defined relocation types. */ -+#define R_X86_64_NONE 0 -+#define R_X86_64_64 1 -+#define R_X86_64_PC32 2 -+#define R_X86_64_GOT32 3 -+#define R_X86_64_PLT32 4 -+#define R_X86_64_COPY 5 -+#define R_X86_64_GLOB_DAT 6 -+#define R_X86_64_JMP_SLOT 7 -+#define R_X86_64_RELATIVE 8 -+#define R_X86_64_GOTPCREL 9 -+#define R_X86_64_32 10 -+#define R_X86_64_32S 11 -+#define R_X86_64_16 12 -+#define R_X86_64_PC16 13 -+#define R_X86_64_8 14 -+#define R_X86_64_PC8 15 -+#define R_X86_64_DTPMOD64 16 -+#define R_X86_64_DTPOFF64 17 -+#define R_X86_64_TPOFF64 18 -+#define R_X86_64_TLSGD 19 -+#define R_X86_64_TLSLD 20 -+#define R_X86_64_DTPOFF32 21 -+#define R_X86_64_GOTTPOFF 22 -+#define R_X86_64_TPOFF32 23 -+#define R_X86_64_PC64 24 -+#define R_X86_64_GOTOFF64 25 -+#define R_X86_64_GOTPC32 26 -+#define R_X86_64_GOT64 27 -+#define R_X86_64_GOTPCREL64 28 -+#define R_X86_64_GOTPC64 29 -+#define R_X86_64_GOTPLT64 30 -+#define R_X86_64_PLTOFF64 31 -+#define R_X86_64_SIZE32 32 -+#define R_X86_64_SIZE64 33 -+#define R_X86_64_GOTPC32_TLSDEC 34 -+#define R_X86_64_TLSDESC_CALL 35 -+#define R_X86_64_TLSDESC 36 -+#define R_X86_64_IRELATIVE 37 -+#define R_X86_64_PC32_BND 40 -+#define R_X86_64_GOTPCRELX 41 -+#define R_X86_64_REX_GOTPCRELX 42 - - - #define R_ALPHA_NONE 0 /* No reloc */ -@@ -581,39 +596,42 @@ typedef struct { - #define R_ARM_COUNT 38 /* Count of defined relocation types. */ - - --#define R_386_NONE 0 /* No relocation. */ --#define R_386_32 1 /* Add symbol value. */ --#define R_386_PC32 2 /* Add PC-relative symbol value. */ --#define R_386_GOT32 3 /* Add PC-relative GOT offset. */ --#define R_386_PLT32 4 /* Add PC-relative PLT offset. */ --#define R_386_COPY 5 /* Copy data from shared object. */ --#define R_386_GLOB_DAT 6 /* Set GOT entry to data address. */ --#define R_386_JMP_SLOT 7 /* Set GOT entry to code address. */ --#define R_386_RELATIVE 8 /* Add load address of shared object. */ --#define R_386_GOTOFF 9 /* Add GOT-relative symbol address. */ --#define R_386_GOTPC 10 /* Add PC-relative GOT table address. */ --#define R_386_TLS_TPOFF 14 /* Negative offset in static TLS block */ --#define R_386_TLS_IE 15 /* Absolute address of GOT for -ve static TLS */ --#define R_386_TLS_GOTIE 16 /* GOT entry for negative static TLS block */ --#define R_386_TLS_LE 17 /* Negative offset relative to static TLS */ --#define R_386_TLS_GD 18 /* 32 bit offset to GOT (index,off) pair */ --#define R_386_TLS_LDM 19 /* 32 bit offset to GOT (index,zero) pair */ --#define R_386_TLS_GD_32 24 /* 32 bit offset to GOT (index,off) pair */ --#define R_386_TLS_GD_PUSH 25 /* pushl instruction for Sun ABI GD sequence */ --#define R_386_TLS_GD_CALL 26 /* call instruction for Sun ABI GD sequence */ --#define R_386_TLS_GD_POP 27 /* popl instruction for Sun ABI GD sequence */ --#define R_386_TLS_LDM_32 28 /* 32 bit offset to GOT (index,zero) pair */ --#define R_386_TLS_LDM_PUSH 29 /* pushl instruction for Sun ABI LD sequence */ --#define R_386_TLS_LDM_CALL 30 /* call instruction for Sun ABI LD sequence */ --#define R_386_TLS_LDM_POP 31 /* popl instruction for Sun ABI LD sequence */ --#define R_386_TLS_LDO_32 32 /* 32 bit offset from start of TLS block */ --#define R_386_TLS_IE_32 33 /* 32 bit offset to GOT static TLS offset entry */ --#define R_386_TLS_LE_32 34 /* 32 bit offset within static TLS block */ --#define R_386_TLS_DTPMOD32 35 /* GOT entry containing TLS index */ --#define R_386_TLS_DTPOFF32 36 /* GOT entry containing TLS offset */ --#define R_386_TLS_TPOFF32 37 /* GOT entry of -ve static TLS offset */ -- --#define R_386_COUNT 38 /* Count of defined relocation types. */ -+#define R_386_NONE 0 -+#define R_386_32 1 -+#define R_386_PC32 2 -+#define R_386_GOT32 3 -+#define R_386_PLT32 4 -+#define R_386_COPY 5 -+#define R_386_GLOB_DAT 6 -+#define R_386_JMP_SLOT 7 -+#define R_386_RELATIVE 8 -+#define R_386_GOTOFF 9 -+#define R_386_GOTPC 10 -+#define R_386_TLS_TPOFF 14 -+#define R_386_TLS_IE 15 -+#define R_386_TLS_GOTIE 16 -+#define R_386_TLS_LE 17 -+#define R_386_TLS_GD 18 -+#define R_386_TLS_LDM 19 -+#define R_386_TLS_GD_32 24 -+#define R_386_TLS_GD_PUSH 25 -+#define R_386_TLS_GD_CALL 26 -+#define R_386_TLS_GD_POP 27 -+#define R_386_TLS_LDM_32 28 -+#define R_386_TLS_LDM_PUSH 29 -+#define R_386_TLS_LDM_CALL 30 -+#define R_386_TLS_LDM_POP 31 -+#define R_386_TLS_LDO_32 32 -+#define R_386_TLS_IE_32 33 -+#define R_386_TLS_LE_32 34 -+#define R_386_TLS_DTPMOD32 35 -+#define R_386_TLS_DTPOFF32 36 -+#define R_386_TLS_TPOFF32 37 -+#define R_386_TLS_GOTDESC 39 -+#define R_386_TLS_DESC_CALL 40 -+#define R_386_TLS_DESC 41 -+#define R_386_IRELATIVE 42 -+#define R_386_GOT32X 43 - - #define R_PPC_NONE 0 /* No relocation. */ - #define R_PPC_ADDR32 1 -diff --git a/src/cmd/ld/ldelf.c b/src/cmd/ld/ldelf.c -index dd5fa0d2a839..2e2fbd17377f 100644 ---- a/src/cmd/ld/ldelf.c -+++ b/src/cmd/ld/ldelf.c -@@ -888,12 +888,15 @@ reltype(char *pn, int elftype, uchar *siz) - case R('6', R_X86_64_PC32): - case R('6', R_X86_64_PLT32): - case R('6', R_X86_64_GOTPCREL): -+ case R('6', R_X86_64_GOTPCRELX): -+ case R('6', R_X86_64_REX_GOTPCRELX): - case R('8', R_386_32): - case R('8', R_386_PC32): - case R('8', R_386_GOT32): - case R('8', R_386_PLT32): - case R('8', R_386_GOTOFF): - case R('8', R_386_GOTPC): -+ case R('8', R_386_GOT32X): - *siz = 4; - break; - case R('6', R_X86_64_64): --- -2.7.2 - diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/syslog.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/syslog.patch deleted file mode 100644 index 29be06f1b..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.4/syslog.patch +++ /dev/null @@ -1,62 +0,0 @@ -Add timeouts to logger - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending - -diff -r -u go/src/log/syslog/syslog.go /home/achang/GOCOPY/go/src/log/syslog/syslog.go ---- go/src/log/syslog/syslog.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog.go 2014-10-03 11:44:37.710403200 -0700 -@@ -33,6 +33,9 @@ - const severityMask = 0x07 - const facilityMask = 0xf8 - -+var writeTimeout = 1 * time.Second -+var connectTimeout = 1 * time.Second -+ - const ( - // Severity. - -@@ -100,6 +103,7 @@ - type serverConn interface { - writeString(p Priority, hostname, tag, s, nl string) error - close() error -+ setWriteDeadline(t time.Time) error - } - - type netConn struct { -@@ -273,7 +277,11 @@ - nl = "\n" - } - -- err := w.conn.writeString(p, w.hostname, w.tag, msg, nl) -+ err := w.conn.setWriteDeadline(time.Now().Add(writeTimeout)) -+ if err != nil { -+ return 0, err -+ } -+ err = w.conn.writeString(p, w.hostname, w.tag, msg, nl) - if err != nil { - return 0, err - } -@@ -305,6 +313,10 @@ - return n.conn.Close() - } - -+func (n *netConn) setWriteDeadline(t time.Time) error { -+ return n.conn.SetWriteDeadline(t) -+} -+ - // NewLogger creates a log.Logger whose output is written to - // the system log service with the specified priority. The logFlag - // argument is the flag set passed through to log.New to create -diff -r -u go/src/log/syslog/syslog_unix.go /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go ---- go/src/log/syslog/syslog_unix.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go 2014-10-03 11:44:39.010403175 -0700 -@@ -19,7 +19,7 @@ - logPaths := []string{"/dev/log", "/var/run/syslog"} - for _, network := range logTypes { - for _, path := range logPaths { -- conn, err := net.Dial(network, path) -+ conn, err := net.DialTimeout(network, path, connectTimeout) - if err != nil { - continue - } else { diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6.inc deleted file mode 100644 index 769c1d8f2..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6.inc +++ /dev/null @@ -1,19 +0,0 @@ -require go-common.inc - -PV = "1.6.3" -GO_BASEVERSION = "1.6" -FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:" - -LIC_FILES_CHKSUM = "file://LICENSE;md5=591778525c869cdde0ab5a1bf283cd81" - -SRC_URI += "\ - file://armhf-elf-header.patch \ - file://syslog.patch \ - file://fix-target-cc-for-build.patch \ - file://fix-cc-handling.patch \ - file://split-host-and-target-build.patch \ - file://gotooldir.patch \ -" -SRC_URI[md5sum] = "bf3fce6ccaadd310159c9e874220e2a2" -SRC_URI[sha256sum] = "6326aeed5f86cf18f16d6dc831405614f855e2d416a91fd3fdc334f772345b00" - diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/armhf-elf-header.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/armhf-elf-header.patch deleted file mode 100644 index 1e3a16b31..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/armhf-elf-header.patch +++ /dev/null @@ -1,23 +0,0 @@ -Encode arm EABI ( hard/soft ) calling convention in ELF header - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/cmd/link/internal/ld/elf.go -=================================================================== ---- go.orig/src/cmd/link/internal/ld/elf.go -+++ go/src/cmd/link/internal/ld/elf.go -@@ -827,7 +827,13 @@ - // 32-bit architectures - case '5': - // we use EABI on both linux/arm and freebsd/arm. -- if HEADTYPE == obj.Hlinux || HEADTYPE == obj.Hfreebsd { -+ if HEADTYPE == obj.Hlinux { -+ if Ctxt.Goarm == 7 { -+ ehdr.flags = 0x5000402 // has entry point, Version5 EABI, hard float -+ } else { -+ ehdr.flags = 0x5000202 // has entry point, Version5 EABI, soft float -+ } -+ } else if HEADTYPE == obj.Hfreebsd { - // We set a value here that makes no indication of which - // float ABI the object uses, because this is information - // used by the dynamic linker to compare executables and diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/fix-cc-handling.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/fix-cc-handling.patch deleted file mode 100644 index 983323ace..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/fix-cc-handling.patch +++ /dev/null @@ -1,50 +0,0 @@ -Accept CC with multiple words in its name - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/cmd/go/build.go -=================================================================== ---- go.orig/src/cmd/go/build.go 2015-07-29 14:48:40.323185807 -0700 -+++ go/src/cmd/go/build.go 2015-07-30 07:37:40.529818586 -0700 -@@ -2805,12 +2805,24 @@ - return b.ccompilerCmd("CC", defaultCC, objdir) - } - -+// gccCmd returns a gcc command line prefix -+// defaultCC is defined in zdefaultcc.go, written by cmd/dist. -+func (b *builder) gccCmdForReal() []string { -+ return envList("CC", defaultCC) -+} -+ - // gxxCmd returns a g++ command line prefix - // defaultCXX is defined in zdefaultcc.go, written by cmd/dist. - func (b *builder) gxxCmd(objdir string) []string { - return b.ccompilerCmd("CXX", defaultCXX, objdir) - } - -+// gxxCmd returns a g++ command line prefix -+// defaultCXX is defined in zdefaultcc.go, written by cmd/dist. -+func (b *builder) gxxCmdForReal() []string { -+ return envList("CXX", defaultCXX) -+} -+ - // ccompilerCmd returns a command line prefix for the given environment - // variable and using the default command when the variable is empty. - func (b *builder) ccompilerCmd(envvar, defcmd, objdir string) []string { -Index: go/src/cmd/go/env.go -=================================================================== ---- go.orig/src/cmd/go/env.go 2015-07-29 14:48:40.323185807 -0700 -+++ go/src/cmd/go/env.go 2015-07-30 07:40:54.461655721 -0700 -@@ -52,10 +52,9 @@ - - if goos != "plan9" { - cmd := b.gccCmd(".") -- env = append(env, envVar{"CC", cmd[0]}) -+ env = append(env, envVar{"CC", strings.Join(b.gccCmdForReal(), " ")}) - env = append(env, envVar{"GOGCCFLAGS", strings.Join(cmd[3:], " ")}) -- cmd = b.gxxCmd(".") -- env = append(env, envVar{"CXX", cmd[0]}) -+ env = append(env, envVar{"CXX", strings.Join(b.gxxCmdForReal(), " ")}) - } - - if buildContext.CgoEnabled { diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/fix-target-cc-for-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/fix-target-cc-for-build.patch deleted file mode 100644 index 2f6156ecd..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/fix-target-cc-for-build.patch +++ /dev/null @@ -1,17 +0,0 @@ -Put Quotes around CC_FOR_TARGET since it can be mutliple words e.g. in OE - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/make.bash -=================================================================== ---- go.orig/src/make.bash 2015-07-29 13:28:11.334031696 -0700 -+++ go/src/make.bash 2015-07-29 13:36:55.814465630 -0700 -@@ -158,7 +158,7 @@ - fi - - echo "##### Building packages and commands for $GOOS/$GOARCH." --CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd -+CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd - echo - - rm -f "$GOTOOLDIR"/go_bootstrap diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/gotooldir.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/gotooldir.patch deleted file mode 100644 index 94670259f..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/gotooldir.patch +++ /dev/null @@ -1,30 +0,0 @@ -Define tooldir in relation to GOTOOLDIR env var - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/go/build/build.go -=================================================================== ---- go.orig/src/go/build/build.go -+++ go/src/go/build/build.go -@@ -1388,7 +1388,7 @@ func init() { - } - - // ToolDir is the directory containing build tools. --var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH) -+var ToolDir = envOr("GOTOOLDIR", filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)) - - // IsLocalImport reports whether the import path is - // a local import path, like ".", "..", "./foo", or "../foo". -Index: go/src/cmd/go/build.go -=================================================================== ---- go.orig/src/cmd/go/build.go -+++ go/src/cmd/go/build.go -@@ -1312,7 +1312,7 @@ func (b *builder) build(a *action) (err - } - - cgoExe := tool("cgo") -- if a.cgo != nil && a.cgo.target != "" { -+ if a.cgo != nil && a.cgo.target != "" && os.Getenv("GOTOOLDIR") == "" { - cgoExe = a.cgo.target - } - outGo, outObj, err := b.cgo(a.p, cgoExe, obj, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, cxxfiles, a.p.MFiles) diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/syslog.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/syslog.patch deleted file mode 100644 index 29be06f1b..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/syslog.patch +++ /dev/null @@ -1,62 +0,0 @@ -Add timeouts to logger - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending - -diff -r -u go/src/log/syslog/syslog.go /home/achang/GOCOPY/go/src/log/syslog/syslog.go ---- go/src/log/syslog/syslog.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog.go 2014-10-03 11:44:37.710403200 -0700 -@@ -33,6 +33,9 @@ - const severityMask = 0x07 - const facilityMask = 0xf8 - -+var writeTimeout = 1 * time.Second -+var connectTimeout = 1 * time.Second -+ - const ( - // Severity. - -@@ -100,6 +103,7 @@ - type serverConn interface { - writeString(p Priority, hostname, tag, s, nl string) error - close() error -+ setWriteDeadline(t time.Time) error - } - - type netConn struct { -@@ -273,7 +277,11 @@ - nl = "\n" - } - -- err := w.conn.writeString(p, w.hostname, w.tag, msg, nl) -+ err := w.conn.setWriteDeadline(time.Now().Add(writeTimeout)) -+ if err != nil { -+ return 0, err -+ } -+ err = w.conn.writeString(p, w.hostname, w.tag, msg, nl) - if err != nil { - return 0, err - } -@@ -305,6 +313,10 @@ - return n.conn.Close() - } - -+func (n *netConn) setWriteDeadline(t time.Time) error { -+ return n.conn.SetWriteDeadline(t) -+} -+ - // NewLogger creates a log.Logger whose output is written to - // the system log service with the specified priority. The logFlag - // argument is the flag set passed through to log.New to create -diff -r -u go/src/log/syslog/syslog_unix.go /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go ---- go/src/log/syslog/syslog_unix.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go 2014-10-03 11:44:39.010403175 -0700 -@@ -19,7 +19,7 @@ - logPaths := []string{"/dev/log", "/var/run/syslog"} - for _, network := range logTypes { - for _, path := range logPaths { -- conn, err := net.Dial(network, path) -+ conn, err := net.DialTimeout(network, path, connectTimeout) - if err != nil { - continue - } else { diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7.inc deleted file mode 100644 index 5c3004e87..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7.inc +++ /dev/null @@ -1,19 +0,0 @@ -require go-common.inc - -PV = "1.7.4" -GO_BASEVERSION = "1.7" -FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:" - -LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707" - -SRC_URI += "\ - file://armhf-elf-header.patch \ - file://syslog.patch \ - file://fix-target-cc-for-build.patch \ - file://fix-cc-handling.patch \ - file://split-host-and-target-build.patch \ - file://gotooldir.patch \ -" -SRC_URI[md5sum] = "49c1076428a5d3b5ad7ac65233fcca2f" -SRC_URI[sha256sum] = "4c189111e9ba651a2bb3ee868aa881fab36b2f2da3409e80885ca758a6b614cc" - diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/armhf-elf-header.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/armhf-elf-header.patch deleted file mode 100644 index 1e3a16b31..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/armhf-elf-header.patch +++ /dev/null @@ -1,23 +0,0 @@ -Encode arm EABI ( hard/soft ) calling convention in ELF header - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/cmd/link/internal/ld/elf.go -=================================================================== ---- go.orig/src/cmd/link/internal/ld/elf.go -+++ go/src/cmd/link/internal/ld/elf.go -@@ -827,7 +827,13 @@ - // 32-bit architectures - case '5': - // we use EABI on both linux/arm and freebsd/arm. -- if HEADTYPE == obj.Hlinux || HEADTYPE == obj.Hfreebsd { -+ if HEADTYPE == obj.Hlinux { -+ if Ctxt.Goarm == 7 { -+ ehdr.flags = 0x5000402 // has entry point, Version5 EABI, hard float -+ } else { -+ ehdr.flags = 0x5000202 // has entry point, Version5 EABI, soft float -+ } -+ } else if HEADTYPE == obj.Hfreebsd { - // We set a value here that makes no indication of which - // float ABI the object uses, because this is information - // used by the dynamic linker to compare executables and diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/fix-cc-handling.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/fix-cc-handling.patch deleted file mode 100644 index a67caf41a..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/fix-cc-handling.patch +++ /dev/null @@ -1,50 +0,0 @@ -Accept CC with multiple words in its name - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/cmd/go/build.go -=================================================================== ---- go.orig/src/cmd/go/build.go -+++ go/src/cmd/go/build.go -@@ -2991,12 +2991,24 @@ func (b *builder) gccCmd(objdir string) - return b.ccompilerCmd("CC", defaultCC, objdir) - } - -+// gccCmd returns a gcc command line prefix -+// defaultCC is defined in zdefaultcc.go, written by cmd/dist. -+func (b *builder) gccCmdForReal() []string { -+ return envList("CC", defaultCC) -+} -+ - // gxxCmd returns a g++ command line prefix - // defaultCXX is defined in zdefaultcc.go, written by cmd/dist. - func (b *builder) gxxCmd(objdir string) []string { - return b.ccompilerCmd("CXX", defaultCXX, objdir) - } - -+// gxxCmd returns a g++ command line prefix -+// defaultCXX is defined in zdefaultcc.go, written by cmd/dist. -+func (b *builder) gxxCmdForReal() []string { -+ return envList("CXX", defaultCXX) -+} -+ - // gfortranCmd returns a gfortran command line prefix. - func (b *builder) gfortranCmd(objdir string) []string { - return b.ccompilerCmd("FC", "gfortran", objdir) -Index: go/src/cmd/go/env.go -=================================================================== ---- go.orig/src/cmd/go/env.go -+++ go/src/cmd/go/env.go -@@ -51,10 +51,9 @@ func mkEnv() []envVar { - - if goos != "plan9" { - cmd := b.gccCmd(".") -- env = append(env, envVar{"CC", cmd[0]}) -+ env = append(env, envVar{"CC", strings.Join(b.gccCmdForReal(), " ")}) - env = append(env, envVar{"GOGCCFLAGS", strings.Join(cmd[3:], " ")}) -- cmd = b.gxxCmd(".") -- env = append(env, envVar{"CXX", cmd[0]}) -+ env = append(env, envVar{"CXX", strings.Join(b.gxxCmdForReal(), " ")}) - } - - if buildContext.CgoEnabled { diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/fix-target-cc-for-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/fix-target-cc-for-build.patch deleted file mode 100644 index 2f6156ecd..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/fix-target-cc-for-build.patch +++ /dev/null @@ -1,17 +0,0 @@ -Put Quotes around CC_FOR_TARGET since it can be mutliple words e.g. in OE - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/make.bash -=================================================================== ---- go.orig/src/make.bash 2015-07-29 13:28:11.334031696 -0700 -+++ go/src/make.bash 2015-07-29 13:36:55.814465630 -0700 -@@ -158,7 +158,7 @@ - fi - - echo "##### Building packages and commands for $GOOS/$GOARCH." --CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd -+CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd - echo - - rm -f "$GOTOOLDIR"/go_bootstrap diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/gotooldir.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/gotooldir.patch deleted file mode 100644 index 94670259f..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/gotooldir.patch +++ /dev/null @@ -1,30 +0,0 @@ -Define tooldir in relation to GOTOOLDIR env var - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/go/build/build.go -=================================================================== ---- go.orig/src/go/build/build.go -+++ go/src/go/build/build.go -@@ -1388,7 +1388,7 @@ func init() { - } - - // ToolDir is the directory containing build tools. --var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH) -+var ToolDir = envOr("GOTOOLDIR", filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)) - - // IsLocalImport reports whether the import path is - // a local import path, like ".", "..", "./foo", or "../foo". -Index: go/src/cmd/go/build.go -=================================================================== ---- go.orig/src/cmd/go/build.go -+++ go/src/cmd/go/build.go -@@ -1312,7 +1312,7 @@ func (b *builder) build(a *action) (err - } - - cgoExe := tool("cgo") -- if a.cgo != nil && a.cgo.target != "" { -+ if a.cgo != nil && a.cgo.target != "" && os.Getenv("GOTOOLDIR") == "" { - cgoExe = a.cgo.target - } - outGo, outObj, err := b.cgo(a.p, cgoExe, obj, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, cxxfiles, a.p.MFiles) diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/split-host-and-target-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/split-host-and-target-build.patch deleted file mode 100644 index b0dd95bbe..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/split-host-and-target-build.patch +++ /dev/null @@ -1,62 +0,0 @@ -Add new option --target-only to build target components -Separates the host and target pieces of build - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/make.bash -=================================================================== ---- go.orig/src/make.bash -+++ go/src/make.bash -@@ -154,13 +154,22 @@ if [ "$1" = "--no-clean" ]; then - buildall="" - shift - fi --./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap -+do_host_build="yes" -+do_target_build="yes" -+if [ "$1" = "--target-only" ]; then -+ do_host_build="no" -+ shift -+elif [ "$1" = "--host-only" ]; then -+ do_target_build="no" -+ shift -+fi - --# Delay move of dist tool to now, because bootstrap may clear tool directory. --mv cmd/dist/dist "$GOTOOLDIR"/dist --echo -+if [ "$do_host_build" = "yes" ]; then -+ ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap -+ # Delay move of dist tool to now, because bootstrap may clear tool directory. -+ mv cmd/dist/dist "$GOTOOLDIR"/dist -+ echo - --if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then - echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH." - # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however, - # use the host compiler, CC, from `cmd/dist/dist env` instead. -@@ -169,11 +178,20 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOH - echo - fi - --echo "##### Building packages and commands for $GOOS/$GOARCH." --CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd --echo -+if [ "$do_target_build" = "yes" ]; then -+ GO_INSTALL="${GO_TARGET_INSTALL:-std cmd}" -+ echo "##### Building packages and commands for $GOOS/$GOARCH." -+ if [ "$GOHOSTOS" = "$GOOS" -a "$GOHOSTARCH" = "$GOARCH" -a "$do_host_build" = "yes" ]; then -+ rm -rf ./host-tools -+ mkdir ./host-tools -+ mv "$GOTOOLDIR"/* ./host-tools -+ GOTOOLDIR="$PWD/host-tools" -+ fi -+ GOTOOLDIR="$GOTOOLDIR" CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v ${GO_INSTALL} -+ echo - --rm -f "$GOTOOLDIR"/go_bootstrap -+ rm -f "$GOTOOLDIR"/go_bootstrap -+fi - - if [ "$1" != "--no-banner" ]; then - "$GOTOOLDIR"/dist banner diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/syslog.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/syslog.patch deleted file mode 100644 index 29be06f1b..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.7/syslog.patch +++ /dev/null @@ -1,62 +0,0 @@ -Add timeouts to logger - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending - -diff -r -u go/src/log/syslog/syslog.go /home/achang/GOCOPY/go/src/log/syslog/syslog.go ---- go/src/log/syslog/syslog.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog.go 2014-10-03 11:44:37.710403200 -0700 -@@ -33,6 +33,9 @@ - const severityMask = 0x07 - const facilityMask = 0xf8 - -+var writeTimeout = 1 * time.Second -+var connectTimeout = 1 * time.Second -+ - const ( - // Severity. - -@@ -100,6 +103,7 @@ - type serverConn interface { - writeString(p Priority, hostname, tag, s, nl string) error - close() error -+ setWriteDeadline(t time.Time) error - } - - type netConn struct { -@@ -273,7 +277,11 @@ - nl = "\n" - } - -- err := w.conn.writeString(p, w.hostname, w.tag, msg, nl) -+ err := w.conn.setWriteDeadline(time.Now().Add(writeTimeout)) -+ if err != nil { -+ return 0, err -+ } -+ err = w.conn.writeString(p, w.hostname, w.tag, msg, nl) - if err != nil { - return 0, err - } -@@ -305,6 +313,10 @@ - return n.conn.Close() - } - -+func (n *netConn) setWriteDeadline(t time.Time) error { -+ return n.conn.SetWriteDeadline(t) -+} -+ - // NewLogger creates a log.Logger whose output is written to - // the system log service with the specified priority. The logFlag - // argument is the flag set passed through to log.New to create -diff -r -u go/src/log/syslog/syslog_unix.go /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go ---- go/src/log/syslog/syslog_unix.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go 2014-10-03 11:44:39.010403175 -0700 -@@ -19,7 +19,7 @@ - logPaths := []string{"/dev/log", "/var/run/syslog"} - for _, network := range logTypes { - for _, path := range logPaths { -- conn, err := net.Dial(network, path) -+ conn, err := net.DialTimeout(network, path, connectTimeout) - if err != nil { - continue - } else { diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8.inc deleted file mode 100644 index 5c376a2eb..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8.inc +++ /dev/null @@ -1,19 +0,0 @@ -require go-common.inc - -GOMINOR = "" -GO_BASEVERSION = "1.8" -PV .= "${GOMINOR}" -FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:" - -LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707" - -SRC_URI += "\ - file://armhf-elf-header.patch \ - file://syslog.patch \ - file://fix-target-cc-for-build.patch \ - file://fix-cc-handling.patch \ - file://split-host-and-target-build.patch \ - file://gotooldir.patch \ -" -SRC_URI[md5sum] = "7743960c968760437b6e39093cfe6f67" -SRC_URI[sha256sum] = "406865f587b44be7092f206d73fc1de252600b79b3cacc587b74b5ef5c623596" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/armhf-elf-header.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/armhf-elf-header.patch deleted file mode 100644 index 3508838e8..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/armhf-elf-header.patch +++ /dev/null @@ -1,23 +0,0 @@ -Encode arm EABI ( hard/soft ) calling convention in ELF header - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/cmd/link/internal/ld/elf.go -=================================================================== ---- go.orig/src/cmd/link/internal/ld/elf.go -+++ go/src/cmd/link/internal/ld/elf.go -@@ -950,7 +950,13 @@ func Elfinit(ctxt *Link) { - case sys.ARM, sys.MIPS: - if SysArch.Family == sys.ARM { - // we use EABI on linux/arm, freebsd/arm, netbsd/arm. -- if Headtype == obj.Hlinux || Headtype == obj.Hfreebsd || Headtype == obj.Hnetbsd { -+ if Headtype == obj.Hlinux { -+ if obj.GOARM == 7 { -+ ehdr.flags = 0x5000402 // has entry point, Version5 EABI, hard float -+ } else { -+ ehdr.flags = 0x5000202 // has entry point, Version5 EABI, soft float -+ } -+ } else if Headtype == obj.Hfreebsd || Headtype == obj.Hnetbsd { - // We set a value here that makes no indication of which - // float ABI the object uses, because this is information - // used by the dynamic linker to compare executables and diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/fix-cc-handling.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/fix-cc-handling.patch deleted file mode 100644 index dc9b811b2..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/fix-cc-handling.patch +++ /dev/null @@ -1,50 +0,0 @@ -Accept CC with multiple words in its name - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/cmd/go/build.go -=================================================================== ---- go.orig/src/cmd/go/build.go -+++ go/src/cmd/go/build.go -@@ -3100,12 +3100,24 @@ func (b *builder) gccCmd(objdir string) - return b.ccompilerCmd("CC", defaultCC, objdir) - } - -+// gccCmd returns a gcc command line prefix -+// defaultCC is defined in zdefaultcc.go, written by cmd/dist. -+func (b *builder) gccCmdForReal() []string { -+ return envList("CC", defaultCC) -+} -+ - // gxxCmd returns a g++ command line prefix - // defaultCXX is defined in zdefaultcc.go, written by cmd/dist. - func (b *builder) gxxCmd(objdir string) []string { - return b.ccompilerCmd("CXX", defaultCXX, objdir) - } - -+// gxxCmd returns a g++ command line prefix -+// defaultCXX is defined in zdefaultcc.go, written by cmd/dist. -+func (b *builder) gxxCmdForReal() []string { -+ return envList("CXX", defaultCXX) -+} -+ - // gfortranCmd returns a gfortran command line prefix. - func (b *builder) gfortranCmd(objdir string) []string { - return b.ccompilerCmd("FC", "gfortran", objdir) -Index: go/src/cmd/go/env.go -=================================================================== ---- go.orig/src/cmd/go/env.go -+++ go/src/cmd/go/env.go -@@ -63,10 +63,9 @@ func mkEnv() []envVar { - } - - cmd := b.gccCmd(".") -- env = append(env, envVar{"CC", cmd[0]}) -+ env = append(env, envVar{"CC", strings.Join(b.gccCmdForReal(), " ")}) - env = append(env, envVar{"GOGCCFLAGS", strings.Join(cmd[3:], " ")}) -- cmd = b.gxxCmd(".") -- env = append(env, envVar{"CXX", cmd[0]}) -+ env = append(env, envVar{"CXX", strings.Join(b.gxxCmdForReal(), " ")}) - - if buildContext.CgoEnabled { - env = append(env, envVar{"CGO_ENABLED", "1"}) diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/fix-target-cc-for-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/fix-target-cc-for-build.patch deleted file mode 100644 index 2f6156ecd..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/fix-target-cc-for-build.patch +++ /dev/null @@ -1,17 +0,0 @@ -Put Quotes around CC_FOR_TARGET since it can be mutliple words e.g. in OE - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/make.bash -=================================================================== ---- go.orig/src/make.bash 2015-07-29 13:28:11.334031696 -0700 -+++ go/src/make.bash 2015-07-29 13:36:55.814465630 -0700 -@@ -158,7 +158,7 @@ - fi - - echo "##### Building packages and commands for $GOOS/$GOARCH." --CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd -+CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd - echo - - rm -f "$GOTOOLDIR"/go_bootstrap diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/gotooldir.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/gotooldir.patch deleted file mode 100644 index 94670259f..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/gotooldir.patch +++ /dev/null @@ -1,30 +0,0 @@ -Define tooldir in relation to GOTOOLDIR env var - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/go/build/build.go -=================================================================== ---- go.orig/src/go/build/build.go -+++ go/src/go/build/build.go -@@ -1388,7 +1388,7 @@ func init() { - } - - // ToolDir is the directory containing build tools. --var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH) -+var ToolDir = envOr("GOTOOLDIR", filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)) - - // IsLocalImport reports whether the import path is - // a local import path, like ".", "..", "./foo", or "../foo". -Index: go/src/cmd/go/build.go -=================================================================== ---- go.orig/src/cmd/go/build.go -+++ go/src/cmd/go/build.go -@@ -1312,7 +1312,7 @@ func (b *builder) build(a *action) (err - } - - cgoExe := tool("cgo") -- if a.cgo != nil && a.cgo.target != "" { -+ if a.cgo != nil && a.cgo.target != "" && os.Getenv("GOTOOLDIR") == "" { - cgoExe = a.cgo.target - } - outGo, outObj, err := b.cgo(a.p, cgoExe, obj, pcCFLAGS, pcLDFLAGS, cgofiles, gccfiles, cxxfiles, a.p.MFiles) diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/split-host-and-target-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/split-host-and-target-build.patch deleted file mode 100644 index b0dd95bbe..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/split-host-and-target-build.patch +++ /dev/null @@ -1,62 +0,0 @@ -Add new option --target-only to build target components -Separates the host and target pieces of build - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending -Index: go/src/make.bash -=================================================================== ---- go.orig/src/make.bash -+++ go/src/make.bash -@@ -154,13 +154,22 @@ if [ "$1" = "--no-clean" ]; then - buildall="" - shift - fi --./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap -+do_host_build="yes" -+do_target_build="yes" -+if [ "$1" = "--target-only" ]; then -+ do_host_build="no" -+ shift -+elif [ "$1" = "--host-only" ]; then -+ do_target_build="no" -+ shift -+fi - --# Delay move of dist tool to now, because bootstrap may clear tool directory. --mv cmd/dist/dist "$GOTOOLDIR"/dist --echo -+if [ "$do_host_build" = "yes" ]; then -+ ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap -+ # Delay move of dist tool to now, because bootstrap may clear tool directory. -+ mv cmd/dist/dist "$GOTOOLDIR"/dist -+ echo - --if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then - echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH." - # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however, - # use the host compiler, CC, from `cmd/dist/dist env` instead. -@@ -169,11 +178,20 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOH - echo - fi - --echo "##### Building packages and commands for $GOOS/$GOARCH." --CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd --echo -+if [ "$do_target_build" = "yes" ]; then -+ GO_INSTALL="${GO_TARGET_INSTALL:-std cmd}" -+ echo "##### Building packages and commands for $GOOS/$GOARCH." -+ if [ "$GOHOSTOS" = "$GOOS" -a "$GOHOSTARCH" = "$GOARCH" -a "$do_host_build" = "yes" ]; then -+ rm -rf ./host-tools -+ mkdir ./host-tools -+ mv "$GOTOOLDIR"/* ./host-tools -+ GOTOOLDIR="$PWD/host-tools" -+ fi -+ GOTOOLDIR="$GOTOOLDIR" CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v ${GO_INSTALL} -+ echo - --rm -f "$GOTOOLDIR"/go_bootstrap -+ rm -f "$GOTOOLDIR"/go_bootstrap -+fi - - if [ "$1" != "--no-banner" ]; then - "$GOTOOLDIR"/dist banner diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/syslog.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/syslog.patch deleted file mode 100644 index 29be06f1b..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.8/syslog.patch +++ /dev/null @@ -1,62 +0,0 @@ -Add timeouts to logger - -Signed-off-by: Khem Raj <raj.khem@gmail.com> -Upstream-Status: Pending - -diff -r -u go/src/log/syslog/syslog.go /home/achang/GOCOPY/go/src/log/syslog/syslog.go ---- go/src/log/syslog/syslog.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog.go 2014-10-03 11:44:37.710403200 -0700 -@@ -33,6 +33,9 @@ - const severityMask = 0x07 - const facilityMask = 0xf8 - -+var writeTimeout = 1 * time.Second -+var connectTimeout = 1 * time.Second -+ - const ( - // Severity. - -@@ -100,6 +103,7 @@ - type serverConn interface { - writeString(p Priority, hostname, tag, s, nl string) error - close() error -+ setWriteDeadline(t time.Time) error - } - - type netConn struct { -@@ -273,7 +277,11 @@ - nl = "\n" - } - -- err := w.conn.writeString(p, w.hostname, w.tag, msg, nl) -+ err := w.conn.setWriteDeadline(time.Now().Add(writeTimeout)) -+ if err != nil { -+ return 0, err -+ } -+ err = w.conn.writeString(p, w.hostname, w.tag, msg, nl) - if err != nil { - return 0, err - } -@@ -305,6 +313,10 @@ - return n.conn.Close() - } - -+func (n *netConn) setWriteDeadline(t time.Time) error { -+ return n.conn.SetWriteDeadline(t) -+} -+ - // NewLogger creates a log.Logger whose output is written to - // the system log service with the specified priority. The logFlag - // argument is the flag set passed through to log.New to create -diff -r -u go/src/log/syslog/syslog_unix.go /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go ---- go/src/log/syslog/syslog_unix.go 2013-11-28 13:38:28.000000000 -0800 -+++ /home/achang/GOCOPY/go/src/log/syslog/syslog_unix.go 2014-10-03 11:44:39.010403175 -0700 -@@ -19,7 +19,7 @@ - logPaths := []string{"/dev/log", "/var/run/syslog"} - for _, network := range logTypes { - for _, path := range logPaths { -- conn, err := net.Dial(network, path) -+ conn, err := net.DialTimeout(network, path, connectTimeout) - if err != nil { - continue - } else { diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9.inc new file mode 100644 index 000000000..7f12241dc --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9.inc @@ -0,0 +1,23 @@ +require go-common.inc + +GO_BASEVERSION = "1.9" +FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:" + +LIC_FILES_CHKSUM = "file://LICENSE;md5=5d4950ecb7b26d2c5e4e7b4e0dd74707" + +SRC_URI += "\ + file://0001-make.bash-quote-CC_FOR_TARGET.patch \ + file://0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch \ + file://0003-make.bash-better-separate-host-and-target-builds.patch \ + file://0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch \ + file://0005-cmd-go-make-GOROOT-precious-by-default.patch \ + file://0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch \ + file://0007-ld-add-soname-to-shareable-objects.patch \ + file://0008-make.bash-add-GOHOSTxx-indirection-for-cross-canadia.patch \ + file://0009-cmd-go-buildmode-pie-forces-external-linking-mode-on.patch \ + file://0010-make.bash-override-CC-when-building-dist-and-go_boot.patch \ +" +SRC_URI_append_libc-musl = " file://set-external-linker.patch" + +SRC_URI[main.md5sum] = "da2d44ea384076efec43ee1f8b7d45d2" +SRC_URI[main.sha256sum] = "a4ab229028ed167ba1986825751463605264e44868362ca8e7accc8be057e993" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0001-make.bash-quote-CC_FOR_TARGET.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0001-make.bash-quote-CC_FOR_TARGET.patch new file mode 100644 index 000000000..7800975e4 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0001-make.bash-quote-CC_FOR_TARGET.patch @@ -0,0 +1,32 @@ +From d24734ad44006791fd48fc45ea34fe608ff672fb Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Wed, 13 Sep 2017 08:04:23 -0700 +Subject: [PATCH 1/7] make.bash: quote CC_FOR_TARGET + +For OE cross-builds, $CC_FOR_TARGET has more than +one word and needs to be quoted. + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/make.bash | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/make.bash b/src/make.bash +index 71e7531..dcf3256 100755 +--- a/src/make.bash ++++ b/src/make.bash +@@ -175,7 +175,7 @@ echo "##### Building packages and commands for $GOOS/$GOARCH." + + old_bin_files=$(cd $GOROOT/bin && echo *) + +-CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd ++CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd + + # Check that there are no new files in $GOROOT/bin other than go and gofmt + # and $GOOS_$GOARCH (a directory used when cross-compiling). +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch new file mode 100644 index 000000000..a4e42261c --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0002-cmd-go-fix-CC-and-CXX-environment-variable-construct.patch @@ -0,0 +1,67 @@ +From a7170d32a13aead608abd18996f6dab2e2a631b5 Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Wed, 13 Sep 2017 08:06:37 -0700 +Subject: [PATCH 2/7] cmd/go: fix CC and CXX environment variable construction + +For OE cross-builds, CC and CXX have multiple words, and +we need their complete definitions when setting up the +environment during Go builds. + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/cmd/go/internal/envcmd/env.go | 4 ++-- + src/cmd/go/internal/work/build.go | 12 ++++++++++++ + 2 files changed, 14 insertions(+), 2 deletions(-) + +diff --git a/src/cmd/go/internal/envcmd/env.go b/src/cmd/go/internal/envcmd/env.go +index 43d4334..529d21d 100644 +--- a/src/cmd/go/internal/envcmd/env.go ++++ b/src/cmd/go/internal/envcmd/env.go +@@ -74,10 +74,10 @@ func MkEnv() []cfg.EnvVar { + } + + cmd := b.GccCmd(".") +- env = append(env, cfg.EnvVar{Name: "CC", Value: cmd[0]}) ++ env = append(env, cfg.EnvVar{Name: "CC", Value: strings.Join(b.GccCmdForReal(), " ")}) + env = append(env, cfg.EnvVar{Name: "GOGCCFLAGS", Value: strings.Join(cmd[3:], " ")}) + cmd = b.GxxCmd(".") +- env = append(env, cfg.EnvVar{Name: "CXX", Value: cmd[0]}) ++ env = append(env, cfg.EnvVar{Name: "CXX", Value: strings.Join(b.GxxCmdForReal(), " ")}) + + if cfg.BuildContext.CgoEnabled { + env = append(env, cfg.EnvVar{Name: "CGO_ENABLED", Value: "1"}) +diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go +index 7d667ff..85df0b3 100644 +--- a/src/cmd/go/internal/work/build.go ++++ b/src/cmd/go/internal/work/build.go +@@ -3127,12 +3127,24 @@ func (b *Builder) GccCmd(objdir string) []string { + return b.ccompilerCmd("CC", cfg.DefaultCC, objdir) + } + ++// gccCmd returns a gcc command line prefix ++// defaultCC is defined in zdefaultcc.go, written by cmd/dist. ++func (b *Builder) GccCmdForReal() []string { ++ return envList("CC", cfg.DefaultCC) ++} ++ + // gxxCmd returns a g++ command line prefix + // defaultCXX is defined in zdefaultcc.go, written by cmd/dist. + func (b *Builder) GxxCmd(objdir string) []string { + return b.ccompilerCmd("CXX", cfg.DefaultCXX, objdir) + } + ++// gxxCmd returns a g++ command line prefix ++// defaultCXX is defined in zdefaultcc.go, written by cmd/dist. ++func (b *Builder) GxxCmdForReal() []string { ++ return envList("CXX", cfg.DefaultCXX) ++} ++ + // gfortranCmd returns a gfortran command line prefix. + func (b *Builder) gfortranCmd(objdir string) []string { + return b.ccompilerCmd("FC", "gfortran", objdir) +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/split-host-and-target-build.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0003-make.bash-better-separate-host-and-target-builds.patch index afbae02b4..ffd9f2359 100644 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.6/split-host-and-target-build.patch +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0003-make.bash-better-separate-host-and-target-builds.patch @@ -1,22 +1,30 @@ -Add new option --target-only to build target components -Separates the host and target pieces of build +From 31e88f06af7ab787d8fe0c1ca625193e1799e167 Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Wed, 13 Sep 2017 08:12:04 -0700 +Subject: [PATCH 3/7] make.bash: better separate host and target builds + +Fore OE cross-builds, the simple checks in make.bash are +insufficient for distinguishing host and target build +environments, so add some options for telling the +script which parts are being built. -Signed-off-by: Khem Raj <raj.khem@gmail.com> Upstream-Status: Pending -Index: go/src/make.bash -=================================================================== ---- go.orig/src/make.bash -+++ go/src/make.bash -@@ -143,12 +143,23 @@ if [ "$1" = "--no-clean" ]; then + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/make.bash | 51 ++++++++++++++++++++++++++++----------------------- + 1 file changed, 28 insertions(+), 23 deletions(-) + +diff --git a/src/make.bash b/src/make.bash +index dcf3256..9553623 100755 +--- a/src/make.bash ++++ b/src/make.bash +@@ -156,13 +156,22 @@ if [ "$1" = "--no-clean" ]; then buildall="" shift fi -./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap --# Delay move of dist tool to now, because bootstrap may clear tool directory. --mv cmd/dist/dist "$GOTOOLDIR"/dist --echo - --if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then +do_host_build="yes" +do_target_build="yes" +if [ "$1" = "--target-only" ]; then @@ -26,23 +34,42 @@ Index: go/src/make.bash + do_target_build="no" + shift +fi -+ + +-# Delay move of dist tool to now, because bootstrap may clear tool directory. +-mv cmd/dist/dist "$GOTOOLDIR"/dist +-echo +if [ "$do_host_build" = "yes" ]; then + ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap + # Delay move of dist tool to now, because bootstrap may clear tool directory. + mv cmd/dist/dist "$GOTOOLDIR"/dist + echo -+ + +-if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH." # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however, # use the host compiler, CC, from `cmd/dist/dist env` instead. -@@ -157,11 +168,20 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOH +@@ -171,24 +180,20 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOHOSTOS" != "$GOOS" ]; then echo fi -echo "##### Building packages and commands for $GOOS/$GOARCH." +- +-old_bin_files=$(cd $GOROOT/bin && echo *) +- -CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd +- +-# Check that there are no new files in $GOROOT/bin other than go and gofmt +-# and $GOOS_$GOARCH (a directory used when cross-compiling). +-(cd $GOROOT/bin && for f in *; do +- if ! expr " $old_bin_files go gofmt ${GOOS}_${GOARCH} " : ".* $f " >/dev/null 2>/dev/null; then +- echo 1>&2 "ERROR: unexpected new file in $GOROOT/bin: $f" +- exit 1 +- fi +-done) +- -echo +- +-rm -f "$GOTOOLDIR"/go_bootstrap +if [ "$do_target_build" = "yes" ]; then + GO_INSTALL="${GO_TARGET_INSTALL:-std cmd}" + echo "##### Building packages and commands for $GOOS/$GOARCH." @@ -54,10 +81,12 @@ Index: go/src/make.bash + fi + GOTOOLDIR="$GOTOOLDIR" CC="$CC_FOR_TARGET" "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v ${GO_INSTALL} + echo - --rm -f "$GOTOOLDIR"/go_bootstrap ++ + rm -f "$GOTOOLDIR"/go_bootstrap +fi if [ "$1" != "--no-banner" ]; then "$GOTOOLDIR"/dist banner +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch new file mode 100644 index 000000000..180b06a4d --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0004-cmd-go-allow-GOTOOLDIR-to-be-overridden-in-the-envir.patch @@ -0,0 +1,68 @@ +From 1369178b497b12088ec4c2794606cc9f14cc327c Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Wed, 13 Sep 2017 08:15:03 -0700 +Subject: [PATCH 4/7] cmd/go: allow GOTOOLDIR to be overridden in the + environment + +For OE cross-builds, host-side tools reside in the native +GOROOT, not the target GOROOT. Allow GOTOOLDIR to be set +in the environment to allow that split, rather than always +computing GOTOOLDIR relative to the GOROOT setting. + +Upstream-Status: Pending + +Signed-off-by: Khem Raj <raj.khem@gmail.com> +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/cmd/go/internal/cfg/cfg.go | 7 ++++++- + src/cmd/go/internal/work/build.go | 2 +- + src/go/build/build.go | 2 +- + 3 files changed, 8 insertions(+), 3 deletions(-) + +diff --git a/src/cmd/go/internal/cfg/cfg.go b/src/cmd/go/internal/cfg/cfg.go +index b3ad1ce..c1dc974 100644 +--- a/src/cmd/go/internal/cfg/cfg.go ++++ b/src/cmd/go/internal/cfg/cfg.go +@@ -91,7 +91,12 @@ func init() { + // as the tool directory does not move based on environment 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) ++ s := os.Getenv("GOTOOLDIR") ++ if s == "" { ++ build.ToolDir = filepath.Join(GOROOT, "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH) ++ } else { ++ build.ToolDir = s ++ } + } + + func findGOROOT() string { +diff --git a/src/cmd/go/internal/work/build.go b/src/cmd/go/internal/work/build.go +index 85df0b3..7b9a69e 100644 +--- a/src/cmd/go/internal/work/build.go ++++ b/src/cmd/go/internal/work/build.go +@@ -1337,7 +1337,7 @@ func (b *Builder) build(a *Action) (err error) { + } + + var cgoExe string +- if a.cgo != nil && a.cgo.Target != "" { ++ if a.cgo != nil && a.cgo.Target != "" && os.Getenv("GOTOOLDIR") == "" { + cgoExe = a.cgo.Target + } else { + cgoExe = base.Tool("cgo") +diff --git a/src/go/build/build.go b/src/go/build/build.go +index fd89871..e16145b 100644 +--- a/src/go/build/build.go ++++ b/src/go/build/build.go +@@ -1588,7 +1588,7 @@ func init() { + } + + // ToolDir is the directory containing build tools. +-var ToolDir = filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH) ++var ToolDir = envOr("GOTOOLDIR", filepath.Join(runtime.GOROOT(), "pkg/tool/"+runtime.GOOS+"_"+runtime.GOARCH)) + + // IsLocalImport reports whether the import path is + // a local import path, like ".", "..", "./foo", or "../foo". +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0005-cmd-go-make-GOROOT-precious-by-default.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0005-cmd-go-make-GOROOT-precious-by-default.patch new file mode 100644 index 000000000..6e93bcb6c --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0005-cmd-go-make-GOROOT-precious-by-default.patch @@ -0,0 +1,41 @@ +From 44f961975dac6cf464a77b5f6dd0c47cc192c4fd Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Wed, 13 Sep 2017 08:19:52 -0700 +Subject: [PATCH 5/7] cmd/go: make GOROOT precious by default + +For OE builds, we never want packages that have +already been installed into the build root to be +modified, so prevent the go build tool from checking +if they should be rebuilt. + +Also add an environment variable to override this +behavior, just for building the Go runtime. + +Upstream-Status: Pending + +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/cmd/go/internal/load/pkg.go | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go +index 60de666..2660d3f 100644 +--- a/src/cmd/go/internal/load/pkg.go ++++ b/src/cmd/go/internal/load/pkg.go +@@ -1530,6 +1530,13 @@ func isStale(p *Package) (bool, string) { + return true, "build ID mismatch" + } + ++ // For OE builds, make anything in GOROOT non-stale, ++ // to prevent a package build from overwriting the ++ // build root. ++ if p.Goroot && os.Getenv("GOROOT_OVERRIDE") != "1" { ++ return false, "GOROOT-resident packages do not get rebuilt" ++ } ++ + // Package is stale if a dependency is. + for _, p1 := range p.Internal.Deps { + if p1.Stale { +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch new file mode 100644 index 000000000..f0f564044 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0006-make.bash-add-GOTOOLDIR_BOOTSTRAP-environment-variab.patch @@ -0,0 +1,36 @@ +From aae74d1045ca03306ba4159206ee3bac72bcdfbb Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Wed, 13 Sep 2017 08:23:23 -0700 +Subject: [PATCH 6/7] make.bash: add GOTOOLDIR_BOOTSTRAP environment variable + +For cross-canadian builds, we need to use the native +GOTOOLDIR during the bootstrap phase, so provide a way +to pass that setting into the build script. + +Upstream-Status: Pending + +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/make.bash | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/make.bash b/src/make.bash +index 9553623..2e6fb05 100755 +--- a/src/make.bash ++++ b/src/make.bash +@@ -172,10 +172,11 @@ if [ "$do_host_build" = "yes" ]; then + mv cmd/dist/dist "$GOTOOLDIR"/dist + echo + ++ GOTOOLDIR_BOOTSTRAP="${GOTOOLDIR_BOOTSTRAP:-$GOTOOLDIR}" + echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH." + # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however, + # use the host compiler, CC, from `cmd/dist/dist env` instead. +- CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH \ ++ CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH GOTOOLDIR="$GOTOOLDIR_BOOTSTRAP" \ + "$GOTOOLDIR"/go_bootstrap install -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std cmd + echo + fi +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch new file mode 100644 index 000000000..6459782d8 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0007-ld-add-soname-to-shareable-objects.patch @@ -0,0 +1,46 @@ +From e957c3458d53e37bf416f51d2f8bf54c195e50f5 Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Wed, 13 Sep 2017 08:27:02 -0700 +Subject: [PATCH 7/7] ld: add soname to shareable objects + +Shared library handling in OE depends on the inclusion +of an soname header, so update the go linker to add that +header for both internal and external linking. + +Upstream-Status: Pending + +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/cmd/link/internal/ld/lib.go | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/cmd/link/internal/ld/lib.go b/src/cmd/link/internal/ld/lib.go +index 0234105..0b9e2d0 100644 +--- a/src/cmd/link/internal/ld/lib.go ++++ b/src/cmd/link/internal/ld/lib.go +@@ -1124,12 +1124,14 @@ func (l *Link) hostlink() { + // Pass -z nodelete to mark the shared library as + // non-closeable: a dlclose will do nothing. + argv = append(argv, "-shared", "-Wl,-z,nodelete") ++ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile))) + } + case BuildmodeShared: + if UseRelro() { + argv = append(argv, "-Wl,-z,relro") + } + argv = append(argv, "-shared") ++ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile))) + case BuildmodePlugin: + if Headtype == objabi.Hdarwin { + argv = append(argv, "-dynamiclib") +@@ -1138,6 +1140,7 @@ func (l *Link) hostlink() { + argv = append(argv, "-Wl,-z,relro") + } + argv = append(argv, "-shared") ++ argv = append(argv, fmt.Sprintf("-Wl,-soname,%s", filepath.Base(*flagOutfile))) + } + } + +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0008-make.bash-add-GOHOSTxx-indirection-for-cross-canadia.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0008-make.bash-add-GOHOSTxx-indirection-for-cross-canadia.patch new file mode 100644 index 000000000..0977c7835 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0008-make.bash-add-GOHOSTxx-indirection-for-cross-canadia.patch @@ -0,0 +1,33 @@ +From 03e6c339d4fb712fbb8c4ca6ef2fc7100dcdb3d7 Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Thu, 14 Sep 2017 05:38:10 -0700 +Subject: [PATCH 8/8] make.bash: add GOHOSTxx indirection for cross-canadian + builds + +Add environment variables for specifying the host OS/arch +that we are building the compiler for, so it can differ from +the build host OS/arch. + +Upstream-Status: Pending + +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/make.bash | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/src/make.bash b/src/make.bash +index 2e6fb05..0bdadc6 100755 +--- a/src/make.bash ++++ b/src/make.bash +@@ -173,6 +173,8 @@ if [ "$do_host_build" = "yes" ]; then + echo + + GOTOOLDIR_BOOTSTRAP="${GOTOOLDIR_BOOTSTRAP:-$GOTOOLDIR}" ++ GOHOSTOS="${GOHOSTOS_CROSS:-$GOHOSTOS}" ++ GOHOSTARCH="${GOHOSTARCH_CROSS:-$GOHOSTARCH}" + echo "##### Building packages and commands for host, $GOHOSTOS/$GOHOSTARCH." + # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however, + # use the host compiler, CC, from `cmd/dist/dist env` instead. +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0009-cmd-go-buildmode-pie-forces-external-linking-mode-on.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0009-cmd-go-buildmode-pie-forces-external-linking-mode-on.patch new file mode 100644 index 000000000..aa5fcfdd2 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0009-cmd-go-buildmode-pie-forces-external-linking-mode-on.patch @@ -0,0 +1,47 @@ +From aae44527c8065d54f6acaf87c82cba1ac96fae59 Mon Sep 17 00:00:00 2001 +From: Ian Lance Taylor <iant@golang.org> +Date: Fri, 18 Aug 2017 17:46:03 -0700 +Subject: [PATCH] cmd/go: -buildmode=pie forces external linking mode on all + systems + +The go tool assumed that -buildmode=pie implied internal linking on +linux-amd64. However, that was changed by CL 36417 for issue #18968. + +Fixes #21452 + +Change-Id: I8ed13aea52959cc5c53223f4c41ba35329445545 +Reviewed-on: https://go-review.googlesource.com/57231 +Run-TryBot: Ian Lance Taylor <iant@golang.org> +TryBot-Result: Gobot Gobot <gobot@golang.org> +Reviewed-by: Avelino <t@avelino.xxx> +Reviewed-by: Rob Pike <r@golang.org> +--- +Upstream-Status: Backport +Signed-off-by: Khem Raj <raj.khem@gmail.com> + + src/cmd/go/internal/load/pkg.go | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/src/cmd/go/internal/load/pkg.go b/src/cmd/go/internal/load/pkg.go +index 2660d3f..d40773b 100644 +--- a/src/cmd/go/internal/load/pkg.go ++++ b/src/cmd/go/internal/load/pkg.go +@@ -954,11 +954,12 @@ func (p *Package) load(stk *ImportStack, bp *build.Package, err error) *Package + + if cfg.BuildContext.CgoEnabled && p.Name == "main" && !p.Goroot { + // Currently build modes c-shared, pie (on systems that do not +- // support PIE with internal linking mode), plugin, and +- // -linkshared force external linking mode, as of course does ++ // support PIE with internal linking mode (currently all ++ // systems: issue #18968)), plugin, and -linkshared force ++ // external linking mode, as of course does + // -ldflags=-linkmode=external. External linking mode forces + // an import of runtime/cgo. +- pieCgo := cfg.BuildBuildmode == "pie" && (cfg.BuildContext.GOOS != "linux" || cfg.BuildContext.GOARCH != "amd64") ++ pieCgo := cfg.BuildBuildmode == "pie" + linkmodeExternal := false + for i, a := range cfg.BuildLdflags { + if a == "-linkmode=external" { +-- +2.14.1 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0010-make.bash-override-CC-when-building-dist-and-go_boot.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0010-make.bash-override-CC-when-building-dist-and-go_boot.patch new file mode 100644 index 000000000..83fd78c3d --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/0010-make.bash-override-CC-when-building-dist-and-go_boot.patch @@ -0,0 +1,43 @@ +From 21d83dd9499e5be30eea28dd7034d1ea2a01c838 Mon Sep 17 00:00:00 2001 +From: Matt Madison <matt@madison.systems> +Date: Tue, 14 Nov 2017 07:38:42 -0800 +Subject: [PATCH 10/10] make.bash: override CC when building dist and + go_bootstrap + +For cross-canadian builds, dist and go_bootstrap +run on the build host, so CC needs to point to the +build host's C compiler. Add a BUILD_CC environment +for this, falling back to $CC if not present. + +Upstream-Status: Pending + +Signed-off-by: Matt Madison <matt@madison.systems> +--- + src/make.bash | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/make.bash b/src/make.bash +index 0bdadc6..f199349 100755 +--- a/src/make.bash ++++ b/src/make.bash +@@ -131,7 +131,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) +@@ -167,7 +167,7 @@ elif [ "$1" = "--host-only" ]; then + fi + + if [ "$do_host_build" = "yes" ]; then +- ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap ++ CC=${BUILD_CC:-${CC}} ./cmd/dist/dist bootstrap $buildall $GO_DISTFLAGS -v # builds go_bootstrap + # Delay move of dist tool to now, because bootstrap may clear tool directory. + mv cmd/dist/dist "$GOTOOLDIR"/dist + echo +-- +2.7.4 + diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/set-external-linker.patch b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/set-external-linker.patch new file mode 100644 index 000000000..d6bd7fa39 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-1.9/set-external-linker.patch @@ -0,0 +1,111 @@ +Change the dynamic linker hardcoding to use musl when not using glibc +this should be applied conditional to musl being the system C library + +Upstream-Status: Inappropriate [Real Fix should be portable across libcs] + +Signed-off-by: Khem Raj <raj.khem@gmail.com> + +Index: go/src/cmd/link/internal/amd64/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/amd64/obj.go ++++ go/src/cmd/link/internal/amd64/obj.go +@@ -67,7 +67,7 @@ func Init() { + ld.Thearch.Append64 = ld.Append64l + ld.Thearch.TLSIEtoLE = tlsIEtoLE + +- ld.Thearch.Linuxdynld = "/lib64/ld-linux-x86-64.so.2" ++ ld.Thearch.Linuxdynld = "/lib/ld-musl-x86_64.so.1" + ld.Thearch.Freebsddynld = "/libexec/ld-elf.so.1" + ld.Thearch.Openbsddynld = "/usr/libexec/ld.so" + ld.Thearch.Netbsddynld = "/libexec/ld.elf_so" +Index: go/src/cmd/link/internal/arm/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/arm/obj.go ++++ go/src/cmd/link/internal/arm/obj.go +@@ -63,7 +63,7 @@ func Init() { + ld.Thearch.Append32 = ld.Append32l + ld.Thearch.Append64 = ld.Append64l + +- ld.Thearch.Linuxdynld = "/lib/ld-linux.so.3" // 2 for OABI, 3 for EABI ++ ld.Thearch.Linuxdynld = "/lib/ld-musl-armhf.so.1" + ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1" + ld.Thearch.Openbsddynld = "/usr/libexec/ld.so" + ld.Thearch.Netbsddynld = "/libexec/ld.elf_so" +Index: go/src/cmd/link/internal/arm64/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/arm64/obj.go ++++ go/src/cmd/link/internal/arm64/obj.go +@@ -62,7 +62,7 @@ func Init() { + ld.Thearch.Append32 = ld.Append32l + ld.Thearch.Append64 = ld.Append64l + +- ld.Thearch.Linuxdynld = "/lib/ld-linux-aarch64.so.1" ++ ld.Thearch.Linuxdynld = "/lib/ld-musl-aarch64.so.1" + + ld.Thearch.Freebsddynld = "XXX" + ld.Thearch.Openbsddynld = "XXX" +Index: go/src/cmd/link/internal/mips/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/mips/obj.go ++++ go/src/cmd/link/internal/mips/obj.go +@@ -77,7 +77,7 @@ func Init() { + ld.Thearch.Append64 = ld.Append64b + } + +- ld.Thearch.Linuxdynld = "/lib/ld.so.1" ++ ld.Thearch.Linuxdynld = "/lib/ld-musl-mipsle.so.1" + + ld.Thearch.Freebsddynld = "XXX" + ld.Thearch.Openbsddynld = "XXX" +Index: go/src/cmd/link/internal/mips64/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/mips64/obj.go ++++ go/src/cmd/link/internal/mips64/obj.go +@@ -75,7 +75,7 @@ func Init() { + ld.Thearch.Append64 = ld.Append64b + } + +- ld.Thearch.Linuxdynld = "/lib64/ld64.so.1" ++ ld.Thearch.Linuxdynld = "/lib64/ld-musl-mips64le.so.1" + + ld.Thearch.Freebsddynld = "XXX" + ld.Thearch.Openbsddynld = "XXX" +Index: go/src/cmd/link/internal/ppc64/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/ppc64/obj.go ++++ go/src/cmd/link/internal/ppc64/obj.go +@@ -77,7 +77,7 @@ func Init() { + } + + // TODO(austin): ABI v1 uses /usr/lib/ld.so.1 +- ld.Thearch.Linuxdynld = "/lib64/ld64.so.1" ++ ld.Thearch.Linuxdynld = "/lib/ld-musl-powerpc64le.so.1" + + ld.Thearch.Freebsddynld = "XXX" + ld.Thearch.Openbsddynld = "XXX" +Index: go/src/cmd/link/internal/s390x/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/s390x/obj.go ++++ go/src/cmd/link/internal/s390x/obj.go +@@ -62,7 +62,7 @@ func Init() { + ld.Thearch.Append32 = ld.Append32b + ld.Thearch.Append64 = ld.Append64b + +- ld.Thearch.Linuxdynld = "/lib64/ld64.so.1" ++ ld.Thearch.Linuxdynld = "/lib/ld-musl-s390x.so.1" + + // not relevant for s390x + ld.Thearch.Freebsddynld = "XXX" +Index: go/src/cmd/link/internal/x86/obj.go +=================================================================== +--- go.orig/src/cmd/link/internal/x86/obj.go ++++ go/src/cmd/link/internal/x86/obj.go +@@ -63,7 +63,7 @@ func Init() { + ld.Thearch.Append32 = ld.Append32l + ld.Thearch.Append64 = ld.Append64l + +- ld.Thearch.Linuxdynld = "/lib/ld-linux.so.2" ++ ld.Thearch.Linuxdynld = "/lib/ld-musl-i386.so.1" + ld.Thearch.Freebsddynld = "/usr/libexec/ld-elf.so.1" + ld.Thearch.Openbsddynld = "/usr/libexec/ld.so" + ld.Thearch.Netbsddynld = "/usr/libexec/ld.elf_so" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-bootstrap-native_1.4.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-bootstrap-native_1.4.bb deleted file mode 100644 index 3d4141e87..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-bootstrap-native_1.4.bb +++ /dev/null @@ -1,3 +0,0 @@ -BOOTSTRAP = "1.4" -require go-native.inc -require go-${PV}.inc diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-common.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-common.inc index f74b8b765..9af68738a 100644 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-common.inc +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-common.inc @@ -14,9 +14,13 @@ LICENSE = "BSD-3-Clause" inherit goarch -SRC_URI = "http://golang.org/dl/go${PV}.src.tar.gz" +SRC_URI = "http://golang.org/dl/go${PV}.src.tar.gz;name=main" S = "${WORKDIR}/go" B = "${S}" INHIBIT_PACKAGE_DEBUG_SPLIT = "1" SSTATE_SCAN_CMD = "true" + +do_compile_prepend() { + BUILD_CC=${BUILD_CC} +} diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross-canadian.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross-canadian.inc new file mode 100644 index 000000000..8afda6b2c --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross-canadian.inc @@ -0,0 +1,62 @@ +inherit cross-canadian + +DEPENDS = "go-native virtual/${HOST_PREFIX}go-crosssdk virtual/nativesdk-${HOST_PREFIX}go-runtime \ + virtual/${HOST_PREFIX}gcc-crosssdk virtual/nativesdk-${HOST_PREFIX}libc-for-gcc \ + virtual/nativesdk-${HOST_PREFIX}compilerlibs" +PN = "go-cross-canadian-${TRANSLATED_TARGET_ARCH}" + +export GOHOSTOS = "${BUILD_GOOS}" +export GOHOSTARCH = "${BUILD_GOARCH}" +export GOHOSTOS_CROSS = "${HOST_GOOS}" +export GOHOSTARCH_CROSS = "${HOST_GOARCH}" +export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go" +export GOTOOLDIR_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/${HOST_SYS}/go/pkg/tool/${BUILD_GOTUPLE}" +export GOROOT_FINAL = "${libdir}/go" +export CGO_ENABLED = "1" +export CC_FOR_TARGET = "${TARGET_PREFIX}gcc" +export CXX_FOR_TARGET = "${TARGET_PREFIX}g++" +CC = "${HOST_PREFIX}gcc" +export CGO_CFLAGS = "--sysroot=${STAGING_DIR_TARGET} ${HOST_CC_ARCH} ${CFLAGS}" +export CGO_LDFLAGS = "--sysroot=${STAGING_DIR_TARGET} ${HOST_CC_ARCH} ${LDFLAGS}" +export GO_LDFLAGS = '-linkmode external -extld ${HOST_PREFIX}gcc -extldflags "--sysroot=${STAGING_DIR_TARGET} ${HOST_CC_ARCH} ${LDFLAGS}"' + +do_configure[noexec] = "1" + +do_compile() { + export GOBIN="${B}/bin" + rm -rf ${GOBIN} ${B}/pkg + mkdir ${GOBIN} + cd src + ./make.bash --host-only --no-banner + cd ${B} +} + + +make_wrapper() { + rm -f ${D}${bindir}/$2 + cat <<END >${D}${bindir}/$2 +#!/bin/sh +here=\`dirname \$0\` +native_goroot=\`readlink -f \$here/../../lib/${TARGET_SYS}/go\` +export GOARCH="${TARGET_GOARCH}" +export GOOS="${TARGET_GOOS}" +test -n "\$GOARM" || export GOARM="${TARGET_GOARM}" +test -n "\$GO386" || export GO386="${TARGET_GO386}" +export GOTOOLDIR="\$native_goroot/pkg/tool/${HOST_GOTUPLE}" +test -n "\$GOROOT" || export GOROOT="\$OECORE_TARGET_SYSROOT/${target_libdir}/go" +\$here/../../lib/${TARGET_SYS}/go/bin/$1 "\$@" +END + chmod +x ${D}${bindir}/$2 +} + +do_install() { + install -d ${D}${libdir}/go/pkg/tool + cp --preserve=mode,timestamps -R ${B}/pkg/tool/${HOST_GOTUPLE} ${D}${libdir}/go/pkg/tool/ + install -d ${D}${bindir} ${D}${libdir}/go/bin + for f in ${B}/${GO_BUILD_BINDIR}/* + do + base=`basename $f` + install -m755 $f ${D}${libdir}/go/bin + make_wrapper $base ${TARGET_PREFIX}$base + done +} diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross-canadian_1.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross-canadian_1.9.bb new file mode 100644 index 000000000..7ac9449e4 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross-canadian_1.9.bb @@ -0,0 +1,2 @@ +require go-cross-canadian.inc +require go-${PV}.inc diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross.inc index 93206a5d0..3ac7211bc 100644 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross.inc +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross.inc @@ -1,18 +1,62 @@ inherit cross -DEPENDS += "gcc-cross-${TARGET_ARCH}" +PROVIDES = "virtual/${TARGET_PREFIX}go" +DEPENDS += "go-native" PN = "go-cross-${TARGET_ARCH}" -# Ignore how TARGET_ARCH is computed. -TARGET_ARCH[vardepvalue] = "${TARGET_ARCH}" +export GOHOSTOS = "${BUILD_GOOS}" +export GOHOSTARCH = "${BUILD_GOARCH}" +export GOOS = "${TARGET_GOOS}" +export GOARCH = "${TARGET_GOARCH}" +export GOARM = "${TARGET_GOARM}" +export GO386 = "${TARGET_GO386}" +export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go" +export GOROOT_FINAL = "${libdir}/go" +export CGO_ENABLED = "1" +export CC_FOR_TARGET="${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}" +export CXX_FOR_TARGET="${TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}" +CC = "${@d.getVar('BUILD_CC').strip()}" -FILESEXTRAPATHS =. "${FILE_DIRNAME}/go-cross:" +do_configure[noexec] = "1" -GOROOT_FINAL = "${libdir}/go" -export GOROOT_FINAL +do_compile() { + export GOBIN="${B}/bin" + rm -rf ${GOBIN} ${B}/pkg + mkdir ${GOBIN} + cd src + ./make.bash --host-only + cd ${B} +} -# x32 ABI is not supported on go compiler so far -COMPATIBLE_HOST_linux-gnux32 = "null" -# ppc32 is not supported in go compilers -COMPATIBLE_HOST_powerpc = "null" + +make_wrapper() { + rm -f ${D}${bindir}/$2 + cat <<END >${D}${bindir}/$2 +#!/bin/bash +here=\`dirname \$0\` +export GOARCH="${TARGET_GOARCH}" +export GOOS="${TARGET_GOOS}" +export GOARM="\${GOARM:-${TARGET_GOARM}}" +export GO386="\${GO386:-${TARGET_GO386}}" +\$here/../../lib/${CROSS_TARGET_SYS_DIR}/go/bin/$1 "\$@" +END + chmod +x ${D}${bindir}/$2 +} + +do_install() { + install -d ${D}${libdir}/go + cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/ + install -d ${D}${libdir}/go/src + (cd ${S}/src; for d in *; do \ + [ ! -d $d ] || cp --preserve=mode,timestamps -R ${S}/src/$d ${D}${libdir}/go/src/; \ + done) + rm -rf ${D}${libdir}/go/src/runtime/pprof/testdata + install -d ${D}${bindir} ${D}${libdir}/go/bin + for f in ${B}/bin/* + do + base=`basename $f` + install -m755 $f ${D}${libdir}/go/bin + make_wrapper $base ${TARGET_PREFIX}$base + done +} diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.7.bb deleted file mode 100644 index 56ee084b1..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.7.bb +++ /dev/null @@ -1,5 +0,0 @@ -require go-cross.inc -require go_${PV}.bb - -# Go binaries are not understood by the strip tool. -INHIBIT_SYSROOT_STRIP = "1" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.8.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.8.bb deleted file mode 100644 index 56ee084b1..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.8.bb +++ /dev/null @@ -1,5 +0,0 @@ -require go-cross.inc -require go_${PV}.bb - -# Go binaries are not understood by the strip tool. -INHIBIT_SYSROOT_STRIP = "1" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.7.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.9.bb index e7a6ab277..80b5a03f6 100644 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.7.bb +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-cross_1.9.bb @@ -1,2 +1,2 @@ +require go-cross.inc require go-${PV}.inc -require go.inc diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-crosssdk.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-crosssdk.inc new file mode 100644 index 000000000..f67e4b92a --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-crosssdk.inc @@ -0,0 +1,54 @@ +inherit crosssdk + +DEPENDS = "go-native virtual/${TARGET_PREFIX}gcc-crosssdk virtual/nativesdk-${TARGET_PREFIX}compilerlibs virtual/${TARGET_PREFIX}binutils-crosssdk" +PN = "go-crosssdk-${TARGET_ARCH}" +PROVIDES = "virtual/${TARGET_PREFIX}go-crosssdk" + +export GOHOSTOS = "${BUILD_GOOS}" +export GOHOSTARCH = "${BUILD_GOARCH}" +export GOOS = "${TARGET_GOOS}" +export GOARCH = "${TARGET_GOARCH}" +export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go" +export GOROOT_FINAL = "${libdir}/go" +export CGO_ENABLED = "1" +export CC_FOR_TARGET="${TARGET_PREFIX}gcc ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}${SDKPATHNATIVE}" +export CXX_FOR_TARGET="${TARGET_PREFIX}g++ ${TARGET_CC_ARCH} --sysroot=${STAGING_DIR_TARGET}${SDKPATHNATIVE}" +export GO_INSTALL = "cmd" +CC = "${@d.getVar('BUILD_CC').strip()}" + +do_configure[noexec] = "1" + +do_compile() { + export GOBIN="${B}/bin" + rm -rf ${GOBIN} ${B}/pkg + mkdir ${GOBIN} + cd src + ./make.bash --host-only + cd ${B} +} + +make_wrapper() { + rm -f ${D}${bindir}/$2 + cat <<END >${D}${bindir}/$2 +#!/bin/bash +here=\`dirname \$0\` +export GOARCH="${TARGET_GOARCH}" +export GOOS="${TARGET_GOOS}" +\$here/../../lib/${CROSS_TARGET_SYS_DIR}/go/bin/$1 "\$@" +END + chmod +x ${D}${bindir}/$2 +} + +do_install() { + install -d ${D}${libdir}/go + install -d ${D}${libdir}/go/bin + install -d ${D}${libdir}/go/pkg/tool + install -d ${D}${bindir} + cp --preserve=mode,timestamps -R ${S}/pkg/tool/${BUILD_GOTUPLE} ${D}${libdir}/go/pkg/tool/ + for f in ${B}/bin/* + do + base=`basename $f` + install -m755 $f ${D}${libdir}/go/bin + make_wrapper $base ${TARGET_PREFIX}$base + done +} diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-crosssdk_1.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-crosssdk_1.9.bb new file mode 100644 index 000000000..1857c8a57 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-crosssdk_1.9.bb @@ -0,0 +1,2 @@ +require go-crosssdk.inc +require go-${PV}.inc diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-dep_0.3.0.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-dep_0.3.0.bb new file mode 100644 index 000000000..abfeb4837 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-dep_0.3.0.bb @@ -0,0 +1,16 @@ +SUMMARY = "Dependency management tool for Golang" +HOMEPAGE = "https://github.com/golang/dep" +LICENSE = "BSD-3-Clause" +LIC_FILES_CHKSUM = "file://src/${GO_IMPORT}/LICENSE;md5=1bad315647751fab0007812f70d42c0d" + +GO_IMPORT = "github.com/golang/dep" +SRC_URI = "git://${GO_IMPORT}" + +# Points to 0.3.0 tag +SRCREV = "7a91b794bbfbf1f3b8b79823799316451127801b" + +inherit go + +GO_INSTALL = "${GO_IMPORT}/cmd/dep" + +RDEPENDS_${PN}-dev += "bash" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-native.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-native.inc index c21f8fda7..95db1c2b7 100644 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-native.inc +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-native.inc @@ -1,16 +1,28 @@ +# Use immediate assingment here to get the original (/usr/lib) +# instead of the one rewritten by native.bbclass. +nonstaging_libdir := "${libdir}" + inherit native -BOOTSTRAP ?= "" +SRC_URI_append = " http://golang.org/dl/go1.4.3.src.tar.gz;name=bootstrap;subdir=go1.4" +SRC_URI[bootstrap.md5sum] = "dfb604511115dd402a77a553a5923a04" +SRC_URI[bootstrap.sha256sum] = "9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959" + export GOOS = "${BUILD_GOOS}" export GOARCH = "${BUILD_GOARCH}" -export GOROOT_FINAL = "${STAGING_LIBDIR_NATIVE}/go${BOOTSTRAP}" -export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go1.4" +CC = "${@d.getVar('BUILD_CC').strip()}" + export CGO_ENABLED = "1" -do_configure[noexec] = "1" +do_configure() { + cd ${WORKDIR}/go1.4/go/src + CGO_ENABLED=0 GOROOT=${WORKDIR}/go1.4/go ./make.bash +} do_compile() { export GOBIN="${B}/bin" + export GOROOT_FINAL="${nonstaging_libdir}/go" + export GOROOT_BOOTSTRAP="${WORKDIR}/go1.4/go" rm -rf ${GOBIN} mkdir ${GOBIN} @@ -18,7 +30,7 @@ do_compile() { mkdir -p ${WORKDIR}/build-tmp cd src - CGO_ENABLED=0 ./make.bash --host-only + ./make.bash --host-only } make_wrapper() { @@ -26,31 +38,25 @@ make_wrapper() { cat <<END >${D}${bindir}/$2$3 #!/bin/bash here=\`dirname \$0\` -export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go$3\`}" -\$here/../lib/go$3/bin/$1 "\$@" +export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}" +\$here/../lib/go/bin/$1 "\$@" END - chmod +x ${D}${bindir}/$2$3 + chmod +x ${D}${bindir}/$2 } do_install() { - install -d ${D}${libdir}/go${BOOTSTRAP} - cp -a ${B}/pkg ${D}${libdir}/go${BOOTSTRAP}/ - install -d ${D}${libdir}/go${BOOTSTRAP}/src + install -d ${D}${libdir}/go + cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/ + install -d ${D}${libdir}/go/src (cd ${S}/src; for d in *; do \ - [ -d $d ] && cp -a ${S}/src/$d ${D}${libdir}/go${BOOTSTRAP}/src/; \ + [ -d $d ] && cp -a ${S}/src/$d ${D}${libdir}/go/src/; \ done) - - install -d ${D}${bindir} ${D}${libdir}/go${BOOTSTRAP}/bin + rm -rf ${D}${libdir}/go/src/runtime/pprof/testdata + install -d ${D}${bindir} ${D}${libdir}/go/bin for f in ${B}/bin/* do base=`basename $f` - install -m755 $f ${D}${libdir}/go${BOOTSTRAP}/bin - make_wrapper $base $base ${BOOTSTRAP} + install -m755 $f ${D}${libdir}/go/bin + make_wrapper $base $base done } - -do_package[noexec] = "1" -do_packagedata[noexec] = "1" -do_package_write_ipk[noexec] = "1" -do_package_write_deb[noexec] = "1" -do_package_write_rpm[noexec] = "1" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-native_1.8.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-native_1.9.bb index 182fca27a..bbf3c0dd7 100644 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go-native_1.8.bb +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-native_1.9.bb @@ -1,3 +1,2 @@ require ${PN}.inc require go-${PV}.inc -DEPENDS += "go-bootstrap-native" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-runtime.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-runtime.inc new file mode 100644 index 000000000..29ae86e4e --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-runtime.inc @@ -0,0 +1,98 @@ +DEPENDS = "virtual/${TARGET_PREFIX}go go-native" +DEPENDS_class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk" +PROVIDES = "virtual/${TARGET_PREFIX}go-runtime" + +export GOHOSTOS = "${BUILD_GOOS}" +export GOHOSTARCH = "${BUILD_GOARCH}" +export GOOS = "${TARGET_GOOS}" +export GOARCH = "${TARGET_GOARCH}" +export GOARM = "${TARGET_GOARM}" +export GO386 = "${TARGET_GO386}" +export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go" +export GOROOT_FINAL = "${libdir}/go" +export GO_TARGET_INSTALL = "std" +export CGO_ENABLED = "1" +export CC_FOR_TARGET="${CC}" +export CXX_FOR_TARGET="${CXX}" +export GOROOT_OVERRIDE = "1" + +do_configure() { + : +} + +do_configure_libc-musl() { + rm -f ${S}/src/runtime/race/*.syso +} + +do_compile() { + export GOBIN="${B}/bin" + export CC="${@d.getVar('BUILD_CC').strip()}" + rm -rf ${GOBIN} ${B}/pkg + mkdir ${GOBIN} + cd src + ./make.bash --host-only + cp ${B}/pkg/tool/${BUILD_GOTUPLE}/go_bootstrap ${B} + rm -rf ${B}/pkg/${TARGET_GOTUPLE} + ./make.bash --target-only + if [ -n "${GO_DYNLINK}" ]; then + cp ${B}/go_bootstrap ${B}/pkg/tool/${BUILD_GOTUPLE} + GO_FLAGS="-buildmode=shared" GO_LDFLAGS="-extldflags \"${LDFLAGS}\"" ./make.bash --target-only + fi + cd ${B} +} + +do_install() { + install -d ${D}${libdir}/go/src + cp --preserve=mode,timestamps -R ${B}/pkg ${D}${libdir}/go/ + if [ "${BUILD_GOTUPLE}" != "${TARGET_GOTUPLE}" ]; then + rm -rf ${D}${libdir}/go/pkg/${BUILD_GOTUPLE} + rm -rf ${D}${libdir}/go/pkg/obj/${BUILD_GOTUPLE} + fi + rm -rf ${D}${libdir}/go/pkg/tool + rm -rf ${D}${libdir}/go/pkg/obj + rm -rf ${D}${libdir}/go/pkg/bootstrap + find src -mindepth 1 -maxdepth 1 -type d | while read srcdir; do + cp --preserve=mode,timestamps -R $srcdir ${D}${libdir}/go/src/ + done + rm -f ${D}${libdir}/go/src/cmd/dist/dist +} + +# Remove test binaries that cannot be relocated +do_install_append_class-nativesdk() { + rm -rf ${D}${libdir}/go/src/runtime/pprof/testdata +} + +# These testdata directories aren't needed for builds and contain binaries +# that can cause errors in sysroot_strip(), so just remove them. +sysroot_stage_all_append() { + find ${SYSROOT_DESTDIR}${libdir}/go/src -depth -type d -name 'testdata' -exec rm -rf {} \; +} + +ALLOW_EMPTY_${PN} = "1" +FILES_${PN} = "${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*${SOLIBSDEV}" +FILES_${PN}-dev = "${libdir}/go/src ${libdir}/go/pkg/include \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*.shlibname \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*.shlibname \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*.shlibname \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*.shlibname \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*.shlibname \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*.shlibname \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*/*.shlibname \ +" +FILES_${PN}-staticdev = "${libdir}/go/pkg/${TARGET_GOTUPLE} \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*.a \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*.a \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*.a \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*.a \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*.a \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*.a \ + ${libdir}/go/pkg/${TARGET_GOTUPLE}_dynlink/*/*/*/*/*/*/*.a \ +" +# The testdata directories in the source tree include some binaries for various +# architectures, scripts, and .a files +INSANE_SKIP_${PN}-dev = "staticdev ldflags file-rdeps arch" + +INHIBIT_PACKAGE_STRIP = "1" +INHIBIT_PACKAGE_DEBUG_SPLIT = "1" + +BBCLASSEXTEND = "nativesdk" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-runtime_1.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go-runtime_1.9.bb new file mode 100644 index 000000000..43b68b4e4 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-runtime_1.9.bb @@ -0,0 +1,2 @@ +require go-${PV}.inc +require go-runtime.inc diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go-target.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go-target.inc new file mode 100644 index 000000000..cac5d7822 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go-target.inc @@ -0,0 +1,61 @@ +inherit goarch +DEPENDS = "virtual/${TARGET_PREFIX}go go-native" +DEPENDS_class-nativesdk = "virtual/${TARGET_PREFIX}go-crosssdk go-native" + +export GOHOSTOS = "${BUILD_GOOS}" +export GOHOSTARCH = "${BUILD_GOARCH}" +export GOOS = "${TARGET_GOOS}" +export GOARCH = "${TARGET_GOARCH}" +export GOARM = "${TARGET_GOARM}" +export GO386 = "${TARGET_GO386}" +export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go" +export GOROOT_FINAL = "${libdir}/go" +export CGO_ENABLED = "1" +export CC_FOR_TARGET = "${CC}" +export CXX_FOR_TARGET = "${CXX}" +export GO_TARGET_INSTALL = "cmd" +export GO_FLAGS = "-a" +GO_LDFLAGS = "" +GO_LDFLAGS_class-nativesdk = "-linkmode external" +export GO_LDFLAGS + +SECURITY_CFLAGS = "${SECURITY_NOPIE_CFLAGS}" +SECURITY_LDFLAGS = "" + +do_configure[noexec] = "1" + +do_compile() { + export GOBIN="${B}/bin" + export CC="${@d.getVar('BUILD_CC').strip()}" + rm -rf ${GOBIN} ${B}/pkg + mkdir ${GOBIN} + + export TMPDIR=${WORKDIR}/build-tmp + mkdir -p ${WORKDIR}/build-tmp + + cd src + ./make.bash + cd ${B} +} + +do_install() { + install -d ${D}${libdir}/go/pkg/tool + cp --preserve=mode,timestamps -R ${B}/pkg/tool/${TARGET_GOTUPLE} ${D}${libdir}/go/pkg/tool/ + install -d ${D}${libdir}/go/src + cp --preserve=mode,timestamps -R ${S}/src/cmd ${D}${libdir}/go/src/ + install -d ${D}${libdir}/go/bin + install -d ${D}${bindir} + for f in ${B}/${GO_BUILD_BINDIR}/*; do + name=`basename $f` + install -m 0755 $f ${D}${libdir}/go/bin/ + ln -sf ../${BASELIB}/go/bin/$name ${D}${bindir}/ + done +} + +PACKAGES = "${PN} ${PN}-dev" +FILES_${PN} = "${libdir}/go/bin ${libdir}/go/pkg/tool/${TARGET_GOTUPLE} ${bindir}" +FILES_${PN}-dev = "${libdir}/go" +RDEPENDS_${PN}-dev = "perl bash" +INSANE_SKIP_${PN} = "ldflags" + +BBCLASSEXTEND = "nativesdk" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go.inc b/import-layers/yocto-poky/meta/recipes-devtools/go/go.inc deleted file mode 100644 index 25437ddfe..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go.inc +++ /dev/null @@ -1,86 +0,0 @@ -inherit goarch -DEPENDS += "go-bootstrap-native" - -# libgcc is required for the target specific libraries to build -# properly, but apparently not for go-cross and, more importantly, -# also can't be used there because go-cross cannot depend on -# the tune-specific libgcc. Otherwise go-cross also would have -# to be tune-specific. -DEPENDS += "${@ 'libgcc' if not oe.utils.inherits(d, 'cross') else ''}" - -# Prevent runstrip from running because you get errors when the host arch != target arch -INHIBIT_PACKAGE_STRIP = "1" -INHIBIT_SYSROOT_STRIP = "1" - -# x32 ABI is not supported on go compiler so far -COMPATIBLE_HOST_linux-gnux32 = "null" -# ppc32 is not supported in go compilers -COMPATIBLE_HOST_powerpc = "null" - -export GOHOSTOS = "${BUILD_GOOS}" -export GOHOSTARCH = "${BUILD_GOARCH}" -export GOOS = "${TARGET_GOOS}" -export GOARCH = "${TARGET_GOARCH}" -export GOARM = "${TARGET_GOARM}" -export GOROOT_BOOTSTRAP = "${STAGING_LIBDIR_NATIVE}/go1.4" -export GOROOT_FINAL = "${libdir}/go" -export CGO_ENABLED = "1" -export CC_FOR_TARGET = "${CC}" -export CXX_FOR_TARGET = "${CXX}" - -do_configure[noexec] = "1" - -do_compile_prepend_class-cross() { - export CGO_ENABLED=0 -} - -do_compile() { - export GOBIN="${B}/bin" - export CC="${@d.getVar('BUILD_CC', True).strip()}" - rm -rf ${GOBIN} ${B}/pkg - mkdir ${GOBIN} - - export TMPDIR=${WORKDIR}/build-tmp - mkdir -p ${WORKDIR}/build-tmp - - cd src - ./make.bash --host-only - # Ensure cgo.a is built with the target toolchain - export GOBIN="${B}/target/bin" - rm -rf ${GOBIN} - mkdir -p ${GOBIN} - GO_FLAGS="-a" ./make.bash -} - -do_install_class-target() { - install -d ${D}${libdir}/go - cp -a ${B}/pkg ${D}${libdir}/go/ - install -d ${D}${libdir}/go/src - (cd ${S}/src; for d in *; do \ - [ -d $d ] && cp -a ${S}/src/$d ${D}${libdir}/go/src/; \ - done) - install -d ${D}${bindir} - if [ -d ${B}/bin/${GOOS}_${GOARCH} ] - then - install -m 0755 ${B}/bin/${GOOS}_${GOARCH}/* ${D}${bindir} - else - install -m 0755 ${B}/bin/* ${D}${bindir} - fi -} - -do_install_class-cross() { - install -d ${D}${libdir}/go - cp -a ${B}/pkg ${D}${libdir}/go/ - install -d ${D}${libdir}/go/src - (cd ${S}/src; for d in *; do \ - [ -d $d ] && cp -a ${S}/src/$d ${D}${libdir}/go/src/; \ - done) - install -d ${D}${bindir} - for f in ${B}/bin/go* - do - install -m755 $f ${D}${bindir} - done -} -do_package_qa[noexec] = "1" - -RDEPENDS_${PN} += "perl" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.6.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.6.bb deleted file mode 100644 index 2f590338c..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.6.bb +++ /dev/null @@ -1,4 +0,0 @@ -require go.inc -require go-${PV}.inc - -BBCLASSEXTEND = "cross" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.8.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.8.bb deleted file mode 100644 index 091b1318a..000000000 --- a/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.8.bb +++ /dev/null @@ -1,3 +0,0 @@ -require go-${PV}.inc -require go.inc -TUNE_CCARGS_remove = "-march=mips32r2" diff --git a/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.9.bb b/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.9.bb new file mode 100644 index 000000000..c67e2cb05 --- /dev/null +++ b/import-layers/yocto-poky/meta/recipes-devtools/go/go_1.9.bb @@ -0,0 +1,2 @@ +require go-${PV}.inc +require go-target.inc |