Description
Use Case
In order to cross-compile gems with native extensions, like ffi
, the top-level RbConfig
constant must be modified to pretend to the target ruby architecture. To accomplish this, we patch the host ruby, however, this is fragile because the rubygems code keeps changing how it invokes the gem command. As a result we've shipped gems with unusable native extensions multiple times. I fixed this is 58560cc but it doesn't support rubygems > 3.5.10
Describe the Solution You Would Like
Ruby's mkmf introduced a --target-rbconfig
option to satisfy this use case, see https://bugs.ruby-lang.org/issues/20345. Also the gem install
and gem update
commands recently added support for the --target-rbconfig
option. In theory, this means we could eliminate patch-hostruby
and instead do gem install --target-rbconfig fake.rb nokogiri
. However, you'd need to use the latest ruby/rubygems to take advantage of the option.