From b945b7ae84c613a84b438b999b345e63fb9e9d79 Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Sun, 10 Jul 2022 12:37:44 +0200 Subject: [PATCH] Install openssl whenever the system version does not match * Make supported openssl versions explicit per definition. --- bin/ruby-build | 47 +++++++++++++++++++++++++++------ script/update-cruby | 2 +- script/update-rbx | 2 +- share/ruby-build/1.9.3-dev | 2 +- share/ruby-build/1.9.3-p0 | 2 +- share/ruby-build/1.9.3-p105 | 2 +- share/ruby-build/1.9.3-p125 | 2 +- share/ruby-build/1.9.3-p194 | 2 +- share/ruby-build/1.9.3-p286 | 2 +- share/ruby-build/1.9.3-p327 | 2 +- share/ruby-build/1.9.3-p362 | 2 +- share/ruby-build/1.9.3-p374 | 2 +- share/ruby-build/1.9.3-p385 | 2 +- share/ruby-build/1.9.3-p392 | 2 +- share/ruby-build/1.9.3-p426 | 2 +- share/ruby-build/1.9.3-p429 | 2 +- share/ruby-build/1.9.3-p448 | 2 +- share/ruby-build/1.9.3-p484 | 2 +- share/ruby-build/1.9.3-p545 | 2 +- share/ruby-build/1.9.3-p547 | 2 +- share/ruby-build/1.9.3-p550 | 2 +- share/ruby-build/1.9.3-p551 | 2 +- share/ruby-build/1.9.3-preview1 | 2 +- share/ruby-build/1.9.3-rc1 | 2 +- share/ruby-build/2.0.0-dev | 2 +- share/ruby-build/2.0.0-p0 | 2 +- share/ruby-build/2.0.0-p195 | 2 +- share/ruby-build/2.0.0-p247 | 2 +- share/ruby-build/2.0.0-p353 | 2 +- share/ruby-build/2.0.0-p451 | 2 +- share/ruby-build/2.0.0-p481 | 2 +- share/ruby-build/2.0.0-p576 | 2 +- share/ruby-build/2.0.0-p594 | 2 +- share/ruby-build/2.0.0-p598 | 2 +- share/ruby-build/2.0.0-p643 | 2 +- share/ruby-build/2.0.0-p645 | 2 +- share/ruby-build/2.0.0-p647 | 2 +- share/ruby-build/2.0.0-p648 | 2 +- share/ruby-build/2.0.0-preview1 | 2 +- share/ruby-build/2.0.0-preview2 | 2 +- share/ruby-build/2.0.0-rc1 | 2 +- share/ruby-build/2.0.0-rc2 | 2 +- share/ruby-build/2.1.0 | 2 +- share/ruby-build/2.1.0-dev | 2 +- share/ruby-build/2.1.0-preview1 | 2 +- share/ruby-build/2.1.0-preview2 | 2 +- share/ruby-build/2.1.0-rc1 | 2 +- share/ruby-build/2.1.1 | 2 +- share/ruby-build/2.1.10 | 2 +- share/ruby-build/2.1.2 | 2 +- share/ruby-build/2.1.3 | 2 +- share/ruby-build/2.1.4 | 2 +- share/ruby-build/2.1.5 | 2 +- share/ruby-build/2.1.6 | 2 +- share/ruby-build/2.1.7 | 2 +- share/ruby-build/2.1.8 | 2 +- share/ruby-build/2.1.9 | 2 +- share/ruby-build/2.2.0 | 2 +- share/ruby-build/2.2.0-dev | 2 +- share/ruby-build/2.2.0-preview1 | 2 +- share/ruby-build/2.2.0-preview2 | 2 +- share/ruby-build/2.2.0-rc1 | 2 +- share/ruby-build/2.2.1 | 2 +- share/ruby-build/2.2.10 | 2 +- share/ruby-build/2.2.2 | 2 +- share/ruby-build/2.2.3 | 2 +- share/ruby-build/2.2.4 | 2 +- share/ruby-build/2.2.5 | 2 +- share/ruby-build/2.2.6 | 2 +- share/ruby-build/2.2.7 | 2 +- share/ruby-build/2.2.8 | 2 +- share/ruby-build/2.2.9 | 2 +- share/ruby-build/2.3.0 | 2 +- share/ruby-build/2.3.0-dev | 2 +- share/ruby-build/2.3.0-preview1 | 2 +- share/ruby-build/2.3.0-preview2 | 2 +- share/ruby-build/2.3.1 | 2 +- share/ruby-build/2.3.2 | 2 +- share/ruby-build/2.3.3 | 2 +- share/ruby-build/2.3.4 | 2 +- share/ruby-build/2.3.5 | 2 +- share/ruby-build/2.3.6 | 2 +- share/ruby-build/2.3.7 | 2 +- share/ruby-build/2.3.8 | 2 +- share/ruby-build/2.4.0 | 2 +- share/ruby-build/2.4.0-dev | 2 +- share/ruby-build/2.4.0-preview1 | 2 +- share/ruby-build/2.4.0-preview2 | 2 +- share/ruby-build/2.4.0-preview3 | 2 +- share/ruby-build/2.4.0-rc1 | 2 +- share/ruby-build/2.4.1 | 2 +- share/ruby-build/2.4.10 | 2 +- share/ruby-build/2.4.2 | 2 +- share/ruby-build/2.4.3 | 2 +- share/ruby-build/2.4.4 | 2 +- share/ruby-build/2.4.5 | 2 +- share/ruby-build/2.4.6 | 2 +- share/ruby-build/2.4.7 | 2 +- share/ruby-build/2.4.8 | 2 +- share/ruby-build/2.4.9 | 2 +- share/ruby-build/2.5.0 | 2 +- share/ruby-build/2.5.0-dev | 2 +- share/ruby-build/2.5.0-preview1 | 2 +- share/ruby-build/2.5.0-rc1 | 2 +- share/ruby-build/2.5.1 | 2 +- share/ruby-build/2.5.2 | 2 +- share/ruby-build/2.5.3 | 2 +- share/ruby-build/2.5.4 | 2 +- share/ruby-build/2.5.5 | 2 +- share/ruby-build/2.5.6 | 2 +- share/ruby-build/2.5.7 | 2 +- share/ruby-build/2.5.8 | 2 +- share/ruby-build/2.5.9 | 2 +- share/ruby-build/2.6.0 | 2 +- share/ruby-build/2.6.0-dev | 2 +- share/ruby-build/2.6.0-preview1 | 2 +- share/ruby-build/2.6.0-preview2 | 2 +- share/ruby-build/2.6.0-preview3 | 2 +- share/ruby-build/2.6.0-rc1 | 2 +- share/ruby-build/2.6.0-rc2 | 2 +- share/ruby-build/2.6.1 | 2 +- share/ruby-build/2.6.10 | 2 +- share/ruby-build/2.6.2 | 2 +- share/ruby-build/2.6.3 | 2 +- share/ruby-build/2.6.4 | 2 +- share/ruby-build/2.6.5 | 2 +- share/ruby-build/2.6.6 | 2 +- share/ruby-build/2.6.7 | 2 +- share/ruby-build/2.6.8 | 2 +- share/ruby-build/2.6.9 | 2 +- share/ruby-build/2.7.0 | 2 +- share/ruby-build/2.7.0-dev | 2 +- share/ruby-build/2.7.0-preview1 | 2 +- share/ruby-build/2.7.0-preview2 | 2 +- share/ruby-build/2.7.0-preview3 | 2 +- share/ruby-build/2.7.0-rc1 | 2 +- share/ruby-build/2.7.0-rc2 | 2 +- share/ruby-build/2.7.1 | 2 +- share/ruby-build/2.7.2 | 2 +- share/ruby-build/2.7.3 | 2 +- share/ruby-build/2.7.4 | 2 +- share/ruby-build/2.7.5 | 2 +- share/ruby-build/2.7.6 | 2 +- share/ruby-build/3.0.0 | 2 +- share/ruby-build/3.0.0-dev | 2 +- share/ruby-build/3.0.0-preview1 | 2 +- share/ruby-build/3.0.0-preview2 | 2 +- share/ruby-build/3.0.0-rc1 | 2 +- share/ruby-build/3.0.1 | 2 +- share/ruby-build/3.0.2 | 2 +- share/ruby-build/3.0.3 | 2 +- share/ruby-build/3.0.4 | 2 +- share/ruby-build/3.1.0 | 2 +- share/ruby-build/3.1.0-dev | 2 +- share/ruby-build/3.1.0-preview1 | 2 +- share/ruby-build/3.1.1 | 2 +- share/ruby-build/3.1.2 | 2 +- share/ruby-build/3.2.0-dev | 2 +- share/ruby-build/3.2.0-preview1 | 2 +- share/ruby-build/rbx-2.10 | 2 +- share/ruby-build/rbx-2.11 | 2 +- share/ruby-build/rbx-2.5.8 | 2 +- share/ruby-build/rbx-2.6 | 2 +- share/ruby-build/rbx-2.7 | 2 +- share/ruby-build/rbx-2.71828182 | 2 +- share/ruby-build/rbx-2.8 | 2 +- share/ruby-build/rbx-2.9 | 2 +- share/ruby-build/rbx-3.0 | 2 +- share/ruby-build/rbx-3.1 | 2 +- share/ruby-build/rbx-3.10 | 2 +- share/ruby-build/rbx-3.100 | 2 +- share/ruby-build/rbx-3.101 | 2 +- share/ruby-build/rbx-3.102 | 2 +- share/ruby-build/rbx-3.103 | 2 +- share/ruby-build/rbx-3.104 | 2 +- share/ruby-build/rbx-3.105 | 2 +- share/ruby-build/rbx-3.106 | 2 +- share/ruby-build/rbx-3.107 | 2 +- share/ruby-build/rbx-3.11 | 2 +- share/ruby-build/rbx-3.12 | 2 +- share/ruby-build/rbx-3.13 | 2 +- share/ruby-build/rbx-3.14 | 2 +- share/ruby-build/rbx-3.15 | 2 +- share/ruby-build/rbx-3.16 | 2 +- share/ruby-build/rbx-3.17 | 2 +- share/ruby-build/rbx-3.18 | 2 +- share/ruby-build/rbx-3.19 | 2 +- share/ruby-build/rbx-3.2 | 2 +- share/ruby-build/rbx-3.20 | 2 +- share/ruby-build/rbx-3.21 | 2 +- share/ruby-build/rbx-3.22 | 2 +- share/ruby-build/rbx-3.23 | 2 +- share/ruby-build/rbx-3.24 | 2 +- share/ruby-build/rbx-3.25 | 2 +- share/ruby-build/rbx-3.26 | 2 +- share/ruby-build/rbx-3.27 | 2 +- share/ruby-build/rbx-3.28 | 2 +- share/ruby-build/rbx-3.29 | 2 +- share/ruby-build/rbx-3.3 | 2 +- share/ruby-build/rbx-3.30 | 2 +- share/ruby-build/rbx-3.31 | 2 +- share/ruby-build/rbx-3.32 | 2 +- share/ruby-build/rbx-3.33 | 2 +- share/ruby-build/rbx-3.34 | 2 +- share/ruby-build/rbx-3.35 | 2 +- share/ruby-build/rbx-3.36 | 2 +- share/ruby-build/rbx-3.37 | 2 +- share/ruby-build/rbx-3.38 | 2 +- share/ruby-build/rbx-3.39 | 2 +- share/ruby-build/rbx-3.4 | 2 +- share/ruby-build/rbx-3.40 | 2 +- share/ruby-build/rbx-3.41 | 2 +- share/ruby-build/rbx-3.42 | 2 +- share/ruby-build/rbx-3.43 | 2 +- share/ruby-build/rbx-3.44 | 2 +- share/ruby-build/rbx-3.45 | 2 +- share/ruby-build/rbx-3.46 | 2 +- share/ruby-build/rbx-3.47 | 2 +- share/ruby-build/rbx-3.48 | 2 +- share/ruby-build/rbx-3.49 | 2 +- share/ruby-build/rbx-3.5 | 2 +- share/ruby-build/rbx-3.50 | 2 +- share/ruby-build/rbx-3.51 | 2 +- share/ruby-build/rbx-3.52 | 2 +- share/ruby-build/rbx-3.53 | 2 +- share/ruby-build/rbx-3.54 | 2 +- share/ruby-build/rbx-3.55 | 2 +- share/ruby-build/rbx-3.56 | 2 +- share/ruby-build/rbx-3.57 | 2 +- share/ruby-build/rbx-3.58 | 2 +- share/ruby-build/rbx-3.59 | 2 +- share/ruby-build/rbx-3.6 | 2 +- share/ruby-build/rbx-3.60 | 2 +- share/ruby-build/rbx-3.61 | 2 +- share/ruby-build/rbx-3.62 | 2 +- share/ruby-build/rbx-3.63 | 2 +- share/ruby-build/rbx-3.64 | 2 +- share/ruby-build/rbx-3.65 | 2 +- share/ruby-build/rbx-3.66 | 2 +- share/ruby-build/rbx-3.67 | 2 +- share/ruby-build/rbx-3.68 | 2 +- share/ruby-build/rbx-3.69 | 2 +- share/ruby-build/rbx-3.7 | 2 +- share/ruby-build/rbx-3.70 | 2 +- share/ruby-build/rbx-3.71 | 2 +- share/ruby-build/rbx-3.72 | 2 +- share/ruby-build/rbx-3.73 | 2 +- share/ruby-build/rbx-3.74 | 2 +- share/ruby-build/rbx-3.75 | 2 +- share/ruby-build/rbx-3.76 | 2 +- share/ruby-build/rbx-3.77 | 2 +- share/ruby-build/rbx-3.78 | 2 +- share/ruby-build/rbx-3.79 | 2 +- share/ruby-build/rbx-3.8 | 2 +- share/ruby-build/rbx-3.80 | 2 +- share/ruby-build/rbx-3.81 | 2 +- share/ruby-build/rbx-3.82 | 2 +- share/ruby-build/rbx-3.83 | 2 +- share/ruby-build/rbx-3.84 | 2 +- share/ruby-build/rbx-3.85 | 2 +- share/ruby-build/rbx-3.86 | 2 +- share/ruby-build/rbx-3.87 | 2 +- share/ruby-build/rbx-3.88 | 2 +- share/ruby-build/rbx-3.89 | 2 +- share/ruby-build/rbx-3.9 | 2 +- share/ruby-build/rbx-3.90 | 2 +- share/ruby-build/rbx-3.91 | 2 +- share/ruby-build/rbx-3.92 | 2 +- share/ruby-build/rbx-3.93 | 2 +- share/ruby-build/rbx-3.94 | 2 +- share/ruby-build/rbx-3.95 | 2 +- share/ruby-build/rbx-3.96 | 2 +- share/ruby-build/rbx-3.97 | 2 +- share/ruby-build/rbx-3.98 | 2 +- share/ruby-build/rbx-3.99 | 2 +- share/ruby-build/rbx-4.0 | 2 +- share/ruby-build/rbx-4.1 | 2 +- share/ruby-build/rbx-4.10 | 2 +- share/ruby-build/rbx-4.11 | 2 +- share/ruby-build/rbx-4.12 | 2 +- share/ruby-build/rbx-4.13 | 2 +- share/ruby-build/rbx-4.14 | 2 +- share/ruby-build/rbx-4.15 | 2 +- share/ruby-build/rbx-4.16 | 2 +- share/ruby-build/rbx-4.18 | 2 +- share/ruby-build/rbx-4.19 | 2 +- share/ruby-build/rbx-4.2 | 2 +- share/ruby-build/rbx-4.20 | 2 +- share/ruby-build/rbx-4.3 | 2 +- share/ruby-build/rbx-4.4 | 2 +- share/ruby-build/rbx-4.5 | 2 +- share/ruby-build/rbx-4.6 | 2 +- share/ruby-build/rbx-4.7 | 2 +- share/ruby-build/rbx-4.8 | 2 +- share/ruby-build/rbx-4.9 | 2 +- share/ruby-build/rbx-5.0 | 2 +- 296 files changed, 334 insertions(+), 303 deletions(-) diff --git a/bin/ruby-build b/bin/ruby-build index 1a41fa3e..9ee77ac8 100755 --- a/bin/ruby-build +++ b/bin/ruby-build @@ -1086,17 +1086,48 @@ use_homebrew_readline() { has_broken_mac_openssl() { is_mac || return 1 local openssl_version="$(/usr/bin/openssl version 2>/dev/null || true)" - [[ $openssl_version = "OpenSSL 0.9.8"?* || $openssl_version = "LibreSSL"* ]] && - [[ "$RUBY_CONFIGURE_OPTS" != *--with-openssl-dir=* ]] + [[ $openssl_version = "OpenSSL 0.9.8"?* || $openssl_version = "LibreSSL"* ]] } -needs_openssl() { - [[ "$RUBY_CONFIGURE_OPTS" != *--with-openssl-dir=* ]] && - { +system_openssl_version() { + local version_text=$( openssl version 2>/dev/null || - printf '#include \nOPENSSL_VERSION_TEXT\n' | cc -xc -E - 2>/dev/null - } | grep -q "OpenSSL 3" || - has_broken_mac_openssl + printf '#include \nOPENSSL_VERSION_TEXT\n' | cc -xc -E - 2>/dev/null | tail -n 1) + if [[ $version_text == *"OpenSSL "* ]]; then + local version=${version_text#*OpenSSL } + version=${version%% *} + echo $version | sed 's/[^0-9]//g' | sed 's/^0*//' + else + echo "No system openssl version was found" >&2 + echo 000 + fi +} + +# openssl gem 1.1.1 +needs_openssl_096_102() { + [[ "$RUBY_CONFIGURE_OPTS" == *--with-openssl-dir=* ]] && return 1 + has_broken_mac_openssl && return 0 + + local version=$(system_openssl_version) + (( $version < 96 || $version >= 110 )) +} + +# openssl gem 2.2.1 +needs_openssl_101_111() { + [[ "$RUBY_CONFIGURE_OPTS" == *--with-openssl-dir=* ]] && return 1 + has_broken_mac_openssl && return 0 + + local version=$(system_openssl_version) + (( $version < 101 || $version >= 300 )) +} + +# openssl gem 3.0.0 +needs_openssl_102_300() { + [[ "$RUBY_CONFIGURE_OPTS" == *--with-openssl-dir=* ]] && return 1 + has_broken_mac_openssl && return 0 + + local version=$(system_openssl_version) + (( $version < 102 || $version >= 400 )) } use_homebrew_openssl() { diff --git a/script/update-cruby b/script/update-cruby index 17734446..34da265d 100755 --- a/script/update-cruby +++ b/script/update-cruby @@ -18,6 +18,6 @@ url="https://cache.ruby-lang.org/pub/ruby/${major_minor_version}/${basename}" sha256=$(sha256sum "$release_directory/$basename" | cut -d ' ' -f 1) cat > "$file" <