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

Reply via email to