public inbox for gentoo-dev@lists.gentoo.org
 help / color / mirror / Atom feed
From: Alfredo Tupone <tupone@gentoo.org>
To: gentoo-dev@lists.gentoo.org
Subject: [gentoo-dev] Subject: [PATCH] toolchain-func.eclass: ada related changes
Date: Fri, 22 Mar 2024 19:12:22 +0100	[thread overview]
Message-ID: <20240322191222.7089fc95@alfredo.tupone.it> (raw)

inject ada in TC_FEATURES so the check on 'tc_has_feature ada' works.

Check that when building ada we do not use a newer compiler to build it.
Probably there is a better sed to check the selected compiler.
I take the first number that is in the gnatmake -v string, and if
present, the ada compiler is available and that is the slot.
dev-lang/gnat-gpl-2021 return 2021 and that is slot 10.

Please review




Signed-off-by: Alfredo Tupone <tupone@gentoo.org>
---
 eclass/toolchain.eclass | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

diff --git a/eclass/toolchain.eclass b/eclass/toolchain.eclass
index e962c8181693..c58837bef811 100644
--- a/eclass/toolchain.eclass
+++ b/eclass/toolchain.eclass
@@ -243,38 +243,38 @@ if [[ ${PN} != kgcc64 && ${PN} != gcc-* ]] ; then
 	IUSE+=" objc-gc" TC_FEATURES+=( objc-gc )
 	IUSE+=" libssp objc++"
 
 	# Stop forcing openmp on by default in the eclass. Gradually phase it out.
 	# See bug #890999.
 	if tc_version_is_at_least 13.0.0_pre20221218 ; then
 		IUSE+=" openmp"
 	else
 		IUSE+=" +openmp"
 	fi
 
 	IUSE+=" fixed-point"
 	IUSE+=" go"
 	IUSE+=" +sanitize"  TC_FEATURES+=( sanitize )
 	IUSE+=" graphite" TC_FEATURES+=( graphite )
-	IUSE+=" ada"
 	IUSE+=" vtv"
 	IUSE+=" jit"
 	IUSE+=" +pie +ssp pch"
 
 	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 )
 	tc_version_is_at_least 11 && IUSE+=" valgrind" TC_FEATURES+=( valgrind )
 	tc_version_is_at_least 11 && IUSE+=" custom-cflags"
 	tc_version_is_at_least 12 && IUSE+=" ieee-long-double"
 	tc_version_is_at_least 12.2.1_p20221203 ${PV} && IUSE+=" default-znow"
 	tc_version_is_at_least 12.2.1_p20221203 ${PV} && IUSE+=" default-stack-clash-protection"
 	tc_version_is_at_least 13.0.0_pre20221218 ${PV} && IUSE+=" modula2"
 	# See https://gcc.gnu.org/pipermail/gcc-patches/2023-April/615944.html
 	# and https://rust-gcc.github.io/2023/04/24/gccrs-and-gcc13-release.html for why
 	# it was disabled in 13.
 	tc_version_is_at_least 14.0.0_pre20230423 ${PV} && IUSE+=" rust"
 fi
 
@@ -486,30 +486,42 @@ get_gcc_src_uri() {
 
 	echo "${GCC_SRC_URI}"
 }
 
 SRC_URI=$(get_gcc_src_uri)
 
 #---->> pkg_pretend <<----
 
 toolchain_pkg_pretend() {
 	if ! _tc_use_if_iuse cxx ; then
 		_tc_use_if_iuse go && \
 			ewarn 'Go requires a C++ compiler, disabled due to USE="-cxx"'
 		_tc_use_if_iuse objc++ && \
 			ewarn 'Obj-C++ requires a C++ compiler, disabled due to USE="-cxx"'
 	fi
+	if _tc_use_if_iuse ada ; then
+		if ! _tc_use_if_iuse cxx ; then
+			ewarn 'Ada requires a C++ compiler, disabled due to USE="-cxx"'
+		else
+			prevAdaSLOT=$(gnatmake -v 2>&1 | sed -n '2 p' | sed 's:^[^0-9]*\([0-9]\+\).*:\1:' | sed 's:2021:10:' )
+			if [[ -z "${prevAdaSLOT}" ]] ; then
+				die 'Ada requires an Ada compiler'
+			elif [[ ${SLOT} -lt ${prevAdaSLOT} ]] ; then
+				die 'Ada cannot be built with a newer compiler'
+			fi
+		fi
+	fi
 }
 
 #---->> pkg_setup <<----
 
 toolchain_pkg_setup() {
 	# We don't want to use the installed compiler's specs to build gcc
 	unset GCC_SPECS
 
 	# bug #265283
 	unset LANGUAGES
 
 	# See https://www.gnu.org/software/make/manual/html_node/Parallel-Output.html
 	# Avoid really confusing logs from subconfigure spam, makes logs far
 	# more legible.
 	MAKEOPTS="--output-sync=line ${MAKEOPTS}"
@@ -2372,31 +2384,31 @@ should_we_gcc_config() {
 #
 # Also add a hook so special ebuilds (kgcc64) can control which languages
 # exactly get enabled
 gcc-lang-supported() {
 	grep ^language=\"${1}\" "${S}"/gcc/*/config-lang.in > /dev/null || return 1
 	[[ -z ${TOOLCHAIN_ALLOWED_LANGS} ]] && return 0
 	has $1 ${TOOLCHAIN_ALLOWED_LANGS}
 }
 
 _tc_use_if_iuse() {
 	in_iuse $1 && use $1
 }
 
 is_ada() {
 	gcc-lang-supported ada || return 1
-	_tc_use_if_iuse ada
+	_tc_use_if_iuse cxx && _tc_use_if_iuse ada
 }
 
 is_cxx() {
 	gcc-lang-supported 'c++' || return 1
 	_tc_use_if_iuse cxx
 }
 
 is_d() {
 	gcc-lang-supported d || return 1
 	_tc_use_if_iuse d
 }
 
 is_f77() {
 	gcc-lang-supported f77 || return 1
 	_tc_use_if_iuse fortran
-- 
2.43.2



             reply	other threads:[~2024-03-22 18:12 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-22 18:12 Alfredo Tupone [this message]
2024-03-25 19:23 ` [gentoo-dev] Subject: [PATCH] toolchain.eclass: ada related changes Alfredo Tupone
2024-04-25 11:12   ` Alfredo Tupone
2024-04-25 12:02     ` Sam James

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240322191222.7089fc95@alfredo.tupone.it \
    --to=tupone@gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox