Issue #19289 has been updated by vo.x (Vit Ondruch).
Eregon (Benoit Daloze) wrote in #note-4:
That said this kind of configuration is IMHO silly,
changing it is basically guaranteed to break things, so a better way would be remove such
configuration
I think it was always meant to allow to install multiple versions of the same version of
Ruby, with possibly different configuration and what not. Unfortunately, the name is not
always not expressive enough and not all Ruby maintainers know/remember why this variable
is there and therefore it might be misunderstood/misused.
BTW I historically proposed to allow the `ruby_version` to not be used at all, e.g. to be
an empty string. This unfortunately have not worked out. Instead, the `ruby_version` was
made mandatory :/
And we still carry this patch in Fedora:
https://src.fedoraproject.org/rpms/ruby/blob/rawhide/f/ruby-2.3.0-ruby_vers…
and here is relevant PR:
https://github.com/ruby/ruby/pull/2392
----------------------------------------
Bug #19289: RbConfig::CONFIG["STRIP"] should keep `rb_abi_version` and
`rb_abi_version` should always be part of Ruby
https://bugs.ruby-lang.org/issues/19289#change-100903
* Author: Eregon (Benoit Daloze)
* Status: Open
* Priority: Normal
* Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN
----------------------------------------
From
https://github.com/grpc/grpc/pull/31970 and
https://github.com/redis-rb/redis-client/issues/58
First, I think we could add `-K rb_abi_version` to `RbConfig::CONFIG["STRIP"]`
so it's automatically kept if `RbConfig::CONFIG["STRIP"]` is used (and that
should be used if one strips any native extension).
Second, I think it would be much better if the symbol is kept also for releases.
The check could be kept too for safety (e.g., it can detect Ruby 3.3.0 gems used by Ruby
3.2.0), the value of `rb_abi_version` would just be the same as
`RbConfig::CONFIG["ruby_version"]`, i.e., 3.2.0 for Ruby 3.2.x.
Any difference between dev and release builds is a risk of not properly testing the
release, and there is proof here that removing the symbol in releases causes troubles.
Doing both of these would avoid complex and brittle logic upstream as in grpc and
redis-client to deal with the new symbol.
cc @nobu @peterzhu2118
--
https://bugs.ruby-lang.org/