Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ruby-build for openSUSE:Factory checked in at 2023-10-12 23:41:58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ruby-build (Old) and /work/SRC/openSUSE:Factory/.ruby-build.new.1807 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ruby-build" Thu Oct 12 23:41:58 2023 rev:40 rq:1117190 version:20231012 Changes: -------- --- /work/SRC/openSUSE:Factory/ruby-build/ruby-build.changes 2023-09-20 13:33:33.508036432 +0200 +++ /work/SRC/openSUSE:Factory/.ruby-build.new.1807/ruby-build.changes 2023-10-12 23:43:21.451608912 +0200 @@ -1,0 +2,13 @@ +Thu Oct 12 11:25:00 UTC 2023 - Lukas Müller <lukas@localhost> + +- Update to version 20231012. + Changelog: https://github.com/rbenv/ruby-build/releases/tag/v20231012 + * Bump up OpenSSL 3.1.3 by @hsbt in #2257 + * Bump mislav/bump-homebrew-formula-action from 2 to 3 by @dependabot in #2259 + * Bump redhat-plumbers-in-action/differential-shellcheck from 4 to 5 by @dependabot in #2265 + * Set default MAKE=make on FreeBSD by @Freaky in #2263 + * Pass ruby configuration flags on the command line by @mislav in #2267 + * Enable shellcheck parsing of ruby-build source by @mislav in #2268 + * Use builds from ruby/truffleruby-dev-builder for truffleruby-dev on macos-arm64 by @eregon in #2269 + +------------------------------------------------------------------- Old: ---- ruby-build-20230919.tar.gz New: ---- ruby-build-20231012.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ruby-build.spec ++++++ --- /var/tmp/diff_new_pack.VPdh8G/_old 2023-10-12 23:43:22.555648876 +0200 +++ /var/tmp/diff_new_pack.VPdh8G/_new 2023-10-12 23:43:22.559649022 +0200 @@ -24,7 +24,7 @@ %endif Name: ruby-build -Version: 20230919 +Version: 20231012 Release: 0 BuildArch: noarch License: MIT ++++++ ruby-build-20230919.tar.gz -> ruby-build-20231012.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/.github/workflows/differential-shellcheck.yml new/ruby-build-20231012/.github/workflows/differential-shellcheck.yml --- old/ruby-build-20230919/.github/workflows/differential-shellcheck.yml 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/.github/workflows/differential-shellcheck.yml 2023-10-12 11:46:39.000000000 +0200 @@ -23,7 +23,7 @@ fetch-depth: 0 - name: Differential ShellCheck - uses: redhat-plumbers-in-action/differential-shellcheck@v4 + uses: redhat-plumbers-in-action/differential-shellcheck@v5 with: severity: warning token: ${{ secrets.GITHUB_TOKEN }} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/.github/workflows/release.yml new/ruby-build-20231012/.github/workflows/release.yml --- old/ruby-build-20230919/.github/workflows/release.yml 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/.github/workflows/release.yml 2023-10-12 11:46:39.000000000 +0200 @@ -11,7 +11,7 @@ name: Bump Homebrew formula runs-on: ubuntu-latest steps: - - uses: mislav/bump-homebrew-formula-action@v2 + - uses: mislav/bump-homebrew-formula-action@v3 if: "!contains(github.ref, '-')" # skip prereleases with: formula-name: ruby-build diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/bin/rbenv-install new/ruby-build-20231012/bin/rbenv-install --- old/ruby-build-20230919/bin/rbenv-install 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/bin/rbenv-install 2023-10-12 11:46:39.000000000 +0200 @@ -149,19 +149,20 @@ # after the installation process. declare -a before_hooks after_hooks +# shellcheck disable=SC2317 before_install() { local hook="$1" before_hooks["${#before_hooks[@]}"]="$hook" } +# shellcheck disable=SC2317 after_install() { local hook="$1" after_hooks["${#after_hooks[@]}"]="$hook" } -OLDIFS="$IFS" -IFS=$'\n' scripts=(`rbenv-hooks install`) -IFS="$OLDIFS" +IFS=$'\n' read -d '' -r -a scripts <<<"$(rbenv-hooks install)" || true +# shellcheck disable=SC1090 for script in "${scripts[@]}"; do source "$script"; done @@ -177,7 +178,7 @@ if [ -d "${PREFIX}/bin" ]; then if [ -z "$FORCE" ] && [ -z "$SKIP_EXISTING" ]; then echo "rbenv: $PREFIX already exists" >&2 - read -p "continue with installation? (y/N) " + read -rp "continue with installation? (y/N) " case "$REPLY" in y* | Y* ) ;; @@ -221,9 +222,12 @@ trap cleanup SIGINT +build_args=(${KEEP:+--keep} ${VERBOSE:+--verbose} ${HAS_PATCH:+--patch} "$DEFINITION" "$PREFIX") +[ ${#EXTRA_ARGUMENTS[@]} -eq 0 ] || build_args+=(-- "${EXTRA_ARGUMENTS[@]}") + # Invoke `ruby-build` and record the exit status in $STATUS. STATUS=0 -ruby-build $KEEP $VERBOSE $HAS_PATCH "$DEFINITION" "$PREFIX" || STATUS="$?" +ruby-build "${build_args[@]}" || STATUS="$?" # Display a more helpful message if the definition wasn't found. if [ "$STATUS" == "2" ]; then @@ -238,7 +242,7 @@ echo "See all available versions with \`rbenv install --list'." echo echo -n "If the version you need is missing, try upgrading ruby-build" - if [ "$here" != "${here#$(brew --prefix 2>/dev/null)}" ]; then + if [ "$here" != "${here#"$(brew --prefix 2>/dev/null)"}" ]; then printf ":\n\n" echo " brew upgrade ruby-build" elif [ -d "${here}/.git" ]; then diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/bin/ruby-build new/ruby-build-20231012/bin/ruby-build --- old/ruby-build-20230919/bin/ruby-build 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/bin/ruby-build 2023-10-12 11:46:39.000000000 +0200 @@ -14,7 +14,7 @@ # --version Show version of ruby-build # -RUBY_BUILD_VERSION="20230919" +RUBY_BUILD_VERSION="20231012" OLDIFS="$IFS" @@ -26,10 +26,15 @@ parse_options() { OPTIONS=() ARGUMENTS=() + EXTRA_ARGUMENTS=() local arg option index - for arg in "$@"; do - if [ "${arg:0:1}" = "-" ]; then + while [ $# -gt 0 ]; do + arg="$1" + if [ "$arg" == "--" ]; then + shift 1 + break + elif [ "${arg:0:1}" = "-" ]; then if [ "${arg:1:1}" = "-" ]; then OPTIONS[${#OPTIONS[*]}]="${arg:2}" else @@ -37,18 +42,22 @@ while option="${arg:$index:1}"; do [ -n "$option" ] || break OPTIONS[${#OPTIONS[*]}]="$option" - index=$(($index+1)) + index=$((index+1)) done fi + shift 1 else ARGUMENTS[${#ARGUMENTS[*]}]="$arg" + shift 1 fi done + + EXTRA_ARGUMENTS=("$@") } - if [ "$1" == "--$FUNCNAME" ]; then - declare -f "$FUNCNAME" - echo "$FUNCNAME \"\$1\";" + if [ "$1" == "--${FUNCNAME[0]}" ]; then + declare -f "${FUNCNAME[0]}" + echo "${FUNCNAME[0]} \"\$1\";" exit fi } @@ -60,21 +69,23 @@ } abs_dirname() { - local cwd="$(pwd)" local path="$1" + local cwd + cwd="$(pwd || true)" while [ -n "$path" ]; do - cd "${path%/*}" + cd "${path%/*}" || return 1 local name="${path##*/}" path="$(resolve_link "$name" || true)" done pwd - cd "$cwd" + cd "$cwd" || return 1 } capitalize() { - printf "%s" "$1" | tr a-z A-Z + # shellcheck disable=SC2018,SC2019 + printf "%s" "$1" | tr 'a-z' 'A-Z' } sanitize() { @@ -93,17 +104,20 @@ elif type -p sw_vers >/dev/null; then echo "$(sw_vers -productName) $(sw_vers -productVersion)" elif [ -r /etc/os-release ]; then + # shellcheck disable=SC1091 source /etc/os-release - echo "$NAME" $VERSION_ID + # shellcheck disable=SC2153 + echo "$NAME $VERSION_ID" else - local os="$(cat /etc/{centos,redhat,fedora,system}-release /etc/debian_version 2>/dev/null | head -1)" + local os + os="$(cat /etc/{centos,redhat,fedora,system}-release /etc/debian_version 2>/dev/null | head -1)" echo "${os:-$(uname -sr)}" fi } is_mac() { [ "$(uname -s)" = "Darwin" ] || return 1 - [ $# -eq 0 ] || [ "$(osx_version)" "$@" ] + [ $# -eq 0 ] || [ "$(osx_version)" -ge "$1" ] } is_freebsd() { @@ -119,10 +133,10 @@ # 10.9 -> 1009 # 10.10 -> 1010 osx_version() { - local -a ver - IFS=. ver=( `sw_vers -productVersion` ) + local ver + IFS=. read -d "" -r -a ver <<<"$(sw_vers -productVersion)" || true IFS="$OLDIFS" - echo $(( ${ver[0]}*100 + ${ver[1]} )) + echo $(( ver[0]*100 + ver[1] )) } build_failed() { @@ -134,7 +148,7 @@ if ! rmdir "${BUILD_PATH}" 2>/dev/null; then echo "Inspect or clean up the working tree at ${BUILD_PATH}" - if file_is_not_empty "$LOG_PATH"; then + if [ -n "$(head -1 "$LOG_PATH" 2>/dev/null)" ]; then colorize 33 "Results logged to ${LOG_PATH}" printf "\n\n" echo "Last 10 log lines:" @@ -145,18 +159,6 @@ exit 1 } -file_is_not_empty() { - local filename="$1" - local line_count="$(wc -l "$filename" 2>/dev/null || true)" - - if [ -n "$line_count" ]; then - words=( $line_count ) - [ "${words[0]}" -gt 0 ] - else - return 1 - fi -} - num_cpu_cores() { local num case "$(uname -s)" in @@ -193,7 +195,7 @@ local make_args=( "$package_name" ) local arg last_arg - for arg in "${@:$(( $package_type_nargs + 1 ))}"; do + for arg in "${@:$(( package_type_nargs + 1 ))}"; do if [ "$last_arg" = "--if" ]; then "$arg" || return 0 elif [ "$arg" != "--if" ]; then @@ -202,9 +204,11 @@ last_arg="$arg" done + # shellcheck disable=SC2164 pushd "$BUILD_PATH" >&4 "fetch_${package_type}" "${fetch_args[@]}" make_package "${make_args[@]}" + # shellcheck disable=SC2164 popd >&4 { echo "Installed ${package_name} to ${PREFIX_PATH}" @@ -216,10 +220,12 @@ local package_name="$1" shift +# shellcheck disable=SC2164 pushd "$package_name" >&4 before_install_package "$package_name" - build_package "$package_name" $* + build_package "$package_name" "$@" after_install_package "$package_name" + # shellcheck disable=SC2164 popd >&4 } @@ -229,7 +235,8 @@ output="$(shasum -a 256 -b)" || return 1 echo "${output% *}" elif type openssl &>/dev/null; then - local openssl="$(command -v "$(brew --prefix openssl 2>/dev/null || true)"/bin/openssl openssl | head -1)" + local openssl + openssl="$(command -v "$(brew --prefix openssl 2>/dev/null || true)"/bin/openssl openssl | head -1)" output="$("$openssl" dgst -sha256 2>/dev/null)" || return 1 echo "${output##* }" elif type sha256sum &>/dev/null; then @@ -260,7 +267,11 @@ local has_checksum_var="HAS_CHECKSUM_SUPPORT_${checksum_command}" if [ -z "${!has_checksum_var+defined}" ]; then - printf -v "$has_checksum_var" "$(echo test | "$checksum_command" >/dev/null; echo $?)" + if "$checksum_command" <<<"test" >/dev/null; then + printf -v "$has_checksum_var" 0 # success + else + printf -v "$has_checksum_var" 1 # error + fi fi return "${!has_checksum_var}" } @@ -268,7 +279,8 @@ verify_checksum() { local checksum_command local filename="$1" - local expected_checksum="$(echo "$2" | tr [A-Z] [a-z])" + local expected_checksum + expected_checksum="$(tr 'A-F' 'a-f' <<<"$2")" # If the specified filename doesn't exist, return success [ -e "$filename" ] || return 0 @@ -290,7 +302,8 @@ has_checksum_support "$checksum_command" || return 0 # If the computed checksum is empty, return failure - local computed_checksum=`echo "$($checksum_command < "$filename")" | tr [A-Z] [a-z]` + local computed_checksum + computed_checksum="$("$checksum_command" < "$filename" | tr 'A-F' 'a-f')" [ -n "$computed_checksum" ] || return 1 if [ "$expected_checksum" != "$computed_checksum" ]; then @@ -327,11 +340,13 @@ } http_head_aria2c() { + # shellcheck disable=SC2086 aria2c --dry-run --no-conf=true ${ARIA2_OPTS} "$1" >&4 2>&1 } http_get_aria2c() { local out="${2:-$(mktemp "out.XXXXXX")}" + # shellcheck disable=SC2086 if aria2c --allow-overwrite=true --no-conf=true -o "${out}" ${ARIA2_OPTS} "$1" >&4; then [ -n "$2" ] || cat "${out}" else @@ -340,18 +355,22 @@ } http_head_curl() { + # shellcheck disable=SC2086 curl -qsILf ${CURL_OPTS} "$1" >&4 2>&1 } http_get_curl() { + # shellcheck disable=SC2086 curl -q -o "${2:--}" -sSLf ${CURL_OPTS} "$1" } http_head_wget() { + # shellcheck disable=SC2086 wget -q --spider ${WGET_OPTS} "$1" >&4 2>&1 } http_get_wget() { + # shellcheck disable=SC2086 wget -nv ${WGET_OPTS} -O "${2:--}" "$1" } @@ -387,14 +406,16 @@ fi if ! reuse_existing_tarball "$package_filename" "$checksum"; then - local tarball_filename="$(basename "$package_url")" + local tarball_filename + tarball_filename="$(basename "$package_url")" echo "Downloading ${tarball_filename}..." >&2 + # shellcheck disable=SC2015 http head "$mirror_url" && download_tarball "$mirror_url" "$package_filename" "$checksum" || download_tarball "$package_url" "$package_filename" "$checksum" fi - { if tar $tar_args "$package_filename"; then + { if tar "$tar_args" "$package_filename"; then if [ ! -d "$package_name" ]; then extracted_dir="$(find_extracted_directory)" mv "$extracted_dir" "$package_name" @@ -471,21 +492,26 @@ if type git &>/dev/null; then if [ -n "$RUBY_BUILD_CACHE_PATH" ]; then + # shellcheck disable=SC2164 pushd "$RUBY_BUILD_CACHE_PATH" >&4 - local clone_name="$(sanitize "$git_url")" - if [ -e "${clone_name}" ]; then - { cd "${clone_name}" + local clone_name + clone_name="$(sanitize "$git_url")" + if [ -e "$clone_name" ]; then + { # shellcheck disable=SC2164 + cd "$clone_name" git fetch --force "$git_url" "+${git_ref}:${git_ref}" } >&4 2>&1 else git clone --bare --branch "$git_ref" "$git_url" "${clone_name}" >&4 2>&1 fi git_url="$RUBY_BUILD_CACHE_PATH/${clone_name}" + # shellcheck disable=SC2164 popd >&4 fi if [ -e "${package_name}" ]; then - ( cd "${package_name}" + ( # shellcheck disable=SC2164 + cd "${package_name}" git fetch --depth 1 origin "+${git_ref}" git checkout -q -B "$git_ref" "origin/${git_ref}" ) >&4 2>&1 @@ -520,9 +546,12 @@ package_option() { local package_name="$1" local command_name="$2" - local variable="$(capitalize "${package_name}_${command_name}")_OPTS_ARRAY" - local array="$variable[@]" + local variable + # e.g. RUBY_CONFIGURE_OPTS_ARRAY, OPENSSL_MAKE_OPTS_ARRAY + variable="$(capitalize "${package_name}_${command_name}")_OPTS_ARRAY" + local array="${variable}[@]" shift 2 + # shellcheck disable=SC2034 local value=( "${!array}" "$@" ) eval "$variable=( \"\${value[@]}\" )" } @@ -557,7 +586,8 @@ fi # Support YAML_CONFIGURE_OPTS, RUBY_CONFIGURE_OPTS, etc. - local package_var_name="$(capitalize "${package_name%%-*}")" + local package_var_name + package_var_name="$(capitalize "${package_name%%-*}")" local PACKAGE_CONFIGURE="${package_var_name}_CONFIGURE" local PACKAGE_PREFIX_PATH="${package_var_name}_PREFIX_PATH" local PACKAGE_CONFIGURE_OPTS="${package_var_name}_CONFIGURE_OPTS" @@ -590,24 +620,28 @@ ( if [ "${CFLAGS+defined}" ] || [ "${!PACKAGE_CFLAGS+defined}" ]; then export CFLAGS="$CFLAGS ${!PACKAGE_CFLAGS}" fi - if [ -z "$CC" ] && is_mac -ge 1010; then + if [ -z "$CC" ] && is_mac 1010; then export CC=clang fi + # shellcheck disable=SC2086,SC2153 ${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \ "${!PACKAGE_CONFIGURE_OPTS_ARRAY}" $CONFIGURE_OPTS ${!PACKAGE_CONFIGURE_OPTS} || return 1 ) >&4 2>&1 + # shellcheck disable=SC2086 { "$MAKE" "${!PACKAGE_MAKE_OPTS_ARRAY}" $MAKE_OPTS ${!PACKAGE_MAKE_OPTS} } >&4 2>&1 } build_package_standard_install() { local package_name="$1" - local package_var_name="$(capitalize "${package_name%%-*}")" + local package_var_name + package_var_name="$(capitalize "${package_name%%-*}")" local PACKAGE_MAKE_INSTALL_OPTS="${package_var_name}_MAKE_INSTALL_OPTS" local PACKAGE_MAKE_INSTALL_OPTS_ARRAY="${package_var_name}_MAKE_INSTALL_OPTS_ARRAY[@]" + # shellcheck disable=SC2086 { "$MAKE" ${MAKE_INSTALL_TARGET:-install} "${!PACKAGE_MAKE_INSTALL_OPTS_ARRAY}" $MAKE_INSTALL_OPTS ${!PACKAGE_MAKE_INSTALL_OPTS} } >&4 2>&1 } @@ -641,18 +675,19 @@ build_package_ree_installer() { build_package_auto_tcltk - local options="" - is_mac && options="--no-tcmalloc" + local options=() + is_mac && options+=(--no-tcmalloc) local option - for option in ${RUBY_CONFIGURE_OPTS_ARRAY[@]} $RUBY_CONFIGURE_OPTS; do - options="$options -c $option" + for option in "${RUBY_CONFIGURE_OPTS_ARRAY[@]}" $RUBY_CONFIGURE_OPTS; do + options+=(-c "$option") done # Work around install_useful_libraries crash with --dont-install-useful-gems mkdir -p "$PREFIX_PATH/lib/ruby/gems/1.8/gems" - { ./installer --auto "$PREFIX_PATH" --dont-install-useful-gems $options $CONFIGURE_OPTS + # shellcheck disable=SC2086 + { ./installer --auto "$PREFIX_PATH" --dont-install-useful-gems "${options[@]}" $CONFIGURE_OPTS } >&4 2>&1 } @@ -677,6 +712,7 @@ fi done + # shellcheck disable=SC2086 RUBYOPT="-rrubygems $RUBYOPT" ./configure --prefix="$PREFIX_PATH" "${configure_opts[@]}" $RUBY_CONFIGURE_OPTS rake install fix_rbx_gem_binstubs "$PREFIX_PATH" @@ -705,8 +741,10 @@ build_package_maglev() { build_package_copy - { cd "${PREFIX_PATH}" + { # shellcheck disable=SC2164 + cd "${PREFIX_PATH}" ./install.sh + # shellcheck disable=SC2164 cd "${PREFIX_PATH}/bin" echo "Creating symlink for ruby*" ln -fs maglev-ruby ruby @@ -719,7 +757,8 @@ build_package_topaz() { build_package_copy - { cd "${PREFIX_PATH}/bin" + { # shellcheck disable=SC2164 + cd "${PREFIX_PATH}/bin" echo "Creating symlink for ruby*" ln -fs topaz ruby } >&4 2>&1 @@ -737,6 +776,7 @@ build_package_jruby() { build_package_copy + # shellcheck disable=SC2164 cd "${PREFIX_PATH}/bin" ln -fs jruby ruby chmod +x ruby @@ -746,6 +786,7 @@ } install_jruby_launcher() { + # shellcheck disable=SC2164 cd "${PREFIX_PATH}/bin" # workaround for https://github.com/jruby/jruby/issues/7799 local jruby_version @@ -769,6 +810,7 @@ clean_prefix_path_truffleruby || return $? build_package_copy + # shellcheck disable=SC2164 cd "${PREFIX_PATH}" "${PREFIX_PATH}/lib/truffle/post_install_hook.sh" } @@ -777,6 +819,7 @@ clean_prefix_path_truffleruby || return $? build_package_copy_to "${PREFIX_PATH}/graalvm" + # shellcheck disable=SC2164 cd "${PREFIX_PATH}/graalvm" if is_mac; then cd Contents/Home || return $? @@ -792,6 +835,7 @@ # Make gu available in PATH (useful to install other languages) ln -s "$PWD/bin/gu" "$ruby_home/bin/gu" + # shellcheck disable=SC2164 cd "${PREFIX_PATH}" ln -s "${ruby_home#"$PREFIX_PATH/"}/bin" . || return $? @@ -802,6 +846,7 @@ build_package_copy mkdir -p "$PREFIX_PATH/bin" + # shellcheck disable=SC2164 cd "${PREFIX_PATH}/bin" ln -fs ../artichoke ruby ln -fs ../airb irb @@ -810,6 +855,7 @@ } remove_windows_files() { + # shellcheck disable=SC2164 cd "$PREFIX_PATH" rm -f bin/*.exe bin/*.dll bin/*.bat bin/jruby.sh } @@ -817,7 +863,7 @@ clean_prefix_path_truffleruby() { if [ -d "$PREFIX_PATH" ] && [ ! -e "$PREFIX_PATH/bin/truffleruby" ] && - [ ! -z "$(ls -A $PREFIX_PATH)" ]; then + [ -n "$(ls -A "$PREFIX_PATH")" ]; then echo echo "ERROR: cannot install TruffleRuby to $PREFIX_PATH, which does not look like a valid TruffleRuby prefix" >&2 echo "TruffleRuby only supports being installed to a not existing directory, an empty directory, or replacing an existing TruffleRuby installation" @@ -876,10 +922,12 @@ require_java() { local required="$1" - local java_version="$(java -version 2>&1)" - local version_string="$(grep 'java version' <<<"$java_version" | head -1 | grep -o '[0-9.]\+' | head -1 || true)" + local java_version version_string + java_version="$(java -version 2>&1 || true)" + version_string="$(grep 'java version' <<<"$java_version" | head -1 | grep -o '[0-9.]\+' | head -1 || true)" [ -n "$version_string" ] || version_string="$(grep 'openjdk version' <<<"$java_version" | head -1 | grep -o '[0-9.]\+' | head -1 || true)" IFS="." + # shellcheck disable=SC2206 local nums=($version_string) IFS="$OLDIFS" local found_version="${nums[0]}" @@ -902,6 +950,7 @@ } # Kept for backward compatibility with 3rd-party Rubinius definitions. +# shellcheck disable=SC2034 require_llvm() { local stub=1 } @@ -912,7 +961,8 @@ } use_homebrew_yaml() { - local libdir="$(brew --prefix libyaml 2>/dev/null || true)" + local libdir + libdir="$(brew --prefix libyaml 2>/dev/null || true)" if [ -d "$libdir" ]; then echo "ruby-build: using libyaml from homebrew" package_option ruby configure --with-libyaml-dir="$libdir" @@ -923,7 +973,8 @@ use_freebsd_yaml() { if is_freebsd; then - local libyaml_prefix="$(freebsd_package_prefix libyaml)" + local libyaml_prefix + libyaml_prefix="$(freebsd_package_prefix libyaml)" if [ -n "$libyaml_prefix" ]; then package_option ruby configure --with-libyaml-dir="$libyaml_prefix" fi @@ -931,7 +982,8 @@ } use_homebrew_gmp() { - local libdir="$(brew --prefix gmp 2>/dev/null || true)" + local libdir + libdir="$(brew --prefix gmp 2>/dev/null || true)" if [ -d "$libdir" ]; then echo "ruby-build: using gmp from homebrew" package_option ruby configure --with-gmp-dir="$libdir" @@ -942,8 +994,9 @@ use_freebsd_readline() { if is_freebsd; then - local readline_prefix="$(freebsd_package_prefix readline)" - local libedit_prefix="$(freebsd_package_prefix libedit)" + local readline_prefix libedit_prefix + readline_prefix="$(freebsd_package_prefix readline)" + libedit_prefix="$(freebsd_package_prefix libedit)" if [ -n "$readline_prefix" ]; then package_option ruby configure --with-readline-dir="$readline_prefix" elif [ -n "$libedit_prefix" ]; then @@ -954,7 +1007,8 @@ } use_homebrew_readline() { - local libdir="$(brew --prefix readline 2>/dev/null || true)" + local libdir + libdir="$(brew --prefix readline 2>/dev/null || true)" if [ -d "$libdir" ]; then echo "ruby-build: using readline from homebrew" package_option ruby configure --with-readline-dir="$libdir" @@ -965,7 +1019,8 @@ use_freebsd_libffi() { if is_freebsd; then - local libffi_prefix="$(freebsd_package_prefix libffi)" + local libffi_prefix + libffi_prefix="$(freebsd_package_prefix libffi)" if [ -n "$libffi_prefix" ]; then package_option ruby configure --with-libffi-dir="$libffi_prefix" fi @@ -974,16 +1029,18 @@ has_broken_mac_openssl() { is_mac || return 1 - local openssl_version="$(/usr/bin/openssl version 2>/dev/null || true)" + local openssl_version + openssl_version="$(/usr/bin/openssl version 2>/dev/null || true)" [[ $openssl_version = "OpenSSL 0.9.8"?* || $openssl_version = "LibreSSL"* ]] } system_openssl_version() { - local version_text=$(printf '#include <openssl/opensslv.h>\nOPENSSL_VERSION_TEXT\n' | cc -xc -E - 2>/dev/null) + local version_text + version_text=$(printf '#include <openssl/opensslv.h>\nOPENSSL_VERSION_TEXT\n' | cc -xc -E - 2>/dev/null || true) if [[ $version_text == *"OpenSSL "* ]]; then local version=${version_text#*OpenSSL } - version=${version%% *} - echo $version | sed 's/[^0-9]//g' | sed 's/^0*//' + # shellcheck disable=SC2001 + sed 's/[^0-9]//g' <<<"${version%% *}" | sed 's/^0*//' else echo "No system openssl version was found, ensure openssl headers are installed (https://github.com/rbenv/ruby-build/wiki#suggested-build-environment)" >&2 echo 000 @@ -995,8 +1052,9 @@ [[ "$RUBY_CONFIGURE_OPTS" == *--with-openssl-dir=* ]] && return 1 has_broken_mac_openssl && return 0 - local version=$(system_openssl_version) - (( $version < 96 || $version >= 110 )) + local version + version="$(system_openssl_version)" + (( version < 96 || version >= 110 )) } # openssl gem 2.2.1 @@ -1004,8 +1062,9 @@ [[ "$RUBY_CONFIGURE_OPTS" == *--with-openssl-dir=* ]] && return 1 has_broken_mac_openssl && return 0 - local version=$(system_openssl_version) - (( $version < 101 || $version >= 300 )) + local version + version="$(system_openssl_version)" + (( version < 101 || version >= 300 )) } # openssl gem 3.0.0 @@ -1013,12 +1072,14 @@ [[ "$RUBY_CONFIGURE_OPTS" == *--with-openssl-dir=* ]] && return 1 has_broken_mac_openssl && return 0 - local version=$(system_openssl_version) - (( $version < 102 || $version >= 400 )) + local version + version="$(system_openssl_version)" + (( version < 102 || version >= 400 )) } use_homebrew_openssl() { - local ssldir="$(brew --prefix openssl@1.1 2>/dev/null || true)" + local ssldir + ssldir="$(brew --prefix openssl@1.1 2>/dev/null || true)" if [ -d "$ssldir" ]; then echo "ruby-build: using openssl@1.1 from homebrew" package_option ruby configure --with-openssl-dir="$ssldir" @@ -1094,6 +1155,7 @@ # Post-install check that the openssl extension was built. build_package_verify_openssl() { + # shellcheck disable=SC2016 "$RUBY_BIN" -e ' manager = ARGV[0] packages = { @@ -1130,16 +1192,18 @@ # Ensure that directories listed in LDFLAGS exist build_package_ldflags_dirs() { - local arg dir - set - $LDFLAGS - while [ $# -gt 0 ]; do + local ldflags + read -d '' -r -a ldflags <<<"$LDFLAGS" || true + local index=0 + local dir + while [ "$index" -lt "${#ldflags[@]}" ]; do dir="" - case "$1" in - -L ) dir="$2" ;; - -L* ) dir="${1#-L}" ;; + case "${ldflags[index]}" in + -L ) dir="${ldflags[index+1]}" ;; + -L* ) dir="${ldflags[index]#-L}" ;; esac [ -z "$dir" ] || mkdir -p "$dir" - shift 1 + index=$((index+1)) done } @@ -1259,9 +1323,11 @@ unset HAS_PATCH unset IPV4 unset IPV6 +unset EARLY_EXIT RUBY_BUILD_INSTALL_PREFIX="$(abs_dirname "$0")/.." +# shellcheck disable=SC2206 IFS=: RUBY_BUILD_DEFINITIONS=($RUBY_BUILD_DEFINITIONS ${RUBY_BUILD_ROOT:-$RUBY_BUILD_INSTALL_PREFIX}/share/ruby-build) IFS="$OLDIFS" @@ -1270,17 +1336,13 @@ for option in "${OPTIONS[@]}"; do case "$option" in "h" | "help" ) - version - echo - usage 0 + EARLY_EXIT=help ;; "definitions" ) - list_definitions - exit 0 + EARLY_EXIT=list_definitions ;; "l" | "list") - list_maintained_versions - exit 0 + EARLY_EXIT=list_maintained_versions ;; "k" | "keep" ) KEEP_BUILD_PATH=true @@ -1298,18 +1360,61 @@ IPV6=true ;; "version" ) - version - exit 0 + EARLY_EXIT=version + ;; + * ) + printf "ruby-build: invalid flag '%s'\n" "$option" >&2 + EARLY_EXIT=usage_error ;; esac done -[ "${#ARGUMENTS[@]}" -eq 2 ] || usage 1 >&2 - DEFINITION_PATH="${ARGUMENTS[0]}" -if [ -z "$DEFINITION_PATH" ]; then +PREFIX_PATH="${ARGUMENTS[1]}" + +if [ -z "$EARLY_EXIT" ] && [ -z "$DEFINITION_PATH" ]; then + echo "ruby-build: missing definition argument" >&2 + EARLY_EXIT=usage_error +fi + +if [ -z "$EARLY_EXIT" ] && [ -z "$PREFIX_PATH" ]; then + echo "ruby-build: missing prefix argument" >&2 + EARLY_EXIT=usage_error +fi + +if [ "${#ARGUMENTS[@]}" -gt 2 ]; then + echo "ruby-build: expected at most 2 arguments, got [${ARGUMENTS[*]}]" >&2 + EARLY_EXIT=usage_error +fi + +if [ "${#EXTRA_ARGUMENTS[@]}" -gt 0 ]; then + RUBY_CONFIGURE_OPTS_ARRAY=("${EXTRA_ARGUMENTS[@]}") +fi + +case "$EARLY_EXIT" in +help ) + version + echo + usage 0 + ;; +version | list_definitions | list_maintained_versions ) + "$EARLY_EXIT" + exit 0 + ;; +usage_error ) + echo >&2 usage 1 >&2 -elif [ ! -f "$DEFINITION_PATH" ]; then + ;; +'' ) + ;; +* ) + echo "unimplemented EARLY_EXIT: $EARLY_EXIT" >&2 + exit 1 + ;; +esac + +# expand the <definition> argument to full path of the definition file +if [ ! -f "$DEFINITION_PATH" ]; then for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do if [ -f "${DEFINITION_DIR}/${DEFINITION_PATH}" ]; then DEFINITION_PATH="${DEFINITION_DIR}/${DEFINITION_PATH}" @@ -1323,10 +1428,8 @@ fi fi -PREFIX_PATH="${ARGUMENTS[1]}" -if [ -z "$PREFIX_PATH" ]; then - usage 1 >&2 -elif [ "${PREFIX_PATH#/}" = "$PREFIX_PATH" ]; then +# normalize the <prefix> argument +if [ "${PREFIX_PATH#/}" = "$PREFIX_PATH" ]; then PREFIX_PATH="${PWD}/${PREFIX_PATH}" fi @@ -1357,12 +1460,8 @@ fi if [ -z "$MAKE" ]; then - if is_freebsd; then - # Workaround for Ruby bug 16331: https://bugs.ruby-lang.org/issues/16331 - # Due to this bug, build will fail with FreeBSD's make after #1368 - # The bug is already fixed in upstream but GNU make is still required - # when building older releases of Ruby. Use GNU make rather than switching - # depending of Ruby version. + if is_freebsd && [[ ${ARGUMENTS[0]} == jruby-* ]]; then + # jruby-launcher requires gmake: https://github.com/ruby/ruby/pull/8591 export MAKE="gmake" else export MAKE="make" @@ -1375,7 +1474,7 @@ unset RUBY_BUILD_CACHE_PATH fi -if [ -z "$RUBY_BUILD_MIRROR_URL" -a -z "$RUBY_BUILD_MIRROR_PACKAGE_URL" ]; then +if [ -z "$RUBY_BUILD_MIRROR_URL" ] && [ -z "$RUBY_BUILD_MIRROR_PACKAGE_URL" ]; then RUBY_BUILD_MIRROR_URL="https://dqw8nmjcqpjn7.cloudfront.net" RUBY_BUILD_DEFAULT_MIRROR=1 else @@ -1394,7 +1493,6 @@ SEED="$(date "+%Y%m%d%H%M%S").$$" LOG_PATH="${TMP}/ruby-build.${SEED}.log" RUBY_BIN="${PREFIX_PATH}/bin/ruby" -CWD="$(pwd)" if [ -z "$RUBY_BUILD_BUILD_PATH" ]; then BUILD_PATH="$(mktemp -d "${LOG_PATH%.log}.XXXXXX")" @@ -1406,7 +1504,7 @@ if [ -n "$VERBOSE" ]; then tail -f "$LOG_PATH" & TAIL_PID=$! - trap "kill $TAIL_PID" SIGINT SIGTERM EXIT + trap 'kill $TAIL_PID' SIGINT SIGTERM EXIT else if [ -z "$RUBY_BUILD_TESTING" ]; then echo "To follow progress, use 'tail -f $LOG_PATH' or pass --verbose" >&2 @@ -1421,6 +1519,7 @@ trap build_failed ERR mkdir -p "$BUILD_PATH" +# shellcheck disable=SC1090 source "$DEFINITION_PATH" [ -z "${KEEP_BUILD_PATH}" ] && rm -fr "$BUILD_PATH" trap - ERR diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.1.0 new/ruby-build-20231012/share/ruby-build/3.1.0 --- old/ruby-build-20230919/share/ruby-build/3.1.0 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.1.0 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.1.0" "https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.0.tar.gz#50a0504c6edcb4d61ce6b8cfdbddaa95707195fab0ecd7b5e92654b2a9412854" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.1.0-dev new/ruby-build-20231012/share/ruby-build/3.1.0-dev --- old/ruby-build-20230919/share/ruby-build/3.1.0-dev 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.1.0-dev 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_git "ruby-3.1.0-dev" "https://github.com/ruby/ruby.git" "ruby_3_1" ldflags_dirs autoconf standard_build standard_install_with_bundled_gems verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.1.0-preview1 new/ruby-build-20231012/share/ruby-build/3.1.0-preview1 --- old/ruby-build-20230919/share/ruby-build/3.1.0-preview1 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.1.0-preview1 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.1.0-preview1" "https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.0-preview1.tar.gz#540f49f4c3aceb1a5d7fb0b8522a04dd96bc4a22f9660a6b59629886c8e010d4" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.1.1 new/ruby-build-20231012/share/ruby-build/3.1.1 --- old/ruby-build-20230919/share/ruby-build/3.1.1 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.1.1 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.1.1" "https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.1.tar.gz#fe6e4782de97443978ddba8ba4be38d222aa24dc3e3f02a6a8e7701c0eeb619d" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.1.2 new/ruby-build-20231012/share/ruby-build/3.1.2 --- old/ruby-build-20230919/share/ruby-build/3.1.2 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.1.2 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.1.2" "https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.2.tar.gz#61843112389f02b735428b53bb64cf988ad9fb81858b8248e22e57336f24a83e" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.1.3 new/ruby-build-20231012/share/ruby-build/3.1.3 --- old/ruby-build-20230919/share/ruby-build/3.1.3 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.1.3 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.1.3" "https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.gz#5ea498a35f4cd15875200a52dde42b6eb179e1264e17d78732c3a57cd1c6ab9e" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.1.4 new/ruby-build-20231012/share/ruby-build/3.1.4 --- old/ruby-build-20230919/share/ruby-build/3.1.4 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.1.4 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.1.4" "https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.4.tar.gz#a3d55879a0dfab1d7141fdf10d22a07dbf8e5cdc4415da1bde06127d5cc3c7b6" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.0 new/ruby-build-20231012/share/ruby-build/3.2.0 --- old/ruby-build-20230919/share/ruby-build/3.2.0 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.0 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.2.0" "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.0.tar.gz#daaa78e1360b2783f98deeceb677ad900f3a36c0ffa6e2b6b19090be77abc272" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.0-dev new/ruby-build-20231012/share/ruby-build/3.2.0-dev --- old/ruby-build-20230919/share/ruby-build/3.2.0-dev 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.0-dev 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_git "ruby-3.2.0-dev" "https://github.com/ruby/ruby.git" "ruby_3_2" ldflags_dirs autoconf standard_build standard_install_with_bundled_gems verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.0-preview1 new/ruby-build-20231012/share/ruby-build/3.2.0-preview1 --- old/ruby-build-20230919/share/ruby-build/3.2.0-preview1 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.0-preview1 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.2.0-preview1" "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.0-preview1.tar.gz#6946b966c561d5dfc2a662b88e8211be30bfffc7bb2f37ce3cc62d6c46a0b818" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.0-preview2 new/ruby-build-20231012/share/ruby-build/3.2.0-preview2 --- old/ruby-build-20230919/share/ruby-build/3.2.0-preview2 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.0-preview2 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.2.0-preview2" "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.0-preview2.tar.gz#8a78fd7a221b86032f96f25c1d852954c94d193b9d21388a9b434e160b7ed891" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.0-preview3 new/ruby-build-20231012/share/ruby-build/3.2.0-preview3 --- old/ruby-build-20230919/share/ruby-build/3.2.0-preview3 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.0-preview3 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.2.0-preview3" "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.0-preview3.tar.gz#c041d1488e62730d3a10dbe7cf7a3b3e4268dc867ec20ec991e7d16146640487" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.0-rc1 new/ruby-build-20231012/share/ruby-build/3.2.0-rc1 --- old/ruby-build-20230919/share/ruby-build/3.2.0-rc1 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.0-rc1 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.2.0-rc1" "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.0-rc1.tar.gz#3bb9760c1ac1b66416aaa4899809f6ccd010e57038eaaeca19a383fd56275dac" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.1 new/ruby-build-20231012/share/ruby-build/3.2.1 --- old/ruby-build-20230919/share/ruby-build/3.2.1 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.1 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.2.1" "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.1.tar.gz#13d67901660ee3217dbd9dd56059346bd4212ce64a69c306ef52df64935f8dbd" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.2.2 new/ruby-build-20231012/share/ruby-build/3.2.2 --- old/ruby-build-20230919/share/ruby-build/3.2.2 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.2.2 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.2.2" "https://cache.ruby-lang.org/pub/ruby/3.2/ruby-3.2.2.tar.gz#96c57558871a6748de5bc9f274e93f4b5aad06cd8f37befa0e8d94e7b8a423bc" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.3.0-dev new/ruby-build-20231012/share/ruby-build/3.3.0-dev --- old/ruby-build-20230919/share/ruby-build/3.3.0-dev 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.3.0-dev 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_git "ruby-master" "https://github.com/ruby/ruby.git" "master" ldflags_dirs autoconf standard_build standard_install_with_bundled_gems verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.3.0-preview1 new/ruby-build-20231012/share/ruby-build/3.3.0-preview1 --- old/ruby-build-20230919/share/ruby-build/3.3.0-preview1 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.3.0-preview1 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.3.0-preview1" "https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview1.tar.gz#c3454a911779b8d747ab0ea87041030d002d533edacb2485fe558b7084da25ed" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/3.3.0-preview2 new/ruby-build-20231012/share/ruby-build/3.3.0-preview2 --- old/ruby-build-20230919/share/ruby-build/3.3.0-preview2 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/3.3.0-preview2 2023-10-12 11:46:39.000000000 +0200 @@ -1,2 +1,2 @@ -install_package "openssl-3.1.2" "https://www.openssl.org/source/openssl-3.1.2.tar.gz#a0ce69b8b97ea6a35b96875235aa453b966ba3cba8af2de23657d8b6767d6539" openssl --if needs_openssl_102_300 +install_package "openssl-3.1.3" "https://www.openssl.org/source/openssl-3.1.3.tar.gz#f0316a2ebd89e7f2352976445458689f80302093788c466692fb2a188b2eacf6" openssl --if needs_openssl_102_300 install_package "ruby-3.3.0-preview2" "https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.0-preview2.tar.gz#30ce8b0fe11b37b5ac088f5a5765744b935eac45bb89a9e381731533144f5991" ldflags_dirs enable_shared standard verify_openssl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/share/ruby-build/truffleruby-dev new/ruby-build-20231012/share/ruby-build/truffleruby-dev --- old/ruby-build-20230919/share/ruby-build/truffleruby-dev 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/share/ruby-build/truffleruby-dev 2023-10-12 11:46:39.000000000 +0200 @@ -12,7 +12,7 @@ ;; Darwin-arm64) use_homebrew_openssl - install_package "truffleruby-head" "https://github.com/graalvm/graalvm-ce-dev-builds/releases/latest/download/truffleruby-community-dev-macos-aarch64.tar.gz" truffleruby + install_package "truffleruby-head" "https://github.com/ruby/truffleruby-dev-builder/releases/latest/download/truffleruby-head-macos-13-arm64.tar.gz" truffleruby ;; *) colorize 1 "Unsupported platform: $platform" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/test/build.bats new/ruby-build-20231012/test/build.bats --- old/ruby-build-20230919/test/build.bats 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/test/build.bats 2023-10-12 11:46:39.000000000 +0200 @@ -35,7 +35,8 @@ executable "$configure" <<OUT #!$BASH -echo "$name: \$@" \${RUBYOPT:+RUBYOPT=\$RUBYOPT} >> build.log +IFS=, +echo "$name: [\$*]" \${RUBYOPT:+RUBYOPT=\$RUBYOPT} >> build.log OUT for file; do @@ -48,8 +49,8 @@ stub_make_install() { stub "$MAKE" \ - " : echo \"$MAKE \$@\" >> build.log" \ - "install : echo \"$MAKE \$@\" >> build.log && cat build.log >> '$INSTALL_ROOT/build.log'" + " : echo \"$MAKE \$(inspect_args \"\$@\")\" >> build.log" \ + "install : echo \"$MAKE \$(inspect_args \"\$@\")\" >> build.log && cat build.log >> '$INSTALL_ROOT/build.log'" } assert_build_log() { @@ -74,10 +75,10 @@ unstub make assert_build_log <<OUT -yaml-0.1.6: --prefix=$INSTALL_ROOT +yaml-0.1.6: [--prefix=$INSTALL_ROOT] make -j 2 make install -ruby-2.0.0: --prefix=$INSTALL_ROOT +ruby-2.0.0: [--prefix=$INSTALL_ROOT] make -j 2 make install OUT @@ -106,11 +107,11 @@ unstub patch assert_build_log <<OUT -yaml-0.1.6: --prefix=$INSTALL_ROOT +yaml-0.1.6: [--prefix=$INSTALL_ROOT] make -j 2 make install patch -p0 --force -i $TMP/ruby-patch.XXX -ruby-2.0.0: --prefix=$INSTALL_ROOT +ruby-2.0.0: [--prefix=$INSTALL_ROOT] make -j 2 make install OUT @@ -139,11 +140,11 @@ unstub patch assert_build_log <<OUT -yaml-0.1.6: --prefix=$INSTALL_ROOT +yaml-0.1.6: [--prefix=$INSTALL_ROOT] make -j 2 make install patch -p1 --force -i $TMP/ruby-patch.XXX -ruby-2.0.0: --prefix=$INSTALL_ROOT +ruby-2.0.0: [--prefix=$INSTALL_ROOT] make -j 2 make install OUT @@ -173,11 +174,11 @@ unstub patch assert_build_log <<OUT -yaml-0.1.6: --prefix=$INSTALL_ROOT +yaml-0.1.6: [--prefix=$INSTALL_ROOT] make -j 2 make install patch -p1 --force -i $TMP/ruby-patch.XXX -ruby-2.0.0: --prefix=$INSTALL_ROOT +ruby-2.0.0: [--prefix=$INSTALL_ROOT] make -j 2 make install OUT @@ -203,7 +204,7 @@ unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT --with-libyaml-dir=$brew_libdir +ruby-2.0.0: [--prefix=$INSTALL_ROOT,--with-libyaml-dir=$brew_libdir] make -j 2 make install OUT @@ -227,7 +228,7 @@ unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT --with-gmp-dir=$gmp_libdir +ruby-2.0.0: [--prefix=$INSTALL_ROOT,--with-gmp-dir=$gmp_libdir] make -j 2 make install OUT @@ -251,7 +252,7 @@ unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT --with-readline-dir=$readline_libdir +ruby-2.0.0: [--prefix=$INSTALL_ROOT,--with-readline-dir=$readline_libdir] make -j 2 make install OUT @@ -260,7 +261,10 @@ @test "readline is not linked from Homebrew when explicitly defined" { cached_tarball "ruby-2.0.0" - stub_repeated brew false + readline_libdir="$TMP/homebrew-readline" + mkdir -p "$readline_libdir" + + stub_repeated brew "--prefix readline : echo '$readline_libdir'" ' : false' stub_make_install export RUBY_CONFIGURE_OPTS='--with-readline-dir=/custom' @@ -273,40 +277,40 @@ unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT --with-readline-dir=/custom +ruby-2.0.0: [--prefix=$INSTALL_ROOT,--with-readline-dir=/custom] make -j 2 make install OUT } -@test "number of CPU cores defaults to 2" { +@test "forward extra command-line arguments as configure flags" { cached_tarball "ruby-2.0.0" - stub_repeated uname '-s : echo Darwin' - stub sysctl false + stub_repeated brew false stub_make_install - export -n MAKE_OPTS - run_inline_definition <<DEF + cat > "$TMP/build-definition" <<DEF install_package "ruby-2.0.0" "http://ruby-lang.org/ruby/2.0/ruby-2.0.0.tar.gz" DEF + + RUBY_CONFIGURE_OPTS='--with-readline-dir=/custom' run ruby-build "$TMP/build-definition" "$INSTALL_ROOT" -- cppflags="-DYJIT_FORCE_ENABLE -DRUBY_PATCHLEVEL_NAME=test" --with-openssl-dir=/path/to/openssl assert_success - unstub uname + unstub brew unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT +ruby-2.0.0: [--prefix=$INSTALL_ROOT,cppflags=-DYJIT_FORCE_ENABLE -DRUBY_PATCHLEVEL_NAME=test,--with-openssl-dir=/path/to/openssl,--with-readline-dir=/custom] make -j 2 make install OUT } -@test "number of CPU cores is detected on Mac" { +@test "number of CPU cores defaults to 2" { cached_tarball "ruby-2.0.0" stub_repeated uname '-s : echo Darwin' - stub sysctl '-n hw.ncpu : echo 4' + stub sysctl false stub_make_install export -n MAKE_OPTS @@ -316,25 +320,23 @@ assert_success unstub uname - unstub sysctl unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT -make -j 4 +ruby-2.0.0: [--prefix=$INSTALL_ROOT] +make -j 2 make install OUT } -@test "number of CPU cores is detected on FreeBSD" { +@test "number of CPU cores is detected on Mac" { cached_tarball "ruby-2.0.0" - stub_repeated uname '-s : echo FreeBSD' - stub sysctl '-n hw.ncpu : echo 1' + stub_repeated uname '-s : echo Darwin' + stub sysctl '-n hw.ncpu : echo 4' stub_make_install export -n MAKE_OPTS - export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/test" run_inline_definition <<DEF install_package "ruby-2.0.0" "http://ruby-lang.org/ruby/2.0/ruby-2.0.0.tar.gz" DEF @@ -345,41 +347,45 @@ unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT --with-openssl-dir=/test -make -j 1 +ruby-2.0.0: [--prefix=$INSTALL_ROOT] +make -j 4 make install OUT } -@test "setting RUBY_MAKE_INSTALL_OPTS to a multi-word string" { +@test "number of CPU cores is detected on FreeBSD" { cached_tarball "ruby-2.0.0" - stub_repeated uname '-s : echo Linux' + stub_repeated uname '-s : echo FreeBSD' + stub sysctl '-n hw.ncpu : echo 1' stub_make_install - export RUBY_MAKE_INSTALL_OPTS="DOGE=\"such wow\"" + export -n MAKE_OPTS + export RUBY_CONFIGURE_OPTS="--with-openssl-dir=/test" run_inline_definition <<DEF install_package "ruby-2.0.0" "http://ruby-lang.org/ruby/2.0/ruby-2.0.0.tar.gz" DEF assert_success unstub uname + unstub sysctl unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT -make -j 2 -make install DOGE="such wow" +ruby-2.0.0: [--prefix=$INSTALL_ROOT,--with-openssl-dir=/test] +make -j 1 +make install OUT } -@test "setting MAKE_INSTALL_OPTS to a multi-word string" { +@test "using MAKE_INSTALL_OPTS" { cached_tarball "ruby-2.0.0" stub_repeated uname '-s : echo Linux' stub_make_install - export MAKE_INSTALL_OPTS="DOGE=\"such wow\"" + export MAKE_INSTALL_OPTS="--globalmake" + export RUBY_MAKE_INSTALL_OPTS="RUBYMAKE=true with spaces" run_inline_definition <<DEF install_package "ruby-2.0.0" "http://ruby-lang.org/ruby/2.0/ruby-2.0.0.tar.gz" DEF @@ -389,9 +395,9 @@ unstub make assert_build_log <<OUT -ruby-2.0.0: --prefix=$INSTALL_ROOT +ruby-2.0.0: [--prefix=$INSTALL_ROOT] make -j 2 -make install DOGE="such wow" +make install --globalmake RUBYMAKE=true with spaces OUT } @@ -404,19 +410,6 @@ assert [ -x ./here/bin/package ] } -@test "make on FreeBSD defaults to gmake" { - cached_tarball "ruby-2.0.0" - - stub_repeated uname "-s : echo FreeBSD" - MAKE=gmake stub_make_install - - MAKE= install_fixture definitions/vanilla-ruby - assert_success - - unstub gmake - unstub uname -} - @test "can use RUBY_CONFIGURE to apply a patch" { cached_tarball "ruby-2.0.0" @@ -442,7 +435,7 @@ assert_build_log <<OUT apply -p1 -i /my/patch.diff -ruby-2.0.0: --prefix=$INSTALL_ROOT +ruby-2.0.0: [--prefix=$INSTALL_ROOT] make -j 2 make install OUT @@ -467,7 +460,8 @@ executable "$package/minirake" <<OUT #!$BASH set -e -echo \$0 "\$@" >> '$INSTALL_ROOT'/build.log +IFS=, +echo "\$0 [\$*]" >> '$INSTALL_ROOT'/build.log mkdir -p build/host/bin touch build/host/bin/{mruby,mirb} chmod +x build/host/bin/{mruby,mirb} @@ -490,7 +484,7 @@ DEF assert_success assert_build_log <<OUT -./minirake +./minirake [] OUT assert [ -w "$INSTALL_ROOT/bin/mruby" ] @@ -519,7 +513,7 @@ assert_build_log <<OUT bundle --path=vendor/bundle -rubinius-2.0.0: --prefix=$INSTALL_ROOT RUBYOPT=-rrubygems +rubinius-2.0.0: [--prefix=$INSTALL_ROOT] RUBYOPT=-rrubygems bundle exec rake install OUT } @@ -575,7 +569,8 @@ @test "JRuby build" { executable "${RUBY_BUILD_CACHE_PATH}/jruby-1.7.9/bin/jruby" <<OUT #!${BASH} -echo jruby "\$@" >> ../build.log +IFS=, +echo "jruby [\$*]" >> ../build.log OUT executable "${RUBY_BUILD_CACHE_PATH}/jruby-1.7.9/bin/gem" <<OUT #!/usr/bin/env jruby @@ -589,8 +584,8 @@ assert_success assert_build_log <<OUT -jruby -e puts JRUBY_VERSION -jruby gem install jruby-launcher +jruby [-e,puts JRUBY_VERSION] +jruby [gem,install,jruby-launcher] OUT run ls "${INSTALL_ROOT}/bin" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/test/compiler.bats new/ruby-build-20231012/test/compiler.bats --- old/ruby-build-20230919/test/compiler.bats 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/test/compiler.bats 2023-10-12 11:46:39.000000000 +0200 @@ -14,7 +14,7 @@ stub_repeated uname '-s : echo Darwin' stub sw_vers '-productVersion : echo 10.10' stub_repeated brew 'false' - stub_repeated make 'echo make $@' + stub_repeated make 'echo "make $(inspect_args "$@")"' cat > ./configure <<CON #!${BASH} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/test/rbenv.bats new/ruby-build-20231012/test/rbenv.bats --- old/ruby-build-20230919/test/rbenv.bats 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/test/rbenv.bats 2023-10-12 11:46:39.000000000 +0200 @@ -26,6 +26,17 @@ unstub rbenv-rehash } +@test "install with flags" { + stub_ruby_build 'echo "ruby-build $(inspect_args "$@")"' + + run rbenv-install -kpv 2.1.2 -- --with-configure-opt="hello world" + assert_success "ruby-build --keep --verbose --patch 2.1.2 ${RBENV_ROOT}/versions/2.1.2 -- \"--with-configure-opt=hello world\"" + + unstub ruby-build + unstub rbenv-hooks + unstub rbenv-rehash +} + @test "suggest running rbenv global after install" { rm -rf "$RBENV_ROOT/version" stub_ruby_build 'echo ruby-build "$@"' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ruby-build-20230919/test/stubs/stub new/ruby-build-20231012/test/stubs/stub --- old/ruby-build-20230919/test/stubs/stub 2023-09-19 15:05:22.000000000 +0200 +++ new/ruby-build-20231012/test/stubs/stub 2023-10-12 11:46:39.000000000 +0200 @@ -27,6 +27,21 @@ eval "${_STUB_RESULT}"=0 [ ! -e "${!_STUB_RUN}" ] || source "${!_STUB_RUN}" +# Expose this for stub scripts. +inspect_args() { + local arg + local sep='' + for arg; do + if [[ $arg == *' '* ]]; then + printf '%s"%s"' "$sep" "${arg//\"/\\\"}" + elif [[ $arg == *'"'* ]]; then + printf "%s'%s'" "$sep" "$arg" + else + printf '%s%s' "$sep" "$arg" + fi + sep=" " + done +} # Loop over each line in the plan. index=0