Merge pull request #90151 from doronbehar/ruby-gcc-ref

This commit is contained in:
Doron Behar 2020-11-09 17:25:41 +02:00 committed by GitHub
commit 32fdf2118c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 19 deletions

View file

@ -89,6 +89,18 @@
user D-Bus session available also for non-graphical logins.
</para>
</listitem>
<listitem>
<para>
<literal>rubyMinimal</literal> was removed due to being unused and
unusable. The default ruby interpreter includes JIT support, which makes
it reference it's compiler. Since JIT support is probably needed by some
Gems, it was decided to enable this feature with all cc references by
default, and allow to build a Ruby derivation without references to cc,
by setting <literal>jitSupport = false;</literal> in an overlay. See
<link xlink:href="https://github.com/NixOS/nixpkgs/pull/90151">#90151</link>
for more info.
</para>
</listitem>
<listitem>
<para>
The option <option>fonts.enableFontDir</option> has been renamed to

View file

@ -44,11 +44,22 @@ let
, groff, docSupport ? true
, libyaml, yamlSupport ? true
, libffi, fiddleSupport ? true
# ruby -e "puts RbConfig::CONFIG['configure_args']"
# puts a reference to the C compiler in the binary.
# This might be required by some gems at runtime,
# but we allow to strip it out for smaller closure size.
, removeReferencesTo, removeReferenceToCC ? true
# By default, ruby has 3 observed references to stdenv.cc:
#
# - If you run:
# ruby -e "puts RbConfig::CONFIG['configure_args']"
# - In:
# $out/${passthru.libPath}/${stdenv.targetPlatform.system}/rbconfig.rb
# Or (usually):
# $(nix-build -A ruby)/lib/ruby/2.6.0/x86_64-linux/rbconfig.rb
# - In $out/lib/libruby.so and/or $out/lib/libruby.dylib
#
# Since some Gems require JIT support, there's probably no
# escape from this reference. Hence, it was decided to enable this
# feature by default, as it's enabled by default by ruby's ./configure
# script. If you'd like to have a ruby without reference to cc, setting
# jitSupport to false should remove all known references mentioned above.
, removeReferencesTo, jitSupport ? true
, autoreconfHook, bison, autoconf
, buildEnv, bundler, bundix
, libiconv, libobjc, libunwind, Foundation
@ -121,6 +132,7 @@ let
configureFlags = ["--enable-shared" "--enable-pthread" "--with-soname=ruby-${version}"]
++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby"
++ op (!jitSupport) "--disable-jit-support"
++ op (!docSupport) "--disable-install-doc"
++ ops stdenv.isDarwin [
# on darwin, we have /usr/include/tk.h -- so the configure script detects
@ -157,11 +169,14 @@ let
# Remove unnecessary groff reference from runtime closure, since it's big
sed -i '/NROFF/d' $out/lib/ruby/*/*/rbconfig.rb
${
lib.optionalString removeReferenceToCC ''
lib.optionalString (!jitSupport) ''
# Get rid of the CC runtime dependency
${removeReferencesTo}/bin/remove-references-to \
-t ${stdenv.cc} \
$out/lib/libruby*
${removeReferencesTo}/bin/remove-references-to \
-t ${stdenv.cc} \
$out/${passthru.libPath}/${stdenv.targetPlatform.system}/rbconfig.rb
''
}
# Bundler tries to create this directory

View file

@ -501,6 +501,7 @@ mapAliases ({
ruby_2_5_0 = throw "ruby_2_5_0 was deprecated on 2018-02-13: use a newer version of ruby";
rubyPackages_2_4 = throw "rubyPackages_2_4 was deprecated in 2019-12: use a newer version of rubyPackages instead";
rubygems = throw "rubygems was deprecated on 2016-03-02: rubygems is now bundled with ruby";
rubyMinimal = throw "rubyMinimal was removed due to being unused";
rxvt_unicode-with-plugins = rxvt-unicode; # added 2020-02-02
rxvt_unicode = rxvt-unicode-unwrapped; # added 2020-02-02
urxvt_autocomplete_all_the_things = rxvt-unicode-plugins.autocomplete-all-the-things; # added 2020-02-02

View file

@ -10545,19 +10545,6 @@ in
ruby_2_6
ruby_2_7;
rubyMinimal = ruby.override {
# gem support is minimal overhead
rubygemsSupport = true;
useRailsExpress = false;
zlibSupport = false;
opensslSupport = false;
gdbmSupport = false;
cursesSupport = false;
docSupport = false;
yamlSupport = false;
fiddleSupport = false;
};
ruby = ruby_2_6;
rubyPackages = rubyPackages_2_6;