From e703709952fc0146ef2d5ac97469a0e52bff56ce Mon Sep 17 00:00:00 2001 From: Farid Zakaria Date: Thu, 24 Sep 2020 16:33:43 -0700 Subject: [PATCH] jruby: fix shebang for binaries in JRuby MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There are a variety of additional scripts that are included with the JRuby installation that use JRuby itself. For instance the `bin/gem` had the following contents: ```bash ❯ cat /nix/store/kglkqf56ii83yl6yrgcaj5r3s9m2fzr0-jruby-9.2.13.0/bin/gem load File.join(File.dirname(__FILE__), 'jgem') ``` This is clearly wrong. Patchshebangs was not picking up the fix as part of stdenv because the patch is not a build input but the final output itself. We have to rely on substituteInPlace so that we get the correct version. ```bash ❯ cat /nix/store/k4fnrn0dcsh2wzw81217r0ywsspb468f-jruby-9.2.13.0/bin/gem ``` (cherry picked from commit 8da7bd63ca2b2e84bf14540312ffc818715cfec6) --- pkgs/development/interpreters/jruby/default.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkgs/development/interpreters/jruby/default.nix b/pkgs/development/interpreters/jruby/default.nix index e4511da498c7af..8d27bfb64f8b4a 100644 --- a/pkgs/development/interpreters/jruby/default.nix +++ b/pkgs/development/interpreters/jruby/default.nix @@ -40,6 +40,10 @@ jruby = stdenv.mkDerivation rec { EOF ''; + postFixup = '' + PATH=$out/bin:$PATH patchShebangs $out/bin + ''; + passthru = rec { rubyEngine = "jruby"; gemPath = "lib/${rubyEngine}/gems/${rubyVersion.libDir}";