diff --git a/bin/ruby-build b/bin/ruby-build index ebc4dcad..1e931da1 100755 --- a/bin/ruby-build +++ b/bin/ruby-build @@ -18,7 +18,7 @@ # -6, --ipv6 Resolve names to IPv6 addresses only # -RUBY_BUILD_VERSION="20260902" +RUBY_BUILD_VERSION="20260916" OLDIFS="$IFS" @@ -754,6 +754,13 @@ build_package_standard() { # 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 # ./configure --prefix=/path/to/ruby # shellcheck disable=SC2086,SC2153 capture_command ${!PACKAGE_CONFIGURE:-./configure} --prefix="${!PACKAGE_PREFIX_PATH:-$PREFIX_PATH}" \ diff --git a/script/release b/script/release index e1352e4d..b457a40b 100755 --- a/script/release +++ b/script/release @@ -8,7 +8,7 @@ # - creates a new Release on GitHub # - [automated] a GitHub Action will create a Homebrew PR for the new release -set -e +set -ex git fetch -q --tags origin master git checkout -q master diff --git a/share/man/man1/ruby-build.1 b/share/man/man1/ruby-build.1 index 145e39a2..d81aae40 100644 --- a/share/man/man1/ruby-build.1 +++ b/share/man/man1/ruby-build.1 @@ -2,12 +2,12 @@ .\" Title: ruby-build .\" Author: Mislav Marohnić .\" Generator: Asciidoctor 2.0.26 -.\" Date: 2026-05-01 +.\" Date: 2026-05-07 .\" Manual: ruby-build Manual -.\" Source: ruby-build 20260902 +.\" Source: ruby-build 20260916 .\" Language: English .\" -.TH "RUBY\-BUILD" "1" "2026-05-01" "ruby\-build 20260902" "ruby\-build Manual" +.TH "RUBY\-BUILD" "1" "2026-05-07" "ruby\-build 20260916" "ruby\-build Manual" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 diff --git a/share/ruby-build/4.0.7 b/share/ruby-build/4.0.7 new file mode 100644 index 00000000..d8f0affb --- /dev/null +++ b/share/ruby-build/4.0.7 @@ -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 diff --git a/test/compiler.bats b/test/compiler.bats index 58728379..14ac4daa 100755 --- a/test/compiler.bats +++ b/test/compiler.bats @@ -12,7 +12,7 @@ export -n RUBY_CONFIGURE_OPTS cd "$INSTALL_ROOT" 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' # shellcheck disable=SC2016 stub_repeated make 'echo "make $(inspect_args "$@")" >> build.log' @@ -43,3 +43,77 @@ OUT unstub brew 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 < 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 <> build.log' + + cat > ./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 <