Compare commits

..
Author SHA1 Message Date
Hiroshi SHIBATA
fd50704763
ruby-build 20260916 2026-09-16 09:49:03 +09:00
Hiroshi SHIBATA
9072838d9a
Merge pull request #2641 from rbenv/claude/ruby-build-2640-patch-607d0a
Hide dup3() and pipe2() from configure on macOS older than 27
2026-09-16 09:48:15 +09:00
Hiroshi SHIBATA
6ac4038204
Hide dup3() and pipe2() from configure on macOS older than 27
The macOS 27 SDK declares both as available since macOS 27.0, and
`AC_CHECK_FUNCS` detects them regardless of the deployment target, so
Ruby built on macOS 26 with the Command Line Tools 27 calls weakly
linked NULL symbols and crashes miniruby during the build.

https://bugs.ruby-lang.org/issues/22311
https://github.com/rbenv/ruby-build/issues/2640

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16 09:14:57 +09:00
Benoit Daloze
59b1392a15
Merge pull request #2639 from eregon/release-script-set-x-flag
Set -x flag for release script to show commands being run
2026-09-15 23:36:40 +02:00
Benoit Daloze
eff399fced Set -x flag for release script to show commands being run
* This makes it much easier to rerun a command if it failed
  and to know where the script stopped.
