Skip to content

Commit 6959c96

Browse files
authored
Merge pull request #175 from rake-compiler/flavorjones/ruby-4-support
Add support for Ruby 4.0.0-preview2
2 parents 20514df + 6f453e8 commit 6959c96

File tree

6 files changed

+33
-7
lines changed

6 files changed

+33
-7
lines changed

.github/workflows/ci.yml

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ jobs:
167167
fail-fast: false
168168
matrix:
169169
os: [ubuntu-latest]
170-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
170+
ruby: ["4.0.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
171171
runs-on: ${{ matrix.os }}
172172
steps:
173173
- uses: actions/checkout@v4
@@ -192,7 +192,7 @@ jobs:
192192
fail-fast: false
193193
matrix:
194194
platform: [x86_64-linux, x86_64-linux-gnu]
195-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
195+
ruby: ["4.0.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
196196
include:
197197
# declare rubygems for each ruby version
198198
- { ruby: "3.0", rubygems: "3.5.23" }
@@ -235,7 +235,7 @@ jobs:
235235
- x86_64-linux
236236
- x86_64-linux-gnu
237237
- x86_64-linux-musl
238-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
238+
ruby: ["4.0.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
239239
include:
240240
# declare rubygems for each ruby version
241241
- { ruby: "3.0", rubygems: "3.5.23" }
@@ -283,7 +283,7 @@ jobs:
283283
fail-fast: false
284284
matrix:
285285
os: [macos-15-intel, macos-15]
286-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
286+
ruby: ["4.0.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
287287
include:
288288
- os: macos-15-intel
289289
platform: x86_64-darwin
@@ -310,6 +310,9 @@ jobs:
310310
- os: windows-latest
311311
ruby: "3.4"
312312
platform: x64-mingw-ucrt
313+
- os: windows-latest
314+
ruby: "head" # setup-ruby does not have 4.0 previews yet on windows
315+
platform: x64-mingw-ucrt
313316
runs-on: ${{ matrix.os }}
314317
steps:
315318
- uses: actions/checkout@v4
@@ -356,6 +359,9 @@ jobs:
356359
- os: windows-latest
357360
ruby: "3.4"
358361
platform: x64-mingw-ucrt
362+
- os: windows-latest
363+
ruby: "head" # setup-ruby does not have 4.0 previews yet on windows
364+
platform: x64-mingw-ucrt
359365
runs-on: ${{ matrix.os }}
360366
steps:
361367
- uses: actions/checkout@v4

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
## next / unreleased
44

5+
- Add Ruby 4.0.0-preview2 cross-compilation support.
56
- Bump Ruby 3.3 to v3.3.10 (from v3.3.9) @flavorjones
67
- Bump Ruby 3.4 to v3.4.8 (from v3.4.5) @flavorjones
78
- Bump rake-compiler dependency to v1.3.1 (from v1.2.9) @flavorjones

Dockerfile.mri.erb

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ ENV BASH_ENV=/etc/rubybashrc
3939
##
4040
USER rubyuser
4141

42-
ENV RBENV_RUBIES="3.1.7 3.4.8"
42+
ENV RBENV_RUBIES="3.1.7 3.4.8 4.0.0-preview2"
4343

4444
# Install the bootstrap rubies
4545
RUN bash -c " \
@@ -152,6 +152,7 @@ xrubies_build_plan = if platform =~ /x64-mingw-ucrt/
152152
[
153153
# Rubyinstaller-3.1+ is platform x64-mingw-ucrt
154154
["3.4.8:3.3.10:3.2.9:3.1.7", "3.4.8"],
155+
["4.0.0-preview2", "4.0.0-preview2"],
155156
]
156157
elsif platform =~ /aarch64-mingw-ucrt/
157158
[
@@ -166,6 +167,7 @@ else
166167
[
167168
["2.7.8", "3.1.7"],
168169
["3.4.8:3.3.10:3.2.9:3.1.7:3.0.7", "3.4.8"],
170+
["4.0.0-preview2", "4.0.0-preview2"],
169171
]
170172
end
171173

@@ -269,6 +271,6 @@ COPY build/sudoers /etc/sudoers.d/rake-compiler-dock
269271

270272
RUN bash -c "rbenv global 3.4.8"
271273

272-
ENV RUBY_CC_VERSION=3.4.8:3.3.10:3.2.9:3.1.7:3.0.7:2.7.8
274+
ENV RUBY_CC_VERSION=4.0.0:3.4.8:3.3.10:3.2.9:3.1.7:3.0.7:2.7.8
273275

274276
CMD bash
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
diff --git a/tasks/bin/cross-ruby.rake b/tasks/bin/cross-ruby.rake
2+
index 3d23eed6..904c12e0 100644
3+
--- a/tasks/bin/cross-ruby.rake
4+
+++ b/tasks/bin/cross-ruby.rake
5+
@@ -150,6 +150,11 @@
6+
7+
# make
8+
file "#{build_dir}/ruby.exe" => ["#{build_dir}/Makefile"] do |t|
9+
+ if ruby_cc_version.start_with?("ruby-4.0")
10+
+ # https://bugs.ruby-lang.org/issues/21792 - hopefully will be fixed by 4.0.0 final
11+
+ FileUtils.rm_f("#{USER_HOME}/sources/#{ruby_cc_version}/spec/ruby/optional/capi/ext/digest_spec.c")
12+
+ end
13+
+
14+
if ruby_cc_version.start_with?("ruby-3.1") && mingw_target =~ /darwin/
15+
# for later 3.1.x releases, we need to explicitly build miniruby
16+
# see https://bugs.ruby-lang.org/issues/19239

lib/rake_compiler_dock.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def exec(*args, &block)
9292
#
9393
def cross_rubies
9494
{
95+
"4.0" => "4.0.0",
9596
"3.4" => "3.4.8",
9697
"3.3" => "3.3.10",
9798
"3.2" => "3.2.9",

test/test_versions.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ def test_ruby_cc_versions_requirements
5555
assert_equal(expected, RakeCompilerDock.ruby_cc_version("~> 3.2.0", "~> 3.4.0"))
5656
assert_equal(expected, RakeCompilerDock.ruby_cc_version(Gem::Requirement.new("~> 3.2.0"), Gem::Requirement.new("~> 3.4.0")))
5757

58-
expected = [cross["3.4"], cross["3.3"], cross["3.2"]].join(":")
58+
expected = [cross["4.0"], cross["3.4"], cross["3.3"], cross["3.2"]].join(":")
5959
assert_equal(expected, RakeCompilerDock.ruby_cc_version(">= 3.2"))
6060
assert_equal(expected, RakeCompilerDock.ruby_cc_version(Gem::Requirement.new(">= 3.2")))
6161

0 commit comments

Comments
 (0)