dev-lang/go: add support for bootstrapping with gccgo
authorWilliam Hubbs <williamh@gentoo.org>
Sat, 9 Apr 2016 17:35:57 +0000 (12:35 -0500)
committerWilliam Hubbs <williamh@gentoo.org>
Sat, 9 Apr 2016 17:43:10 +0000 (12:43 -0500)
I would like to thank Zac Medico for the patch.
This allows a user to bootstrap go with gcc's go compiler if they have it
installed.

Bug: https://bugs.gentoo.org/show_bug.cgi?id=576290

Package-Manager: portage-2.2.26

dev-lang/go/go-9999.ebuild
dev-lang/go/metadata.xml

index ecfde4e21b2f5b953ed674a973d97140fdf317f1..5a65136e3dbc98c123521e844963fca7728d2c43 100644 (file)
@@ -12,7 +12,7 @@ MY_PV=${PV/_/}
 inherit toolchain-funcs
 
 BOOTSTRAP_DIST="https://dev.gentoo.org/~williamh/dist"
-SRC_URI="
+SRC_URI="!gccgo? (
 kernel_Darwin? (
        x64-macos? ( ${BOOTSTRAP_DIST}/go-darwin-amd64-bootstrap.tbz )
 )
@@ -30,6 +30,7 @@ kernel_linux? (
 kernel_SunOS? (
        x64-solaris? ( ${BOOTSTRAP_DIST}/go-solaris-amd64-bootstrap.tbz )
 )
+)
 "
 
 if [[ ${PV} = 9999 ]]; then
@@ -52,9 +53,9 @@ HOMEPAGE="http://www.golang.org"
 
 LICENSE="BSD"
 SLOT="0/${PV}"
-IUSE=""
+IUSE="gccgo"
 
-DEPEND=""
+DEPEND="gccgo? ( >=sys-devel/gcc-5[go] )"
 RDEPEND="!<dev-go/go-tools-0_pre20150902"
 
 # These test data objects have writable/executable stacks.
@@ -146,6 +147,14 @@ src_unpack()
 src_compile()
 {
        export GOROOT_BOOTSTRAP="${WORKDIR}"/go-$(go_os)-$(go_arch)-bootstrap
+       if use gccgo; then
+               mkdir -p "${GOROOT_BOOTSTRAP}/bin" || die
+               local go_binary=$(type -P go-5 2>/dev/null)
+               [[ -x ${go_binary} ]] || go_binary=$(
+                       find "${EPREFIX}"/usr/${CHOST}/gcc-bin/*/go-5 | sort -V | tail -n1)
+               [[ -x ${go_binary} ]] || die "go-5: command not found"
+               ln -s "${go_binary}" "${GOROOT_BOOTSTRAP}/bin/go" || die
+       fi
        export GOROOT_FINAL="${EPREFIX}"/usr/lib/go
        export GOROOT="$(pwd)"
        export GOBIN="${GOROOT}/bin"
index 1050d935da864bb1a9a84df1833ca386053d5688..f981de1f10bc833094c54b52469840ab7f3ed96d 100644 (file)
@@ -10,4 +10,7 @@
                Rob Pike. It has garbage collection, coroutines, communication
                channels and a clean syntax.  
        </longdescription>
+       <use>
+               <flag name="gccgo">Enable bootstrapping using gccgo</flag>
+       </use>
 </pkgmetadata>