Re: [gentoo-dev] [PATCH] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Sam James


> On 31 Mar 2021, at 10:09, Ulrich Mueller  wrote:
> 
>> On Wed, 31 Mar 2021, Andreas Sturmlechner wrote:
> 
>> setup-allowed-flags() {
>> +[[ ${EAPI} == [0-7] ]] ||
>> +die "Internal function ${FUNCNAME} is not available in 
>> >=EAPI-8."
>> +_setup-allowed-flags
>> +}
> 
> Strictly speaking, EAPIs are strings, so numeric comparison is not
> meaningful. Suggestion: "... is not available in EAPI ${EAPI}."

That’s a reason to not do arithmetic comparison in e.g. Bash, but >= refers
to age/chronological order here, which isn’t a problem.

> 
>> test-flag-PROG() {
>> +[[ ${EAPI} == [0-7] ]] ||
>> +die "Internal function ${FUNCNAME} is not available in 
>> >=EAPI-8."
>> +_test-flag-PROG
>> +}
> 
>> test-flags-PROG() {
>> +[[ ${EAPI} == [0-7] ]] ||
>> +die "Internal function ${FUNCNAME} is not available in 
>> >=EAPI-8."
>> +_test-flags-PROG
>> +}
> 
> Same for these.
> 
> Ulrich



signature.asc
Description: Message signed with OpenPGP


[gentoo-dev] llvm-libunwind global USE flag

2021-04-01 Thread Arfrever Frehtes Taifersar Arahesis
llvm-libunwind - Use sys-libs/llvm-libunwind instead of sys-libs/libunwind

This would be similar to graphicsmagick and libressl USE flags.

sys-libs/libunwind and sys-libs/llvm-libunwind are ABI-incompatible,
at least due to different sonames of libraries. Switching between them
requires rebuilding of all reverse dependencies.

Example usage:

RDEPEND="libunwind? (
llvm-libunwind? ( sys-libs/llvm-libunwind:0= )
!llvm-libunwind? ( sys-libs/libunwind:0= )
  )"



