summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hubbs <williamh@gentoo.org>2019-04-29 11:24:04 -0500
committerWilliam Hubbs <williamh@gentoo.org>2019-04-29 11:30:30 -0500
commit167c53006749b6bbf952c80af0e0b5a7d31eca32 (patch)
treebbb1e51e25b15147cef76dc08b6325427b6de65f /dev-lang/go
parentnet-dns/dnscap: rename 20130814 => 0_p20130814 (diff)
downloadgentoo-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/go')
-rw-r--r--dev-lang/go/go-1.11.9.ebuild19
-rw-r--r--dev-lang/go/go-1.12.4.ebuild19
-rw-r--r--dev-lang/go/metadata.xml7
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>