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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.github/workflows/ci.yml +74 -74
- 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} +37 -0
- data/CONTRIBUTING.md +44 -1
- data/Dockerfile.jruby +3 -3
- data/Dockerfile.mri.erb +103 -58
- 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 -17
- 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/Rakefile +1 -0
- 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 +0 -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: e7b9a2f0d923f15cbc4fe407bf349950e9d17cc3d34ced2d1998f5f326e73355
|
|
4
|
+
data.tar.gz: 46b66db870a95c7f540c0bb05967a00da1e37c55c69ea78ffa21f4ad7b988949
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a44d3babc2a45bc8543321998c5304fb9edf2b32626764b878b29f307ad366d44f41a4ad1ce6076e6b9bd279b67a79c70079d6b663eeda6d9cfaae484e5d04ac
|
|
7
|
+
data.tar.gz: 106e89b7340ec2ca007f8219af91ed24433efabf2f5ad821fc1e442cc6d068e15313497b08dacc10b288014fffef4ff8b557ee939df59ed8b17563cad87a371c
|
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", "2.7"
|
|
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"
|
|
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"
|
|
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:
|
|
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-
|
|
268
|
-
ruby: ["3.4", "3.3", "3.2", "3.1", "3.0", "2.7"
|
|
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-
|
|
288
|
+
- os: macos-15-intel
|
|
277
289
|
platform: x86_64-darwin
|
|
278
|
-
- os: macos-
|
|
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
|
-
-
|
|
394
|
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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
|
-
-
|
|
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:
|
|
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
|