Commit 76b63289 authored by Thomas Seliger's avatar Thomas Seliger Committed by Mislav Marohnić
Browse files

Transform JRuby shebangs to absolute paths, fixing recursion within rbenv

The default shebang for binstubs in a JRuby installation is
`#!/usr/bin/env jruby`. On a rbenv-managed JRuby, this will execute the
`jruby` rbenv shim. In a situation where a JRuby tool like `gem` is
executed from within a running rbenv by a rbenv plugin, (e.g.
rbenv-gemset) this can trigger another rbenv run to resolve the shim.
This can lead to endless recursion of rbenv calls.

Fixes #471, closes #473
References jf/rbenv-gemset#56
parent 8ebfd1d0
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -507,6 +507,7 @@ build_package_jruby() {
  ln -fs jruby ruby
  install_jruby_launcher
  remove_windows_files
  fix_jruby_shebangs
}

install_jruby_launcher() {
@@ -515,6 +516,14 @@ install_jruby_launcher() {
  } >&4 2>&1
}

fix_jruby_shebangs() {
  for file in "${PREFIX_PATH}/bin"/*; do
    if [ "$(head -c 20 "$file")" = "#!/usr/bin/env jruby" ]; then
      sed -i '' -E "1s:.+:#\!${PREFIX_PATH}/bin/jruby:" "$file"
    fi
  done
}

remove_windows_files() {
  cd "$PREFIX_PATH"
  rm -f bin/*.exe bin/*.dll bin/*.bat bin/jruby.sh