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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +80 -83
  4. data/.github/workflows/publish-images.yml +798 -46
  5. data/.github/workflows/publish-images.yml.erb +121 -0
  6. data/.github/workflows/release-images.yml +854 -45
  7. data/{History.md → CHANGELOG.md} +49 -0
  8. data/CONTRIBUTING.md +44 -1
  9. data/Dockerfile.jruby +3 -3
  10. data/Dockerfile.mri.erb +109 -59
  11. data/README.md +48 -6
  12. data/Rakefile +143 -40
  13. data/build/buildkitd.toml +2 -0
  14. data/build/gem_helper.rb +2 -2
  15. data/build/mk_musl_cross.sh +1 -1
  16. data/build/parallel_docker_build.rb +64 -23
  17. data/build/patches/{rake-compiler-1.2.9 → rake-compiler-1.3.1}/0004-Enable-build-of-static-libruby.patch +4 -2
  18. data/build/patches/{rake-compiler-1.2.9 → rake-compiler-1.3.1}/0005-build-miniruby-first.patch +2 -3
  19. data/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
  20. data/build/sudoers +1 -1
  21. data/lib/rake_compiler_dock/starter.rb +11 -1
  22. data/lib/rake_compiler_dock/version.rb +2 -2
  23. data/lib/rake_compiler_dock.rb +12 -18
  24. data/mingw64-ucrt/README.md +0 -44
  25. data/test/env/Dockerfile.alpine +1 -1
  26. data/test/fixtures/mig_test_rpc.defs +8 -0
  27. data/test/rcd_test/Gemfile +2 -2
  28. data/test/rcd_test/Rakefile +3 -2
  29. data/test/rcd_test/ext/mri/extconf.rb +2 -0
  30. data/test/rcd_test/rcd_test.gemspec +1 -1
  31. data/test/rcd_test/test/test_basic.rb +11 -0
  32. data/test/test_environment_variables.rb +13 -0
  33. data/test/test_mig.rb +18 -0
  34. data/test/test_parallel_docker_build.rb +2 -2
  35. data/test/test_starter.rb +6 -0
  36. data/test/test_versions.rb +1 -1
  37. data.tar.gz.sig +0 -0
  38. metadata +39 -9
  39. metadata.gz.sig +7 -0
  40. data/test/env/Dockerfile.centos +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17f3ab24c0e7f48cc7eba4fbfce3af5d2e178643a6d0d5663b92a635ec9c48ae
4
- data.tar.gz: 25c51dc1ebf4872403b8e9a2233dea9d4e47edb44506a7a65b2088657625de47
3
+ metadata.gz: b460cc3cd1ba5ef3c6410749a04b6da2de3fb4299e24d8b66114458c254f8fb5
4
+ data.tar.gz: 2d756b273405f0f363b695af76c94f4a4603d04a2c44ef407a4fa987b3d7051a
5
5
  SHA512:
6
- metadata.gz: f2a8bc6953b45749a195aa0e742f3d84c18705d286b364acc2b0c9533f30f762e34b5ed09ffed3261749d3ff90654d858592f405bb68c17babc001246b65ef0b
7
- data.tar.gz: 0c4e8fe5ba886f41b824637f018bac313d0fe4d8f4440a7789e90d706b4a9f96c54b0b06e2486a75bd94d54bd1172c43882b1e1060e09b5d1f086952e32ddd92
6
+ metadata.gz: 425ffc11aeb0d6f3394008739a2dc8dfc5f78681b3351716fa1305d1e6b6fd20b6bd1fa6bb90191ed54d6e70bab1f75695a6633a22d7a45766f63ec95869e91a
7
+ data.tar.gz: 12e5b8ad94379ea7274d36f3b58d93bf3e5afc392e22c5e73b2281ec61b8b3d3852e0893ac6ca9233b9bc6a9b7d7a5452303efae64108b26c87035ea370ec736
checksums.yaml.gz.sig ADDED
Binary file
@@ -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: ubuntu-latest
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 }}-buildx-${{ github.sha }}
81
- restore-keys: ${{ runner.os }}-${{ matrix.platform }}-buildx
82
- - name: Build docker image
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 --load"
86
- docker images
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", "2.7", "2.6", "2.5", "2.4"]
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", "2.7", "2.6", "2.5", "2.4"]
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", "2.7", "2.6", "2.5", "2.4"]
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: ubuntu-latest
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-13, macos-14]
268
- ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7", "2.6", "2.5", "2.4"]
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-13
286
+ - os: macos-15-intel
277
287
  platform: x86_64-darwin
278
- - os: macos-14
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
- - from_image: amd64/centos
394
- image_platform: linux/amd64
395
- platform: x86_64-linux # centos-8 ships ruby 2.5, rubygems won't recognize -gnu suffix
396
- dockerfile: centos
397
- - from_image: navikey/raspbian-bullseye
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 # bullseye ships ruby 2.7, rubygems won't recognize -gnu suffix
393
+ platform: arm-linux
400
394
  dockerfile: debian
401
- - from_image: arm64v8/ubuntu
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
- - from_image: i386/alpine
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
- - from_image: arm32v6/alpine
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
- - from_image: alpine
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: ubuntu-latest
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