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 2026-05-04 12:53:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/ruby-build (Old)
 and      /work/SRC/openSUSE:Factory/.ruby-build.new.30200 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "ruby-build"

Mon May  4 12:53:08 2026 rev:110 rq:1350526 version:20260503

Changes:
--------
--- /work/SRC/openSUSE:Factory/ruby-build/ruby-build.changes    2026-04-28 
12:00:26.923685826 +0200
+++ /work/SRC/openSUSE:Factory/.ruby-build.new.30200/ruby-build.changes 
2026-05-04 12:55:59.447588163 +0200
@@ -1,0 +2,15 @@
+Sun May  3 14:38:26 UTC 2026 - Müller <[email protected]>
+
+- Update to version 20260503.
+  Changelog: https://github.com/rbenv/ruby-build/releases/tag/v20260503
+  * Fix definition lookup for ruby-prefixed names like `ruby-dev` by @amatsuda 
in #2621
+
+-------------------------------------------------------------------
+Fri May  1 13:28:34 UTC 2026 - Lukas Müller <[email protected]>
+
+- Update to version 20260501.
+  Changelog: https://github.com/rbenv/ruby-build/releases/tag/v20260501
+  * Support passing a version prefix argument by @byroot in #2610
+  * Add `mruby-4.0.0` by @mislav in #2620
+
+-------------------------------------------------------------------

Old:
----
  ruby-build-20260426.tar.gz

New:
----
  ruby-build-20260503.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ ruby-build.spec ++++++
--- /var/tmp/diff_new_pack.TwGPmV/_old  2026-05-04 12:55:59.999610883 +0200
+++ /var/tmp/diff_new_pack.TwGPmV/_new  2026-05-04 12:56:00.003611047 +0200
@@ -24,7 +24,7 @@
 %endif
 
 Name:           ruby-build
-Version:        20260426
+Version:        20260503
 Release:        0
 BuildArch:      noarch
 License:        MIT

++++++ ruby-build-20260426.tar.gz -> ruby-build-20260503.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/README.md 
new/ruby-build-20260503/README.md
--- old/ruby-build-20260426/README.md   2026-04-26 23:37:45.000000000 +0200
+++ new/ruby-build-20260503/README.md   2026-05-03 16:14:36.000000000 +0200
@@ -42,11 +42,13 @@
 # As a standalone program
 $ ruby-build --list                        # lists latest stable releases for 
each Ruby
 $ ruby-build --definitions                 # lists all definitions, including 
outdated ones
-$ ruby-build 3.2.2 ~/.rubies/ruby-3.2.2    # installs Ruby 3.2.2
-$ ruby-build -d ruby-3.2.2 ~/.rubies       # alternate form for the previous 
example
+$ ruby-build 3.4.9 ~/.rubies/ruby-3.4.9    # installs Ruby 3.4.9
+$ ruby-build -d ruby-3.4.9 ~/.rubies       # alternate form for the previous 
example
+$ ruby-build -d ruby-3.4 ~/.rubies         # installs latest Ruby 3.4.x
 
 # As an rbenv plugin
