Merge pull request #90151 from doronbehar/ruby-gcc-ref
This commit is contained in:
commit
32fdf2118c
4 changed files with 34 additions and 19 deletions
|
@ -89,6 +89,18 @@
|
||||||
user D-Bus session available also for non-graphical logins.
|
user D-Bus session available also for non-graphical logins.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</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>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
The option <option>fonts.enableFontDir</option> has been renamed to
|
The option <option>fonts.enableFontDir</option> has been renamed to
|
||||||
|
|
|
@ -44,11 +44,22 @@ let
|
||||||
, groff, docSupport ? true
|
, groff, docSupport ? true
|
||||||
, libyaml, yamlSupport ? true
|
, libyaml, yamlSupport ? true
|
||||||
, libffi, fiddleSupport ? true
|
, libffi, fiddleSupport ? true
|
||||||
# ruby -e "puts RbConfig::CONFIG['configure_args']"
|
# By default, ruby has 3 observed references to stdenv.cc:
|
||||||
# puts a reference to the C compiler in the binary.
|
#
|
||||||
# This might be required by some gems at runtime,
|
# - If you run:
|
||||||
# but we allow to strip it out for smaller closure size.
|
# ruby -e "puts RbConfig::CONFIG['configure_args']"
|
||||||
, removeReferencesTo, removeReferenceToCC ? true
|
# - 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
|
, autoreconfHook, bison, autoconf
|
||||||
, buildEnv, bundler, bundix
|
, buildEnv, bundler, bundix
|
||||||
, libiconv, libobjc, libunwind, Foundation
|
, libiconv, libobjc, libunwind, Foundation
|
||||||
|
@ -121,6 +132,7 @@ let
|
||||||
|
|
||||||
configureFlags = ["--enable-shared" "--enable-pthread" "--with-soname=ruby-${version}"]
|
configureFlags = ["--enable-shared" "--enable-pthread" "--with-soname=ruby-${version}"]
|
||||||
++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby"
|
++ op useRailsExpress "--with-baseruby=${baseruby}/bin/ruby"
|
||||||
|
++ op (!jitSupport) "--disable-jit-support"
|
||||||
++ op (!docSupport) "--disable-install-doc"
|
++ op (!docSupport) "--disable-install-doc"
|
||||||
++ ops stdenv.isDarwin [
|
++ ops stdenv.isDarwin [
|
||||||
# on darwin, we have /usr/include/tk.h -- so the configure script detects
|
# 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
|
# Remove unnecessary groff reference from runtime closure, since it's big
|
||||||
sed -i '/NROFF/d' $out/lib/ruby/*/*/rbconfig.rb
|
sed -i '/NROFF/d' $out/lib/ruby/*/*/rbconfig.rb
|
||||||
${
|
${
|
||||||
lib.optionalString removeReferenceToCC ''
|
lib.optionalString (!jitSupport) ''
|
||||||
# Get rid of the CC runtime dependency
|
# Get rid of the CC runtime dependency
|
||||||
${removeReferencesTo}/bin/remove-references-to \
|
${removeReferencesTo}/bin/remove-references-to \
|
||||||
-t ${stdenv.cc} \
|
-t ${stdenv.cc} \
|
||||||
$out/lib/libruby*
|
$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
|
# Bundler tries to create this directory
|
||||||
|
|
|
@ -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";
|
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";
|
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";
|
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-with-plugins = rxvt-unicode; # added 2020-02-02
|
||||||
rxvt_unicode = rxvt-unicode-unwrapped; # 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
|
urxvt_autocomplete_all_the_things = rxvt-unicode-plugins.autocomplete-all-the-things; # added 2020-02-02
|
||||||
|
|
|
@ -10545,19 +10545,6 @@ in
|
||||||
ruby_2_6
|
ruby_2_6
|
||||||
ruby_2_7;
|
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;
|
ruby = ruby_2_6;
|
||||||
rubyPackages = rubyPackages_2_6;
|
rubyPackages = rubyPackages_2_6;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue