Hans de Graaff <gra...@gentoo.org> writes:

> The varargs implementation in Ruby 3.2 is not compatible with gnu23. Ruby
> 3.1 is in security maintenance mode upstream so it is unlikely that the
> fixes from Ruby 3.2 will be backported. Ruby 3.1 is EOL in March 2025
> and will be removed from Gentoo around that time.
>

LGTM if you've confirmed it fixes an extension build. Add a Closes
tag for https://bugs.gentoo.org/943988?

> Signed-off-by: Hans de Graaff <gra...@gentoo.org>
> ---
>  eclass/ruby-fakegem.eclass | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/eclass/ruby-fakegem.eclass b/eclass/ruby-fakegem.eclass
> index eb6257a50cf9..fc78428be714 100644
> --- a/eclass/ruby-fakegem.eclass
> +++ b/eclass/ruby-fakegem.eclass
> @@ -23,6 +23,8 @@ case ${EAPI} in
>       *) die "${ECLASS}: EAPI ${EAPI:-0} not supported" ;;
>  esac
>  
> +# flag-o-matic is only required for ruby31 support.
> +inherit flag-o-matic
>  inherit ruby-ng
>  
>  # @ECLASS_VARIABLE: RUBY_FAKEGEM_NAME
> @@ -424,6 +426,16 @@ EOF
>  each_fakegem_configure() {
>       debug-print-function ${FUNCNAME} "$@"
>  
> +     # Ruby 3.1 has a varargs implementation that is not compatible with
> +     # gnu23. Ruby 3.1 is EOL in March 2025 and will be removed shortly
> +     # after that.
> +     case ${RUBY} in
> +             *ruby31)
> +                     append-flags -std=gnu17
> +                     filter-flags -std=gnu23
> +                     ;;
> +     esac
> +
>       tc-export PKG_CONFIG
>       for extension in "${RUBY_FAKEGEM_EXTENSIONS[@]}" ; do
>               CC=$(tc-getCC) ${RUBY} --disable=did_you_mean -C 
> ${extension%/*} ${extension##*/} --with-cflags="${CFLAGS}" 
> --with-ldflags="${LDFLAGS}" ${RUBY_FAKEGEM_EXTENSION_OPTIONS} || die

Reply via email to