Re: [gentoo-dev] [PATCH v2 3/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Ulrich Mueller
> On Thu, 01 Apr 2021, Andreas Sturmlechner wrote:
 
> +# @FUNCTION: test-flag-PROG
> +# @USAGE:  
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Returns shell true if  is supported by given ,
> +# else returns shell false.
>  test-flag-PROG() {
> + [[ ${EAPI} == [5-7] ]] ||
> + die "Internal function ${FUNCNAME} is not available in 
> >=EAPI-8."
> + _test-flag-PROG
> +}

Any reason why this cannot say "... in EAPI ${EAPI}." as I had suggested
earlier?

(Same for the other patches in the series.)


signature.asc
Description: PGP signature


Re: [gentoo-dev] [PATCH v2 5/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Sergei Trofimovich
On Thu, 01 Apr 2021 12:02:15 +0200
Andreas Sturmlechner  wrote:

> From af002023d6b8f9a9e51fc31c8c25d48012e35ddf Mon Sep 17 00:00:00 2001
> From: Andreas Sturmlechner 
> Date: Sun, 28 Mar 2021 15:04:50 +0200
> Subject: [PATCH 5/5] flag-o-matic.eclass: Fix eclassdoc
> 
> Signed-off-by: Andreas Sturmlechner 

The patch looks good.

> ---
>  eclass/flag-o-matic.eclass | 15 ++-
>  1 file changed, 14 insertions(+), 1 deletion(-)
> 
> diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
> index a35f0bef269..6e7582c4643 100644
> --- a/eclass/flag-o-matic.eclass
> +++ b/eclass/flag-o-matic.eclass
> @@ -21,6 +21,8 @@ case ${EAPI} in
>   *) die "EAPI ${EAPI} is not supported by flag-o-matic.eclass." ;;
>  esac
>  
> +# @FUNCTION: all-flag-vars
> +# @DESCRIPTION:
>  # Return all the flag variables that our high level funcs operate on.
>  all-flag-vars() {
>   echo {ADA,C,CPP,CXX,CCAS,F,FC,LD}FLAGS
> @@ -108,7 +110,10 @@ _setup-allowed-flags() {
>   )
>  }
>  
> -# inverted filters for hardened compiler.  This is trying to unpick
> +# @FUNCTION: _filter-hardened
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Inverted filters for hardened compiler.  This is trying to unpick
>  # the hardened compiler defaults.
>  _filter-hardened() {
>   local f
> @@ -142,6 +147,9 @@ _filter-hardened() {
>   done
>  }
>  
> +# @FUNCTION: _filter-var
> +# @INTERNAL
> +# @DESCRIPTION:
>  # Remove occurrences of strings from variable given in $1
>  # Strings removed are matched as globs, so for example
>  # '-O*' would remove -O1, -O2 etc.
> @@ -334,6 +342,11 @@ replace-cpu-flags() {
>   return 0
>  }
>  
> +# @FUNCTION: _is_flagq
> +# @USAGE:  
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Returns shell true if  is in a given , else returns shell 
> false.
>  _is_flagq() {
>   local x var="$1[*]"
>   for x in ${!var} ; do
> -- 
> 2.31.0
> 


-- 

  Sergei


pgpSdirhDXgag.pgp
Description: Цифровая подпись OpenPGP


Re: [gentoo-dev] [PATCH v2 4/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Sergei Trofimovich
On Thu, 01 Apr 2021 12:01:24 +0200
Andreas Sturmlechner  wrote:

> From 797d26ad9fe861c9c332f54a0f856a17af32ee53 Mon Sep 17 00:00:00 2001
> From: Andreas Sturmlechner 
> Date: Wed, 31 Mar 2021 00:29:55 +0200
> Subject: [PATCH 4/5] flag-o-matic.eclass: Make test-flags-PROG() internal
> 
> Signed-off-by: Andreas Sturmlechner 
> ---
>  eclass/flag-o-matic.eclass | 28 +++-
>  1 file changed, 23 insertions(+), 5 deletions(-)
> 
> diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
> index e4fdfd0b62d..a35f0bef269 100644
> --- a/eclass/flag-o-matic.eclass
> +++ b/eclass/flag-o-matic.eclass
> @@ -598,7 +598,25 @@ test-flag-FC() { _test-flag-PROG "FC" f95 "$@"; }
>  # Returns shell true if  is supported by the C compiler and linker, 
> else returns shell false.
>  test-flag-CCLD() { _test-flag-PROG "CC" c+ld "$@"; }
>  
> +# @FUNCTION: test-flags-PROG
> +# @USAGE:   [more flags...]
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Returns shell true if  are supported by given ,
> +# else returns shell false.
>  test-flags-PROG() {
> + [[ ${EAPI} == [5-7] ]] ||

'[[ ${EAPI} == [567] ]] ||'. Otherwise patch looks ok.

> + die "Internal function ${FUNCNAME} is not available in 
> >=EAPI-8."
> + _test-flags-PROG
> +}
> +
> +# @FUNCTION: _test-flags-PROG
> +# @USAGE:   [more flags...]
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Returns shell true if  are supported by given ,
> +# else returns shell false.
> +_test-flags-PROG() {
>   local comp=$1
>   local flags=()
>   local x
> @@ -635,31 +653,31 @@ test-flags-PROG() {
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  are supported by the C compiler, else 
> returns shell false.
> -test-flags-CC() { test-flags-PROG "CC" "$@"; }
> +test-flags-CC() { _test-flags-PROG "CC" "$@"; }
>  
>  # @FUNCTION: test-flags-CXX
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  are supported by the C++ compiler, else 
> returns shell false.
> -test-flags-CXX() { test-flags-PROG "CXX" "$@"; }
> +test-flags-CXX() { _test-flags-PROG "CXX" "$@"; }
>  
>  # @FUNCTION: test-flags-F77
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  are supported by the Fortran 77 compiler, 
> else returns shell false.
> -test-flags-F77() { test-flags-PROG "F77" "$@"; }
> +test-flags-F77() { _test-flags-PROG "F77" "$@"; }
>  
>  # @FUNCTION: test-flags-FC
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  are supported by the Fortran 90 compiler, 
> else returns shell false.
> -test-flags-FC() { test-flags-PROG "FC" "$@"; }
> +test-flags-FC() { _test-flags-PROG "FC" "$@"; }
>  
>  # @FUNCTION: test-flags-CCLD
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  are supported by the C compiler and default 
> linker, else returns shell false.
> -test-flags-CCLD() { test-flags-PROG "CCLD" "$@"; }
> +test-flags-CCLD() { _test-flags-PROG "CCLD" "$@"; }
>  
>  # @FUNCTION: test-flags
>  # @USAGE: 
> -- 
> 2.31.0
> 


-- 

  Sergei


pgp2FJQCfhNCe.pgp
Description: Цифровая подпись OpenPGP


Re: [gentoo-dev] [PATCH v2 3/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Sergei Trofimovich
On Thu, 01 Apr 2021 11:59:48 +0200
Andreas Sturmlechner  wrote:

> From 7b063ec3f4e2a76c43cd5de8a81a0a30c0f87a6d Mon Sep 17 00:00:00 2001
> From: Andreas Sturmlechner 
> Date: Wed, 31 Mar 2021 00:27:27 +0200
> Subject: [PATCH 3/5] flag-o-matic.eclass: Make test-flag-PROG() internal
> 
> Signed-off-by: Andreas Sturmlechner 
> ---
>  eclass/flag-o-matic.eclass | 28 +++-
>  1 file changed, 23 insertions(+), 5 deletions(-)
> 
> diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
> index d511a140592..e4fdfd0b62d 100644
> --- a/eclass/flag-o-matic.eclass
> +++ b/eclass/flag-o-matic.eclass
> @@ -459,7 +459,25 @@ strip-flags() {
>   return 0
>  }
>  
> +# @FUNCTION: test-flag-PROG
> +# @USAGE:  
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Returns shell true if  is supported by given ,
> +# else returns shell false.
>  test-flag-PROG() {
> + [[ ${EAPI} == [5-7] ]] ||
> + die "Internal function ${FUNCNAME} is not available in 
> >=EAPI-8."

Yeah. Given that we use tc-get$1 in implementation it's not easy to
use as is in external code. Patch is ok. We can consider it later.

> + _test-flag-PROG
> +}
> +
> +# @FUNCTION: _test-flag-PROG
> +# @USAGE:  
> +# @INTERNAL
> +# @DESCRIPTION:
> +# Returns shell true if  is supported by given ,
> +# else returns shell false.
> +_test-flag-PROG() {
>   local comp=$1
>   local lang=$2
>   shift 2
> @@ -554,31 +572,31 @@ test-flag-PROG() {
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  is supported by the C compiler, else returns 
> shell false.
> -test-flag-CC() { test-flag-PROG "CC" c "$@"; }
> +test-flag-CC() { _test-flag-PROG "CC" c "$@"; }
>  
>  # @FUNCTION: test-flag-CXX
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  is supported by the C++ compiler, else 
> returns shell false.
> -test-flag-CXX() { test-flag-PROG "CXX" c++ "$@"; }
> +test-flag-CXX() { _test-flag-PROG "CXX" c++ "$@"; }
>  
>  # @FUNCTION: test-flag-F77
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  is supported by the Fortran 77 compiler, else 
> returns shell false.
> -test-flag-F77() { test-flag-PROG "F77" f77 "$@"; }
> +test-flag-F77() { _test-flag-PROG "F77" f77 "$@"; }
>  
>  # @FUNCTION: test-flag-FC
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  is supported by the Fortran 90 compiler, else 
> returns shell false.
> -test-flag-FC() { test-flag-PROG "FC" f95 "$@"; }
> +test-flag-FC() { _test-flag-PROG "FC" f95 "$@"; }
>  
>  # @FUNCTION: test-flag-CCLD
>  # @USAGE: 
>  # @DESCRIPTION:
>  # Returns shell true if  is supported by the C compiler and linker, 
> else returns shell false.
> -test-flag-CCLD() { test-flag-PROG "CC" c+ld "$@"; }
> +test-flag-CCLD() { _test-flag-PROG "CC" c+ld "$@"; }
>  
>  test-flags-PROG() {
>   local comp=$1
> -- 
> 2.31.0
> 


-- 

  Sergei


pgpfuGQRt2RUi.pgp
Description: Цифровая подпись OpenPGP


Re: [gentoo-dev] [PATCH v2 2/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Sergei Trofimovich
On Thu, 01 Apr 2021 11:58:07 +0200
Andreas Sturmlechner  wrote:

> From 6d1c665d06186dde5361905d5fb2057e044b040e Mon Sep 17 00:00:00 2001
> From: Andreas Sturmlechner 
> Date: Wed, 31 Mar 2021 00:22:12 +0200
> Subject: [PATCH 2/5] flag-o-matic.eclass: Make setup-allowed-flags() internal
> 
> Signed-off-by: Andreas Sturmlechner 
> ---
>  eclass/flag-o-matic.eclass | 16 +++-
>  1 file changed, 15 insertions(+), 1 deletion(-)
> 
> diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
> index ab79f70392d..d511a140592 100644
> --- a/eclass/flag-o-matic.eclass
> +++ b/eclass/flag-o-matic.eclass
> @@ -26,9 +26,23 @@ all-flag-vars() {
>   echo {ADA,C,CPP,CXX,CCAS,F,FC,LD}FLAGS
>  }
>  
> +# @FUNCTION: setup-allowed-flags
> +# @INTERNAL
> +# @DESCRIPTION:
>  # {C,CPP,CXX,CCAS,F,FC,LD}FLAGS that we allow in strip-flags
>  # Note: shell globs and character lists are allowed
>  setup-allowed-flags() {
> + [[ ${EAPI} == [5-7] ]] ||

Minor nit: I'd prefer '[[ ${EAPI} == [567] ]]'

Otherwise the patch is ok.

> + die "Internal function ${FUNCNAME} is not available in 
> >=EAPI-8."
> + _setup-allowed-flags
> +}
> +
> +# @FUNCTION: _setup-allowed-flags
> +# @INTERNAL
> +# @DESCRIPTION:
> +# {C,CPP,CXX,CCAS,F,FC,LD}FLAGS that we allow in strip-flags
> +# Note: shell globs and character lists are allowed
> +_setup-allowed-flags() {
>   ALLOWED_FLAGS=(
>   -pipe -O '-O[12sg]' -mcpu -march -mtune
>   '-fstack-protector*' '-fsanitize*' '-fstack-check*' 
> -fno-stack-check
> @@ -412,7 +426,7 @@ strip-flags() {
>   local x y var
>  
>   local ALLOWED_FLAGS
> - setup-allowed-flags
> + _setup-allowed-flags
>  
>   set -f  # disable pathname expansion
>  
> -- 
> 2.31.0
> 


-- 

  Sergei


pgpJn1wjBmoDr.pgp
Description: Цифровая подпись OpenPGP


Re: [gentoo-dev] [PATCH v2 1/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Sergei Trofimovich
On Thu, 01 Apr 2021 11:57:01 +0200
Andreas Sturmlechner  wrote:

> From 0bdac63ac30fdbe2d1293d0ecbdbc2a5ea673112 Mon Sep 17 00:00:00 2001
> From: Andreas Sturmlechner 
> Date: Sun, 28 Mar 2021 11:41:32 +0200
> Subject: [PATCH 1/5] flag-o-matic.eclass: SUPPORTED_EAPIS: 5,6,7; drop eutils,
>  multilib
> 
> - eutils was only used for eqawarn in old EAPI
> - multilib usage unknown, but is inherited by toolchain-funcs anyway
> 
> Signed-off-by: Andreas Sturmlechner 
> ---
>  eclass/flag-o-matic.eclass | 11 +--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
> index 20ee39d98ba..ab79f70392d 100644
> --- a/eclass/flag-o-matic.eclass
> +++ b/eclass/flag-o-matic.eclass
> @@ -1,9 +1,10 @@
> -# Copyright 1999-2020 Gentoo Authors
> +# Copyright 1999-2021 Gentoo Authors
>  # Distributed under the terms of the GNU General Public License v2
>  
>  # @ECLASS: flag-o-matic.eclass
>  # @MAINTAINER:
>  # toolch...@gentoo.org
> +# @SUPPORTED_EAPIS: 5 6 7
>  # @BLURB: common functions to manipulate and query toolchain flags
>  # @DESCRIPTION:
>  # This eclass contains a suite of functions to help developers sanely
> @@ -12,7 +13,13 @@
>  if [[ -z ${_FLAG_O_MATIC_ECLASS} ]]; then
>  _FLAG_O_MATIC_ECLASS=1
>  
> -inherit eutils toolchain-funcs multilib
> +inherit toolchain-funcs
> +
> +case ${EAPI} in
> + [0-4]) die "flag-o-matic.eclass: EAPI ${EAPI} is too old." ;;
> + [5-7]) inherit eutils ;;
> + *) die "EAPI ${EAPI} is not supported by flag-o-matic.eclass." ;;
> +esac

Minor nit: I'd prefer more typical '|' style for string enumerations.
case ${EAPI:-0} in
   0|1|2|3|4) ...
   5|6|7) ...

Otherwise patch is good.

>  # Return all the flag variables that our high level funcs operate on.
>  all-flag-vars() {
> -- 
> 2.31.0
> 

-- 

  Sergei


pgpOTNHgOZnhK.pgp
Description: Цифровая подпись OpenPGP


Re: [gentoo-dev] [PATCH] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Andreas Sturmlechner
On Mittwoch, 31. März 2021 12:03:33 CEST Wolfgang E. Sanyer wrote:
> I'm curious - why the split e.g. test-flag-PROG() and _test-flag-PROG()? Is
> this stylistic, or does it serve a functional purpose? (Hah, "functional",
> get it? Because they're functions?!?

We prepend `_` to signify internal API. The existing function name needs to 
stay until <=EAPI-7 support is gone in order not to break potential consumers 
even outside of genoo.git.

Regards

signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] [PATCH v2 5/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Andreas Sturmlechner
>From af002023d6b8f9a9e51fc31c8c25d48012e35ddf Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner 
Date: Sun, 28 Mar 2021 15:04:50 +0200
Subject: [PATCH 5/5] flag-o-matic.eclass: Fix eclassdoc

Signed-off-by: Andreas Sturmlechner 
---
 eclass/flag-o-matic.eclass | 15 ++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index a35f0bef269..6e7582c4643 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -21,6 +21,8 @@ case ${EAPI} in
*) die "EAPI ${EAPI} is not supported by flag-o-matic.eclass." ;;
 esac
 
+# @FUNCTION: all-flag-vars
+# @DESCRIPTION:
 # Return all the flag variables that our high level funcs operate on.
 all-flag-vars() {
echo {ADA,C,CPP,CXX,CCAS,F,FC,LD}FLAGS
@@ -108,7 +110,10 @@ _setup-allowed-flags() {
)
 }
 
-# inverted filters for hardened compiler.  This is trying to unpick
+# @FUNCTION: _filter-hardened
+# @INTERNAL
+# @DESCRIPTION:
+# Inverted filters for hardened compiler.  This is trying to unpick
 # the hardened compiler defaults.
 _filter-hardened() {
local f
@@ -142,6 +147,9 @@ _filter-hardened() {
done
 }
 
+# @FUNCTION: _filter-var
+# @INTERNAL
+# @DESCRIPTION:
 # Remove occurrences of strings from variable given in $1
 # Strings removed are matched as globs, so for example
 # '-O*' would remove -O1, -O2 etc.
@@ -334,6 +342,11 @@ replace-cpu-flags() {
return 0
 }
 
+# @FUNCTION: _is_flagq
+# @USAGE:  
+# @INTERNAL
+# @DESCRIPTION:
+# Returns shell true if  is in a given , else returns shell 
false.
 _is_flagq() {
local x var="$1[*]"
for x in ${!var} ; do
-- 
2.31.0



signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] [PATCH v2 4/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Andreas Sturmlechner
>From 797d26ad9fe861c9c332f54a0f856a17af32ee53 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner 
Date: Wed, 31 Mar 2021 00:29:55 +0200
Subject: [PATCH 4/5] flag-o-matic.eclass: Make test-flags-PROG() internal

Signed-off-by: Andreas Sturmlechner 
---
 eclass/flag-o-matic.eclass | 28 +++-
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index e4fdfd0b62d..a35f0bef269 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -598,7 +598,25 @@ test-flag-FC() { _test-flag-PROG "FC" f95 "$@"; }
 # Returns shell true if  is supported by the C compiler and linker, else 
returns shell false.
 test-flag-CCLD() { _test-flag-PROG "CC" c+ld "$@"; }
 
+# @FUNCTION: test-flags-PROG
+# @USAGE:   [more flags...]
+# @INTERNAL
+# @DESCRIPTION:
+# Returns shell true if  are supported by given ,
+# else returns shell false.
 test-flags-PROG() {
+   [[ ${EAPI} == [5-7] ]] ||
+   die "Internal function ${FUNCNAME} is not available in 
>=EAPI-8."
+   _test-flags-PROG
+}
+
+# @FUNCTION: _test-flags-PROG
+# @USAGE:   [more flags...]
+# @INTERNAL
+# @DESCRIPTION:
+# Returns shell true if  are supported by given ,
+# else returns shell false.
+_test-flags-PROG() {
local comp=$1
local flags=()
local x
@@ -635,31 +653,31 @@ test-flags-PROG() {
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  are supported by the C compiler, else returns 
shell false.
-test-flags-CC() { test-flags-PROG "CC" "$@"; }
+test-flags-CC() { _test-flags-PROG "CC" "$@"; }
 
 # @FUNCTION: test-flags-CXX
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  are supported by the C++ compiler, else 
returns shell false.
-test-flags-CXX() { test-flags-PROG "CXX" "$@"; }
+test-flags-CXX() { _test-flags-PROG "CXX" "$@"; }
 
 # @FUNCTION: test-flags-F77
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  are supported by the Fortran 77 compiler, else 
returns shell false.
-test-flags-F77() { test-flags-PROG "F77" "$@"; }
+test-flags-F77() { _test-flags-PROG "F77" "$@"; }
 
 # @FUNCTION: test-flags-FC
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  are supported by the Fortran 90 compiler, else 
returns shell false.
-test-flags-FC() { test-flags-PROG "FC" "$@"; }
+test-flags-FC() { _test-flags-PROG "FC" "$@"; }
 
 # @FUNCTION: test-flags-CCLD
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  are supported by the C compiler and default 
linker, else returns shell false.
-test-flags-CCLD() { test-flags-PROG "CCLD" "$@"; }
+test-flags-CCLD() { _test-flags-PROG "CCLD" "$@"; }
 
 # @FUNCTION: test-flags
 # @USAGE: 
-- 
2.31.0



signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] [PATCH v2 3/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Andreas Sturmlechner
>From 7b063ec3f4e2a76c43cd5de8a81a0a30c0f87a6d Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner 
Date: Wed, 31 Mar 2021 00:27:27 +0200
Subject: [PATCH 3/5] flag-o-matic.eclass: Make test-flag-PROG() internal

Signed-off-by: Andreas Sturmlechner 
---
 eclass/flag-o-matic.eclass | 28 +++-
 1 file changed, 23 insertions(+), 5 deletions(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index d511a140592..e4fdfd0b62d 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -459,7 +459,25 @@ strip-flags() {
return 0
 }
 
+# @FUNCTION: test-flag-PROG
+# @USAGE:  
+# @INTERNAL
+# @DESCRIPTION:
+# Returns shell true if  is supported by given ,
+# else returns shell false.
 test-flag-PROG() {
+   [[ ${EAPI} == [5-7] ]] ||
+   die "Internal function ${FUNCNAME} is not available in 
>=EAPI-8."
+   _test-flag-PROG
+}
+
+# @FUNCTION: _test-flag-PROG
+# @USAGE:  
+# @INTERNAL
+# @DESCRIPTION:
+# Returns shell true if  is supported by given ,
+# else returns shell false.
+_test-flag-PROG() {
local comp=$1
local lang=$2
shift 2
@@ -554,31 +572,31 @@ test-flag-PROG() {
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  is supported by the C compiler, else returns 
shell false.
-test-flag-CC() { test-flag-PROG "CC" c "$@"; }
+test-flag-CC() { _test-flag-PROG "CC" c "$@"; }
 
 # @FUNCTION: test-flag-CXX
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  is supported by the C++ compiler, else returns 
shell false.
-test-flag-CXX() { test-flag-PROG "CXX" c++ "$@"; }
+test-flag-CXX() { _test-flag-PROG "CXX" c++ "$@"; }
 
 # @FUNCTION: test-flag-F77
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  is supported by the Fortran 77 compiler, else 
returns shell false.
-test-flag-F77() { test-flag-PROG "F77" f77 "$@"; }
+test-flag-F77() { _test-flag-PROG "F77" f77 "$@"; }
 
 # @FUNCTION: test-flag-FC
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  is supported by the Fortran 90 compiler, else 
returns shell false.
-test-flag-FC() { test-flag-PROG "FC" f95 "$@"; }
+test-flag-FC() { _test-flag-PROG "FC" f95 "$@"; }
 
 # @FUNCTION: test-flag-CCLD
 # @USAGE: 
 # @DESCRIPTION:
 # Returns shell true if  is supported by the C compiler and linker, else 
returns shell false.
-test-flag-CCLD() { test-flag-PROG "CC" c+ld "$@"; }
+test-flag-CCLD() { _test-flag-PROG "CC" c+ld "$@"; }
 
 test-flags-PROG() {
local comp=$1
-- 
2.31.0



signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] [PATCH v2 2/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Andreas Sturmlechner
>From 6d1c665d06186dde5361905d5fb2057e044b040e Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner 
Date: Wed, 31 Mar 2021 00:22:12 +0200
Subject: [PATCH 2/5] flag-o-matic.eclass: Make setup-allowed-flags() internal

Signed-off-by: Andreas Sturmlechner 
---
 eclass/flag-o-matic.eclass | 16 +++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index ab79f70392d..d511a140592 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -26,9 +26,23 @@ all-flag-vars() {
echo {ADA,C,CPP,CXX,CCAS,F,FC,LD}FLAGS
 }
 
+# @FUNCTION: setup-allowed-flags
+# @INTERNAL
+# @DESCRIPTION:
 # {C,CPP,CXX,CCAS,F,FC,LD}FLAGS that we allow in strip-flags
 # Note: shell globs and character lists are allowed
 setup-allowed-flags() {
+   [[ ${EAPI} == [5-7] ]] ||
+   die "Internal function ${FUNCNAME} is not available in 
>=EAPI-8."
+   _setup-allowed-flags
+}
+
+# @FUNCTION: _setup-allowed-flags
+# @INTERNAL
+# @DESCRIPTION:
+# {C,CPP,CXX,CCAS,F,FC,LD}FLAGS that we allow in strip-flags
+# Note: shell globs and character lists are allowed
+_setup-allowed-flags() {
ALLOWED_FLAGS=(
-pipe -O '-O[12sg]' -mcpu -march -mtune
'-fstack-protector*' '-fsanitize*' '-fstack-check*' 
-fno-stack-check
@@ -412,7 +426,7 @@ strip-flags() {
local x y var
 
local ALLOWED_FLAGS
-   setup-allowed-flags
+   _setup-allowed-flags
 
set -f  # disable pathname expansion
 
-- 
2.31.0



signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] [PATCH v2 1/5] flag-o-matic.eclass: get rid of eutils in

2021-04-01 Thread Andreas Sturmlechner
>From 0bdac63ac30fdbe2d1293d0ecbdbc2a5ea673112 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner 
Date: Sun, 28 Mar 2021 11:41:32 +0200
Subject: [PATCH 1/5] flag-o-matic.eclass: SUPPORTED_EAPIS: 5,6,7; drop eutils,
 multilib

- eutils was only used for eqawarn in old EAPI
- multilib usage unknown, but is inherited by toolchain-funcs anyway

Signed-off-by: Andreas Sturmlechner 
---
 eclass/flag-o-matic.eclass | 11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/eclass/flag-o-matic.eclass b/eclass/flag-o-matic.eclass
index 20ee39d98ba..ab79f70392d 100644
--- a/eclass/flag-o-matic.eclass
+++ b/eclass/flag-o-matic.eclass
@@ -1,9 +1,10 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 # @ECLASS: flag-o-matic.eclass
 # @MAINTAINER:
 # toolch...@gentoo.org
+# @SUPPORTED_EAPIS: 5 6 7
 # @BLURB: common functions to manipulate and query toolchain flags
 # @DESCRIPTION:
 # This eclass contains a suite of functions to help developers sanely
@@ -12,7 +13,13 @@
 if [[ -z ${_FLAG_O_MATIC_ECLASS} ]]; then
 _FLAG_O_MATIC_ECLASS=1
 
-inherit eutils toolchain-funcs multilib
+inherit toolchain-funcs
+
+case ${EAPI} in
+   [0-4]) die "flag-o-matic.eclass: EAPI ${EAPI} is too old." ;;
+   [5-7]) inherit eutils ;;
+   *) die "EAPI ${EAPI} is not supported by flag-o-matic.eclass." ;;
+esac
 
 # Return all the flag variables that our high level funcs operate on.
 all-flag-vars() {
-- 
2.31.0



signature.asc
Description: This is a digitally signed message part.


Re: [gentoo-dev] developing a separate repo spec

2021-04-01 Thread Tim Harder
On 2021-03-30 Tue 02:18, Ulrich Mueller wrote:
> So yes, maybe we should have a separate spec for forward-compatible
> repository features that are independent of EAPI. But I think that
> incompatible changes won't be possible there and would have to reamin
> in PMS. (For example, updating of package dependencies in profiles from
> EAPI 0 to EAPI 5 was not forward compatible and required the one year
> waiting period.)

My main point is if users expect repos leveraging these features to work
with most tools it would be helpful to document them in a more
canonical, visible location than man pages and probably discuss them
more visibly as well. If they were truly optional features it wouldn't
be as much of an issue, but an increasing number of complex overlays
assume a minimum of portage-1/portage-2 profile-formats features being
readily available.

Furthermore, I don't think the current spec even mentions the
metadata/layout.conf file (and its semi-standard fields) and only
passingly mentions overlays but has no details about them. Getting more
of that in an official document would help devs know what they have to
implement to support current repo/overlay functionality.

Finally, pinning repo features to a standardized version allows tools to
more readily report why they won't work when failing to meet the repo's
required EAPI/RAPI instead of the semi-random errors that will often
occur during unimplemented usage.

Tim