tools: remove go from meta-virtualization

go is now part of oe-core, so we can drop the meta-virt local recipes.

Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
This commit is contained in:
Bruce Ashfield 2017-03-15 21:41:04 -04:00
parent 260add1874
commit b44fce825d
24 changed files with 0 additions and 936 deletions

View File

@ -1,15 +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 \
"
LIC_FILES_CHKSUM = "file://LICENSE;md5=591778525c869cdde0ab5a1bf283cd81"
SRC_URI[md5sum] = "dfb604511115dd402a77a553a5923a04"
SRC_URI[sha256sum] = "9947fc705b0b841b5938c48b22dc33e9647ec0752bae66e50278df4f23f64959"

View File

@ -1,21 +0,0 @@
Description: Use correct ELF header for armhf binaries.
Author: Adam Conrad <adconrad@ubuntu.com>
Last-Update: 2013-07-08
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 */

View File

@ -1,223 +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>
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

View File

@ -1,57 +0,0 @@
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 {

View File

@ -1,19 +0,0 @@
require go-common.inc
PV = "1.5.2"
GO_BASEVERSION = "1.5"
FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
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 \
"
LIC_FILES_CHKSUM = "file://LICENSE;md5=591778525c869cdde0ab5a1bf283cd81"
SRC_URI[md5sum] = "38fed22e7b80672291e7cba7fb9c3475"
SRC_URI[sha256sum] = "f3ddd624c00461641ce3d3a8d8e3c622392384ca7699e901b370a4eac5987a74"

View File

@ -1,19 +0,0 @@
Index: go/src/cmd/link/internal/ld/elf.go
===================================================================
--- go.orig/src/cmd/link/internal/ld/elf.go 2015-07-29 13:05:25.952533140 -0700
+++ go/src/cmd/link/internal/ld/elf.go 2015-07-29 13:14:53.413112995 -0700
@@ -780,7 +780,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 {
ehdr.flags = 0x5000002 // has entry point, Version5 EABI
}
fallthrough

View File

@ -1,46 +0,0 @@
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 {

View File

@ -1,13 +0,0 @@
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

View File

@ -1,26 +0,0 @@
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)

View File

@ -1,58 +0,0 @@
Index: go/src/make.bash
===================================================================
--- go.orig/src/make.bash
+++ go/src/make.bash
@@ -143,12 +143,23 @@ 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
+ do_host_build="no"
+ shift
+elif [ "$1" = "--host-only" ]; then
+ do_target_build="no"
+ shift
+fi
+
+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
+
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
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

View File

@ -1,57 +0,0 @@
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 {

View File

@ -1,19 +0,0 @@
require go-common.inc
PV = "1.6.2"
GO_BASEVERSION = "1.6"
FILESEXTRAPATHS_prepend := "${FILE_DIRNAME}/go-${GO_BASEVERSION}:"
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 \
"
LIC_FILES_CHKSUM = "file://LICENSE;md5=591778525c869cdde0ab5a1bf283cd81"
SRC_URI[md5sum] = "d1b50fa98d9a71eeee829051411e6207"
SRC_URI[sha256sum] = "787b0b750d037016a30c6ed05a8a70a91b2e9db4bd9b1a2453aa502a63f1bccc"

View File

@ -1,19 +0,0 @@
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

View File

@ -1,46 +0,0 @@
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 {

View File

@ -1,13 +0,0 @@
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

View File

@ -1,26 +0,0 @@
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)

View File

@ -1,58 +0,0 @@
Index: go/src/make.bash
===================================================================
--- go.orig/src/make.bash
+++ go/src/make.bash
@@ -143,12 +143,23 @@ 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
+ do_host_build="no"
+ shift
+elif [ "$1" = "--host-only" ]; then
+ do_target_build="no"
+ shift
+fi
+
+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
+
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
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

View File

@ -1,57 +0,0 @@
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 {

View File

@ -1,20 +0,0 @@
SUMMARY = "Go programming language compiler"
DESCRIPTION = " The Go programming language is an open source project to make \
programmers more productive. Go is expressive, concise, clean, and\
efficient. Its concurrency mechanisms make it easy to write programs\
that get the most out of multicore and networked machines, while its\
novel type system enables flexible and modular program construction.\
Go compiles quickly to machine code yet has the convenience of\
garbage collection and the power of run-time reflection. It's a\
fast, statically typed, compiled language that feels like a\
dynamically typed, interpreted language."
HOMEPAGE = " http://golang.org/"
LICENSE = "BSD-3-Clause"
inherit go-osarchmap
SRC_URI = "http://golang.org/dl/go${PV}.src.tar.gz"
S = "${WORKDIR}/go"
B = "${S}"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"

View File

@ -1,64 +0,0 @@
inherit cross
# Produces target arch specific code so we should reflect this in the PN
PN = "go-cross-${TARGET_ARCH}"
# libgcc is required for the target specific libraries to build properly
DEPENDS += "go-initial-native libgcc virtual/${TARGET_PREFIX}gcc"
do_compile[depends] += "go-initial-native:do_populate_sysroot"
# Prevent runstrip from running because you get errors when the host arch != target arch
#INHIBIT_PACKAGE_STRIP = "1"
STRIP = "echo"
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}/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()}"
do_configure[noexec] = "1"
do_compile() {
export GOBIN="${B}/bin"
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() {
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/*
do
install -m755 $f ${D}${bindir}
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"

View File

@ -1,2 +0,0 @@
require go-cross.inc
require go-${PV}.inc

View File

@ -1,2 +0,0 @@
require go-cross.inc
require go-${PV}.inc

View File

@ -1,2 +0,0 @@
require go-native.inc
require go-${PV}.inc

View File

@ -1,54 +0,0 @@
inherit native
export GOOS = "${BUILD_GOOS}"
export GOARCH = "${BUILD_GOARCH}"
export GOROOT_FINAL = "${STAGING_LIBDIR_NATIVE}/go"
export CGO_ENABLED = "1"
do_configure[noexec] = "1"
do_compile() {
export GOBIN="${B}/bin"
rm -rf ${GOBIN}
mkdir ${GOBIN}
export TMPDIR=${WORKDIR}/build-tmp
mkdir -p ${WORKDIR}/build-tmp
cd src
CGO_ENABLED=0 ./make.bash --host-only
}
make_wrapper() {
rm -f ${D}${bindir}/$2
cat <<END >${D}${bindir}/$2
#!/bin/bash
here=\`dirname \$0\`
export GOROOT="${GOROOT:-\`readlink -f \$here/../lib/go\`}"
\$here/../lib/go/bin/$1 "\$@"
END
chmod +x ${D}${bindir}/$2
}
do_install() {
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} ${D}${libdir}/go/bin
for f in ${B}/bin/*
do
base=`basename $f`
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"