Commit Graph

182 Commits

Author SHA1 Message Date
Matt Madison
af1ee398b3 go: disable PIE flags for cgo
If the security_flags.inc file is included, gcc
will do PIE builds by default.  These flags need
to be disabled for go packages that use cgo.

(From OE-Core rev: 5d84042852380fc88b9be8df0e4eeac612c2a6da)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-26 11:05:00 +01:00
Matt Madison
6590c03808 go: fixes for cross-canadian builds
* Add patch for go's make script to allow for
  build system != host system

* Add dependencies on the appropriate crosssdk recipes,
  and use the crosssdk C compiler and linker

* Remove bashism in the wrapper script

* Restrict installation to only the tool binaries
  to address some packaging errors

(From OE-Core rev: e2171f14a2dbf630a926a6792f6e6355f80e18b1)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 09:05:50 +01:00
Matt Madison
975246ffe6 go: fix linking issues for nativesdk builds
Switch to using an external linker for nativesdk
go, go-runtime, and go package builds, which works
more reliably when building 32-bit SDKs.

(From OE-Core rev: f76779f7ef6636355a5aa5741a736f5234a67fdb)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 09:05:50 +01:00
Matt Madison
82ba908d86 go-crosssdk: fix host/target references and cleanup
* The _FOR_TARGET variables need to include SDKNATIVEPATH
* Install tools (cmd) only, and for the build host
* Remove unnecessary FILES setting

Corrects some errors when the build host architecture
is different from the SDKMACHINE's.

(From OE-Core rev: 94cfa563388fb39e6a409eefcae1598a9d426a5c)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-21 09:05:50 +01:00
Matt Madison
41c51dc28e go: update to go 1.9
* Rebased patches
   - dropped armhf-elf patch, should no longer be needed
   - dropped syslog patch which should not have been imported to begin with
   - reworked other patches as needed for the updated code base

* Updated native, cross, cross-canadian .inc files to
  remove some testdata directories that contain .a files
  that strip chokes on during sysroot staging

(From OE-Core rev: f2ccf56778433ec16f44eecaa10a610a6630df50)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-14 11:35:46 +01:00
Otavio Salvador
d61d4823a9 go.bbclass: Add "ldflags" to QA skip list
Currently every Go package will end with GNU_HASH in the ELF binary
however adding it to every recipe is cumbersome so instead we handle
that here.

(From OE-Core rev: 6699e668413c10704ffa8094b3dca67a9b88422a)

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-14 11:35:45 +01:00
Matt Madison
5c06801655 go-runtime: build the Go runtime as a shared library
If the target architecture supports, it build the Go
runtime as a shared library in addition to building
the static libraries.

(From OE-Core rev: f562b5e91c12ab67140de537ea269fe1ac85a764)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-14 11:35:45 +01:00
Matt Madison
996836ae4b go-1.8: add patch for set soname in ELF shared objects
The go link tool does not set the soname by default, which
prevents package.bbclass's shlibs processing from seeing
shared libraries built with go.

This patch passes appropriate options to go's linker and
the external linker to set the soname.

(From OE-Core rev: 24c2ac446296663b86160cac046e7faccb19f5af)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-14 11:35:45 +01:00
Matt Madison
b75fef21d1 go-runtime: extend to nativesdk builds
Missed this when addding SDK support.

(From OE-Core rev: ee80c21d12d12dc262d4b02aaaef3b57253b25df)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-14 11:35:45 +01:00
Matt Madison
6255c002af go-cross-canadian: add recipe
Enable cross-canadian builds of the Go toolchain.  This
requires an additional patch to the Go source to allow us
to use the native GOTOOLDIR during the bootstrap phase.

(From OE-Core rev: 9daa02f63a0d53ab90a515f2bd3e783187c9415b)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Matt Madison
4ccb075cdd go-crosssdk: add recipe
Enable crosssdk builds for the Go toolchain.

(From OE-Core rev: 5dbca2ab4ab9fdd200bbc8eb0572098e6fdbac84)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Matt Madison
065bd819e1 go: enable nativesdk builds for the toolchain
All that's needed is setting BBCLASSEXTEND.

(From OE-Core rev: 32438dce21689f6d6352486d6ad377d86fd90a1f)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Matt Madison
34fa930027 go-cross: take GOARM environment setting
Instead of hard-coding GOARM to ${TARGET_GOARM} in
the wrapper script, take it from an existing
environment setting if present.  This allows the
same cross-compiler to be used for different ARM
targets.

