summaryrefslogtreecommitdiffstats
path: root/recipes-devtools/go-cross/go-cross.inc
Commit message (Collapse)AuthorAgeFilesLines
* tools: remove go from meta-virtualizationBruce Ashfield2017-03-201-64/+0
| | | | | | 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>
* go-cross: add ${TARGET_ARCH} to PNMark Asselstine2017-02-091-0/+3
| | | | | | | | | | | | Since we are building a cross tool which produces something which is ARCH specific we should stick to the <toolname>-cross-<arch> naming convention. A variant of this patch has been floating around for a while but with the changes around per recipe sysroots, distributed builds, shared builds... we are best served to adopt this convention now. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* go-native: rename to go-initial-nativeMark Asselstine2017-02-091-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | With the new per recipe sysroots we were having build issues since the bootstrap version of go (go-native 1.4) was being found and not the go-cross (1.6) we are expecting. This results in errors such as the following when building packages such as containerd: _cgo_.o: decoding dwarf section info at offset 0x4: unsupported version 0 This is caused by the dependency tree built up to prepare the per recipe sysroot. Since recipes like containerd DEPEND on go-cross and go-cross DEPENDS on go-native both are installed but unlike the old global sysroot the dependency parsing order results in go-native being last, overwriting go-cross. You can see this by running a devshell for containerd and running 'go version'. By adding '-initial' in the name we exploit functionality in sstate.bbclass that is already in place to handle gcc-initial and similar. This results in only explicit DEPENDS on go-native being enforced, so in the case of containerd we only get a dependency on go-cross and we therefor get go 1.6 as expected. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* go-cross: depend on virtual/${TARGET_PREFIX}gccMark Asselstine2017-02-011-1/+1
| | | | | | | | | | | | | This fixes the compile time error #runtime/cgo exec: "x86_64-overc-linux-gcc": executable file not found in $PATH Since we set CC_FOR_TARGET to ${TARGET_PREFIX}gcc we need to ensure this is present by adding it to the recipe DEPENDS. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* Remove True option to getVar callsPaul Barker2017-01-031-1/+1
| | | | | | | getVar() now defaults to expanding by default. Signed-off-by: Paul Barker <paul@paulbarker.me.uk> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* go-cross: Fix failure if building go-cross firstJason Wessel2016-10-191-1/+2
| | | | | | | | If go-cross is built as the first package it will fail creating the target libraries used for cross-compilation because it requires libgcc. Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* go-cross: Fix host contamination for x86_64 host to x86_64 targetJason Wessel2016-10-121-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | The go-cross package is explicitly for compiling target libraries on the host system. When the target architecture matches the host architecture it will actually use the host's linker and compiler however which can result in the generation of the cgo.a library having linker symbols which might not work properly when compiling other packages. A typical error looks like this when building consul-migrate: /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/lib/x86_64-linux/go/pkg/tool/linux_amd64/link: running x86_64-yocto-linux-gcc failed: exit status 1 /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/libexec/x86_64-yocto-linux/gcc/x86_64-yocto-linux/5.2.0/ld: /opt/build-intel-x86/tmp/work/core2-64-yocto-linux/consul-migrate/git-r0/build-tmp/go-link-956548052/000002.o: unrecognized relocation (0x2a) in section `.text' /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/libexec/x86_64-yocto-linux/gcc/x86_64-yocto-linux/5.2.0/ld: final link failed: Bad value collect2: error: ld returned 1 exit status The fix is to use the make.bash --target-only option to properly build the libraries with the target toolchain. The "go" binaries are thrown away but the cross compilation libraries are preserved. The sysroot strip also has to be disabled because it will run the host strip on the target binaries. Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* Revert "go-cross: Fix host contamination for x86_64 host to x86_64 target"Bruce Ashfield2016-09-231-9/+1
| | | | | | | | | | | | | | | | | | | | | | | This is breaking the build of go-cross on some machines: Log data follows: | DEBUG: Executing shell function do_compile | NOTE: make -j 20 static | ERROR: oe_runmake failed | /home/bruce/poky/build/tmp/work/core2-64-poky-linux/containerd/0.2.2+git0ac3cd1be170d180b2baed755e8f0da547ceb267-r0/git | cd ctr && go build -ldflags "-w -extldflags -static -X github.com/docker/containerd.GitCommit=0ac3cd1be170d180b2baed755e8f0da547ceb267 " -tags "" -o ../bin/ctr | cd containerd && go build -ldflags "-w -extldflags -static -X github.com/docker/containerd.GitCommit=0ac3cd1be170d180b2baed755e8f0da547ceb267 " -tags "" -o ../bin/containerd | cd containerd-shim && go build -ldflags "-w -extldflags -static -X github.com/docker/containerd.GitCommit=0ac3cd1be170d180b2baed755e8f0da547ceb267 " -tags "" -o ../bin/containerd-shim | # github.com/docker/docker/pkg/term | cannot load DWARF output from $WORK/github.com/docker/docker/pkg/term/_obj//_cgo_.o: decoding dwarf section info at offset 0x4: unsupported version 0 | make: *** [shim-static] Error 2 | make: *** Waiting for unfinished jobs.... | # github.com/docker/docker/pkg/term | cannot load DWARF output from $WORK/github.com/docker/docker/pkg/term/_obj//_cgo_.o: decoding dwarf section info at offset 0x4: unsupported version 0 | # github.com/opencontainers/runc/libcontainer/system | cannot load DWARF output from $WORK/github.com/opencontainers/runc/libcontainer/system/_obj//_cgo_ This reverts commit 7ff08e542d15b8e0104185768debf360044af7d1.
* go-cross: Fix host contamination for x86_64 host to x86_64 targetJason Wessel2016-09-221-1/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | The go-cross package is explicitly for compiling target libraries on the host system. When the target architecture matches the host architecture it will actually use the host's linker and compiler however which can result in the generation of the cgo.a library having linker symbols which might not work properly when compiling other packages. A typical error looks like this when building consul-migrate: /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/lib/x86_64-linux/go/pkg/tool/linux_amd64/link: running x86_64-yocto-linux-gcc failed: exit status 1 /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/libexec/x86_64-yocto-linux/gcc/x86_64-yocto-linux/5.2.0/ld: /opt/build-intel-x86/tmp/work/core2-64-yocto-linux/consul-migrate/git-r0/build-tmp/go-link-956548052/000002.o: unrecognized relocation (0x2a) in section `.text' /opt/build-intel-x86/tmp/sysroots/x86_64-linux/usr/libexec/x86_64-yocto-linux/gcc/x86_64-yocto-linux/5.2.0/ld: final link failed: Bad value collect2: error: ld returned 1 exit status The fix is to use the make.bash --target-only option to properly build the libraries with the target toolchain. When the host architecture does not match the target architecture we must also force build the target libraries or they get dynamically populated into the sysroot in an uncontrolled manner by the first package that uses go-cross to compile code. Signed-off-by: Jason Wessel <jason.wessel@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* go-cross: allow tmp directory to already existBruce Ashfield2016-05-251-1/+1
| | | | | | | | | | | | | | | The change [go-native: don't use host /var/tmp for temp build artifacts] fixed builds, but it is possible that the tmp directory already exists, which results in the following failure: | DEBUG: Executing shell function do_compile | mkdir: cannot create directory 'tmp/work/x86_64-linux/go-cross/1.6.2-r0/build-tmp': File exists | WARNING: exit code 1 from a shell command. | ERROR: Function failed: do_compile (log file is located at tmp/work/x86_64-linux/go-cross/1.6.2-r0/temp/log.do_compile.29142) By adding a -p to the mkdir calls, we can survive this scenario. Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* go-cross: don't use host /var/tmp for temporary build artifactsMark Asselstine2016-05-161-1/+5
| | | | | | | | | | | | | | | | The default behavior for go-cross build is to use the path specified in TMPDIR for some temporary build artifacts and if no TMPDIR is set in the environment to fallback to use /var/tmp. This causes a build failure on hosts that do not have a /var/tmp or that have restrictive permissions on /var/tmp. The failure is seen as: go tool dist: mkdtemp(/var/tmp/go-cbuild-yhmNbi): No such file or directory By setting TMPDIR and ensuring we create this directory we can avoid the associated issue with using the default. Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
* go-cross: uprev to 1.5.2Zongchun Yu2016-04-191-0/+45
* Add go-native as build bootstrap for go-cross. * Upgrade go-cross to v1.5.2 Signed-off-by: Zongchun Yu <zongchun.yu@nxp.com> Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>