diff options
author | William Hubbs <williamh@gentoo.org> | 2019-04-29 11:24:04 -0500 |
---|---|---|
committer | William Hubbs <williamh@gentoo.org> | 2019-04-29 11:30:30 -0500 |
commit | 167c53006749b6bbf952c80af0e0b5a7d31eca32 (patch) | |
tree | bbb1e51e25b15147cef76dc08b6325427b6de65f /dev-lang | |
parent | net-dns/dnscap: rename 20130814 => 0_p20130814 (diff) | |
download | gentoo-167c53006749b6bbf952c80af0e0b5a7d31eca32.tar.gz gentoo-167c53006749b6bbf952c80af0e0b5a7d31eca32.tar.bz2 gentoo-167c53006749b6bbf952c80af0e0b5a7d31eca32.zip |
dev-lang/go: add system-bootstrap use flag
If a previous version of dev-lang/go is installed, you can use this use
flag to skip downloading the bootstrap archives and bootstrap the new
version using the already-installed version.
For the initial installation of dev-lang/go, we have to download all of
the bootstrap archives to make the go ebuild work under crossdev. For
this reason, system-bootstrap cannot be turned on by default.
Bug: https://bugs.gentoo.org/671394
closes: https://bugs.gentoo.org/684652
Copyright: Sony Interactive Entertainment Inc.
Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: William Hubbs <williamh@gentoo.org>
Diffstat (limited to 'dev-lang')
-rw-r--r-- | dev-lang/go/go-1.11.9.ebuild | 19 | ||||
-rw-r--r-- | dev-lang/go/go-1.12.4.ebuild | 19 | ||||
-rw-r--r-- | dev-lang/go/metadata.xml | 7 |
3 files changed, 30 insertions, 15 deletions
diff --git a/dev-lang/go/go-1.11.9.ebuild b/dev-lang/go/go-1.11.9.ebuild index 8fafeb455ba2..a53df7c09567 100644 --- a/dev-lang/go/go-1.11.9.ebuild +++ b/dev-lang/go/go-1.11.9.ebuild @@ -48,20 +48,20 @@ case ${PV} in esac esac -# If gccgo is not being used to build Go, there is no way to know the -# architecture or operating system of the build machine, so we need to -# download all of our bootstrap archives to allow this ebuild to work -# under crossdev. +# If gccgo or a previously installed version of dev-lang/go is not being +# used to build Go, there is no way to know the architecture or operating system +# of the build machine, so we need to download all of our bootstrap +# archives to allow this ebuild to work under crossdev. # # https://bugs.gentoo.org/671394 -SRC_URI+="!gccgo? ( ${BOOTSTRAP_URI} )" +SRC_URI+="!gccgo? ( !system-bootstrap? ( ${BOOTSTRAP_URI} ) )" DESCRIPTION="A concurrent garbage collected and typesafe programming language" HOMEPAGE="https://golang.org" LICENSE="BSD" SLOT="0/${PV}" -IUSE="gccgo" +IUSE="gccgo system-bootstrap" BDEPEND="gccgo? ( >=sys-devel/gcc-5[go] )" RDEPEND="!<dev-go/go-tools-0_pre20150902" @@ -151,6 +151,9 @@ pkg_pretend() if [[ $(go_tuple) != $(go_tuple ${CTARGET}) ]]; then die "CHOST CTARGET pair unsupported: CHOST=${CHOST} CTARGET=${CTARGET}" fi + [[ ${MERGE_TYPE} != binary ]] && + use system-bootstrap && ! has_version "dev-lang/go" && + die "dev-lang/go must be installed to use the system-bootstrap use flag" } src_unpack() @@ -160,7 +163,7 @@ src_unpack() else unpack "go${MY_PV}.src.tar.gz" fi - use gccgo || + use gccgo || use system-bootstrap || unpack "go-$(go_os ${CBUILD})-$(go_arch ${CBUILD})-${BOOTSTRAP_VERSION}.tbz" } @@ -176,6 +179,8 @@ src_compile() [[ -x ${go_binary} ]] || die "go-$(gcc-major-version): command not found" ln -s "${go_binary}" "${GOROOT_BOOTSTRAP}/bin/go" || die + elif use system-bootstrap; then + export GOROOT_BOOTSTRAP="${EPREFIX}"/usr/lib/go fi export GOROOT_FINAL="${EPREFIX}"/usr/lib/go export GOROOT="$(pwd)" diff --git a/dev-lang/go/go-1.12.4.ebuild b/dev-lang/go/go-1.12.4.ebuild index 8fafeb455ba2..a53df7c09567 100644 --- a/dev-lang/go/go-1.12.4.ebuild +++ b/dev-lang/go/go-1.12.4.ebuild @@ -48,20 +48,20 @@ case ${PV} in esac esac -# If gccgo is not being used to build Go, there is no way to know the -# architecture or operating system of the build machine, so we need to -# download all of our bootstrap archives to allow this ebuild to work -# under crossdev. +# If gccgo or a previously installed version of dev-lang/go is not being +# used to build Go, there is no way to know the architecture or operating system +# of the build machine, so we need to download all of our bootstrap +# archives to allow this ebuild to work under crossdev. # # https://bugs.gentoo.org/671394 -SRC_URI+="!gccgo? ( ${BOOTSTRAP_URI} )" +SRC_URI+="!gccgo? ( !system-bootstrap? ( ${BOOTSTRAP_URI} ) )" DESCRIPTION="A concurrent garbage collected and typesafe programming language" HOMEPAGE="https://golang.org" LICENSE="BSD" SLOT="0/${PV}" -IUSE="gccgo" +IUSE="gccgo system-bootstrap" BDEPEND="gccgo? ( >=sys-devel/gcc-5[go] )" RDEPEND="!<dev-go/go-tools-0_pre20150902" @@ -151,6 +151,9 @@ pkg_pretend() if [[ $(go_tuple) != $(go_tuple ${CTARGET}) ]]; then die "CHOST CTARGET pair unsupported: CHOST=${CHOST} CTARGET=${CTARGET}" fi + [[ ${MERGE_TYPE} != binary ]] && + use system-bootstrap && ! has_version "dev-lang/go" && + die "dev-lang/go must be installed to use the system-bootstrap use flag" } src_unpack() @@ -160,7 +163,7 @@ src_unpack() else unpack "go${MY_PV}.src.tar.gz" fi - use gccgo || + use gccgo || use system-bootstrap || unpack "go-$(go_os ${CBUILD})-$(go_arch ${CBUILD})-${BOOTSTRAP_VERSION}.tbz" } @@ -176,6 +179,8 @@ src_compile() [[ -x ${go_binary} ]] || die "go-$(gcc-major-version): command not found" ln -s "${go_binary}" "${GOROOT_BOOTSTRAP}/bin/go" || die + elif use system-bootstrap; then + export GOROOT_BOOTSTRAP="${EPREFIX}"/usr/lib/go fi export GOROOT_FINAL="${EPREFIX}"/usr/lib/go export GOROOT="$(pwd)" diff --git a/dev-lang/go/metadata.xml b/dev-lang/go/metadata.xml index f981de1f10bc..8d9af604ec98 100644 --- a/dev-lang/go/metadata.xml +++ b/dev-lang/go/metadata.xml @@ -11,6 +11,11 @@ channels and a clean syntax. </longdescription> <use> - <flag name="gccgo">Enable bootstrapping using gccgo</flag> + <flag name="gccgo"> + Bootstrap using <pkg>sys-devel/gcc</pkg>[go] + </flag> + <flag name="system-bootstrap"> + Bootstrap using previously installed <pkg>dev-lang/go</pkg> + </flag> </use> </pkgmetadata> |