-$ rbenv install 3.2.2  # installs Ruby 3.2.2 to ~/.rbenv/versions/3.2.2
+$ rbenv install 3.4.9  # installs Ruby 3.4.9 to ~/.rbenv/versions/3.4.9
+$ rbenv install 3      # installs latest Ruby 3.x
 ```
 
 > [!WARNING]
@@ -61,6 +63,28 @@
 
 Depending on the context, ruby-build does a little bit more than the above: 
for example, it will try to link Ruby to the appropriate OpenSSL version, even 
if that means downloading and compiling OpenSSL itself; it will discover and 
link to Homebrew-installed instances of some libraries like libyaml and 
readline, etc.
 
+### Ruby versions
+
+When listing "latest" Ruby versions, such as in `ruby-build --list` output, 
ruby-build only knows of Ruby versions that are bundled with this project. That 
means that when a new Ruby version comes out, ruby-build will not know about it 
immediately— you will have to upgrade ruby-build before you can use it to 
install the new Ruby version. This is because ruby-build bundles [definition 
files](#custom-build-definitions) for each individual Ruby version.
+
+If it's important to you that your installer tool always consults remote 
resources to download the list of latest Ruby versions (without having to 
upgrade the tool itself), check out [ruby-install][] as an alternative to 
ruby-build.
+
+### Ruby implementations
+
+ruby-build ships with definitions for the following Ruby implementations, 
denoted by version prefixes in the `ruby-build --list` output:
+
+- [CRuby][]: listed in ruby-build as unprefixed version numbers in the `X.Y.Z` 
format. This is the main Ruby implementation that most people use and is also 
historically known as "MRI". ruby-build allows adding the `ruby-` prefix to 
CRuby version numbers for compatibility with other version managers.
+
+- `jruby`: [JRuby][] is a high-performance Ruby implementation with real 
threading built on top of the Java virtual machine (JVM).
+
+- `mruby`: [mruby][] is a lightweight, embeddable Ruby implementation for 
microcontrollers.
+
+- `picoruby`: [PicoRuby][] is an alternative mruby implementation for one-chip 
microcontrollers.
+
+- `truffleruby`: The Native standalone distribution of [TruffleRuby][], an 
implementation of Ruby on top of GraalVM's Truffle framework.
+
+- `truffleruby+graalvm`: The JVM standalone distribution of TruffleRuby.
+
 ### Advanced Usage
 
 #### Custom Build Definitions
@@ -197,3 +221,9 @@
   [wiki]: https://github.com/rbenv/ruby-build/wiki
   [build-env]: 
https://github.com/rbenv/ruby-build/wiki#suggested-build-environment
   [issue tracker]: https://github.com/rbenv/ruby-build/issues
+  [cruby]: https://www.ruby-lang.org/
+  [truffleruby]: https://truffleruby.dev/
+  [picoruby]: https://github.com/picoruby/picoruby#readme
+  [mruby]: https://mruby.org/
+  [jruby]: https://www.jruby.org/
+  [ruby-install]: https://github.com/postmodern/ruby-install#readme
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/bin/rbenv-install 
new/ruby-build-20260503/bin/rbenv-install
--- old/ruby-build-20260426/bin/rbenv-install   2026-04-26 23:37:45.000000000 
+0200
+++ new/ruby-build-20260503/bin/rbenv-install   2026-05-03 16:14:36.000000000 
+0200
@@ -134,8 +134,6 @@
 
 [ "${#ARGUMENTS[@]}" -le 1 ] || usage 1 >&2
 
-unset VERSION_NAME
-
 # The first argument contains the definition to install. If the
 # argument is missing, try to install whatever local app-specific
 # version is specified by rbenv. Show usage instructions if a local
@@ -144,6 +142,12 @@
 [ -n "$DEFINITION" ] || DEFINITION="$(rbenv-local 2>/dev/null || true)"
 [ -n "$DEFINITION" ] || usage 1 >&2
 
+if VERSION_NAME="$(ruby-build --resolve "$DEFINITION")"; then
+  DEFINITION="$VERSION_NAME"
+else
+  unset VERSION_NAME
+fi
+
 # Define `before_install` and `after_install` functions that allow
 # plugin hooks to register a string of code for execution before or
 # after the installation process.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/bin/ruby-build 
new/ruby-build-20260503/bin/ruby-build
--- old/ruby-build-20260426/bin/ruby-build      2026-04-26 23:37:45.000000000 
+0200
+++ new/ruby-build-20260503/bin/ruby-build      2026-05-03 16:14:36.000000000 
+0200
@@ -2,10 +2,12 @@
 #
 # Usage: ruby-build [-dvpk] <definition> <prefix> [-- <configure-args...>]
 #        ruby-build {--list|--definitions}
+#        ruby-build --resolve <version>
 #        ruby-build --version
 #
 #   -l, --list      List latest stable releases for each Ruby
 #   --definitions   List all local definitions, including outdated ones
+#   --resolve       Print the latest stable definition name matching a version 
prefix
 #   --version       Show version of ruby-build
 #
 #   -d, --dir       Install the Ruby in <prefix>/<definition> instead of 
<prefix>
@@ -16,7 +18,7 @@
 #   -6, --ipv6      Resolve names to IPv6 addresses only
 #
 
-RUBY_BUILD_VERSION="20260426"
+RUBY_BUILD_VERSION="20260503"
 
 OLDIFS="$IFS"
 
@@ -1411,6 +1413,40 @@
   } | extract_latest_versions | sort_versions | uniq
 }
 
+# resolve a version prefix to the exact version name for which exists a
+# definition file. Example: "ruby-3" => "3.4.9"
+resolve_version() {
+  local version="${1#ruby-}"
+
+  # Look for an exact match first.
+  for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do
+    if [ -f "${DEFINITION_DIR}/$1" ]; then
+      echo "$1"
+      return 0
+    fi
+    if [ -f "${DEFINITION_DIR}/${version}" ]; then
+      echo "$version"
+      return 0
+    fi
+  done
+
+  local grep_pattern="${version%.}"
+  if [ "$grep_pattern" = "ruby" ]; then
+    # Special case to select the latest CRuby.
+    grep_pattern="[0-9]"
+  else
+    grep_pattern="$(tr 'A-Z' 'a-z' <<<"${grep_pattern//./\\.}")"
+  fi
+
+  version=$(list_definitions | \
+    grep -e "^${grep_pattern}[-.]" | \
+    grep -v -e '-rc[0-9]*$' -e '-preview[0-9]*$' -e '-dev$' | \
+    tail -n 1)
+
+  [ -n "$version" ] || return 1
+  echo "$version"
+}
+
 extract_latest_versions() {
   # sort in this function looks redundunt but it is necessary
   # rbx-3.99 appears latest unless the sort
@@ -1453,6 +1489,14 @@
   "l" | "list")
     EARLY_EXIT=list_maintained_versions
     ;;
+  "resolve")
+    if [ "${#ARGUMENTS[*]}" -eq 1 ]; then
+      EARLY_EXIT=resolve_version
+    else
+      echo "ruby-build: '--resolve' needs an argument" >&2
+      EARLY_EXIT=usage_error
+    fi
+    ;;
   "d" | "dir")
     APPEND_DEFINITION_TO_PREFIX=true
     ;;
@@ -1503,12 +1547,9 @@
   RUBY_CONFIGURE_OPTS_ARRAY=("${EXTRA_ARGUMENTS[@]}")
 fi
 
-if [ "$APPEND_DEFINITION_TO_PREFIX" = "true" ]; then
-  if [ -p "$DEFINITION_PATH" ]; then
-    echo "ruby-build: using named pipes in combination with \`--dir' is not 
possible" >&2
-    EARLY_EXIT=usage_error
-  fi
-  PREFIX_PATH="$PREFIX_PATH/$(basename "$DEFINITION_PATH")"
+if [[ "$APPEND_DEFINITION_TO_PREFIX" = "true" && -p "$DEFINITION_PATH" ]]; then
+  echo "ruby-build: using named pipes in combination with \`--dir' is not 
possible" >&2
+  EARLY_EXIT=usage_error
 fi
 
 case "$EARLY_EXIT" in
@@ -1521,6 +1562,10 @@
   "$EARLY_EXIT"
   exit 0
   ;;
+resolve_version )
+  resolve_version "${ARGUMENTS[0]}" || exit 1
+  exit 0
+  ;;
 usage_error )
   echo >&2
   usage 1 >&2
@@ -1533,30 +1578,29 @@
   ;;
 esac
 
+VERSION_NAME_PREFIX=""
+
 # expand the <definition> argument to full path of the definition file
 if [[ ! -f "$DEFINITION_PATH" && ! -p "$DEFINITION_PATH" ]]; then
+  if ! VERSION_NAME="$(resolve_version "$DEFINITION_PATH")"; then
+    echo "ruby-build: definition not found: ${DEFINITION_PATH}" >&2
+    exit 2
+  fi
+
+  if [[ $DEFINITION_PATH == ruby-* && $VERSION_NAME != ruby-* ]]; then
+    VERSION_NAME_PREFIX="ruby-"
+  fi
+
   for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do
-    if [ -f "${DEFINITION_DIR}/${DEFINITION_PATH}" ]; then
-      DEFINITION_PATH="${DEFINITION_DIR}/${DEFINITION_PATH}"
+    if [ -f "${DEFINITION_DIR}/${VERSION_NAME}" ]; then
+      DEFINITION_PATH="${DEFINITION_DIR}/${VERSION_NAME}"
       break
     fi
   done
+fi
 
-  # If the given definition is like ruby-X.Y.Z, search again with X.Y.Z
-  if [[ "$DEFINITION_PATH" =~ ^ruby-[0-9] ]]; then
-    DEFINITION_PATH="${DEFINITION_PATH#ruby-}"
-    for DEFINITION_DIR in "${RUBY_BUILD_DEFINITIONS[@]}"; do
-      if [ -f "${DEFINITION_DIR}/${DEFINITION_PATH}" ]; then
-        DEFINITION_PATH="${DEFINITION_DIR}/${DEFINITION_PATH}"
-        break
-      fi
-    done
-  fi
-
-  if [ ! -f "$DEFINITION_PATH" ]; then
-    echo "ruby-build: definition not found: ${DEFINITION_PATH}" >&2
-    exit 2
-  fi
+if [ "$APPEND_DEFINITION_TO_PREFIX" = "true" ]; then
+  PREFIX_PATH="$PREFIX_PATH/${VERSION_NAME_PREFIX}$(basename 
"$DEFINITION_PATH")"
 fi
 
 # normalize the <prefix> argument
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/share/man/man1/ruby-build.1 
new/ruby-build-20260503/share/man/man1/ruby-build.1
--- old/ruby-build-20260426/share/man/man1/ruby-build.1 2026-04-26 
23:37:45.000000000 +0200
+++ new/ruby-build-20260503/share/man/man1/ruby-build.1 2026-05-03 
16:14:36.000000000 +0200
@@ -2,12 +2,12 @@
 .\"     Title: ruby-build
 .\"    Author: Mislav Marohnić
 .\" Generator: Asciidoctor 2.0.26
-.\"      Date: 2024-09-23
+.\"      Date: 2026-05-03
 .\"    Manual: ruby-build Manual
-.\"    Source: ruby-build 20260426
+.\"    Source: ruby-build 20260503
 .\"  Language: English
 .\"
-.TH "RUBY\-BUILD" "1" "2024-09-23" "ruby\-build 20260426" "ruby\-build Manual"
+.TH "RUBY\-BUILD" "1" "2026-05-03" "ruby\-build 20260503" "ruby\-build Manual"
 .ie \n(.g .ds Aq \(aq
 .el       .ds Aq '
 .ss \n[.ss] 0
@@ -35,15 +35,14 @@
 .br
 ruby\-build {\-\-list|\-\-definitions}
 .br
+ruby\-build \-\-resolve \fI<version>\fP
+.br
 ruby\-build \-\-version
 .SH "DESCRIPTION"
 .sp
 ruby\-build downloads, compiles, and installs a Ruby version named by the
 \fIdefinition\fP argument into the location specified by \fIprefix\fP.
 .sp
-The \fIdefinition\fP argument can optionally start with "ruby\-", in which case
-it resolves to a CRuby that matches the version number that follows.
-.sp
 The \fIdefinition\fP argument can be a path to a file on disk, in which case
 it is sourced into ruby\-build as a bash script.
 .sp
@@ -53,6 +52,91 @@
 By default, all compile output is redirected to a log file at
 \f(CR$TMPDIR/ruby\-build.*.log\fP. Activate the verbose mode to skip the log 
file
 and print everything to standard streams.
+.SH "RUBY VERSIONS"
+.sp
+When listing "latest" Ruby versions, such as in \f(CR\-\-list\fP output,
+ruby\-build only knows of Ruby versions that are bundled with this project.
+That means that when a new Ruby version comes out, ruby\-build will not
+know about it immediately; you will have to upgrade ruby\-build before you
+can use it to install the new Ruby version.
+.SH "RUBY IMPLEMENTATIONS"
+.sp
+ruby\-build ships with definitions for the following Ruby implementations:
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.  sp -1
+.  IP \(bu 2.3
+.\}
+CRuby, also known as "MRI": denoted by version numbers in form of "X.Y.Z".
+This is the main Ruby implementation that most people use.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.  sp -1
+.  IP \(bu 2.3
+.\}
+"jruby": High\-performance Ruby implementation with real threading built
+on top of the Java virtual machine (JVM).
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.  sp -1
+.  IP \(bu 2.3
+.\}
+"mruby": Lightweight Ruby for microcontrollers.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.  sp -1
+.  IP \(bu 2.3
+.\}
+"picoruby": Alternative mruby implementation for one\-chip microcontrollers.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.  sp -1
+.  IP \(bu 2.3
+.\}
+"truffleruby": The Native standalone distribution of TruffleRuby, an
+implementation of Ruby on top of GraalVM\(cqs Truffle framework.
+.RE
+.sp
+.RS 4
+.ie n \{\
+\h'-04'\(bu\h'+03'\c
+.\}
+.el \{\
+.  sp -1
+.  IP \(bu 2.3
+.\}
+"truffleruby+graalvm": The JVM standalone distribution of TruffleRuby.
+.RE
+.sp
+The \fIdefinition\fP argument may optionally start with "ruby\-", in which case
+it resolves to a CRuby that matches the version number that follows. The
+\fIdefinition\fP argument may also be a name of one of the alternative Ruby
+implementations, in which case the latest version of that implementation
+will be installed.
 .SH "OPTIONS"
 .sp
 \fB\-l, \-\-list\fP
@@ -65,6 +149,11 @@
 List all local definitions, including outdated ones
 .RE
 .sp
+\fB\-\-resolve\fP
+.RS 4
+Print the definition name of the latest stable Ruby version matching the 
\fIversion\fP argument
+.RE
+.sp
 \fB\-\-version\fP
 .RS 4
 Show version of ruby\-build
@@ -106,27 +195,37 @@
 .if n .RS 4
 .nf
 .fam C
-$ ruby\-build 3.2.2 /path/to/destination \-\- \-\-disable\-install\-doc 
\-\-with\-openssl\-dir=/opt/openssl
+$ ruby\-build 3.4.9 /path/to/destination \-\- \-\-disable\-install\-doc 
\-\-with\-openssl\-dir=/opt/openssl
+.fam
+.fi
+.if n .RE
+.sp
+Install a Ruby version to \f(CR~/.rubies/ruby\-3.4.9\fP:
+.sp
+.if n .RS 4
+.nf
+.fam C
+$ ruby\-build \-\-dir ruby\-3.4.9 ~/.rubies
 .fam
 .fi
 .if n .RE
 .sp
-Install a Ruby version to \f(CR~/.rubies/ruby\-3.2.2\fP:
+Install the latest Ruby 3.x version to \f(CR~/.rubies/ruby\-3.x.y\fP:
 .sp
 .if n .RS 4
 .nf
 .fam C
-$ ruby\-build \-\-dir ruby\-3.2.2 ~/.rubies
+$ ruby\-build \-\-dir ruby\-3 ~/.rubies
 .fam
 .fi
 .if n .RE
 .sp
-Install a Ruby version to \f(CR~/.rbenv/versions/3.3.5\fP:
+Install a Ruby version to \f(CR~/.rbenv/versions/3.3.11\fP:
 .sp
 .if n .RS 4
 .nf
 .fam C
-$ ruby\-build \-\-dir 3.3.5 ~/.rbenv/versions
+$ ruby\-build \-\-dir 3.3.11 ~/.rbenv/versions
 .fam
 .fi
 .if n .RE
@@ -136,7 +235,7 @@
 .if n .RS 4
 .nf
 .fam C
-$ rbenv install 3.3.5
+$ rbenv install 3.3.11
 .fam
 .fi
 .if n .RE
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/share/man/man1/ruby-build.1.adoc 
new/ruby-build-20260503/share/man/man1/ruby-build.1.adoc
--- old/ruby-build-20260426/share/man/man1/ruby-build.1.adoc    2026-04-26 
23:37:45.000000000 +0200
+++ new/ruby-build-20260503/share/man/man1/ruby-build.1.adoc    2026-05-03 
16:14:36.000000000 +0200
@@ -13,6 +13,7 @@
 
 ruby-build [-dvpk] _<definition>_ _<prefix>_ [-- _<configure-args>_...] +
 ruby-build {--list|--definitions} +
+ruby-build --resolve _<version>_ +
 ruby-build --version
 
 == Description
@@ -20,9 +21,6 @@
 ruby-build downloads, compiles, and installs a Ruby version named by the
 _definition_ argument into the location specified by _prefix_.
 
-The _definition_ argument can optionally start with "ruby-", in which case
-it resolves to a CRuby that matches the version number that follows.
-
 The _definition_ argument can be a path to a file on disk, in which case
 it is sourced into ruby-build as a bash script.
 
@@ -33,6 +31,39 @@
 `$TMPDIR/ruby-build.*.log`. Activate the verbose mode to skip the log file
 and print everything to standard streams.
 
+== Ruby versions
+
+When listing "latest" Ruby versions, such as in `--list` output,
+ruby-build only knows of Ruby versions that are bundled with this project.
+That means that when a new Ruby version comes out, ruby-build will not
+know about it immediately; you will have to upgrade ruby-build before you
+can use it to install the new Ruby version.
+
+== Ruby implementations
+
+ruby-build ships with definitions for the following Ruby implementations:
+
+- CRuby, also known as "MRI": denoted by version numbers in form of "X.Y.Z".
+  This is the main Ruby implementation that most people use.
+
+- "jruby": High-performance Ruby implementation with real threading built
+  on top of the Java virtual machine (JVM).
+
+- "mruby": Lightweight Ruby for microcontrollers.
+
+- "picoruby": Alternative mruby implementation for one-chip microcontrollers.
+
+- "truffleruby": The Native standalone distribution of TruffleRuby, an
+  implementation of Ruby on top of GraalVM's Truffle framework.
+
+- "truffleruby+graalvm": The JVM standalone distribution of TruffleRuby.
+
+The _definition_ argument may optionally start with "ruby-", in which case
+it resolves to a CRuby that matches the version number that follows. The
+_definition_ argument may also be a name of one of the alternative Ruby
+implementations, in which case the latest version of that implementation
+will be installed.
+
 == Options
 
 *-l, --list*::
@@ -41,6 +72,9 @@
 *--definitions*::
   List all local definitions, including outdated ones
 
+*--resolve*::
+  Print the definition name of the latest stable Ruby version matching the 
_version_ argument
+
 *--version*::
   Show version of ruby-build
 
@@ -66,22 +100,27 @@
 
 Install a Ruby version while tweaking some configuration options:
 ----
-$ ruby-build 3.2.2 /path/to/destination -- --disable-install-doc 
--with-openssl-dir=/opt/openssl
+$ ruby-build 3.4.9 /path/to/destination -- --disable-install-doc 
--with-openssl-dir=/opt/openssl
+----
+
+Install a Ruby version to `~/.rubies/ruby-3.4.9`:
+----
+$ ruby-build --dir ruby-3.4.9 ~/.rubies
 ----
 
-Install a Ruby version to `~/.rubies/ruby-3.2.2`:
+Install the latest Ruby 3.x version to `~/.rubies/ruby-3.x.y`:
 ----
-$ ruby-build --dir ruby-3.2.2 ~/.rubies
+$ ruby-build --dir ruby-3 ~/.rubies
 ----
 
-Install a Ruby version to `~/.rbenv/versions/3.3.5`:
+Install a Ruby version to `~/.rbenv/versions/3.3.11`:
 ----
-$ ruby-build --dir 3.3.5 ~/.rbenv/versions
+$ ruby-build --dir 3.3.11 ~/.rbenv/versions
 ----
 
 Usage as rbenv plugin, accomplishes the same as the previous example:
 ----
-$ rbenv install 3.3.5
+$ rbenv install 3.3.11
 ----
 
 == Environment Variables
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/share/ruby-build/mruby-4.0.0 
new/ruby-build-20260503/share/ruby-build/mruby-4.0.0
--- old/ruby-build-20260426/share/ruby-build/mruby-4.0.0        1970-01-01 
01:00:00.000000000 +0100
+++ new/ruby-build-20260503/share/ruby-build/mruby-4.0.0        2026-05-03 
16:14:36.000000000 +0200
@@ -0,0 +1 @@
+install_package "mruby-4.0.0" 
"https://github.com/mruby/mruby/archive/4.0.0.tar.gz#e2ea271dbed14e9f2b33df773ae447b747dbc242ce2675022c0a57efea85a7b4";
 mruby
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/test/build.bats 
new/ruby-build-20260503/test/build.bats
--- old/ruby-build-20260426/test/build.bats     2026-04-26 23:37:45.000000000 
+0200
+++ new/ruby-build-20260503/test/build.bats     2026-05-03 16:14:36.000000000 
+0200
@@ -787,6 +787,30 @@
 OUT
 }
 
+@test "nested install destination with ruby prefix and version prefix" {
+  cached_tarball "ruby-3.2.45" configure
+
+  stub_repeated brew false
+  stub_make_install
+
+  mkdir -p "$TMP"/definitions
+  cat > "$TMP"/definitions/3.2.45 <<DEF
+install_package "ruby-3.2.45" 
"http://ruby-lang.org/ruby/2.0/ruby-3.2.45.tar.gz";
+DEF
+
+  RUBY_BUILD_DEFINITIONS="$TMP"/definitions run ruby-build --dir ruby-3.2 
"$INSTALL_ROOT"
+  assert_success
+
+  unstub brew
+  unstub make
+
+  assert_build_log <<OUT
+ruby-3.2.45: [--prefix=$INSTALL_ROOT/ruby-3.2.45,--with-ext=openssl,psych,+]
+make -j 2
+make install
+OUT
+}
+
 @test "definition file with ruby prefix" {
   export RUBY_BUILD_CACHE_PATH="$FIXTURE_ROOT"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/test/definitions.bats 
new/ruby-build-20260503/test/definitions.bats
--- old/ruby-build-20260426/test/definitions.bats       2026-04-26 
23:37:45.000000000 +0200
+++ new/ruby-build-20260503/test/definitions.bats       2026-05-03 
16:14:36.000000000 +0200
@@ -60,6 +60,111 @@
   assert_success ""
 }
 
+@test "installing definition by prefix" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  echo false > "${TMP}/definitions/1.8.6"
+  echo false > "${TMP}/definitions/1.9.3"
+  echo true  > "${TMP}/definitions/1.9.10"
+  echo false > "${TMP}/definitions/1.90.0"
+  echo false > "${TMP}/definitions/2.0.0"
+
+  run bin/ruby-build "1.9" "${TMP}/install"
+  assert_success ""
+}
+
+@test "resolve failure" {
+  run bin/ruby-build --resolve "doesntexist"
+  assert_failure ""
+}
+
+@test "resolve definition by version prefix" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  touch "${TMP}/definitions/1.8.6"
+  touch "${TMP}/definitions/1.9.3"
+  touch "${TMP}/definitions/1.9.10"
+  touch "${TMP}/definitions/1.90.0"
+  touch "${TMP}/definitions/2.0.0"
+
+  run bin/ruby-build --resolve "1.9"
+  assert_success "1.9.10"
+}
+
+@test "resolve definition by exact match" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  touch "${TMP}/definitions/3.2.1"
+
+  run bin/ruby-build --resolve "3.2.1"
+  assert_success "3.2.1"
+}
+
+@test "resolve definition by exact match and ruby prefix" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  touch "${TMP}/definitions/3.2.1"
+
+  run bin/ruby-build --resolve "ruby-3.2.1"
+  assert_success "3.2.1"
+}
+
+@test "resolve definition by exact match for ruby-prefixed name" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  touch "${TMP}/definitions/ruby-dev"
+
+  run bin/ruby-build --resolve "ruby-dev"
+  assert_success "ruby-dev"
+}
+
+@test "resolve definition with ruby prefix" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  touch "${TMP}/definitions/1.8.6"
+  touch "${TMP}/definitions/1.9.3"
+  touch "${TMP}/definitions/1.9.10"
+  touch "${TMP}/definitions/1.90.0"
+  touch "${TMP}/definitions/2.0.0"
+
+  run bin/ruby-build --resolve "ruby-1.9"
+  assert_success "1.9.10"
+}
+
+@test "resolve definition by implementation name" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  touch "${TMP}/definitions/fooruby-1.8.6"
+  touch "${TMP}/definitions/fooruby-1.9.3"
+  touch "${TMP}/definitions/1.9.10"
+  touch "${TMP}/definitions/1.90.0"
+  touch "${TMP}/definitions/2.0.0"
+
+  run bin/ruby-build --resolve "FooRuby"
+  assert_success "fooruby-1.9.3"
+}
+
+@test "resolve definition by implementation name and version" {
+  export RUBY_BUILD_DEFINITIONS="${TMP}/definitions"
+  mkdir -p "${TMP}/definitions"
+
+  touch "${TMP}/definitions/foo-1.8.6"
+  touch "${TMP}/definitions/foo-1.9.3"
+  touch "${TMP}/definitions/1.9.10"
+  touch "${TMP}/definitions/1.90.0"
+  touch "${TMP}/definitions/2.0.0"
+
+  run bin/ruby-build --resolve "foo-1.8"
+  assert_success "foo-1.8.6"
+}
+
 @test "installing nonexistent definition" {
   run ruby-build "nonexistent" "${TMP}/install"
   assert [ "$status" -eq 2 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ruby-build-20260426/test/rbenv.bats 
new/ruby-build-20260503/test/rbenv.bats
--- old/ruby-build-20260426/test/rbenv.bats     2026-04-26 23:37:45.000000000 
+0200
+++ new/ruby-build-20260503/test/rbenv.bats     2026-05-03 16:14:36.000000000 
+0200
@@ -16,7 +16,7 @@
 }
 
 @test "install proper" {
-  stub_ruby_build 'echo ruby-build "$@"'
+  stub_ruby_build 'echo 2.1.2' 'echo ruby-build "$@"'
 
   run rbenv-install 2.1.2
   assert_success "ruby-build 2.1.2 ${RBENV_ROOT}/versions/2.1.2"
@@ -27,7 +27,7 @@
 }
 
 @test "install with flags" {
-  stub_ruby_build 'echo "ruby-build $(inspect_args "$@")"'
+  stub_ruby_build 'echo 2.1.2' '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\""
@@ -39,7 +39,7 @@
 
 @test "suggest running rbenv global after install" {
   rm -rf "$RBENV_ROOT/version"
-  stub_ruby_build 'echo ruby-build "$@"'
+  stub_ruby_build 'echo 2.1.2' 'echo ruby-build "$@"'
 
   run rbenv-install 2.1.2
   assert_success <<OUT
@@ -52,7 +52,7 @@
 }
 
 @test "install rbenv local version by default" {
-  stub_ruby_build 'echo ruby-build "$1"'
+  stub_ruby_build 'echo 2.1.2' 'echo ruby-build "$1"'
   stub rbenv-local 'echo 2.1.2'
 
   run rbenv-install
@@ -100,7 +100,8 @@
   fi
 
   stub_repeated brew false
-  stub_ruby_build 'echo ERROR >&2 && exit 2' \
+  stub_ruby_build 'exit 1' \
+    'echo ERROR >&2 && exit 2' \
     "--definitions : echo 1.8.7 1.9.3-p0 1.9.3-p194 2.1.2 | tr ' ' $'\\n'"
 
   run rbenv-install 1.9.3
@@ -127,10 +128,11 @@
 
 @test "Homebrew upgrade instructions" {
   stub brew "--prefix : echo '${BATS_TEST_DIRNAME%/*}'"
-  stub_ruby_build 'echo ERROR >&2 && exit 2' \
+  stub_ruby_build 'exit 1' \
+    'echo ERROR >&2 && exit 2' \
     "--definitions : true"
 
-  run rbenv-install 1.9.3
+  run rbenv-install 1.9.10
   assert_failure
   assert_output <<OUT
 ERROR
@@ -148,7 +150,8 @@
 
 @test "no build definitions from plugins" {
   refute [ -e "${RBENV_ROOT}/plugins" ]
-  stub_ruby_build 'echo $RUBY_BUILD_DEFINITIONS'
+  stub_ruby_build 'echo 2.1.2' \
+    'echo $RUBY_BUILD_DEFINITIONS'
 
   run rbenv-install 2.1.2
   assert_success ""
@@ -157,7 +160,8 @@
 @test "some build definitions from plugins" {
   mkdir -p "${RBENV_ROOT}/plugins/foo/share/ruby-build"
   mkdir -p "${RBENV_ROOT}/plugins/bar/share/ruby-build"
-  stub_ruby_build "echo \$RUBY_BUILD_DEFINITIONS | tr ':' $'\\n'"
+  stub_ruby_build 'echo 2.1.2' \
+    "echo \$RUBY_BUILD_DEFINITIONS | tr ':' $'\\n'"
 
   run rbenv-install 2.1.2
   assert_success

Reply via email to