rake-compiler-dock 1.9.1 → 1.11.0.rc1

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 (39) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +74 -74
  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} +37 -0
  8. data/CONTRIBUTING.md +44 -1
  9. data/Dockerfile.jruby +3 -3
  10. data/Dockerfile.mri.erb +103 -58
  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 -17
  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/Rakefile +1 -0
  28. data/test/rcd_test/ext/mri/extconf.rb +2 -0
  29. data/test/rcd_test/rcd_test.gemspec +1 -1
  30. data/test/rcd_test/test/test_basic.rb +11 -0
  31. data/test/test_environment_variables.rb +13 -0
  32. data/test/test_mig.rb +18 -0
  33. data/test/test_parallel_docker_build.rb +2 -2
  34. data/test/test_starter.rb +6 -0
  35. data/test/test_versions.rb +1 -1
  36. data.tar.gz.sig +0 -0
  37. metadata +39 -9
  38. metadata.gz.sig +0 -0
  39. 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: e7b9a2f0d923f15cbc4fe407bf349950e9d17cc3d34ced2d1998f5f326e73355
4
+ data.tar.gz: 46b66db870a95c7f540c0bb05967a00da1e37c55c69ea78ffa21f4ad7b988949
5
5
  SHA512:
6
- metadata.gz: f2a8bc6953b45749a195aa0e742f3d84c18705d286b364acc2b0c9533f30f762e34b5ed09ffed3261749d3ff90654d858592f405bb68c17babc001246b65ef0b
7
- data.tar.gz: 0c4e8fe5ba886f41b824637f018bac313d0fe4d8f4440a7789e90d706b4a9f96c54b0b06e2486a75bd94d54bd1172c43882b1e1060e09b5d1f086952e32ddd92
6
+ metadata.gz: a44d3babc2a45bc8543321998c5304fb9edf2b32626764b878b29f307ad366d44f41a4ad1ce6076e6b9bd279b67a79c70079d6b663eeda6d9cfaae484e5d04ac
7
+ data.tar.gz: 106e89b7340ec2ca007f8219af91ed24433efabf2f5ad821fc1e442cc6d068e15313497b08dacc10b288014fffef4ff8b557ee939df59ed8b17563cad87a371c
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.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
148
171
  runs-on: ${{ matrix.os }}
149
172
  steps:
150
173
  - uses: actions/checkout@v4
@@ -169,14 +192,11 @@ 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.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
173
196
  include:
174
197
  # declare rubygems for each ruby version
175
198
  - { ruby: "3.0", rubygems: "3.5.23" }
