Skip to content

Commit fc0c47f

Browse files
authored
Merge pull request #48 from flavorjones/flavorjones/ruby-4-rcd-1.11.0.rc2
precompiled: add native support for ruby 4
2 parents a7f8335 + 49471f2 commit fc0c47f

7 files changed

Lines changed: 5966 additions & 26 deletions

File tree

.github/workflows/precompiled.yml

Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ on:
2121
jobs:
2222
ruby_versions:
2323
outputs:
24-
setup_ruby: "['3.1', '3.2', '3.3', '3.4']"
25-
image_tag: "['3.1', '3.2', '3.3', '3.4']"
24+
# these are usually the same, but are different once we get to ruby release candidates
25+
setup_ruby: "['3.2', '3.3', '3.4', 'head']"
26+
image_tag: "['3.2', '3.3', '3.4', '4.0.0-preview2']"
2627
runs-on: ubuntu-latest
2728
steps:
2829
- run: echo "generating rubies ..."
@@ -36,7 +37,7 @@ jobs:
3637
- uses: ruby/setup-ruby@v1
3738
with:
3839
working-directory: precompiled
39-
ruby-version: "3.3"
40+
ruby-version: "3.4"
4041
bundler-cache: true
4142
bundler: latest
4243
- id: rcd_image_version
@@ -48,10 +49,16 @@ jobs:
4849
strategy:
4950
fail-fast: false
5051
matrix:
51-
runs-on: ["ubuntu-latest", "macos-13", "windows-latest"]
52+
runs-on: ["ubuntu-latest", "macos-latest", "windows-latest"]
5253
ruby: ${{ fromJSON(needs.ruby_versions.outputs.setup_ruby) }}
5354
runs-on: ${{matrix.runs-on}}
5455
steps:
56+
# git crlf needed to apply patches cleanly on windows runners
57+
- name: configure git crlf
58+
if: matrix.runs-on == 'windows-latest'
59+
run: |
60+
git config --system core.autocrlf false
61+
git config --system core.eol lf
5562
- uses: actions/checkout@v4
5663
- uses: ruby/setup-ruby@v1
5764
with:
@@ -76,7 +83,7 @@ jobs:
7683
- uses: ruby/setup-ruby@v1
7784
with:
7885
working-directory: precompiled
79-
ruby-version: "3.3"
86+
ruby-version: "3.4"
8087
bundler-cache: true
8188
- run: ./bin/test-gem-build gems ruby
8289
working-directory: precompiled
@@ -91,7 +98,7 @@ jobs:
9198
strategy:
9299
fail-fast: false
93100
matrix:
94-
os: ["ubuntu-latest", "macos-13", "windows-latest"]
101+
os: ["ubuntu-latest", "macos-15", "windows-latest"]
95102
ruby: ${{ fromJSON(needs.ruby_versions.outputs.setup_ruby) }}
96103
runs-on: ${{ matrix.os }}
97104
steps:
@@ -118,13 +125,13 @@ jobs:
118125
- "aarch64-linux-musl"
119126
- "arm-linux-gnu"
120127
- "arm-linux-musl"
128+
- "arm64-darwin"
129+
- "x64-mingw-ucrt"
121130
- "x86-linux-gnu"
122131
- "x86-linux-musl"
132+
- "x86_64-darwin"
123133
- "x86_64-linux-gnu"
124134
- "x86_64-linux-musl"
125-
- "arm64-darwin"
126-
- "x86_64-darwin"
127-
- "x64-mingw-ucrt"
128135
runs-on: ubuntu-latest
129136
steps:
130137
- uses: actions/checkout@v4
@@ -158,27 +165,27 @@ jobs:
158165
- "x86_64-linux-musl"
159166
ruby: ${{ fromJSON(needs.ruby_versions.outputs.image_tag) }}
160167
include:
168+
- { runon: "ubuntu-latest", platform: x86_64-linux-gnu }
161169
# declare docker image for each platform
162-
- { platform: aarch64-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
163-
- { platform: arm-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
164-
- { platform: x86-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
165-
- { platform: x86_64-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
170+
- { runon: "ubuntu-latest", platform: aarch64-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
171+
- { runon: "ubuntu-latest", platform: arm-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
172+
- { runon: "ubuntu-latest", platform: x86-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
173+
- { runon: "ubuntu-latest", platform: x86_64-linux-musl, docker_tag: "-alpine", bootstrap: "apk add bash &&" }
166174
# declare docker platform for each platform
167-
- { platform: aarch64-linux-gnu, docker_platform: "--platform=linux/arm64" }
168-
- { platform: aarch64-linux-musl, docker_platform: "--platform=linux/arm64" }
169-
- { platform: arm-linux-gnu, docker_platform: "--platform=linux/arm/v7" }
170-
- { platform: arm-linux-musl, docker_platform: "--platform=linux/arm/v7" }
171-
- { platform: x86-linux-gnu, docker_platform: "--platform=linux/386" }
172-
- { platform: x86-linux-musl, docker_platform: "--platform=linux/386" }
173-
runs-on: ubuntu-latest
175+
- { runon: "ubuntu-24.04-arm", platform: aarch64-linux-gnu, docker_platform: "--platform=linux/arm64" }
176+
- { runon: "ubuntu-24.04-arm", platform: aarch64-linux-musl, docker_platform: "--platform=linux/arm64" }
177+
- { runon: "ubuntu-24.04-arm", platform: arm-linux-gnu, docker_platform: "--platform=linux/arm/v7" }
178+
- { runon: "ubuntu-24.04-arm", platform: arm-linux-musl, docker_platform: "--platform=linux/arm/v7" }
179+
- { runon: "ubuntu-latest", platform: x86-linux-gnu, docker_platform: "--platform=linux/386" }
180+
- { runon: "ubuntu-latest", platform: x86-linux-musl, docker_platform: "--platform=linux/386" }
181+
runs-on: ${{ matrix.runon }}
174182
steps:
175183
- uses: actions/checkout@v4
176184
- uses: actions/download-artifact@v4
177185
with:
178186
name: cruby-${{ matrix.platform }}-gem
179187
path: precompiled/gems
180188
- run: |
181-
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
182189
docker run --rm -v $PWD/precompiled:/precompiled -w /precompiled \
183190
${{ matrix.docker_platform }} ruby:${{ matrix.ruby }}${{ matrix.docker_tag }} \
184191
sh -c "
@@ -197,8 +204,8 @@ jobs:
197204
- x86_64-darwin
198205
ruby: ${{ fromJSON(needs.ruby_versions.outputs.setup_ruby) }}
199206
include:
200-
- { platform: arm64-darwin, os: macos-14 }
201-
- { platform: x86_64-darwin, os: macos-13 }
207+
- { platform: arm64-darwin, os: macos-15 }
208+
- { platform: x86_64-darwin, os: macos-15-intel }
202209
runs-on: ${{matrix.os}}
203210
steps:
204211
- uses: actions/checkout@v4

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Changelog
22

3+
## next / unreleased
4+
5+
### `precompiled`
6+
7+
- Update rake-compiler-dock to v1.11.0.rc1 (for Ruby 4 support)
8+
- Drop native support for Ruby 3.1
9+
- Add native support for Ruby 4.0 (preview3)
10+
11+
312
## v0.7.0 / 2025-09-14
413

514
### General changes

precompiled/Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ gemspec
88
gem "rake", "~> 13.0"
99

1010
gem "rake-compiler"
11-
gem "rake-compiler-dock", "1.9.1"
11+
gem "rake-compiler-dock", "1.11.0.rc1"
1212

1313
gem "minitest", "~> 5.0"

precompiled/Rakefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ cross_platforms = [
1919
"x86_64-darwin",
2020
"x64-mingw-ucrt",
2121
]
22-
RakeCompilerDock.set_ruby_cc_version("~> 3.1")
22+
RakeCompilerDock.set_ruby_cc_version(">= 3.2")
2323

2424
rcee_precompiled_spec = Bundler.load_gemspec("rcee_precompiled.gemspec")
2525
Gem::PackageTask.new(rcee_precompiled_spec).define #packaged_tarball version of the gem for platform=ruby

precompiled/ext/precompiled/extconf.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,10 @@ def configure_packaged_libraries
3939

4040
# use the packaged libyaml
4141
recipe.activate
42-
pkg_config(File.join(recipe.path, "lib", "pkgconfig", "yaml-0.1.pc"))
42+
43+
# explicitly add include/lib paths (pkg_config may not extract them correctly on all platforms)
44+
$INCFLAGS << " -I#{File.join(recipe.path, "include")}"
45+
$LIBPATH << File.join(recipe.path, "lib")
4346

4447
# assert that we can build against the packaged libyaml
4548
unless have_library("yaml", "yaml_get_version", "yaml.h")
@@ -62,6 +65,7 @@ def libyaml_recipe
6265
sha256: "c642ae9b75fee120b2d96c712538bd2cf283228d2337df2cf2988e3c02678ef4"
6366
}]
6467
recipe.target = File.join(PACKAGE_ROOT_DIR, "ports")
68+
recipe.patch_files = Dir[File.join(PACKAGE_ROOT_DIR, "patches", "libyaml", "*.patch")].sort
6569
end
6670
end
6771
end

0 commit comments

Comments
 (0)