Commit 76b63289 by Thomas Seliger Committed by Mislav Marohnić

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
...@@ -507,6 +507,7 @@ build_package_jruby() { ...@@ -507,6 +507,7 @@ build_package_jruby() {
ln -fs jruby ruby ln -fs jruby ruby
install_jruby_launcher install_jruby_launcher
remove_windows_files remove_windows_files
fix_jruby_shebangs
} }
install_jruby_launcher() { install_jruby_launcher() {
...@@ -515,6 +516,14 @@ install_jruby_launcher() { ...@@ -515,6 +516,14 @@ install_jruby_launcher() {
} >&4 2>&1 } >&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() { remove_windows_files() {
cd "$PREFIX_PATH" cd "$PREFIX_PATH"
rm -f bin/*.exe bin/*.dll bin/*.bat bin/jruby.sh rm -f bin/*.exe bin/*.dll bin/*.bat bin/jruby.sh
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment