summaryrefslogtreecommitdiffstats
path: root/meta/classes/go.bbclass
Commit message (Collapse)AuthorAgeFilesLines
* utils.py: add parallel make helpersJoshua Watt2018-02-161-18/+1
| | | | | | | | | | | | | | | | | | | The code to extract the integer number of parallel build threads and construct a new argument from them has started to be copied in multiple locations, so create two new helper utilities to aid recipes. The first helper (parallel_make()) extracts the integer number of parallel build threads from PARALLEL_MAKE. The second (parallel_make_argument()) does the same and then puts the result back into a format string, optionally clamping it to some maximum value. Additionally, rework the oe-core recipes that were manually doing this to use the new helper utilities. (From OE-Core rev: ccd1142d22b31ed85d8823b1bc9e11ccfd72b61f) Signed-off-by: Joshua Watt <JPEWhacker@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go: disable PIE flags for cgoMatt Madison2017-09-261-0/+3
| | | | | | | | | | | | 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>
* go.bbclass: set TMPDIR during compilationMatt Madison2017-09-211-0/+6
| | | | | | | | | | | | | | | | The go build tool creates working directories under $TMPDIR for all of its processing. Create a directory under ${WORKDIR} for this and point TMPDIR at it during compilation, so that systems that have a relatively small /tmp filesystems can still compile larger Go packages. (From OE-Core rev: 5de3de12c70f01753491c46b5622b0d273c3257b) 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>
* go: fix linking issues for nativesdk buildsMatt Madison2017-09-211-1/+3
| | | | | | | | | | | | | 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>
* go.bbclass: Add ptest supportOtavio Salvador2017-09-141-2/+60
| | | | | | | | | | This adds ptest support for Go packages so its unittest content is packaged and integrated onto the test framework. (From OE-Core rev: 2343cd90b9706589b33510c560ed83a9648fb133) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go.bbclass: Add "ldflags" to QA skip listOtavio Salvador2017-09-141-0/+2
| | | | | | | | | | | 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>
* go.bbclass: add support linking against shared runtimeMatt Madison2017-09-141-2/+9
| | | | | | | | | | | | For architectures that support it, use the -linkshared build option to build packages against the shared Go runtime. (From OE-Core rev: 5624a773e4db3ad2251641e69b04dc380e74a4c7) 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>
* go.bbclass: enable nativesdk builds for Go packagesMatt Madison2017-09-121-0/+2
| | | | | | | | | | Adding the necessary overrides for nativesdk builds. (From OE-Core rev: 83ad0bdb8a426b0beb3775cfb109ddb3936b7de1) 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>
* go.bbclass: clean up CGO_xxx settingsMatt Madison2017-09-121-6/+7
| | | | | | | | | | | | | | | | | | * use conditional assignment for the CGO_xxx variables, so they can be overridden more easily * remove the TOOLCHAIN_OPTIONS and TARGET_CC_ARCH references, since those are already present in CC and CXX * remove the TARGET_ prefix so the values are appropriate for native, nativesdk, etc. builds * move the GOROOT export away from the CGO settings and closer to its definition (From OE-Core rev: 088528021d6979a8e2d6bc33d63a166e300cfde4) 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>
* go.bbclass: remove some xxx_FINAL variablesMatt Madison2017-09-121-12/+7
| | | | | | | | | | | | | GOROOT_FINAL is used by the Go linker for rewriting source paths when the build GOROOT is not the same as the runtime GOROOT, but the other _FINAL variables aren't really needed. (From OE-Core rev: 31aa0d8a62be95d093d3c7581efa41f74b9131ad) 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>
* go.bbclass: remove GO_GCFLAGS nad GO_LDFLAGSMatt Madison2017-09-121-2/+0
| | | | | | | | | | These variables are not used anywhere. (From OE-Core rev: 2d37f60c2606de216aaa2d593b73b1de0a5c031e) 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>
* go: split out go-runtime into separate recipeMatt Madison2017-09-121-10/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* go.bbclass: add GO_INSTALL_FILTEROUT variableMatt Madison2017-09-111-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | When using the Go 'vendor' mechanism to bring in dependencies for a Go package, the default GO_INSTALL setting, which uses the '...' wildcard, will include the vendored packages in the build, which produces incorrect results. There are also some Go packages that are structured poorly, so that the '...' wildcard results in building example or test code that should not be included in the build, or fail to build. This patch adds a mechanism for filtering out a subset of the sources. It defaults to filtering out everything under the 'vendor' subdirectory under package's main directory, which is the normal location for vendored packages, but can be overridden by a recipe to filter out other subdirectories, if needed. (From OE-Core rev: 9819353726d85780546158428bd97a253705017d) 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>
* go.bbclass: add do_unpack function to handle common casesMatt Madison2017-09-111-1/+19
| | | | | | | | | | | | | | | | | | | | | | | Go source trees have a particular structure, with all sources located under ${GOROOT}/src/<import-path>. The fetcher step implemented by the 'go get' command automatically follows this structure, so we need to do the same here. Since most Go packages are hosted in git repositories, this adds a custom do_unpack() function that sets the destsuffix to match the expected directory structure, for any git SRC_URIs that haven't had a destsuffix explicitly set in the recipe. This simplifies recipe writing for the most common cases. (From OE-Core rev: efcf6513b71021ea4bfe6fbaa326e6591dee487d) 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>
* go.bbclass: separate ${S} and ${B}Matt Madison2017-09-111-28/+18
| | | | | | | | | | | | | | | | | | | Add a do_configure task to populate ${B} by symlinking in the src subdirectory under ${S}, which lets us point GOPATH at ${B}. This lets us take advantage of the automatic directory creation and cleaning for do_configure. This necessitates a change to do_install to split the installation of the sources and built artifacts. Taking advantage of some additional tar options, we can eliminate the extra staging area and extra recursive chown command. So overall efficiency should be improved. (From OE-Core rev: c62a083306c26b7e4deca1ff41336bb6b33d5b3a) 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>
* go.bbclass: Use an auxiliary variable to add the build dependenciesOtavio Salvador2017-09-111-3/+5
| | | | | | | | | | | | | | | This is going to easy the addition of nativesdk and virtual providers in the future. This change is based on the meta-golang[1] layer. Thanks to Matt Madison <matt@madison.systems> for his work on this. 1. https://github.com/madisongh/meta-golang (From OE-Core rev: 497136297f15858903b5170a8616d0cb427a995d) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go.bbclass: exported function cleanupMatt Madison2017-09-111-9/+5
| | | | | | | | | | | | | Since this is a class, it should follow the class function export mechanism for its task functions, and should set directory-related flags for directories they need. (From OE-Core rev: 0369a99ad1c9e3a9a6394c723461795460dc2c76) 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>
* go.bbclass: Enable parallel buildOtavio Salvador2017-09-111-0/+20
| | | | | | | | | | | | | | | The parallel build is based on PARALLEL_MAKE variable but can be overriden setting the GO_PARALLEL_BUILD one. This change is based on the meta-golang[1] layer. Thanks to Matt Madison <matt@madison.systems> for his work on this. 1. https://github.com/madisongh/meta-golang (From OE-Core rev: 7a40ea8fc358aa134ad86862591329f94d0f3718) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go.bbclass: Use a global Go build flagsOtavio Salvador2017-09-111-1/+3
| | | | | | | | | | | | | | | We now use a GOBUILDFLAGS to provide a global variable to control the build flags to be given to Go. This change is based on the meta-golang[1] layer. Thanks to Matt Madison <matt@madison.systems> for his work on this. 1. https://github.com/madisongh/meta-golang (From OE-Core rev: d6b8e7e94ba6dae44907c5a65bc0bdf0ccebdb15) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go.bbclass: Fix binary installation path detectionOtavio Salvador2017-09-111-1/+1
| | | | | | | | | | | | | | | | | | | | | | Go toolchain changes the installation path when building for the same architecture as the build host. This was already been considered in the GO_BUILD_BINDIR variable but was not being used by the go class. This fixes following error: ,---- | ERROR: go-dep-0.3.0-r0 do_package: QA Issue: go-dep: Files/directories | were installed but not shipped in any package: | /usr/lib/x86_64-oel-linux/go/bin/dep | Please set FILES such that these items are packaged. Alternatively if | they are unneeded, avoid installing them or delete them within | do_install. `---- (From OE-Core rev: 56ce355b3d775e801d2ca89ee812571e794311cd) Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go: centralize definition of COMPATIBLE_HOSTJoe Slater2017-07-271-5/+0
| | | | | | | | | 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>
* classes: Replace "if test" file tests with POSIX file testsuninative-1.6Robert P. J. Day2017-03-271-2/+2
| | | | | | | | | | In entire meta/classes/ directory, replace shell tests of the form "if test -? ..." with POSIX tests of the form "if [ -? ... (From OE-Core rev: 78928016f4cf38cf6751cb089200bf950d07ae93) Signed-off-by: Robert P. J. Day <rpjday@crashcourse.ca> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
* go: Enable on muslKhem Raj2017-03-141-2/+0
| | | | | | | | | 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>
* go: Add recipes for golang compilers and toolsKhem Raj2017-03-101-0/+79
* 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>