From: Benoit Daloze via ruby-core Date: 2023-11-17T11:46:24+01:00 Subject: [ruby-core:115407] Re: Ruby 3.2.2 - rbconfig.rb's MAKEFILE_CONFIG --===============9083850463780719853== Content-Type: multipart/alternative; boundary="0000000000003014cf060a56db68" --0000000000003014cf060a56db68 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hello, Where do you see such code, https://github.com/ruby/ruby/blob/master/lib/mkmf.rb doesn't seem to have it. In any case, it's not a good idea to use `CONFIG` in `extconf.rb`, use `RbConfig::CONFIG` instead (like everywhere else), that's always expanded. Benoit On Fri, Nov 17, 2023 at 2:48=E2=80=AFAM Jay Mav via ruby-core < ruby-core@ml.ruby-lang.org> wrote: > Hello Ruby Dev Team, > With Ruby 3.2.2, gem install fails because in rbconfig.rb, > MAKEFILE_CONFIG's $(target_os) is not expanded (whereas CONFIG's is > expanded correctly). > > The inline doc in mkconfig.rb states that the caller can expand > MAKEFILE_CONFIG's values by calling RbConfig::expand(). > > However, ruby-shadow gem's Makefile generator -- extconf.rb -- does not > call expand and directly uses mkmf.rb's CONFIG instance (which is > RbConfig::MAKEFILE_CONFIG), because of which $(target_os) does not get > expanded. > This causes ruby-shadow gem install to fail with Ruby 3.2.2. > > Would the Ruby Dev Team accept the following proposal to fix mkconfig.rb, > so that the generated rbconfig.rb instantiates MAKEFILE_CONFIG AFTER > CONFIG's values have been expanded? > > # Existing code... > CONFIG.each_value do |val| > RbConfig::expand(val) > end > # Move instantiation of MAKEFILE_CONFIG after expanding CONFIG's values= . > MAKEFILE_CONFIG =3D {} > CONFIG.each{|k,v| MAKEFILE_CONFIG[k] =3D v.dup} > > If we fix it in mkconfig.rb, we can avoid callers having to explicitly > call expand for MAKEFILE_CONFIG's values. > > Thanks. > ______________________________________________ > ruby-core mailing list -- ruby-core@ml.ruby-lang.org > To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org > ruby-core info -- > https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.= org/ --0000000000003014cf060a56db68 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hello,

Where do you see such= code, htt= ps://github.com/ruby/ruby/blob/master/lib/mkmf.rb doesn't seem to h= ave it.

In any case, it's not a good idea to u= se `CONFIG` in `extconf.rb`, use `RbConfig::CONFIG` instead (like everywher= e else), that's always expanded.

Benoit

On Fri, Nov 17, 2023 at 2:48=E2=80=AFAM Jay Mav via ruby-core <ruby-core@ml.ruby-lang.org&= gt; wrote:
Hello Ruby Dev Team,
With Ruby 3.2.2, gem install fails beca= use in rbconfig.rb, MAKEFILE_CONFIG's $(target_os) is not expanded (whe= reas CONFIG's is expanded correctly).

The inline doc in mkconfi= g.rb states that the caller can expand MAKEFILE_CONFIG's values by call= ing RbConfig::expand().

However, ruby-shadow gem's Makefile gen= erator -- extconf.rb -- does not call expand and directly uses mkmf.rb'= s CONFIG instance (which is RbConfig::MAKEFILE_CONFIG), because of which $(= target_os) does not get expanded.
This causes ruby-shadow gem install to= fail with Ruby 3.2.2.

Would the Ruby Dev Team accept the following = proposal to fix mkconfig.rb, so that the generated rbconfig.rb instantiates= MAKEFILE_CONFIG AFTER CONFIG's values have been expanded?

=C2= =A0 # Existing code...
=C2=A0 CONFIG.each_value do |val|
=C2=A0 =C2= =A0 RbConfig::expand(val)
=C2=A0 end
=C2=A0 # Move instantiation of M= AKEFILE_CONFIG after expanding CONFIG's values.
=C2=A0 MAKEFILE_CONF= IG =3D {}
=C2=A0 CONFIG.each{|k,v| MAKEFILE_CONFIG[k] =3D v.dup}

= If we fix it in mkconfig.rb, we can avoid callers having to explicitly call= expand for MAKEFILE_CONFIG's values.

Thanks.
=C2=A0______________________________________________
=C2=A0ruby-core mailing list -- ruby-core@ml.ruby-lang.org
=C2=A0To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
=C2=A0ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.o= rg/
--0000000000003014cf060a56db68-- --===============9083850463780719853== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/ --===============9083850463780719853==--