Add --target-rbconfig
option to gem install
and gem update
commands
#7628
+199
−21
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What was the end-user or developer problem that led to this PR?
Today, CRuby runs on many platforms. But not all platforms are capable of running build tools (e.g. WebAssembly/WASI), so cross-target compilation against extensions libraries is essential for those platforms.
Currently, there is no way to cross-compile extension libraries in gems at install-time.
What is your fix for the problem, implemented in this PR?
This patch adds
--target-rbconfig
option to specify the rbconfig.rb file for the deployment target platform. It basically pass through it to mkmf. The underlying--target-rbconfig
support in mkmf has been introduced recently https://bugs.ruby-lang.org/issues/20345At the moment, this option is only available when the following requirements are met:
extconf.rb
-based extensionsBut we can relax the first requirement for Cargo builder by adding a support in rb-sys later.
$ GEM_HOME=/tmp/gems-wasm32-wasi gem install nokogiri --target-rbconfig path/to/wasm32-wasi/rbconfig.rb
Make sure the following tasks are checked