summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2024-10-01 02:02:17 +0100
committerSam James <sam@gentoo.org>2024-10-01 02:10:28 +0100
commite6a69ea10ed74a0ce49e979bbc4bbce139949259 (patch)
treef3bf9866d7f3e80d1897b4eeda6a2b62ef7d1dcb
parentdev-lang/ada-bootstrap: new package, add 0_p2021 (diff)
downloadgentoo-e6a69ea10ed74a0ce49e979bbc4bbce139949259.tar.gz
gentoo-e6a69ea10ed74a0ce49e979bbc4bbce139949259.tar.bz2
gentoo-e6a69ea10ed74a0ce49e979bbc4bbce139949259.zip
toolchain.eclass: support dev-lang/ada-bootstrap
Bug: https://bugs.gentoo.org/547358 Bug: https://bugs.gentoo.org/919667 Bug: https://bugs.gentoo.org/940472 Closes: https://bugs.gentoo.org/940471 Signed-off-by: Sam James <sam@gentoo.org>
-rw-r--r--eclass/toolchain.eclass42
1 files changed, 33 insertions, 9 deletions
diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index 939c68113188..648e67b9493b 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -402,7 +402,16 @@ if tc_has_feature valgrind ; then
fi
if [[ ${PN} != gnat-gpl ]] && tc_has_feature ada ; then
- BDEPEND+=" ada? ( || ( sys-devel/gcc:${SLOT}[ada] <sys-devel/gcc-${SLOT}[ada] dev-lang/gnat-gpl[ada] ) )"
+ BDEPEND+="
+ ada? (
+ || (
+ sys-devel/gcc:${SLOT}[ada]
+ <sys-devel/gcc-${SLOT}[ada]
+ <dev-lang/ada-bootstrap-${SLOT}
+ dev-lang/gnat-gpl[ada]
+ )
+ )
+ "
fi
# TODO: Add a pkg_setup & pkg_pretend check for whether the active compiler
@@ -850,10 +859,28 @@ toolchain_setup_ada() {
eend 1
done
- # As a last resort, use dev-lang/gnat-gpl.
- # TODO: Make gnat-gpl coinstallable with gcc:10 (bug #940471).
+ # As a penultimate resort, try dev-lang/ada-bootstrap.
+ if ver_test ${ada_bootstrap} -gt ${PV} || [[ -z ${ada_bootstrap} ]] ; then
+ ebegin "Testing fallback dev-lang/ada-bootstrap for Ada"
+ if has_version -b "<dev-lang/ada-bootstrap-${SLOT}" ; then
+ local latest_ada_bootstrap=$(best_version -b "<dev-lang/ada-bootstrap-${SLOT}")
+ latest_ada_bootstrap="${latest_ada_bootstrap#dev-lang/ada-bootstrap-}"
+ latest_ada_bootstrap=$(ver_cut 1 ${latest_ada_bootstrap})
+ ada_bootstrap=${latest_ada_bootstrap}
+
+ # TODO: Figure out ada-bootstrap versioning/slots
+ export PATH="${BROOT}/usr/lib/ada-bootstrap/bin:${PATH}"
+
+ eend 0
+ break
+ else
+ eend 1
+ fi
+ fi
+
+ # As a last resort, try dev-lang/gnat-gpl.
if ver_test ${ada_bootstrap} -gt ${PV} || [[ -z ${ada_bootstrap} ]] ; then
- ebegin "Testing dev-lang/gnat-gpl for Ada"
+ ebegin "Testing fallback dev-lang/gnat-gpl for Ada"
if has_version -b "dev-lang/gnat-gpl" ; then
ada_bootstrap=10
eend 0
@@ -866,12 +893,9 @@ toolchain_setup_ada() {
# TODO: Source a newer, or build our own, bootstrap tarball (bug #940472).
if [[ -z ${ada_bootstrap} ]] ; then
eerror "Couldn't find a suitable GNAT compiler for Ada!"
- eerror "Please try installing dev-lang/gnat-gpl."
+ eerror "Please try installing dev-lang/ada-bootstrap or failing that, dev-lang/gnat-gpl."
eerror "For other platforms, you may need to use crossdev."
- die "Fallback ada-bootstrap path not yet implemented!"
-
- #einfo "Using bootstrap GNAT compiler..."
- #export PATH="${BROOT}/opt/ada-bootstrap-${GCCMAJOR}/bin:${PATH}"
+ die "Couldn't find an Ada bootstrap compiler!"
fi
cat <<-"EOF" > "${T}"/ada.spec || die