176
199
  - { 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
200
  runs-on: ubuntu-latest
181
201
  steps:
182
202
  - uses: actions/checkout@v4
@@ -215,30 +235,29 @@ jobs:
215
235
  - x86_64-linux
216
236
  - x86_64-linux-gnu
217
237
  - x86_64-linux-musl
218
- ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7", "2.6", "2.5", "2.4"]
238
+ ruby: ["4.0.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
219
239
  include:
220
240
  # declare rubygems for each ruby version
221
241
  - { ruby: "3.0", rubygems: "3.5.23" }
222
242
  - { 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
243
  # 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" }
244
+ - { platform: aarch64-linux-musl, runon: "ubuntu-24.04-arm", docker_tag: "-alpine" }
245
+ - { platform: arm-linux-musl, runon: "ubuntu-24.04-arm", docker_tag: "-alpine" }
246
+ - { platform: x86-linux-musl, runon: "ubuntu-latest", docker_tag: "-alpine" }
247
+ - { platform: x86_64-linux-musl, runon: "ubuntu-latest", docker_tag: "-alpine" }
248
+ - { platform: x86_64-linux, runon: "ubuntu-latest" }
249
+ - { platform: x86_64-linux-gnu, runon: "ubuntu-latest" }
231
250
  # 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
251
+ - { platform: aarch64-linux, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" }
252
+ - { platform: aarch64-linux-gnu, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" }
253
+ - { platform: aarch64-linux-musl, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm64" }
254
+ - { platform: arm-linux, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" }
255
+ - { platform: arm-linux-gnu, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" }
256
+ - { platform: arm-linux-musl, runon: "ubuntu-24.04-arm", docker_platform: "--platform=linux/arm/v7" }
257
+ - { platform: x86-linux, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" }
258
+ - { platform: x86-linux-gnu, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" }
259
+ - { platform: x86-linux-musl, runon: "ubuntu-latest", docker_platform: "--platform=linux/386" }
260
+ runs-on: ${{ matrix.runon }}
242
261
  steps:
243
262
  - uses: actions/checkout@v4
244
263
  - name: Download gem-${{ matrix.platform }}
@@ -247,7 +266,6 @@ jobs:
247
266
  name: gem-${{ matrix.platform }}
248
267
  - name: Run tests
249
268
  run: |
250
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
251
269
  docker run --rm -v $PWD:/work -w /work \
252
270
  ${{ matrix.docker_platform}} ruby:${{ matrix.ruby }}${{ matrix.docker_tag }} \
253
271
  sh -c "
@@ -264,31 +282,16 @@ jobs:
264
282
  strategy:
265
283
  fail-fast: false
266
284
  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"
285
+ os: [macos-15-intel, macos-15]
286
+ ruby: ["4.0.0-preview2", "3.4", "3.3", "3.2", "3.1", "3.0", "2.7"]
275
287
  include:
276
- - os: macos-13
288
+ - os: macos-15-intel
277
289
  platform: x86_64-darwin
278
- - os: macos-14
290
+ - os: macos-15
279
291
  platform: arm64-darwin
280
292
  - os: ubuntu-latest
281
293
  ruby: jruby
282
294
  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
295
  - os: windows-latest
293
296
  ruby: "2.7"
294
297
  platform: x64-mingw32
@@ -307,6 +310,9 @@ jobs:
307
310
  - os: windows-latest
308
311
  ruby: "3.4"
309
312
  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
310
316
  runs-on: ${{ matrix.os }}
311
317
  steps:
312
318
  - uses: actions/checkout@v4
@@ -335,15 +341,6 @@ jobs:
335
341
  fail-fast: false
336
342
  matrix:
337
343
  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
344
  - os: windows-latest
348
345
  ruby: "2.7"
349
346
  platform: x64-mingw32
@@ -362,6 +359,9 @@ jobs:
362
359
  - os: windows-latest
363
360
  ruby: "3.4"
364
361
  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
365
365
  runs-on: ${{ matrix.os }}
366
366
  steps:
367
367
  - uses: actions/checkout@v4
@@ -390,31 +390,32 @@ jobs:
390
390
  fail-fast: false
391
391
  matrix:
392
392
  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
393
+ - runon: ubuntu-24.04-arm
394
+ from_image: navikey/raspbian-bullseye
398
395
  image_platform: linux/arm/v7
399
396
  platform: arm-linux # bullseye ships ruby 2.7, rubygems won't recognize -gnu suffix
400
397
  dockerfile: debian
401
- - from_image: arm64v8/ubuntu
398
+ - runon: ubuntu-24.04-arm
399
+ from_image: arm64v8/ubuntu
402
400
  image_platform: linux/aarch64
403
401
  platform: aarch64-linux # arm64v8 ships ruby 3.0, rubygems won't recognize -gnu suffix
404
402
  dockerfile: debian
405
- - from_image: i386/alpine
403
+ - runon: ubuntu-latest
404
+ from_image: i386/alpine
406
405
  image_platform: linux/386
407
406
  platform: x86-linux-musl
408
407
  dockerfile: alpine
409
- - from_image: arm32v6/alpine
408
+ - runon: ubuntu-24.04-arm
409
+ from_image: arm32v6/alpine
410
410
  image_platform: linux/arm/v6
411
411
  platform: arm-linux-musl
412
412
  dockerfile: alpine
413
- - from_image: alpine
413
+ - runon: ubuntu-latest
414
+ from_image: alpine
414
415
  image_platform: linux/amd64
415
416
  platform: x86_64-linux-musl
416
417
  dockerfile: alpine
417
- runs-on: ubuntu-latest
418
+ runs-on: ${{ matrix.runon }}
418
419
  steps:
419
420
  - uses: actions/checkout@v4
420
421
  - name: Download gem-${{ matrix.platform }}
@@ -423,7 +424,6 @@ jobs:
423
424
  name: gem-${{ matrix.platform }}
424
425
  - name: Build ${{ matrix.from_image }} image
425
426
  run: |
426
- docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
427
427
  docker build --rm --build-arg from_image=${{ matrix.from_image }} --platform=${{ matrix.image_platform }} -t ruby-test -f test/env/Dockerfile.${{ matrix.dockerfile }} .
428
428
  - name: Run tests
429
429
  run: docker run --rm -t --network=host -v `pwd`:/build ruby-test