Shebang mode fails on JRuby due to bash script launcher
headius opened this issue · 0 comments
The "shebang" mode for the parser generator does not work properly on some configurations of JRuby due to the jruby
command being a bash script.
This leads to the following error in CI (see #93):
Failure:
Racc::TestRaccCommand#test_executable_parser [/Users/headius/projects/racc/test/test_racc_command.rb:57]:
Expected false to be truthy.
In many installs of JRuby, including the default tarball you can download from https://jruby.org, the jruby
command is actually implemented using a bash script. Due to stupidity in the design of shebangs on most *nix systems, this means that the jruby
script cannot be used directly in the shebang line of a Ruby script, because bash will attempt to execute both the jruby
command and the target script with bash.
This is the reason that RubyGems with binscripts are usually installed using so-called "env shebangs" on JRuby, like so:
#!/usr/bin/env jruby
It is possible to install the jruby-launcher
gem which will install a native jruby
binary that works with the non-env shebang. This may be an option to get the test to pass, but it may be better to use an env shebang when generating the parser script.