Skip to content

Commit 055da73

Browse files
authored
Merge pull request #442 from sparklemotion/flavorjones-434-better-musl-support
introduce general musl support
2 parents da30d5d + aba0c06 commit 055da73

File tree

4 files changed

+60
-49
lines changed

4 files changed

+60
-49
lines changed

.github/workflows/ci.yml

+48-41
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,8 @@ jobs:
4141
ruby-version: "3.3"
4242
bundler-cache: true
4343
apt-get: libsqlite3-dev
44-
- run: bundle exec rake compile test -- --enable-system-libraries
44+
- run: bundle exec rake compile -- --enable-system-libraries
45+
- run: bundle exec rake test
4546

4647
test:
4748
needs: basic
@@ -215,7 +216,7 @@ jobs:
215216
name: source-gem
216217
path: gems
217218
- run: ./bin/test-gem-install gems -- --${{ matrix.syslib }}-system-libraries ${{ matrix.compile_flags }}
218-
shell: bash
219+
shell: sh
219220

220221
build_native_gem:
221222
needs: native_setup
@@ -224,14 +225,18 @@ jobs:
224225
fail-fast: false
225226
matrix:
226227
platform:
227-
- "aarch64-linux"
228-
- "arm-linux"
229-
- "arm64-darwin"
230-
- "x64-mingw-ucrt"
231-
- "x64-mingw32"
232-
- "x86-linux"
233-
- "x86_64-darwin"
234-
- "x86_64-linux"
228+
- aarch64-linux-gnu
229+
- aarch64-linux-musl
230+
- arm-linux-gnu
231+
- arm-linux-musl
232+
- arm64-darwin
233+
- x64-mingw-ucrt
234+
- x64-mingw32
235+
- x86-linux-gnu
236+
- x86-linux-musl
237+
- x86_64-darwin
238+
- x86_64-linux-gnu
239+
- x86_64-linux-musl
235240
runs-on: ubuntu-latest
236241
steps:
237242
- uses: actions/checkout@v4
@@ -256,35 +261,28 @@ jobs:
256261
fail-fast: false
257262
matrix:
258263
platform:
259-
- aarch64-linux
260-
# - aarch64-linux-gnu
261-
# - aarch64-linux-musl
262-
- arm-linux
263-
# - arm-linux-gnu
264-
# - arm-linux-musl
265-
- x86-linux
266-
# - x86-linux-gnu
267-
# - x86-linux-musl
268-
- x86_64-linux
269-
# - x86_64-linux-gnu
270-
# - x86_64-linux-musl
264+
- aarch64-linux-gnu
265+
- aarch64-linux-musl
266+
- arm-linux-gnu
267+
- arm-linux-musl
268+
- x86-linux-gnu
269+
- x86-linux-musl
270+
- x86_64-linux-gnu
271+
- x86_64-linux-musl
271272
ruby: ["3.3", "3.2", "3.1", "3.0"]
272273
include:
273-
# # declare docker image for each platform
274-
# - { platform: aarch64-linux-musl, docker_tag: "-alpine" }
275-
# - { platform: arm-linux-musl, docker_tag: "-alpine" }
276-
# - { platform: x86-linux-musl, docker_tag: "-alpine" }
277-
# - { platform: x86_64-linux-musl, docker_tag: "-alpine" }
274+
# declare docker image for each platform
275+
- { platform: aarch64-linux-musl, docker_tag: "-alpine", bootstrap: "apk add build-base &&" }
276+
- { platform: arm-linux-musl, docker_tag: "-alpine", bootstrap: "apk add build-base &&" }
277+
- { platform: x86-linux-musl, docker_tag: "-alpine", bootstrap: "apk add build-base &&" }
278+
- { platform: x86_64-linux-musl, docker_tag: "-alpine", bootstrap: "apk add build-base &&" }
278279
# declare docker platform for each platform
279-
- { platform: aarch64-linux, docker_platform: "--platform=linux/arm64" }
280-
# - { platform: aarch64-linux-gnu, docker_platform: "--platform=linux/arm64" }
281-
# - { platform: aarch64-linux-musl, docker_platform: "--platform=linux/arm64" }
282-
- { platform: arm-linux, docker_platform: "--platform=linux/arm/v7" }
283-
# - { platform: arm-linux-gnu, docker_platform: "--platform=linux/arm/v7" }
284-
# - { platform: arm-linux-musl, docker_platform: "--platform=linux/arm/v7" }
285-
- { platform: x86-linux, docker_platform: "--platform=linux/386" }
286-
# - { platform: x86-linux-gnu, docker_platform: "--platform=linux/386" }
287-
# - { platform: x86-linux-musl, docker_platform: "--platform=linux/386" }
280+
- { platform: aarch64-linux-gnu, docker_platform: "--platform=linux/arm64" }
281+
- { platform: aarch64-linux-musl, docker_platform: "--platform=linux/arm64" }
282+
- { platform: arm-linux-gnu, docker_platform: "--platform=linux/arm/v7" }
283+
- { platform: arm-linux-musl, docker_platform: "--platform=linux/arm/v7" }
284+
- { platform: x86-linux-gnu, docker_platform: "--platform=linux/386" }
285+
- { platform: x86-linux-musl, docker_platform: "--platform=linux/386" }
288286
runs-on: ubuntu-latest
289287
steps:
290288
- uses: actions/checkout@v4
@@ -295,8 +293,12 @@ jobs:
295293
- run: |
296294
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
297295
docker run --rm -v $PWD:/work -w /work \
298-
${{ matrix.docker_platform}} ruby:${{ matrix.ruby }} \
299-
./bin/test-gem-install ./gems
296+
${{ matrix.docker_platform}} ruby:${{ matrix.ruby }}${{ matrix.docker_tag }} \
297+
sh -c "
298+
${{ matrix.bootstrap }}
299+
gem update --system &&
300+
./bin/test-gem-install ./gems
301+
"
300302
301303
test_the_rest:
302304
name: "${{ matrix.platform }} ${{ matrix.ruby }}"
@@ -335,7 +337,7 @@ jobs:
335337
name: cruby-${{ matrix.platform }}-gem
336338
path: gems
337339
- run: ./bin/test-gem-install gems
338-
shell: bash
340+
shell: sh
339341