(From OE-Core rev: 1d319f102cd1f37ce5629c73948efae01478f866)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Matt Madison
242318fa28 go: rename go.inc -> go-target.inc
to make it clearer that it is only used for building
the toolchain for the target.

(From OE-Core rev: 780aa334f8614c80ce5b9cb77b0cea2fcd482614)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Otavio Salvador
6128573e23 go-dep: Move bash dependency to -dev package
The src content has been moved to -dev package, so does the test
routines. Fix the runtime dependency accordingly.

(From OE-Core rev: 53bbd2222027b7bbca8df066a8a9a58355ae0f91)

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Matt Madison
9060b87711 go: split out go-runtime into separate recipe
Reorganize the Go toolchain build to split out
the Go standard runtime libraries into a separate
recipe.  This simplifies the extension to crosssdk
and cross-canadian builds.

* Adds a patch to the go build tool to prevent it
  from trying to rebuild anything in GOROOT, which
  is now resident in the target sysroot.

* 'go' bb and inc files are now for building the
  compiler for the target only.

* 'go-cross' bb and inc files are now just for
  the cross-compiler.

* Adds virtual/<prefix> PROVIDES for the compiler
  and runtime

* Removes testdata directories from the sysroot
  during staging, as they are unnecessary and
  can cause strip errors (some of the test files
  are ELF files).

* Re-enables pacakage QA checks, adding selective
  INSANE_SKIP settings where needed.

(From OE-Core rev: d2a7af7cd834e218c39d43ee3fa0c14d4f748727)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Matt Madison
2a7a37e70d go-bootstrap-native: remove recipe
No longer needed, with go-native handling its own
bootstrap phase.

(From OE-Core rev: d9f54865ac90ed8d39a70b7989b1bf43ab26e248)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Matt Madison
4a11f8e98c go-native: remove dependency on go-bootstrap-native
The go1.4 toolchain is only required for bootstrapping
go-native, and should not be used for anything else,
so build it as part of the go-native build. This way,
we don't have to carry around its built artifacts in
the native sysroot.

The go-cross and target toolchains can then just depend
on go-native, using that for their 'bootstrap' toolchain.

Also removed some unnecessary package-related noexec
settings, since native recipes inherit nopackages.

(From OE-Core rev: 9dc9d457fb9a456bc18c7789b91f40e1f6a999fe)

Signed-off-by: Matt Madison <matt@madison.systems>
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-12 23:55:29 +01:00
Otavio Salvador
6cf084963a go-dep: Add 0.3.0 release
This is the Golang dependency management tool under development; it is
ready for production use and intended to be merged onto Golang
1.10. Until that, projects are starting to use it and making it
available on OE-Core reduces the Golang integration work for new
recipes.

(From OE-Core rev: 79e0401fa463736f28ad39f2f98cd23d8fd6fe88)

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 17:30:30 +01:00
Otavio Salvador
30e23e1556 go: Remove Go 1.6 and 1.7 releases
The OE-Core has no reason to support multiple versions of Go as this
increases the maintenance work and testing efforts. So we are going to
support just a single version from now on which currently is 1.8.3.

The 1.4 release is kept around as it is used for bootstrap, as such,
it cannot be removed.

(From OE-Core rev: 26abbf129d7ca0d36f6244f96fa8a572fd847899)

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-09-11 17:30:30 +01:00
Khem Raj
e577be00d7 go: Remove -fPIE -pie from SECURITY_PIE_CFLAGS
External compilers will explicitly pass -fPIE -pie flags
unlike internal toolchain which does not use them, so the build
fails with external toolchains because, its passing these
flags to linker when building with -r option and fails to link

| /mnt/a/oe/build/tmp/work/corei7-64-bec-linux/go/1.8.3-r0/recipe-sysroot-native/usr/bin/x86_64-bec-linux/x86_64-bec-linux-ld: -r and -pie may not be used together

(From OE-Core rev: bb89849b5edb05a953586d190826a67ba87c1c5a)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-08-09 09:24:15 +01:00
Joe Slater
25717652b6 go: centralize definition of COMPATIBLE_HOST
Put it in goarch.bbclass which all go related recipes inherit.

(From OE-Core rev: 9e899bbc081cb932c1492f6d6802b908d70ef42f)

Signed-off-by: Joe Slater <jslater@windriver.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-07-27 22:36:52 +01:00
Joe Slater
d5214ebaf7 go: do not try to build for powerpc64
Add powerpc64 to the incompatible host list.

