| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We only use go-native to bootstrap go-cross and according to a post in
the go-lang git it is possible to work around by disabling CGO:
https://github.com/golang/go/issues/16906
This patch fixes the compile failure with binutils 2.27 which has the
message:
cannot load DWARF output from $WORK/net/_obj//_cgo_.o: decoding dwarf section info at offset 0x4: unsupported version 0
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Similar to a recent change for go-cross we can potentially run in to a
build failure:
go tool dist: mkdtemp(/var/tmp/go-cbuild-A0rrP5): No such file or directory
when the host doesn't have a /var/tmp or when the permissions don't
allow for the creation of the temporary directory. Instead of relying
on /var/tmp we create and use a temporary directory in the $WORKDIR to
work around this issue. This is passed to the build via the TMPDIR
environment variable.
Signed-off-by: Mark Asselstine <mark.asselstine@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Introduce the 1.6 go release, and port patches to apply to this version.
Existing versions (1.5) are not removed, so this is not a forced update.
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add relocation fix as documented in contained commit log, so that we
can build with newer binutils, as per the ones we get via the self
hosted builder and things like build-appliance.
Fixes:
| go-native/1.4.3-r0/go/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
| go-native/1.4.3-r0/go/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
| runtime/cgo(.text): unexpected relocation type 298
| runtime/cgo(.text): unexpected relocation type 298
| # cmd/go
| go-native/1.4.3-r0/go/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
| go-native/1.4.3-r0/go/pkg/linux_amd64/runtime/cgo.a(_all.o): unknown relocation type 42; compiled without -fpic?
| runtime/cgo(.text): unexpected relocation type 298
| runtime/cgo(.text): unexpected relocation type 298
| WARNING: go-native/1.4.3-r0/temp/run.do_compile.30243:1 exit 2 from './make.bash --host-only'
| ERROR: Function failed: do_compile (log file is located at go-native/1.4.3-r0/temp/log.do_compile.30243)
ERROR: Task 6 (meta-virtualization/recipes-devtools/go-cross/go-native_1.4.bb, do_compile) failed with exit code '1'
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
|
|
|
|
|
|
|
| |
There is a fix for newer binutils that was aimed at being placed
on the 1.4.3 baseline, so update accordingly.
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
|
|
|
|
|
|
|
|
| |
* 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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The go-cross-1.3 package depends on the libgcc to be installed for the
cross compiler else you will receive an error if this package builds
first like:
runtime/cgo
/opt/tmp/sysroots/x86_64-linux/usr/bin/arm-wrs-linux-gnueabi/../../libexec/arm-wrs-linux-gnueabi/gcc/arm-wrs-linux-gnueabi/4.9.1/ld: cannot find crtbeginS.o: No such file or directory
collect2: error: ld returned 1 exit status
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since we need go 1.3 to co-exist with later versions (ie 1.4),
package go-cross_1.3 as go-cross-1.3_1.3.
go 1.3 will be installed to a different path than go-cross, this requires
go packages needing go 1.3 to set its PATH to:
export PATH=${STAGING_BINDIR_NATIVE}/${HOST_SYS}/go-1.3:$PATH
Signed-off-by: Amy Fong <amy.fong@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
architectures
submitted to upstream https://github.com/errordeveloper/oe-meta-go
go-cross: set alignment for the .rel.plt section on 32-bit architectures
This patch is cherry picked from golang's upstream, and this patch will
fix the package of etcd's following build error:
ERROR: debugedit failed with exit code 256 (cmd was 'bitbake_build/tmp/sysroots/x86_64-linux/usr/lib/rpm/bin/debugedit' -b 'bitbake_build/tmp/work/cortexa7t2hf-vfp-neon-wrs-linux-gnueabi' -d '/usr/src/debug' -i -l 'bitbake_build/tmp/work/cortexa7t2hf-vfp-neon-wrs-linux-gnueabi/etcd/git-r0/debugsources.list' 'bitbake_build/tmp/work/cortexa7t2hf-vfp-neon-wrs-linux-gnueabi/etcd/git-r0/package/usr/bin/etcd'):
bitbake_build/tmp/sysroots/x86_64-linux/usr/lib/rpm/bin/debugedit: elf_update: invalid section alignment
ERROR: Function failed: split_and_strip_files
ERROR: Logfile of failure stored in: bitbake_build/tmp/work/cortexa7t2hf-vfp-neon-wrs-linux-gnueabi/etcd/git-r0/temp/do_package/log.do_package.109414
ERROR: Task 12 (layers/meta-overc/meta-pod/recipes-connectivity/etcd/etcd_git.bb, do_package) failed with exit code '1'
Signed-off-by: fupan li <fupan.li@windriver.com>
Signed-off-by: Amy Fong <amy.fong@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
submitted to upstream https://github.com/errordeveloper/oe-meta-go
go-cross: fix the building failed for quark bsp
Quark used i586 architecture, and golang dealt intel 32bit
architecture as 386, so export GOARCH = "386" when the TARGET_ARCH
is i586 to support quark bsp.
Signed-off-by: fupan li <fupan.li@windriver.com>
Signed-off-by: Amy Fong <amy.fong@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
submitted to upstream https://github.com/errordeveloper/oe-meta-go
go-cross: fix the bug of cross building error
When a package's recipe inherit "cross" bbclass, its CC and CXX are defined
as the host native gcc and g++ instead of the host cross toolchain, fot this
case, CC_FOR_TARGET and CXX_FOR_TARGET should be defined the same with CC and
CXX, instead they are should be define as host cross toolchain's CC and CXX,
otherwise, it will build failed for target arm architecture as below:
| # Building packages and commands for linux/arm.
| + CC='gcc '
| + bitbake_build/tmp/work/x86_64-wrs-linux-gnueabi/go-cross/1.4-r0/go/pkg/tool/linux_amd64/go_bootstrap install -ccflags '' -gcflags '' -ldflags '' -v std
| runtime
| errors
| sync/atomic
| unicode
| unicode/utf8
| math
| sort
| encoding
| unicode/utf16
| container/list
| crypto/subtle
| runtime/cgo
| container/ring
| image/color
| runtime/race
| # runtime/cgo
| gcc: error: unrecognized command line option '-marm'
Signed-off-by: fupan li <fupan.li@windriver.com>
Signed-off-by: Amy Fong <amy.fong@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|
|
The current version of docker (1.6.2) requires go 1.3
See go 1.4 sqlite issue:
https://github.com/docker/docker/issues/9649
Signed-off-by: Amy Fong <amy.fong@windriver.com>
Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
|