2026-09-15 13:35:45 +02:00
Benoit Daloze
8f9a450872 ruby-build 20260915 2026-09-15 13:25:38 +02:00
GitHub Actions Bot
52d16a1321 Added 4.0.7 with OpenSSL 3.0.22 2026-09-15 00:40:42 +00:00
Mislav Marohnić
a1c1a85137
ruby-build 20260902 2026-09-02 16:01:49 +02:00
Mislav Marohnić
78d71ae09d
Fix removing -O3 on ruby-dev and Ruby < 3.2 on Fedora 42+ (#2638)
Exporting CFLAGS overrides Ruby's default optflags/debugflags/warnflags,
notably losing -O3 and silently producing a much slower (-O0) Ruby.
The cflags configure variable is appended to those defaults instead.
Keep prepending to CFLAGS when the user already overrides CFLAGS,
since configure ignores cflags when CFLAGS is given.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-02 16:01:05 +02:00
Benoit Daloze
5b39cda851 Treat the dev version as newer than any release in normalize_semver
normalize_semver("dev") returned 0, so ruby-dev was treated as older
than any released version and version-gated workarounds misfired.
Notably the Fedora 42+ -std=gnu17 workaround for Ruby < 3.2 was
applied to ruby-dev builds, which do not need it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 16:40:31 +02:00
Benoit Daloze
7177e5c1b3 Clarify that RUBY_CFLAGS overrides Ruby's default CFLAGS
"Additional" was misleading: passing CFLAGS to Ruby's configure replaces
the default optflags/debugflags/warnflags, so e.g. RUBY_CFLAGS=-march=native
silently builds an unoptimized (-O0) Ruby. Document the overriding
semantics and point to RUBY_CONFIGURE_OPTS=cflags=... for adding flags.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 16:40:11 +02:00
Benoit Daloze
692136ba52 Let CFLAGS override everything, it's the purpose of CFLAGS 2026-08-31 16:40:11 +02:00
Benoit Daloze
5060d0f73c Use the cflags configure variable for the -std=gnu17 workaround
Exporting CFLAGS overrides Ruby's default optflags/debugflags/warnflags,
notably losing -O3 and silently producing a much slower (-O0) Ruby.
The cflags configure variable is appended to those defaults instead.
Keep prepending to CFLAGS when the user already overrides CFLAGS,
since configure ignores cflags when CFLAGS is given.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 16:29:08 +02:00
Charles Oliver Nutter
13b73fe96f
Merge pull request #2635 from headius/jruby-10.1.1.0
JRuby 10.1.1.0
2026-07-22 12:05:53 -06:00
Charles Oliver Nutter
c2018db84f JRuby 10.1.1.0 2026-07-22 13:03:48 -05:00
Hiroshi SHIBATA
013c27d7e5
ruby-build 20260716 2026-07-16 14:42:11 +09:00
GitHub Actions Bot
36354213a9 Added 3.3.12 with OpenSSL 3.0.21 2026-07-16 05:13:19 +00:00
8 changed files with 103 additions and 8 deletions

View file

@ -137,7 +137,7 @@ The build process may be configured through the following environment variables:
| `RUBY_BUILD_ROOT` | The path prefix to search for build definitions files. *Deprecated:* use `RUBY_BUILD_DEFINITIONS`| | `RUBY_BUILD_ROOT` | The path prefix to search for build definitions files. *Deprecated:* use `RUBY_BUILD_DEFINITIONS`|
| `RUBY_BUILD_VENDOR_OPENSSL` | Build and vendor openssl even if the system openssl is compatible | | `RUBY_BUILD_VENDOR_OPENSSL` | Build and vendor openssl even if the system openssl is compatible |
| `CC` | Path to the C compiler. | | `CC` | Path to the C compiler. |
| `RUBY_CFLAGS` | Additional `CFLAGS` options (_e.g.,_ to override `-O3`). | | `RUBY_CFLAGS` | Overrides Ruby's default `CFLAGS`, including `-O3` (beware: without a `-O` flag Ruby is built unoptimized). To add flags, use `RUBY_CONFIGURE_OPTS=cflags=...` instead |
| `CONFIGURE_OPTS` | Additional `./configure` options. | | `CONFIGURE_OPTS` | Additional `./configure` options. |
| `MAKE` | Custom `make` command (_e.g.,_ `gmake`). | | `MAKE` | Custom `make` command (_e.g.,_ `gmake`). |
| `MAKE_OPTS` / `MAKEOPTS` | Additional `make` options. | | `MAKE_OPTS` / `MAKEOPTS` | Additional `make` options. |

View file

@ -18,7 +18,7 @@
# -6, --ipv6 Resolve names to IPv6 addresses only # -6, --ipv6 Resolve names to IPv6 addresses only
# #
RUBY_BUILD_VERSION="20260714" RUBY_BUILD_VERSION="20260916"
OLDIFS="$IFS" OLDIFS="$IFS"
@ -748,7 +748,18 @@ build_package_standard() {
# #
# TODO: Consider changing this to check for GCC v15 specifically # TODO: Consider changing this to check for GCC v15 specifically
# rather than inspecting the OS itself. # rather than inspecting the OS itself.
export CFLAGS="-std=gnu17 $CFLAGS"
# Use the cflags configure variable, which Ruby's configure appends to
# its default optflags/debugflags/warnflags, unlike CFLAGS which would
# override them and notably lose the -O3, producing a -O0 Ruby.
export cflags="-std=gnu17 $cflags"
fi
if [ "$package_var_name" = "RUBY" ] && is_mac && ! is_mac 2700; then
# The macOS 27 SDK declares dup3() and pipe2() as available since macOS 27.0.
# Ruby's configure detects them even when building for an older macOS, where
# they are only weakly linked and are NULL at runtime, which makes miniruby
# crash during the build: https://bugs.ruby-lang.org/issues/22311
export ac_cv_func_dup3=no ac_cv_func_pipe2=no
fi fi
# ./configure --prefix=/path/to/ruby # ./configure --prefix=/path/to/ruby
# shellcheck disable=SC2086,SC2153 # shellcheck disable=SC2086,SC2153
@ -1169,7 +1180,11 @@ homebrew_openssl_versions() {
# Example: 3.1.23 -> 30123 # Example: 3.1.23 -> 30123
# See also osx_version, require_java # See also osx_version, require_java
normalize_semver() { normalize_semver() {
awk -F. '{print $1 * 10000 + $2 * 100 + $3}' <<<"$1" if [ "$1" = "dev" ]; then
echo 99999999
else
awk -F. '{print $1 * 10000 + $2 * 100 + $3}' <<<"$1"
fi
} }
# Checks if system OpenSSL does NOT satisfy the version requirement # Checks if system OpenSSL does NOT satisfy the version requirement

View file

@ -8,7 +8,7 @@
# - creates a new Release on GitHub # - creates a new Release on GitHub
# - [automated] a GitHub Action will create a Homebrew PR for the new release # - [automated] a GitHub Action will create a Homebrew PR for the new release
set -e set -ex
git fetch -q --tags origin master git fetch -q --tags origin master
git checkout -q master git checkout -q master

View file

@ -4,10 +4,10 @@
.\" Generator: Asciidoctor 2.0.26 .\" Generator: Asciidoctor 2.0.26
.\" Date: 2026-05-07 .\" Date: 2026-05-07
.\" Manual: ruby-build Manual .\" Manual: ruby-build Manual
.\" Source: ruby-build 20260714 .\" Source: ruby-build 20260916
.\" Language: English .\" Language: English
.\" .\"
.TH "RUBY\-BUILD" "1" "2026-05-07" "ruby\-build 20260714" "ruby\-build Manual" .TH "RUBY\-BUILD" "1" "2026-05-07" "ruby\-build 20260916" "ruby\-build Manual"
.ie \n(.g .ds Aq \(aq .ie \n(.g .ds Aq \(aq
.el .ds Aq ' .el .ds Aq '
.ss \n[.ss] 0 .ss \n[.ss] 0

2
share/ruby-build/3.3.12 Normal file
View file

@ -0,0 +1,2 @@
install_package "openssl-3.0.21" "https://github.com/openssl/openssl/releases/download/openssl-3.0.21/openssl-3.0.21.tar.gz#617e29af8e421f46649484a4937e48c685e47f46488167c982f88bc4ec1d522f" openssl --if needs_openssl:1.0.2-3.x.x
install_package "ruby-3.3.12" "https://cache.ruby-lang.org/pub/ruby/3.3/ruby-3.3.12.tar.gz#b06d63beae271933033e27f0a389bc582a009e7845357d44365c39de525a051b" enable_shared standard

2
share/ruby-build/4.0.7 Normal file
View file

@ -0,0 +1,2 @@
install_package "openssl-3.0.22" "https://github.com/openssl/openssl/releases/download/openssl-3.0.22/openssl-3.0.22.tar.gz#67ebca7e50d17383028045486653492195b83db95f8558709701bb47b5c1ef81" openssl --if needs_openssl:1.1.1-3.x.x
install_package "ruby-4.0.7" "https://cache.ruby-lang.org/pub/ruby/4.0/ruby-4.0.7.tar.gz#911ace20f90d068ca0e4dda6d0e4f0f81e52e52f2dd4f4004c721e253412e82d" enable_shared standard

View file

@ -0,0 +1,2 @@
require_java 21
install_package "jruby-10.1.1.0" "https://repo1.maven.org/maven2/org/jruby/jruby-dist/10.1.1.0/jruby-dist-10.1.1.0-bin.tar.gz#1e08bff6a7f0134a4774fba37d8cf88b9dd4a7317bd49fca5af696a327450148" jruby

View file

@ -12,7 +12,7 @@ export -n RUBY_CONFIGURE_OPTS
cd "$INSTALL_ROOT" cd "$INSTALL_ROOT"
stub_repeated uname '-s : echo Darwin' stub_repeated uname '-s : echo Darwin'
stub sw_vers '-productVersion : echo 10.10' stub_repeated sw_vers '-productVersion : echo 10.10'
stub_repeated brew 'false' stub_repeated brew 'false'
# shellcheck disable=SC2016 # shellcheck disable=SC2016
stub_repeated make 'echo "make $(inspect_args "$@")" >> build.log' stub_repeated make 'echo "make $(inspect_args "$@")" >> build.log'
@ -43,3 +43,77 @@ OUT
unstub brew unstub brew
unstub make unstub make
} }
@test "dup3 and pipe2 are hidden from configure when building on older macOS" {
mkdir -p "$INSTALL_ROOT"
cd "$INSTALL_ROOT"
stub_repeated uname '-s : echo Darwin'
stub_repeated sw_vers '-productVersion : echo 26.6.2'
stub_repeated brew 'false'
# shellcheck disable=SC2016
stub_repeated make 'echo "make $(inspect_args "$@")" >> build.log'
cat > ./configure <<CON
#!${BASH}
echo ./configure "\$@" > build.log
echo dup3=\${ac_cv_func_dup3-unset} >> build.log
echo pipe2=\${ac_cv_func_pipe2-unset} >> build.log
CON
chmod +x ./configure
run_inline_definition <<DEF
build_package_standard ruby-3.4.0
DEF
assert_success
run cat build.log
assert_output <<OUT
./configure --prefix=$INSTALL_ROOT --with-ext=openssl,psych,+
dup3=no
pipe2=no
make -j 2
make install
OUT
unstub uname
unstub sw_vers
unstub brew
unstub make
}
@test "dup3 and pipe2 are left to configure on macOS 27" {
mkdir -p "$INSTALL_ROOT"
cd "$INSTALL_ROOT"
stub_repeated uname '-s : echo Darwin'
stub_repeated sw_vers '-productVersion : echo 27.0'
stub_repeated brew 'false'
# shellcheck disable=SC2016
stub_repeated make 'echo "make $(inspect_args "$@")" >> build.log'
cat > ./configure <<CON
#!${BASH}
echo ./configure "\$@" > build.log
echo dup3=\${ac_cv_func_dup3-unset} >> build.log
echo pipe2=\${ac_cv_func_pipe2-unset} >> build.log
CON
chmod +x ./configure
run_inline_definition <<DEF
build_package_standard ruby-3.4.0
DEF
assert_success
run cat build.log
assert_output <<OUT
./configure --prefix=$INSTALL_ROOT --with-ext=openssl,psych,+
dup3=unset
pipe2=unset
make -j 2
make install
OUT
unstub uname
unstub sw_vers
unstub brew
unstub make
}