From 2dfc02f485701075db3ee2fd3fd48ce921345a29 Mon Sep 17 00:00:00 2001 From: Michael Marineau Date: Wed, 31 Aug 2016 10:46:35 -0700 Subject: [PATCH] dev-lang/go: support installing multiple Go versions in parallel --- ...ld => hard-host-depends-0.0.1-r179.ebuild} | 0 .../hard-host-depends-0.0.1.ebuild | 2 +- .../dev-lang/go/go-1.5.4-r1.ebuild | 227 ------------------ .../dev-lang/go/go-1.5.4-r2.ebuild | 9 + .../dev-lang/go/go-1.6.3-r1.ebuild | 9 + .../dev-lang/go/go-1.6.3.ebuild | 1 - .../coreos-overlay/dev-lang/go/go-9999.ebuild | 227 ------------------ .../eclass/coreos-go-depend.eclass | 2 +- .../eclass/coreos-go-lang.eclass | 123 ++++++++++ .../eclass/coreos-go-utils.eclass | 3 + .../coreos-overlay/eclass/coreos-go.eclass | 6 +- 11 files changed, 149 insertions(+), 460 deletions(-) rename sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/{hard-host-depends-0.0.1-r178.ebuild => hard-host-depends-0.0.1-r179.ebuild} (100%) delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-1.5.4-r1.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-1.5.4-r2.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-1.6.3-r1.ebuild delete mode 120000 sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-1.6.3.ebuild delete mode 100644 sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-9999.ebuild create mode 100644 sdk_container/src/third_party/coreos-overlay/eclass/coreos-go-lang.eclass diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1-r178.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1-r179.ebuild similarity index 100% rename from sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1-r178.ebuild rename to sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1-r179.ebuild diff --git a/sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1.ebuild b/sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1.ebuild index bccb396356..43ea52f54e 100644 --- a/sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/coreos-base/hard-host-depends/hard-host-depends-0.0.1.ebuild @@ -43,7 +43,7 @@ RDEPEND="${RDEPEND} dev-lang/nasm dev-lang/swig dev-lang/yasm - dev-lang/go + dev-lang/go:1.6 dev-lang/go-bootstrap dev-libs/dbus-glib >=dev-libs/glib-2.26.1 diff --git a/sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-1.5.4-r1.ebuild b/sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-1.5.4-r1.ebuild deleted file mode 100644 index 17054a4e26..0000000000 --- a/sdk_container/src/third_party/coreos-overlay/dev-lang/go/go-1.5.4-r1.ebuild +++ /dev/null @@ -1,227 +0,0 @@ -# Copyright 1999-2015 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Id$ - -EAPI=5 - -export CBUILD=${CBUILD:-${CHOST}} -export CTARGET=${CTARGET:-${CHOST}} - -inherit eutils toolchain-funcs - -if [[ ${PV} = 9999 ]]; then - EGIT_REPO_URI="git://github.com/golang/go.git" - inherit git-r3 -else - SRC_URI="https://storage.googleapis.com/golang/go${PV}.src.tar.gz" - # arm64 only works when cross-compiling in the SDK - KEYWORDS="-* amd64 ~arm arm64 ~x86 ~amd64-fbsd ~x86-fbsd ~x64-macos ~x86-macos" -fi - -DESCRIPTION="A concurrent garbage collected and typesafe programming language" -HOMEPAGE="http://www.golang.org" - -LICENSE="BSD" -SLOT="0/${PV}" -IUSE="cros_host arm64-extras" - -# can't build go without go -DEPEND=">=dev-lang/go-bootstrap-1.5.3" -RDEPEND="" - -# These test data objects have writable/executable stacks. -QA_EXECSTACK="usr/lib/go/src/debug/elf/testdata/*.obj" - -# The tools in /usr/lib/go should not cause the multilib-strict check to fail. -QA_MULTILIB_PATHS="usr/lib/go/pkg/tool/.*/.*" - -# The go language uses *.a files which are _NOT_ libraries and should not be -# stripped. The test data objects should also be left alone and unstripped. -STRIP_MASK="/usr/lib/go/pkg/*.a - /usr/lib/go/src/debug/elf/testdata/* - /usr/lib/go/src/debug/dwarf/testdata/* - /usr/lib/go/src/runtime/race/*.syso" - -if use cros_host && use arm64-extras; then - STRIP_MASK+="/usr/lib/go/pkg/tool/linux_arm64/*" -fi - -if [[ ${PV} != 9999 ]]; then - S="${WORKDIR}"/go -fi - -go_arch() -{ - # By chance most portage arch names match Go - local portage_arch=$(tc-arch $@) - case "${portage_arch}" in - x86) echo 386;; - x64-*) echo amd64;; - *) echo "${portage_arch}";; - esac -} - -go_arm() -{ - case "${1:-${CHOST}}" in - armv5*) echo 5;; - armv6*) echo 6;; - armv7*) echo 7;; - *) - die "unknown GOARM for ${1:-${CHOST}}" - ;; - esac -} - -go_os() -{ - case "${1:-${CHOST}}" in - *-linux*) echo linux;; - *-darwin*) echo darwin;; - *-freebsd*) echo freebsd;; - *-netbsd*) echo netbsd;; - *-openbsd*) echo openbsd;; - *-solaris*) echo solaris;; - *-cygwin*|*-interix*|*-winnt*) - echo windows - ;; - *) - die "unknown GOOS for ${1:-${CHOST}}" - ;; - esac -} - -go_tuple() -{ - echo "$(go_os $@)_$(go_arch $@)" -} - -go_cross_compile() -{ - [[ $(go_tuple ${CBUILD}) != $(go_tuple) ]] -} - -pkg_pretend() -{ - # make.bash does not understand cross-compiling a cross-compiler - if [[ $(go_tuple) != $(go_tuple ${CTARGET}) ]]; then - die "CHOST CTARGET pair unsupported: CHOST=${CHOST} CTARGET=${CTARGET}" - fi -} - -src_prepare() -{ - epatch_user -} - -src_compile() -{ - export GOROOT_BOOTSTRAP="${EPREFIX}"/usr/lib/go-bootstrap - export GOROOT_FINAL="${EPREFIX}"/usr/lib/go - export GOROOT="$(pwd)" - export GOBIN="${GOROOT}/bin" - - # Go's build script does not use BUILD/HOST/TARGET consistently. :( - export GOHOSTARCH=$(go_arch ${CBUILD}) - export GOHOSTOS=$(go_os ${CBUILD}) - export CC=$(tc-getBUILD_CC) - export GOOS=$(go_os) - - cd src - - # Build the target support first. - if use cros_host && use arm64-extras; then - export GOARCH="arm64" - export CC_FOR_TARGET="aarch64-cros-linux-gnu-gcc" - export CXX_FOR_TARGET="aarch64-cros-linux-gnu-g++" - ebegin "Building for GOARCH=${GOARCH}..." - ./make.bash --no-clean --no-test - eend $? "Build for GOARCH=${GOARCH} failed." || die - fi - - # Build the host last to get the correct settings in the go environment. - export GOARCH=$(go_arch) - export CC_FOR_TARGET=$(tc-getCC) - export CXX_FOR_TARGET=$(tc-getCXX) - if [[ ${ARCH} == arm ]]; then - export GOARM=$(go_arm) - fi - ebegin "Building for GOARCH=${GOARCH}..." - ./make.bash --no-clean --no-test - eend $? "Build for GOARCH=${GOARCH} failed." || die -} - -src_test() -{ - go_cross_compile && return 0 - - cd src - PATH="${GOBIN}:${PATH}" \ - ./run.bash -no-rebuild || die "tests failed" -} - -src_install() -{ - local bin_path="${GOBIN}" - if go_cross_compile; then - bin_path="${GOBIN}/$(go_tuple)" - fi - dobin "${bin_path}"/go "${bin_path}"/gofmt - dodoc AUTHORS CONTRIBUTORS PATENTS README.md - - dodir /usr/lib/go /usr/lib/go/pkg /usr/lib/go/pkg/tool - insinto /usr/lib/go - - # There is a known issue which requires the source tree to be installed [1]. - # Once this is fixed, we can consider using the doc use flag to control - # installing the doc and src directories. - # [1] https://golang.org/issue/2775 - doins -r doc lib src - - # Selectively install pkg directory to exclude the bootstrap build - insinto /usr/lib/go/pkg - doins -r pkg/include "pkg/$(go_tuple)" - insinto /usr/lib/go/pkg/tool - doins -r "pkg/tool/$(go_tuple)" - fperms -R +x /usr/lib/go/pkg/tool - - if use cros_host && use arm64-extras; then - insinto /usr/lib/go/pkg - doins -r pkg/linux_arm64 - fi -} - -pkg_preinst() -{ - has_version '