Bash 3 doesn't have associative arrays. Use variable indirection to
save various checksum algorithm support results. `printf -v` can save
the output to a variable, whose name is itself stored in a variable
On CentOS 7 and RHEL 7 bzip2 is not installed by default. This
causes a confusing error from tar when attempting to untar the
package. While this does not solve the problem, it at least gives
the user a more helpful error. More details can be found in GitHub
issue #870
Internally, ruby-build will want to set `--with-openssl-dir` if we try
to detect Homebrew's OpenSSL or build one for the OS X. However,
Rubinius doesn't support that configure flag. So, this translates
`--with-openssl-dir` to a combination of `--with-lib-dir` and
`--with-include-dir`.
Homebrew bumped the version of LLVM installed with `brew install llvm`
from 3.5.1 to 3.6.0. So now users will have to tap homebrew-versions and
run `brew install llvm35` in order to get the version necessary to
install recent versions of Rubinius. The 3.5-specific `llvm-config`
becomes `llvm-config-3.5` accordingly.
0196a069a0
The main "llvm" Homebrew package is occasionally getting updated and is
not guaranteed to be version 3.5. Right now it's 3.6, but that depends
on the version of Homebrew that someone has installed.
This lists through all installed Homebrew packages named "llvm*" and
tests each `llvm-config --version` for "3.5*" until it finds one.
OpenJDK reports its version slightly different than Oracle Java, and
this was causing the logic in bin/ruby-build to not detect Java 7 or
higher when OpenJDK was used.
This is to fix the error when installing new gems that have executables
which match existing binstubs in the Rubinius bin directory:
"bundle" from bundler conflicts with PREFIX/gems/bin/bundle
RubyGems is supposed to override the binstub if it detects that the
previous one was also generated by RubyGems for the gem of the same
name, but its detection mechanism gets thrown off by having a double
shebang as a result of our binstubs fixing process.
https://github.com/rubygems/rubygems/blob/v2.2.2/lib/rubygems/installer.rb#L149-L154
This avoids generating binstubs with a double shebang.
When generating SHA2 checksums with `openssl`, we want to give
preference to the newer OpenSSL that might have been installed with
Homebrew. However if there's no `brew` command the ERR trap will kick in
and display the "BUILD FAILED" notice although the build would proceed
to run.
Related: c0dc8908e1Fixes#713
Prior to this we tried to use pre-built LLVM binaries since Yosemite,
but starting with Rubinius 2.3.0 this is no longer a feature of its
build system. Instead, look for "llvm" Homebrew package and suggest
installing it if it's missing.