(From OE-Core rev: 358c2daee23eaa778e6a4f356b05b2d5a248fdd1)

Signed-off-by: Joe Slater <jslater@windriver.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-09 17:12:14 +01:00
Khem Raj
f16368d2c5 go: Upgrade to 1.8.3
Add a comment to fix build musl<->glibc switch while
using same TMPDIR

(From OE-Core rev: bc940753ee4af8c656f33d63e33c3d12d419446e)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-06-05 09:19:51 +01:00
Patrick Ohly
3e903cb42f recipes/*-cross recipes: ignore TARGET_ARCH sstate hash
"yocto-compat-layer.py --machines" showed that shared packages like
gcc-cross-powerpc64 have a sstate signature that depends on
TUNEFLAGS. As a result, there are unnecessary rebuilds and potential
conflicts in a multiconfig.

That's due to the way how TARGET_ARCH is set. Richard Purdie suggested
setting TARGET_ARCH[vardepvalue] as fix, which works. It would be
shorter to do that in cross.bbclass instead of repeating the relevant
line in different recipes, but Richard was concerned about potential
side-effects in other usages of cross.bbclass.

TARGET_GOARM as used in go.inc is still causing signature differences
for go-cross-powerpc64 and machines b4420qds-64b and p5020ds-64b. This
needs further investigation.

(From OE-Core rev: 39bfa0dd3237cbca47e7fca1075d521f9d073f25)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-04-12 15:09:58 +01:00
Patrick Ohly
30686e2fd6 go-cross: avoid libgcc dependency
libgcc gets compiled differently depending on the tune flags for the
target. That dependency would make go-cross also tune specific and
prevent sharing it between different machines using the same
architecture.

For example, MACHINE=intel-corei7-64 and MACHINE=qemux86-64 shared the
same go-cross-x86_64, but compiled libgcc differently.

The libgcc dependency gets inherited from go.inc, but does not seem to
be necessary for go-cross (compiling go-helloworld still succeeds).
The dependency is left in go.inc conditionally, just in case that it
really is relevant for the various on-target recipes which inherit
that.

Because go-cross*.bb includes go*.bb, moving the DEPENDS into a .inc
file that only gets included for the target recipes doesn't
work. Reshuffling the content of three .bb files seems too intrusive
at this point.

(From OE-Core rev: 58149a7be4172074349951aaf5af95fa40fd4bdb)

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-04-12 15:09:58 +01:00
Khem Raj
c8e8e50bc3 go-native: Install bootstrap binaries with 1.4 suffix
Currently, bin/go and bin/gofmt collide between go-native
and go-bootstrap-native packages, these are scripts anyway
which call the go compiler proper from right install, in
this case create go1.4 and gofmt1.4 names for these scripts
to avoid namespace collision

(From OE-Core rev: c46faa132d39d3dc235a019d9abf6e46f74e3bae)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-03-22 11:35:21 +00:00
Khem Raj
27ba0db9db go: Remove mips32r2 from mips
mips32r1 is only one supported for mips32

(From OE-Core rev: d39b819579c767aa7892835624540fd6509db201)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-03-17 16:53:05 +00:00
Khem Raj
12afe700f3 go: Fix packaging for target go
We need all packaging tasks when building
go for target

(From OE-Core rev: 8f504a7737d5e6be6ec61f9ce8728a2c74102a8a)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-03-17 16:53:04 +00:00
Khem Raj
49c4fb941e go: add native recipes for 1.8
(From OE-Core rev: 13a5c3dac4b5b0ccb4c5dfebf79b468acd8e1983)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-03-14 14:42:18 +00:00
Khem Raj
c46c25dcfe go: Enable on musl
Working fine for musl targets now

(From OE-Core rev: 1bab5be8133f62cdae251e66db6f472c3c37297c)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-03-14 14:42:18 +00:00
Khem Raj
760e81678c go: Add recipes for golang compilers and tools
* This is converging the recipes for go from
  meta-virtualization and oe-meta-go

* Add recipes for go 1.7

* go.bbclass is added to ease out writing
  recipes for go packages

* go-examples: Add an example, helloworld written in go
  This should serve as temlate for writing go recipes

* Disable for musl, at least for now

* Disable for x32/ppc32 which is not supported

(From OE-Core rev: 78615e9260fb5d6569de4883521b049717fa4340)

Signed-off-by: Khem Raj <raj.khem@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
2017-03-10 15:51:55 +00:00