The RubyGems we run at build time runs with JRuby 9.4, which causes
it to use properties from that version for things like gem paths
and extension directories. This is related to the extension
disabling change in jruby#8415 and causes the build-time
extension faking to use the wrong path. For example:
.../gems/shared/extensions/universal-java-25/3.1.0
when it should be
.../gems/shared/extensions/universal-java/3.4.0
The change here uses RubyGems' cross-compiling capability by
forcing a specific rbconfig.rb to be use, and additionally fakes
out the Ruby API version by setting @ruby_api_version on the Gem
module.
This was discovered while attempting to switch fully to the syslog
gem in jruby#9109, since as a bundled gem it will not be
activated unless we successfully fake-out the extension build.
See also this bug related to the resolv gem installing extensions:
* jruby#8649
This reverts part of #9109 that included it in JRuby as a default gem, rather than a bundled gem, due to the issues described in #9197. I've chery-picked that fix here, and the syslog gem now works properly after the build.
This could be merged into 10.0.3.0 to have the syslog gem move fully "done" but with the default gem change in #9109 it's not a critical change.