Ruby/OpenSSL 3.2.4, 3.3.3 and 4.0.2 added OpenSSL 4 support and ship
with Ruby 3.3.12, 3.4.10 and 4.0.6. Widen the needs_openssl upper
bound to 4.x.x for those releases and later, including the matching
development definitions, so an installed OpenSSL 4 is used instead of
vendoring OpenSSL 3. Make update-cruby apply the same boundaries to
new definitions, and cover a 4.x.x upper bound in the build tests.
Signed-off-by: Patrick Linnane <patrick@linnane.io>
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/22311https://github.com/rbenv/ruby-build/issues/2640
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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>
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>
"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>
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>