From 471dbc22de2c31e4ca4191d70cc8bcbe452f3b97 Mon Sep 17 00:00:00 2001 From: "Luke A. Guest" Date: Sat, 9 Dec 2023 18:05:31 +0000 Subject: [PATCH] Add building Ada support into the base toolchain (GCC) mechanics. Add Ada bootstrap ebuilds for all versions of GCC supported. --- dev-lang/ada-bootstrap/Manifest | 13 +++++ .../ada-bootstrap/ada-bootstrap-10.ebuild | 25 +++++++++ .../ada-bootstrap/ada-bootstrap-11.ebuild | 25 +++++++++ .../ada-bootstrap/ada-bootstrap-12.ebuild | 25 +++++++++ .../ada-bootstrap/ada-bootstrap-13.ebuild | 25 +++++++++ .../ada-bootstrap/ada-bootstrap-14.ebuild | 25 +++++++++ dev-lang/ada-bootstrap/ada-bootstrap-9.ebuild | 25 +++++++++ dev-lang/ada-bootstrap/metadata.xml | 12 +++++ eclass/toolchain.eclass | 53 +++++++++++++++---- 9 files changed, 219 insertions(+), 9 deletions(-) create mode 100644 dev-lang/ada-bootstrap/Manifest create mode 100644 dev-lang/ada-bootstrap/ada-bootstrap-10.ebuild create mode 100644 dev-lang/ada-bootstrap/ada-bootstrap-11.ebuild create mode 100644 dev-lang/ada-bootstrap/ada-bootstrap-12.ebuild create mode 100644 dev-lang/ada-bootstrap/ada-bootstrap-13.ebuild create mode 100644 dev-lang/ada-bootstrap/ada-bootstrap-14.ebuild create mode 100644 dev-lang/ada-bootstrap/ada-bootstrap-9.ebuild create mode 100644 dev-lang/ada-bootstrap/metadata.xml diff --git a/dev-lang/ada-bootstrap/Manifest b/dev-lang/ada-bootstrap/Manifest new file mode 100644 index 000000000..07af81d3f --- /dev/null +++ b/dev-lang/ada-bootstrap/Manifest @@ -0,0 +1,13 @@ +DIST ada-bootstrap-10-x86_64.tar.xz 81374924 BLAKE2B 73f831502c1c358a724092e2eae17b13c2905c8c2afe90a24c61d152755cf0c33549eca65f23ed5d2ce893799b7bac9a48c0e2e513b53076e424d1fb5c92c84b SHA512 eb0b89f5912e217ecdabd4867ab68909aca73ea46c300e1ee75fbdfa308d296570af7dde49d56278a1662ac1734619afd105232df680a24d301b81c8bffe927b +DIST ada-bootstrap-11-x86_64.tar.xz 86529888 BLAKE2B b42d2ca86d721371bd0c363549b3a562e7d92583ba773544b0a14e105980643626abbd0bc1b125836be76842dcca8222606266f9795e678094b80afabb4090b1 SHA512 ef2ccbf9f65aaa2a5b64d696d65319c539f9e28b419d01b619bf66867db924037760374a2dc2c341c154b9c2aa653426ae29ece24d2bf5d91ef1f23d4a1b7e87 +DIST ada-bootstrap-12-x86_64.tar.xz 92699120 BLAKE2B b1f0c2d9ba4711f0f066a640c5a5ae53177826a160a25f31d89f4b402a21bc6a4e432c5cb9bfff10d6a73097c22cec9dfd097649ea6438a41eb4f1226b7478af SHA512 7f257c1e0c7adb6aa92a68e2f8b4bf7191467aafdb592fbc163529390c4de1c661ded3b231b56fe65fa810c190a34b0c17cd2225345dc82a6867dc6f479cec2b +DIST ada-bootstrap-13-x86_64.tar.xz 94802444 BLAKE2B c0e170b56212897fe15a093e5e8d629a9e3e4aa51ec163d42cdbbe65dd54c30651023d440c0a41dc49d86e6406ac80adbf3761ffffa0c174aeb75e774f4d905b SHA512 8c995f7ad4cf45cddbd98e811807eb5f9908ca35e1b552e0c6e307bfd47b8bdc8b3bc4406637deb7762c3c450da55116a50a3af0fb8ca3877ff6b030ba1b50c2 +DIST ada-bootstrap-14-x86_64.tar.xz 95049476 BLAKE2B 373376f2847bb07f441cc83d73db388722e1b9f6c631aa62fb0e8a9b1f90725b1a7e4e0d38970b8c59a53b76e7b019ddaf505ab52f76698c3db357dfe3382e6f SHA512 a6fc012058aef52bc784c1dc254f0aa31f8e034b517b49d4faef7058fe84c02e9bac564029bd7b05cb97a2ce0a40b875b0378236bd055522012e13069c4affcb +DIST ada-bootstrap-9-x86_64.tar.xz 70563044 BLAKE2B 4de949ddbc6feb589be93737b794e4bea93bf7e8291f5b1fe31aa5a2c2027594eb4eb1aac46cc42cc2872224e4b6ce556e9126635046e080adee70e48b217934 SHA512 b90f61ef18c6b6203d76698d2dba633e2187d1a623bb0b5ef1c735599b2db2a76765569460ff3d3817f845c575299cf35bb9896998b941cb4a92dab95462e255 +EBUILD ada-bootstrap-10.ebuild 769 BLAKE2B df6d0d857a25d109ed0aef3f06442eee8577c5fb37cc496eb935347a8b5991fbbf800bdfd3d17dcaa2d883fbb5b55be0c46304d863b330ee86f5e578f13b2382 SHA512 bbe1f380b7ab6dcdb43ff7328f3c20ae53b6ace9694bc89c219996a9d46223d9bb662749c658c7120073ffaab5bcb6c7e91370ac13a13e8754235a62870d0454 +EBUILD ada-bootstrap-11.ebuild 769 BLAKE2B a3d123cc8d0f99c47ac9c488261bb706e8ef288345c5ec524ef32f2835b2b5681f15df0932565cc0629970c72cbe6a77b46036851498e8164cbefff43b104e4a SHA512 cda446533f3ef6cc6ffa1380450e0d1c2fa3b8480dbd1f3d84185f9eff7fe7f591ac1827d475542ddb15c8b8477a2791d37e5f59e381c279b296f757c6c40a24 +EBUILD ada-bootstrap-12.ebuild 769 BLAKE2B 928050dca7f68fded8b17a0f22c72b3796e3e63b2f7d390a92a0d6f9ffbafa8b7d0e9f09036b4ea9f3c78075037508e28bbc0caabed21725bf7d5f0f95b82d53 SHA512 8382219d72936882cee12962e3b9f64b9dde8deabc7c9024c09e082f73d048366f920c13777e09b73376fd8f2d446d391eb59bd5453d1cbca151a5052fd1c169 +EBUILD ada-bootstrap-13.ebuild 769 BLAKE2B 417c3711fb149ee44aad787025eff7a48a21fd9a7ceb001cc833d650f6ccb34e91233cf6809053bdb868c216e496732efd22f10828c8f1db7c229d8acc6c6e61 SHA512 fc96ddcc4b5bf18208409e25de933d07a4f895ffc94eb99427c79f92a9565eec8df5b4b5574bcc6c90e654359a5c9e56b7b67b60fc99b72e2bb1667dd01e2834 +EBUILD ada-bootstrap-14.ebuild 769 BLAKE2B a83e0fd49a48c9c9e564f8ea41f46ef8b50e00d215d97b56f54badfb8e4be8c83c5049a4eee99efefbb55bc5550bea2386bf5bf67aa9f42c3525e05ea10d1a94 SHA512 b0a24fe7479cc8d4bab480628179d9be2cf2a3815a932d48a3987d7ba4ff0cd4b5a6332e764b6611f857bd1c42127e30171d298a914b7be0dc74d53453205728 +EBUILD ada-bootstrap-9.ebuild 767 BLAKE2B e41b0ecb4593a766df04e2ab5b237e565ec0784f11f47200057a3eafbe3027a08ddfc4bcdeea0d21aab02aad392128e855a9414cd1e55afeca527bb9dee4992f SHA512 9942b616e58ae448a6c6e16c53d9f6c77b728562b446c30f9ab605faa181c617eb6ba2f1a526d78ae37db39479bb0fadb0dfbf45ecb029e44627d132afa89dc5 +MISC metadata.xml 395 BLAKE2B 4332e5de62c58052524d7bbb78dc5d12c481a13a047f0677492ebb0a45634e9998f5a43b85eca12cc09f326fa8addc6b558c85d78a9f70623b5a73c0340d97a0 SHA512 2de29fccc4af42082a6fe4bd8e996203ed67725e0007bf14a9734d66539142344757119a62107aa56b535c8b660ffb8e1d6ee630b54790edbe48e4ab65777e9f diff --git a/dev-lang/ada-bootstrap/ada-bootstrap-10.ebuild b/dev-lang/ada-bootstrap/ada-bootstrap-10.ebuild new file mode 100644 index 000000000..0fe18e13c --- /dev/null +++ b/dev-lang/ada-bootstrap/ada-bootstrap-10.ebuild @@ -0,0 +1,25 @@ +# Copyright 2020-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Bootstrap package for sys-devel/gcc +ada" +HOMEPAGE="https://gcc.gnu.org" +BOOTSTRAP_DIST="https://www.dropbox.com/s/8sune2v3bh90zjz/ada-bootstrap-10-x86_64.tar.xz?dl=0" +SRC_URI=" + amd64? ( ${BOOTSTRAP_DIST} -> ada-bootstrap-${PV}-x86_64.tar.xz ) +" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +SLOT="10" +KEYWORDS="-* amd64" # arm arm64 ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +# IUSE="big-endian" +RESTRICT="primaryuri mirror strip" +QA_PREBUILT="*" + +S="${WORKDIR}" + +src_install() { + dodir /opt/ada-bootstrap-${PV} + mv ada-bootstrap-${PV} "${ED}/opt/" || die +} diff --git a/dev-lang/ada-bootstrap/ada-bootstrap-11.ebuild b/dev-lang/ada-bootstrap/ada-bootstrap-11.ebuild new file mode 100644 index 000000000..6c6c944f5 --- /dev/null +++ b/dev-lang/ada-bootstrap/ada-bootstrap-11.ebuild @@ -0,0 +1,25 @@ +# Copyright 2020-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Bootstrap package for sys-devel/gcc +ada" +HOMEPAGE="https://gcc.gnu.org" +BOOTSTRAP_DIST="https://www.dropbox.com/s/sqedh8jgtg0zd33/ada-bootstrap-11-x86_64.tar.xz?dl=0" +SRC_URI=" + amd64? ( ${BOOTSTRAP_DIST} -> ada-bootstrap-${PV}-x86_64.tar.xz ) +" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +SLOT="11" +KEYWORDS="-* amd64" # arm arm64 ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +# IUSE="big-endian" +RESTRICT="primaryuri mirror strip" +QA_PREBUILT="*" + +S="${WORKDIR}" + +src_install() { + dodir /opt/ada-bootstrap-${PV} + mv ada-bootstrap-${PV} "${ED}/opt/" || die +} diff --git a/dev-lang/ada-bootstrap/ada-bootstrap-12.ebuild b/dev-lang/ada-bootstrap/ada-bootstrap-12.ebuild new file mode 100644 index 000000000..285e8c622 --- /dev/null +++ b/dev-lang/ada-bootstrap/ada-bootstrap-12.ebuild @@ -0,0 +1,25 @@ +# Copyright 2020-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Bootstrap package for sys-devel/gcc +ada" +HOMEPAGE="https://gcc.gnu.org" +BOOTSTRAP_DIST="https://www.dropbox.com/s/66hb1x8gdaij5et/ada-bootstrap-12-x86_64.tar.xz?dl=0" +SRC_URI=" + amd64? ( ${BOOTSTRAP_DIST} -> ada-bootstrap-${PV}-x86_64.tar.xz ) +" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +SLOT="12" +KEYWORDS="-* amd64" # arm arm64 ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +# IUSE="big-endian" +RESTRICT="primaryuri mirror strip" +QA_PREBUILT="*" + +S="${WORKDIR}" + +src_install() { + dodir /opt/ada-bootstrap-${PV} + mv ada-bootstrap-${PV} "${ED}/opt/" || die +} diff --git a/dev-lang/ada-bootstrap/ada-bootstrap-13.ebuild b/dev-lang/ada-bootstrap/ada-bootstrap-13.ebuild new file mode 100644 index 000000000..329735589 --- /dev/null +++ b/dev-lang/ada-bootstrap/ada-bootstrap-13.ebuild @@ -0,0 +1,25 @@ +# Copyright 2020-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Bootstrap package for sys-devel/gcc +ada" +HOMEPAGE="https://gcc.gnu.org" +BOOTSTRAP_DIST="https://www.dropbox.com/s/q2niu037q378me9/ada-bootstrap-13-x86_64.tar.xz?dl=0" +SRC_URI=" + amd64? ( ${BOOTSTRAP_DIST} -> ada-bootstrap-${PV}-x86_64.tar.xz ) +" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +SLOT="12" +KEYWORDS="-* amd64" # arm arm64 ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +# IUSE="big-endian" +RESTRICT="primaryuri mirror strip" +QA_PREBUILT="*" + +S="${WORKDIR}" + +src_install() { + dodir /opt/ada-bootstrap-${PV} + mv ada-bootstrap-${PV} "${ED}/opt/" || die +} diff --git a/dev-lang/ada-bootstrap/ada-bootstrap-14.ebuild b/dev-lang/ada-bootstrap/ada-bootstrap-14.ebuild new file mode 100644 index 000000000..0ecb7ae34 --- /dev/null +++ b/dev-lang/ada-bootstrap/ada-bootstrap-14.ebuild @@ -0,0 +1,25 @@ +# Copyright 2020-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Bootstrap package for sys-devel/gcc +ada" +HOMEPAGE="https://gcc.gnu.org" +BOOTSTRAP_DIST="https://www.dropbox.com/s/not7esyf3fd04e4/ada-bootstrap-14-x86_64.tar.xz?dl=0" +SRC_URI=" + amd64? ( ${BOOTSTRAP_DIST} -> ada-bootstrap-${PV}-x86_64.tar.xz ) +" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +SLOT="12" +KEYWORDS="-* amd64" # arm arm64 ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +# IUSE="big-endian" +RESTRICT="primaryuri mirror strip" +QA_PREBUILT="*" + +S="${WORKDIR}" + +src_install() { + dodir /opt/ada-bootstrap-${PV} + mv ada-bootstrap-${PV} "${ED}/opt/" || die +} diff --git a/dev-lang/ada-bootstrap/ada-bootstrap-9.ebuild b/dev-lang/ada-bootstrap/ada-bootstrap-9.ebuild new file mode 100644 index 000000000..5f0d478b6 --- /dev/null +++ b/dev-lang/ada-bootstrap/ada-bootstrap-9.ebuild @@ -0,0 +1,25 @@ +# Copyright 2020-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DESCRIPTION="Bootstrap package for sys-devel/gcc +ada" +HOMEPAGE="https://gcc.gnu.org" +BOOTSTRAP_DIST="https://www.dropbox.com/s/763pt7pmzoiygno/ada-bootstrap-9-x86_64.tar.xz?dl=0" +SRC_URI=" + amd64? ( ${BOOTSTRAP_DIST} -> ada-bootstrap-${PV}-x86_64.tar.xz ) +" + +LICENSE="GPL-3+ LGPL-3+ || ( GPL-3+ libgcc libstdc++ gcc-runtime-library-exception-3.1 ) FDL-1.3+" +SLOT="9" +KEYWORDS="-* amd64" # arm arm64 ppc64 ~riscv ~s390 x86 ~amd64-linux ~x86-linux ~x64-macos ~x64-solaris" +# IUSE="big-endian" +RESTRICT="primaryuri mirror strip" +QA_PREBUILT="*" + +S="${WORKDIR}" + +src_install() { + dodir /opt/ada-bootstrap-${PV} + mv ada-bootstrap-${PV} "${ED}/opt/" || die +} diff --git a/dev-lang/ada-bootstrap/metadata.xml b/dev-lang/ada-bootstrap/metadata.xml new file mode 100644 index 000000000..0248b94cc --- /dev/null +++ b/dev-lang/ada-bootstrap/metadata.xml @@ -0,0 +1,12 @@ + + + + + toolchain@gentoo.org + Binary GCC Bootstrap + + + cpe:/a:gnu:gcc + dgcc + + diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass index 60769c938..7368894ab 100644 --- a/eclass/toolchain.eclass +++ b/eclass/toolchain.eclass @@ -250,7 +250,6 @@ if [[ ${PN} != kgcc64 && ${PN} != gcc-* ]] ; then IUSE+=" go" IUSE+=" +sanitize" TC_FEATURES+=( sanitize ) IUSE+=" graphite" TC_FEATURES+=( graphite ) - IUSE+=" ada" IUSE+=" vtv" IUSE+=" jit" tc_version_is_between 5.0 9 && IUSE+=" mpx" @@ -259,6 +258,7 @@ if [[ ${PN} != kgcc64 && ${PN} != gcc-* ]] ; then IUSE+=" systemtap" TC_FEATURES+=( systemtap ) tc_version_is_at_least 9.0 && IUSE+=" d" TC_FEATURES+=( d ) + tc_version_is_at_least 9.0 && IUSE+=" ada" TC_FEATURES+=( ada ) tc_version_is_at_least 9.1 && IUSE+=" lto" tc_version_is_at_least 10 && IUSE+=" cet" tc_version_is_at_least 10 && IUSE+=" zstd" TC_FEATURES+=( zstd ) @@ -284,8 +284,7 @@ fi #---->> DEPEND <<---- -RDEPEND=" - sys-libs/zlib +RDEPEND="sys-libs/zlib virtual/libiconv nls? ( virtual/libintl ) " @@ -311,6 +310,20 @@ BDEPEND=" >=sys-devel/autogen-5.5.4 ) " + +# Ada in 9.0+ is self-hosting and needs Ada to bootstrap. +# Taken from the D version below. I'm fairly sure if this is now correct, +# We should build using either ada-bootstrap: if the installed gcc has +# Ada disabled or the installed slot which matches the slot being built. +if tc_has_feature ada ; then + if tc_version_is_at_least 9.0 ; then + BDEPEND+=" ada? ( || ( + > Ada Bootstrap slot is ${GCCMAJOR}/${PREVSLOT}" + + # Make sure we set a path to the Ada bootstrap if gcc[ada] is not already + # installed. GNAT can usually be built using the last major version and + # the current version, at least. + if has_version -b "sys-devel/gcc:${SLOT}[ada]" ; then + einfo "Using GNAT compiler installed in slot ${SLOT}..." + + PATH="${BINPATH}:${PATH}" + elif has_version -b "sys-devel/gcc:${PREVSLOT}[ada]" ; then + einfo "Using GNAT compiler installed in previous slot ${PREVSLOT}..." + + PATH="${PREFIX}/${CTARGET}/gcc-bin/${PREVSLOT}:${PATH}" + else + einfo "Using bootstrap GNAT compiler..." + + PATH="/opt/ada-bootstrap-${GCCMAJOR}/bin:${PATH}" + + export PATH + fi + fi + confgcc+=( --prefix="${PREFIX}" --bindir="${BINPATH}" @@ -1335,6 +1368,8 @@ toolchain_src_configure() { einfo "DATAPATH: ${DATAPATH}" einfo "STDCXX_INCDIR: ${STDCXX_INCDIR}" einfo "Languages: ${GCC_LANG}" + einfo "GCC version: $(gcc -v 2>&1|grep " version " | awk '{ print $3 }')" + is_ada && einfo "GNAT version: $(gnat 2>&1|grep GNAT | awk '{ print $2 }')" echo # Build in a separate build tree -- 2.43.0