• Re: [gentoo-dev] [RFC] [PATCH] toolchain-funcs.eclass: toolchain-funcs.

    From Ionen Wolkens@21:1/5 to All on Sun Dec 15 10:00:01 2024
    On Sun, Dec 15, 2024 at 10:22:06AM +0200, Mickaël Bucas wrote:
    Le sam. 14 déc. 2024, 00:32, Andreas Sturmlechner <asturm@gentoo.org> a écrit :

    Every once in a while, a package requires a really up to date active compiler
    in order to build successfully. ecm.eclass had inherited such a mechanism, albeit GCC specific, from older kde* eclasses. I don't think that is a good place for it so I suggest to add a more universal function to toolchain-funcs.eclass.

    Similar to tc-check-openmp.


    Hi

    I was wondering: how is this check different from a version dependency in
    any *DEPEND variable?

    Different compilers and multiple versions of them can be installed at
    same time, and the user can pick them by setting e.g. CC=clang-18,
    using gcc-config/eselect, PATH, and such.

    A dependency check would only ensure that the compiler is installed,
    not that it's the one that's being used, what version of it, or even
    what USE is enabled for the used slot/compiler (openmp case). This
    would only work if the ebuild is enforcing a specific compiler while
    ignoring the user's choice.
    --
    ionen

    -----BEGIN PGP SIGNATURE-----

    iQEzBAABCAAdFiEEx3SLh1HBoPy/yLVYskQGsLCsQzQFAmdemWsACgkQskQGsLCs QzTmJQf/WzsmsO/GLTONux5pMAYhB6+PZbIR58uKlV9d7bL6JPfkb+yB7Lt/SXCZ MBaK5+GdPy8V4H7FsvmpPfiFWzsYq6KCw/xaB/ivCL6VYalArPd3n61D19sK62zy U6/FMq2CPPfxi1D7AhcYeQfKLHIbMYcxbhuVYLMGVgfyEgxIz9288V74S4fVSwil gTBhsPr53d05N8nWahFBI3q/SktGCLMwSW65KoDoxon+S7Trf3wEO60VF2Ac08BZ aCnKRb8nM0P67WiOGiABd8seom0NCYttuNYFYSBLau5rAj3q1NS+D/H/szKuUjZN yyMvUsT4a10ZxwHPP+TZdnq6kw4rTg==
    =xY4g
    -----END PGP SIGNATURE-----

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Sam James@21:1/5 to Andreas Sturmlechner on Mon Dec 16 17:50:01 2024
    Andreas Sturmlechner <asturm@gentoo.org> writes:

    Every once in a while, a package requires a really up to date active compiler in order to build successfully. ecm.eclass had inherited such a mechanism, albeit GCC specific, from older kde* eclasses. I don't think that is a good place for it so I suggest to add a more universal function to toolchain-funcs.eclass.

    Similar to tc-check-openmp.

    LGTM, but please CC eclass maints in future.



    eclass/toolchain-funcs.eclass | 44 +++++++++++++++++++++++++++++++++++
    1 file changed, 44 insertions(+)

    diff --git a/eclass/toolchain-funcs.eclass b/eclass/toolchain-funcs.eclass index 2911ed66e63c..cd3dcf000db7 100644
    --- a/eclass/toolchain-funcs.eclass
    +++ b/eclass/toolchain-funcs.eclass
    @@ -647,6 +647,50 @@ _tc-has-openmp() {
    return ${ret}
    }

    +# @FUNCTION: tc-check-min_ver
    +# @USAGE: <gcc or clang> <minimum version>
    +# @DESCRIPTION:
    +# Minimum version of active GCC or Clang to require.
    +#
    +# You should test for any necessary minimum version in pkg_pretend in order to
    +# warn the user of required toolchain changes. You must still check for it at
    +# build-time, e.g.
    +# @CODE
    +# pkg_pretend() {
    +# [[ ${MERGE_TYPE} != binary ]] && tc-check-min_ver gcc 13.2.0
    +# }
    +#
    +# pkg_setup() {
    +# [[ ${MERGE_TYPE} != binary ]] && tc-check-min_ver gcc 13.2.0
    +# }
    +# @CODE
    +tc-check-min_ver() {
    + do_check() {
    + debug-print "Compiler version check for ${1}"
    + debug-print "Detected: ${2}"
    + debug-print "Required: ${3}"
    + if ver_test ${2} -lt ${3}; then
    + eerror "Your current compiler is too old for this package!"
    + die "Active compiler is too old for this package (found ${2})."
    + fi
    + }
    +
    + case ${1} in
    + gcc)
    + tc-is-gcc || return
    + do_check GCC $(gcc-version) ${2}
    + ;;
    + clang)
    + tc-is-clang || return
    + do_check Clang $(clang-version) ${2}
    + ;;
    + *)
    + eerror "Unknown first parameter for ${FUNCNAME} - must be gcc or clang"
    + die "${FUNCNAME}: Parameter ${1} unknown"
    + ;;
    + esac
    +}
    +
    # @FUNCTION: tc-check-openmp
    # @DESCRIPTION:
    # Test for OpenMP support with the current compiler and error out with

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)