diff options
author | Doron Behar <doron.behar@gmail.com> | 2020-06-07 10:19:16 +0300 |
---|---|---|
committer | Doron Behar <doron.behar@gmail.com> | 2020-11-09 16:17:39 +0200 |
commit | f59f04352aace7ba228695de0ec8e716ce82134f (patch) | |
tree | 053017939914700dbe8c428873ca9bcbbac2c972 /pkgs/development/interpreters | |
parent | 8aaf2e60e54409dfa06011077991d20600365386 (diff) | |
download | nixpkgs-f59f04352aace7ba228695de0ec8e716ce82134f.tar nixpkgs-f59f04352aace7ba228695de0ec8e716ce82134f.tar.gz nixpkgs-f59f04352aace7ba228695de0ec8e716ce82134f.tar.bz2 nixpkgs-f59f04352aace7ba228695de0ec8e716ce82134f.tar.lz nixpkgs-f59f04352aace7ba228695de0ec8e716ce82134f.tar.xz nixpkgs-f59f04352aace7ba228695de0ec8e716ce82134f.tar.zst nixpkgs-f59f04352aace7ba228695de0ec8e716ce82134f.zip |
ruby: Rename removeReferencesToCC flag to `!jitSupport`
If JIT support is built in to ruby, there's no choice other then to leave this cc reference as is. removeReferencesToCC didn't do it's job completely since some time ago. That's why it was practically redundant - `lib/ruby/${version}/<platform>/rbconfig.rb` still referenced cc. Removing this reference from `lib/ruby/${version}/<platform>/rbconfig.rb` as well might lead to breakage in some Gems that require this feature. But, if JIT support is not desired, it should be safe enough to completely remove all cc references, both in lib/ruby/${version}/<platform>/rbconfig.rb and in $out/lib/libruby.so . Hence now `rubyMinimal` has JIT support disabled and it has no references at all to stdenv.cc.
Diffstat (limited to 'pkgs/development/interpreters')
-rw-r--r-- | pkgs/development/interpreters/ruby/default.nix | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/pkgs/development/interpreters/ruby/default.nix b/pkgs/development/interpreters/ruby/default.nix index 189be8945fa..ec65eaad8ce 100644 --- a/pkgs/development/interpreters/ruby/default.nix +++ b/pkgs/development/interpreters/ruby/default.nix @@ -44,11 +44,23 @@ 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. We do disable this feature though for the other cc references + # in all of the locations given above for the `rubyMinimal` build defined + # in all-packages.nix. + , removeReferencesTo, jitSupport ? true , autoreconfHook, bison, autoconf , buildEnv, bundler, bundix , libiconv, libobjc, libunwind, Foundation @@ -121,6 +133,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 +170,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 |