340342
cruby-x86_64-linux-musl-install:
341343
needs: build_native_gem
@@ -345,16 +347,21 @@ jobs:
345347
include:
346348
- { ruby: "3.0", flavor: "alpine" }
347349
- { ruby: "3.1", flavor: "alpine3.18" }
350+
- { ruby: "3.1", flavor: "alpine3.19" }
348351
- { ruby: "3.2", flavor: "alpine3.18" }
352+
- { ruby: "3.2", flavor: "alpine3.19" }
349353
- { ruby: "3.3", flavor: "alpine3.18" }
354+
- { ruby: "3.3", flavor: "alpine3.19" }
350355
runs-on: ubuntu-latest
351356
container:
352357
image: ruby:${{matrix.ruby}}-${{matrix.flavor}}
353358
steps:
354359
- uses: actions/checkout@v4
355360
- uses: actions/download-artifact@v3
356361
with:
357-
name: cruby-x86_64-linux-gem
362+
name: cruby-x86_64-linux-musl-gem
358363
path: gems
359-
- run: apk add bash build-base
364+
- run: apk add build-base
365+
- if: matrix.ruby == '3.0' # https://github.com/rake-compiler/rake-compiler/pull/236
366+
run: gem update --system
360367
- run: ./bin/test-gem-install ./gems

Gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ group :development do
66
gem "minitest", "5.22.3"
77

88
gem "rake-compiler", "1.2.7"
9-
gem "rake-compiler-dock", "1.4.0"
9+
gem "rake-compiler-dock", "1.5.0"
1010

1111
gem "ruby_memcheck", "2.3.0" if Gem::Platform.local.os == "linux"
1212

bin/test-gem-install

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#! /usr/bin/env bash
1+
#! /usr/bin/env sh
22
#
33
# run as part of CI
44
#
@@ -15,14 +15,14 @@ test -e /etc/os-release && cat /etc/os-release
1515

1616
set -e -x -u
1717

18-
pushd $GEMS_DIR
18+
cd $GEMS_DIR
1919

2020
gemfile=$(ls *.gem | head -n1)
2121
ls -l ${gemfile}
2222
gem install --no-document ${gemfile} -- ${INSTALL_FLAGS}
2323
gem list -d sqlite3
2424

25-
popd
25+
cd ..
2626

2727
bundle install --local || bundle install
2828

rakelib/native.rake

+8-4
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,18 @@ require "yaml"
88

99
cross_rubies = ["3.3.0", "3.2.0", "3.1.0", "3.0.0"]
1010
cross_platforms = [
11-
"aarch64-linux",
12-
"arm-linux",
11+
"aarch64-linux-gnu",
12+
"aarch64-linux-musl",
13+
"arm-linux-gnu",
14+
"arm-linux-musl",
1315
"arm64-darwin",
1416
"x64-mingw-ucrt",
1517
"x64-mingw32",
16-
"x86-linux",
18+
"x86-linux-gnu",
19+
"x86-linux-musl",
1720
"x86_64-darwin",
18-
"x86_64-linux"
21+
"x86_64-linux-gnu",
22+
"x86_64-linux-musl"
1923
]
2024
ENV["RUBY_CC_VERSION"] = cross_rubies.join(":")
2125

0 commit comments

Comments
 (0)