rake-compiler-dock 1.9.1 → 1.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +80 -83
- data/.github/workflows/publish-images.yml +798 -46
- data/.github/workflows/publish-images.yml.erb +121 -0
- data/.github/workflows/release-images.yml +854 -45
- data/{History.md → CHANGELOG.md} +49 -0
- data/CONTRIBUTING.md +44 -1
- data/Dockerfile.jruby +3 -3
- data/Dockerfile.mri.erb +109 -59
- data/README.md +48 -6
- data/Rakefile +143 -40
- data/build/buildkitd.toml +2 -0
- data/build/gem_helper.rb +2 -2
- data/build/mk_musl_cross.sh +1 -1
- data/build/parallel_docker_build.rb +64 -23
- data/build/patches/{rake-compiler-1.2.9 → rake-compiler-1.3.1}/0004-Enable-build-of-static-libruby.patch +4 -2
- data/build/patches/{rake-compiler-1.2.9 → rake-compiler-1.3.1}/0005-build-miniruby-first.patch +2 -3
- data/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
- data/build/sudoers +1 -1
- data/lib/rake_compiler_dock/starter.rb +11 -1
- data/lib/rake_compiler_dock/version.rb +2 -2
- data/lib/rake_compiler_dock.rb +12 -18
- data/mingw64-ucrt/README.md +0 -44
- data/test/env/Dockerfile.alpine +1 -1
- data/test/fixtures/mig_test_rpc.defs +8 -0
- data/test/rcd_test/Gemfile +2 -2
- data/test/rcd_test/Rakefile +3 -2
- data/test/rcd_test/ext/mri/extconf.rb +2 -0
- data/test/rcd_test/rcd_test.gemspec +1 -1
- data/test/rcd_test/test/test_basic.rb +11 -0
- data/test/test_environment_variables.rb +13 -0
- data/test/test_mig.rb +18 -0
- data/test/test_parallel_docker_build.rb +2 -2
- data/test/test_starter.rb +6 -0
- data/test/test_versions.rb +1 -1
- data.tar.gz.sig +0 -0
- metadata +39 -9
- metadata.gz.sig +7 -0
- data/test/env/Dockerfile.centos +0 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b460cc3cd1ba5ef3c6410749a04b6da2de3fb4299e24d8b66114458c254f8fb5
|
|
4
|
+
data.tar.gz: 2d756b273405f0f363b695af76c94f4a4603d04a2c44ef407a4fa987b3d7051a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 425ffc11aeb0d6f3394008739a2dc8dfc5f78681b3351716fa1305d1e6b6fd20b6bd1fa6bb90191ed54d6e70bab1f75695a6633a22d7a45766f63ec95869e91a
|
|
7
|
+
data.tar.gz: 12e5b8ad94379ea7274d36f3b58d93bf3e5afc392e22c5e73b2281ec61b8b3d3852e0893ac6ca9233b9bc6a9b7d7a5452303efae64108b26c87035ea370ec736
|
checksums.yaml.gz.sig
ADDED
|
Binary file
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -44,10 +44,30 @@ jobs:
|
|
|
44
44
|
strategy:
|
|
45
45
|
fail-fast: false
|
|
46
46
|
matrix:
|
|
47
|
+
os:
|
|
48
|
+
- ubuntu-latest
|
|
49
|
+
- ubuntu-24.04-arm
|
|
50
|
+
platform:
|
|
51
|
+
- aarch64-linux-gnu
|
|
52
|
+
- aarch64-linux-musl
|
|
53
|
+
- aarch64-mingw-ucrt
|
|
54
|
+
- arm-linux-gnu
|
|
55
|
+
- arm-linux-musl
|
|
56
|
+
- arm64-darwin
|
|
57
|
+
- jruby
|
|
58
|
+
- x64-mingw-ucrt
|
|
59
|
+
- x64-mingw32
|
|
60
|
+
- x86-linux-gnu
|
|
61
|
+
- x86-linux-musl
|
|
62
|
+
- x86-mingw32
|
|
63
|
+
- x86_64-darwin
|
|
64
|
+
- x86_64-linux-gnu
|
|
65
|
+
- x86_64-linux-musl
|
|
47
66
|
include:
|
|
48
67
|
- platform: aarch64-linux-gnu
|
|
49
68
|
alias: aarch64-linux
|
|
50
69
|
- platform: aarch64-linux-musl
|
|
70
|
+
- platform: aarch64-mingw-ucrt
|
|
51
71
|
- platform: arm-linux-gnu
|
|
52
72
|
alias: arm-linux
|
|
53
73
|
- platform: arm-linux-musl
|
|
@@ -65,7 +85,7 @@ jobs:
|
|
|
65
85
|
- platform: x86_64-linux-gnu
|
|
66
86
|
alias: x86_64-linux
|
|
67
87
|
- platform: x86_64-linux-musl
|
|
68
|
-
runs-on:
|
|
88
|
+
runs-on: ${{ matrix.os }}
|
|
69
89
|
steps:
|
|
70
90
|
- uses: actions/checkout@v4
|
|
71
91
|
- uses: ruby/setup-ruby@v1
|
|
@@ -76,18 +96,20 @@ jobs:
|
|
|
76
96
|
- name: Fetch docker buildx layer cache
|
|
77
97
|
uses: actions/cache@v4
|
|
78
98
|
with:
|
|
79
|
-
path: tmp/build-cache
|
|
80
|
-
key: ${{ runner.os }}-${{ matrix.platform }}-
|
|
81
|
-
restore-keys: ${{ runner.os }}-${{ matrix.platform }}-
|
|
82
|
-
|
|
99
|
+
path: tmp/build-cache-${{ runner.arch }}
|
|
100
|
+
key: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-buildxz-${{ github.sha }}
|
|
101
|
+
restore-keys: ${{ runner.os }}-on-${{ runner.arch }}-${{ matrix.platform }}-buildxz
|
|
102
|
+
enableCrossOsArchive: true
|
|
103
|
+
- name: Change docker to a cache-able driver
|
|
83
104
|
run: |
|
|
84
105
|
docker buildx create --driver docker-container --use
|
|
85
|
-
bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,src=tmp/build-cache --cache-to=type=local,dest=tmp/build-cache-new
|
|
86
|
-
|
|
106
|
+
bundle exec rake build:${{ matrix.platform }} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
|
|
107
|
+
- name: Show docker images
|
|
108
|
+
run: docker images
|
|
87
109
|
- name: Update and prune docker buildx layer cache
|
|
88
110
|
run: |
|
|
89
|
-
rm -rf tmp/build-cache
|
|
90
|
-
mv tmp/build-cache-new tmp/build-cache
|
|
111
|
+
rm -rf tmp/build-cache-${{ runner.arch }}
|
|
112
|
+
mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
|
|
91
113
|
|
|
92
114
|
- name: Test the generated image
|
|
93
115
|
run: bundle exec rake test TEST_PLATFORM=${{ matrix.platform }}
|
|
@@ -100,6 +122,7 @@ jobs:
|
|
|
100
122
|
bundle exec rake gem:${{ matrix.platform }}
|
|
101
123
|
|
|
102
124
|
- name: Upload native gem
|
|
125
|
+
if: runner.arch == 'X64'
|
|
103
126
|
uses: actions/upload-artifact@v4
|
|
104
127
|
with:
|
|
105
128
|
name: gem-${{ matrix.platform }}
|
|
@@ -115,7 +138,7 @@ jobs:
|
|
|
115
138
|
bundle exec rake clean clobber
|
|
116
139
|
bundle exec rake gem:${{ matrix.platform }}
|
|
117
140
|
|
|
118
|
-
- if: matrix.static
|
|
141
|
+
- if: matrix.static && runner.arch == 'X64'
|
|
119
142
|
name: Upload static native gem
|
|
120
143
|
uses: actions/upload-artifact@v4
|
|
121
144
|
with:
|
|
@@ -130,7 +153,7 @@ jobs:
|
|
|
130
153
|
bundle exec rake clean clobber
|
|
131
154
|
bundle exec rake gem:${{ matrix.alias }}
|
|
132
155
|
|
|
133
|
-
- if: matrix.alias
|
|
156
|
+
- if: matrix.alias && runner.arch == 'X64'
|
|
134
157
|
name: Upload native gem ${{ matrix.alias }}
|
|
135
158
|
uses: actions/upload-artifact@v4
|
|
136
159
|
with:
|
|
@@ -144,7 +167,7 @@ jobs:
|
|
|
144
167
|
fail-fast: false
|
|
145
168
|
matrix:
|
|
146
169
|
os: [ubuntu-latest]
|
|
147
|
-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0"
|
|
170
|
+
ruby: ["4.0", "3.4", "3.3", "3.2", "3.1", "3.0"]
|
|
148
171
|
runs-on: ${{ matrix.os }}
|
|
149
172
|
steps:
|
|
150
173
|
- uses: actions/checkout@v4
|
|
@@ -169,14 +192,10 @@ jobs:
|
|
|
169
192
|
fail-fast: false
|
|
170
193
|
matrix:
|
|
171
194
|
platform: [x86_64-linux, x86_64-linux-gnu]
|
|
172
|
-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0"
|
|
195
|
+
ruby: ["4.0", "3.4", "3.3", "3.2", "3.1", "3.0"]
|
|
173
196
|
include:
|
|
174
197
|
# declare rubygems for each ruby version
|
|
175
198
|
- { ruby: "3.0", rubygems: "3.5.23" }
|
|
176
|
-
- { ruby: "2.7", rubygems: "3.4.22" }
|
|
177
|
-
- { ruby: "2.6", rubygems: "3.4.22" }
|
|
178
|
-
- { ruby: "2.5", rubygems: "3.3.26" }
|
|
179
|
-
- { ruby: "2.4", rubygems: "3.3.26" }
|
|
180
199
|
runs-on: ubuntu-latest
|
|
181
200
|
steps:
|
|
182
201
|
- uses: actions/checkout@v4
|
|
@@ -215,30 +234,28 @@ jobs:
|
|
|
215
234
|
- x86_64-linux
|
|
216
235
|
- x86_64-linux-gnu
|
|
217
236
|
- x86_64-linux-musl
|
|
218
|
-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0"
|
|
237
|
+
ruby: ["4.0", "3.4", "3.3", "3.2", "3.1", "3.0"]
|
|
219
238
|
include:
|
|
220
239
|
# declare rubygems for each ruby version
|
|
221
240
|
- { ruby: "3.0", rubygems: "3.5.23" }
|
|
222
|
-
- { ruby: "2.7", rubygems: "3.4.22" }
|
|
223
|
-
- { ruby: "2.6", rubygems: "3.4.22" }
|
|
224
|
-
- { ruby: "2.5", rubygems: "3.3.26" }
|
|
225
|
-
- { ruby: "2.4", rubygems: "3.3.26" }
|
|
226
241
|
# declare docker image for each platform
|
|
227
|
-
- { platform: aarch64-linux-musl, docker_tag: "-alpine" }
|
|
228
|
-
- { platform: arm-linux-musl, docker_tag: "-alpine" }
|
|
229
|
-
- { platform: x86-linux-musl, docker_tag: "-alpine" }
|
|
230
|
-
- { platform: x86_64-linux-musl, docker_tag: "-alpine" }
|
|
242
|
+
- { platform: aarch64-linux-musl, runon: "ubuntu-24.04-arm", docker_tag: "-alpine" }
|
|
243
|
+
- { platform: arm-linux-musl, runon: "ubuntu-24.04-arm", docker_tag: "-alpine" }
|
|
244
|
+
- { platform: x86-linux-musl, runon: "ubuntu-latest", docker_tag: "-alpine" }
|
|
245
|
+
- { platform: x86_64-linux-musl, runon: "ubuntu-latest", docker_tag: "-alpine" }
|
|
246
|
+
- { platform: x86_64-linux, runon: "ubuntu-latest" }
|
|
247
|
+
- { platform: x86_64-linux-gnu, runon: "ubuntu-latest" }
|
|
231
248
|
# declare docker platform for each platform
|
|
232
|
-
- { platform: aarch64-linux, docker_platform: "--platform=linux/arm64" }
|
|
233
|
-
- { platform: aarch64-linux-gnu, docker_platform: "--platform=linux/arm64" }
|
|
234
|
-
- { platform: aarch64-linux-musl, docker_platform: "--platform=linux/arm64" }
|
|
235
|
-
- { platform: arm-linux, docker_platform: "--platform=linux/arm/v7" }
|
|
236
|
-
- { platform: arm-linux-gnu, docker_platform: "--platform=linux/arm/v7" }
|
|
237
|
-
- { platform: arm-linux-musl, docker_platform: "--platform=linux/arm/v7" }
|
|
238
|
-
- { platform: x86-linux, docker_platform: "--platform=linux/386" }
|
|
239
|
-
- { platform: x86-linux-gnu, docker_platform: "--platform=linux/386" }
|
|
240
|
-
- { platform: x86-linux-musl, docker_platform: "--platform=linux/386" }
|
|
241
|
-
runs-on:
|
|
249
|
+
- { platform: aarch64-linux, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" }
|
|
250
|
+
- { platform: aarch64-linux-gnu, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" }
|
|
251
|
+
- { platform: aarch64-linux-musl, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" }
|
|
252
|
+
- { platform: arm-linux, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" }
|
|
253
|
+
- { platform: arm-linux-gnu, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" }
|
|
254
|
+
- { platform: arm-linux-musl, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" }
|
|
255
|
+
- { platform: x86-linux, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" }
|
|
256
|
+
- { platform: x86-linux-gnu, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" }
|
|
257
|
+
- { platform: x86-linux-musl, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" }
|
|
258
|
+
runs-on: ${{ matrix.runon }}
|
|
242
259
|
steps:
|
|
243
260
|
- uses: actions/checkout@v4
|
|
244
261
|
- name: Download gem-${{ matrix.platform }}
|
|
@@ -247,7 +264,6 @@ jobs:
|
|
|
247
264
|
name: gem-${{ matrix.platform }}
|
|
248
265
|
- name: Run tests
|
|
249
266
|
run: |
|
|
250
|
-
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
251
267
|
docker run --rm -v $PWD:/work -w /work \
|
|
252
268
|
${{ matrix.docker_platform}} ruby:${{ matrix.ruby }}${{ matrix.docker_tag }} \
|
|
253
269
|
sh -c "
|
|
@@ -264,34 +280,16 @@ jobs:
|
|
|
264
280
|
strategy:
|
|
265
281
|
fail-fast: false
|
|
266
282
|
matrix:
|
|
267
|
-
os: [macos-
|
|
268
|
-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0"
|
|
269
|
-
exclude:
|
|
270
|
-
# setup-ruby does not provide ruby 2.4 or 2.5 on arm64-darwin as of 2024-05-01
|
|
271
|
-
- os: macos-14
|
|
272
|
-
ruby: "2.4"
|
|
273
|
-
- os: macos-14
|
|
274
|
-
ruby: "2.5"
|
|
283
|
+
os: [macos-15-intel, macos-15]
|
|
284
|
+
ruby: ["4.0", "3.4", "3.3", "3.2", "3.1", "3.0"]
|
|
275
285
|
include:
|
|
276
|
-
- os: macos-
|
|
286
|
+
- os: macos-15-intel
|
|
277
287
|
platform: x86_64-darwin
|
|
278
|
-
- os: macos-
|
|
288
|
+
- os: macos-15
|
|
279
289
|
platform: arm64-darwin
|
|
280
290
|
- os: ubuntu-latest
|
|
281
291
|
ruby: jruby
|
|
282
292
|
platform: jruby
|
|
283
|
-
- os: windows-latest
|
|
284
|
-
ruby: "2.4"
|
|
285
|
-
platform: x64-mingw32
|
|
286
|
-
- os: windows-latest
|
|
287
|
-
ruby: "2.5"
|
|
288
|
-
platform: x64-mingw32
|
|
289
|
-
- os: windows-latest
|
|
290
|
-
ruby: "2.6"
|
|
291
|
-
platform: x64-mingw32
|
|
292
|
-
- os: windows-latest
|
|
293
|
-
ruby: "2.7"
|
|
294
|
-
platform: x64-mingw32
|
|
295
293
|
- os: windows-latest
|
|
296
294
|
ruby: "3.0"
|
|
297
295
|
platform: x64-mingw32
|
|
@@ -307,6 +305,9 @@ jobs:
|
|
|
307
305
|
- os: windows-latest
|
|
308
306
|
ruby: "3.4"
|
|
309
307
|
platform: x64-mingw-ucrt
|
|
308
|
+
- os: windows-latest
|
|
309
|
+
ruby: "4.0"
|
|
310
|
+
platform: x64-mingw-ucrt
|
|
310
311
|
runs-on: ${{ matrix.os }}
|
|
311
312
|
steps:
|
|
312
313
|
- uses: actions/checkout@v4
|
|
@@ -335,18 +336,6 @@ jobs:
|
|
|
335
336
|
fail-fast: false
|
|
336
337
|
matrix:
|
|
337
338
|
include:
|
|
338
|
-
- os: windows-latest
|
|
339
|
-
ruby: "2.4"
|
|
340
|
-
platform: x64-mingw32
|
|
341
|
-
- os: windows-latest
|
|
342
|
-
ruby: "2.5"
|
|
343
|
-
platform: x64-mingw32
|
|
344
|
-
- os: windows-latest
|
|
345
|
-
ruby: "2.6"
|
|
346
|
-
platform: x64-mingw32
|
|
347
|
-
- os: windows-latest
|
|
348
|
-
ruby: "2.7"
|
|
349
|
-
platform: x64-mingw32
|
|
350
339
|
- os: windows-latest
|
|
351
340
|
ruby: "3.0"
|
|
352
341
|
platform: x64-mingw32
|
|
@@ -362,6 +351,9 @@ jobs:
|
|
|
362
351
|
- os: windows-latest
|
|
363
352
|
ruby: "3.4"
|
|
364
353
|
platform: x64-mingw-ucrt
|
|
354
|
+
- os: windows-latest
|
|
355
|
+
ruby: "4.0"
|
|
356
|
+
platform: x64-mingw-ucrt
|
|
365
357
|
runs-on: ${{ matrix.os }}
|
|
366
358
|
steps:
|
|
367
359
|
- uses: actions/checkout@v4
|
|
@@ -390,31 +382,37 @@ jobs:
|
|
|
390
382
|
fail-fast: false
|
|
391
383
|
matrix:
|
|
392
384
|
include:
|
|
393
|
-
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
385
|
+
- runon: ubuntu-24.04-arm
|
|
386
|
+
from_image: ghcr.io/dtcooper/raspberrypi-os:latest
|
|
387
|
+
image_platform: linux/arm64
|
|
388
|
+
platform: aarch64-linux
|
|
389
|
+
dockerfile: debian
|
|
390
|
+
- runon: ubuntu-24.04-arm
|
|
391
|
+
from_image: ghcr.io/dtcooper/raspberrypi-os:latest
|
|
398
392
|
image_platform: linux/arm/v7
|
|
399
|
-
platform: arm-linux
|
|
393
|
+
platform: arm-linux
|
|
400
394
|
dockerfile: debian
|
|
401
|
-
-
|
|
395
|
+
- runon: ubuntu-24.04-arm
|
|
396
|
+
from_image: arm64v8/ubuntu
|
|
402
397
|
image_platform: linux/aarch64
|
|
403
398
|
platform: aarch64-linux # arm64v8 ships ruby 3.0, rubygems won't recognize -gnu suffix
|
|
404
399
|
dockerfile: debian
|
|
405
|
-
-
|
|
400
|
+
- runon: ubuntu-latest
|
|
401
|
+
from_image: i386/alpine
|
|
406
402
|
image_platform: linux/386
|
|
407
403
|
platform: x86-linux-musl
|
|
408
404
|
dockerfile: alpine
|
|
409
|
-
-
|
|
405
|
+
- runon: ubuntu-24.04-arm
|
|
406
|
+
from_image: arm32v6/alpine
|
|
410
407
|
image_platform: linux/arm/v6
|
|
411
408
|
platform: arm-linux-musl
|
|
412
409
|
dockerfile: alpine
|
|
413
|
-
-
|
|
410
|
+
- runon: ubuntu-latest
|
|
411
|
+
from_image: alpine
|
|
414
412
|
image_platform: linux/amd64
|
|
415
413
|
platform: x86_64-linux-musl
|
|
416
414
|
dockerfile: alpine
|
|
417
|
-
runs-on:
|
|
415
|
+
runs-on: ${{ matrix.runon }}
|
|
418
416
|
steps:
|
|
419
417
|
- uses: actions/checkout@v4
|
|
420
418
|
- name: Download gem-${{ matrix.platform }}
|
|
@@ -423,7 +421,6 @@ jobs:
|
|
|
423
421
|
name: gem-${{ matrix.platform }}
|
|
424
422
|
- name: Build ${{ matrix.from_image }} image
|
|
425
423
|
run: |
|
|
426
|
-
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
|
|
427
424
|
docker build --rm --build-arg from_image=${{ matrix.from_image }} --platform=${{ matrix.image_platform }} -t ruby-test -f test/env/Dockerfile.${{ matrix.dockerfile }} .
|
|
428
425
|
- name: Run tests
|
|
429
426
|
run: docker run --rm -t --network=host -v `pwd`:/build ruby-test
|