diff --git a/bin/ruby-build b/bin/ruby-build index edc11388..7217b617 100755 --- a/bin/ruby-build +++ b/bin/ruby-build @@ -516,43 +516,41 @@ verify_gcc() { echo "$gcc" } -build_package_replace_osx_openssl() { - # Check for broken OpenSSL build shipped with OSX. - if [ "$(uname -s)" = "Darwin" ] && - [ "$(openssl version 2>/dev/null || true)" = "OpenSSL 0.9.8r 8 Feb 2011" ] - then - # Install to a subdirectory since we don't want shims for bin/openssl. - OPENSSL_PREFIX_PATH="${PREFIX_PATH}/openssl" - - # Put openssl.conf, certs, etc in ~/.rbenv/versions/*/openssl/ssl - OPENSSLDIR="${OPENSSLDIR:-$OPENSSL_PREFIX_PATH/ssl}" - - # Tell Ruby to use this openssl for its extension. - package_option ruby configure --with-openssl-dir="$OPENSSL_PREFIX_PATH" - - # Normally, we'd use ./config to automatically guess our platform. But - # that doesn't work for 64-bit Darwin: it picks 32-bit by default and - # asks you to run ./Configure by hand if you want 64-bit. So, here we are: - if [ "$(uname -m)" = "x86_64" ]; then - local platform="darwin64-x86_64-cc" - else - local platform="darwin-i386-cc" - fi - OPENSSL_CONFIGURE="${OPENSSL_CONFIGURE:-perl ./Configure $platform}" - - # Compile with zlib, no kerberos, and do a static build. - package_option openssl configure --openssldir="$OPENSSLDIR" zlib no-krb5 no-shared - - # Default MAKE_OPTS are -j 2 which can confuse the build. Thankfully, make - # gives precedence to the last -j option, so we can override that. - package_option openssl make -j 1 - - install_package "openssl-1.0.1c" "https://www.openssl.org/source/openssl-1.0.1c.tar.gz#ae412727c8c15b67880aef7bd2999b2e" standard install_cacerts_from_keychain - fi +has_broken_mac_openssl() { + [ "$(uname -s)" = "Darwin" ] && + [ "$(openssl version 2>/dev/null || true)" = "OpenSSL 0.9.8r 8 Feb 2011" ] } -# Extract root certs from the system keychain if .pem format and rehash. -build_package_install_cacerts_from_keychain() { +build_package_mac_openssl() { + # Install to a subdirectory since we don't want shims for bin/openssl. + OPENSSL_PREFIX_PATH="${PREFIX_PATH}/openssl" + + # Put openssl.conf, certs, etc in ~/.rbenv/versions/*/openssl/ssl + OPENSSLDIR="${OPENSSLDIR:-$OPENSSL_PREFIX_PATH/ssl}" + + # Tell Ruby to use this openssl for its extension. + package_option ruby configure --with-openssl-dir="$OPENSSL_PREFIX_PATH" + + # Normally, we'd use ./config to automatically guess our platform. But + # that doesn't work for 64-bit Darwin: it picks 32-bit by default and + # asks you to run ./Configure by hand if you want 64-bit. So, here we are: + if [ "$(uname -m)" = "x86_64" ]; then + local platform="darwin64-x86_64-cc" + else + local platform="darwin-i386-cc" + fi + OPENSSL_CONFIGURE="${OPENSSL_CONFIGURE:-perl ./Configure $platform}" + + # Compile with zlib, no kerberos, and do a static build. + package_option openssl configure --openssldir="$OPENSSLDIR" zlib no-krb5 no-shared + + # Default MAKE_OPTS are -j 2 which can confuse the build. Thankfully, make + # gives precedence to the last -j option, so we can override that. + package_option openssl make -j 1 + + build_package_standard "$@" + + # Extract root certs from the system keychain if .pem format and rehash. security find-certificate -a -p /Library/Keychains/System.keychain > "$OPENSSLDIR/cacert.pem" c_rehash "$OPENSSLDIR" >&4 2>&1 } diff --git a/share/ruby-build/2.0.0-dev b/share/ruby-build/2.0.0-dev index 8f08323f..36f70ec4 100644 --- a/share/ruby-build/2.0.0-dev +++ b/share/ruby-build/2.0.0-dev @@ -1 +1,5 @@ -install_git "ruby-2.0.0-dev" "https://github.com/ruby/ruby.git" "trunk" replace_osx_openssl autoconf standard verify_openssl +if has_broken_mac_openssl; then + install_package "openssl-1.0.1c" "https://www.openssl.org/source/openssl-1.0.1c.tar.gz#ae412727c8c15b67880aef7bd2999b2e" mac_openssl +fi + +install_git "ruby-2.0.0-dev" "https://github.com/ruby/ruby.git" "trunk" autoconf standard verify_openssl diff --git a/share/ruby-build/2.0.0-preview1 b/share/ruby-build/2.0.0-preview1 index a61863c3..c17ec980 100644 --- a/share/ruby-build/2.0.0-preview1 +++ b/share/ruby-build/2.0.0-preview1 @@ -1,2 +1,6 @@ +if has_broken_mac_openssl; then + install_package "openssl-1.0.1c" "https://www.openssl.org/source/openssl-1.0.1c.tar.gz#ae412727c8c15b67880aef7bd2999b2e" mac_openssl +fi + install_package "yaml-0.1.4" "http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz#36c852831d02cf90508c29852361d01b" -install_package "ruby-2.0.0-preview1" "http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-preview1.tar.gz#c7d73f3ddb6d25e7733626ddbad04158" replace_osx_openssl standard verify_openssl +install_package "ruby-2.0.0-preview1" "http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-preview1.tar.gz#c7d73f3ddb6d25e7733626ddbad04158" standard verify_openssl diff --git a/share/ruby-build/2.0.0-preview2 b/share/ruby-build/2.0.0-preview2 index 098c2d16..7b289da5 100644 --- a/share/ruby-build/2.0.0-preview2 +++ b/share/ruby-build/2.0.0-preview2 @@ -1 +1,5 @@ -install_package "ruby-2.0.0-preview2" "http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-preview2.tar.gz#eaddcbf63dc775708de45c7a81ab54b9" replace_osx_openssl standard verify_openssl +if has_broken_mac_openssl; then + install_package "openssl-1.0.1c" "https://www.openssl.org/source/openssl-1.0.1c.tar.gz#ae412727c8c15b67880aef7bd2999b2e" mac_openssl +fi + +install_package "ruby-2.0.0-preview2" "http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-preview2.tar.gz#eaddcbf63dc775708de45c7a81ab54b9" standard verify_openssl diff --git a/share/ruby-build/2.0.0-rc1 b/share/ruby-build/2.0.0-rc1 index 81f0b39d..b5686233 100644 --- a/share/ruby-build/2.0.0-rc1 +++ b/share/ruby-build/2.0.0-rc1 @@ -1 +1,5 @@ -install_package "ruby-2.0.0-rc1" "http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc1.tar.gz#7d587dde85e0edf7a2e4f6783e6c0e2e" replace_osx_openssl standard verify_openssl +if has_broken_mac_openssl; then + install_package "openssl-1.0.1c" "https://www.openssl.org/source/openssl-1.0.1c.tar.gz#ae412727c8c15b67880aef7bd2999b2e" mac_openssl +fi + +install_package "ruby-2.0.0-rc1" "http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-rc1.tar.gz#7d587dde85e0edf7a2e4f6783e6c0e2e" standard verify_openssl