diff options
-rw-r--r-- | nixos/doc/manual/release-notes/rl-2103.xml | 12 | ||||
-rw-r--r-- | pkgs/development/interpreters/ruby/default.nix | 27 | ||||
-rw-r--r-- | pkgs/top-level/aliases.nix | 1 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 13 |
4 files changed, 34 insertions, 19 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2103.xml b/nixos/doc/manual/release-notes/rl-2103.xml index 709b2ba5228f..f857f1e28b79 100644 --- a/nixos/doc/manual/release-notes/rl-2103.xml +++ b/nixos/doc/manual/release-notes/rl-2103.xml @@ -90,6 +90,18 @@ </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 <xref linkend="opt-fonts.fontDir.enable"/>. The path of font directory diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 189be8945fa9..cfd5c7e5180e 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -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 diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index f8228f457012..cebec0d5e52c 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -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 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 2f06713de0a5..8eae90ddc4c7 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -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; |