Skip to content

Commit f181983

Browse files
authored
Merge pull request ged#657 from larskanis/add-musl
Add binary gems for `aarch64-linux-musl` and `x86_64-linux-musl`
2 parents 385edeb + 3ce8a71 commit f181983

File tree

3 files changed

+32
-6
lines changed

3 files changed

+32
-6
lines changed

.github/workflows/binary-gems.yml

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ jobs:
2828
- platform: "x64-mingw32"
2929
- platform: "x86-mingw32"
3030
- platform: "x86_64-linux"
31+
- platform: "x86_64-linux-musl"
3132
- platform: "aarch64-linux"
33+
- platform: "aarch64-linux-musl"
3234
- platform: "x86_64-darwin"
3335
- platform: "arm64-darwin"
3436
steps:
@@ -156,7 +158,7 @@ jobs:
156158
157159
158160
job_binary_multiarch:
159-
name: multiarch (${{matrix.platform}} on ${{matrix.from_image}} ${{matrix.image_platform}})
161+
name: multiarch (${{matrix.gem_platform}} on ${{matrix.from_image}} ${{matrix.image_platform}})
160162
needs: rcd_build
161163
strategy:
162164
fail-fast: false
@@ -166,12 +168,28 @@ jobs:
166168
image_platform: linux/x86_64
167169
gem_platform: x86_64-linux
168170
dockerfile: centos
171+
- from_image: alpine
172+
image_platform: linux/x86_64
173+
gem_platform: x86_64-linux-musl
174+
dockerfile: alpine
175+
- from_image: alpine
176+
image_platform: linux/arm64
177+
gem_platform: aarch64-linux-musl
178+
dockerfile: alpine
179+
os: ubuntu-24.04-arm
169180
- from_image: alpine
170181
image_platform: linux/x86_64
171182
gem_platform: x86_64-linux
172183
dockerfile: alpine
184+
docker_arg: "--build-arg with_pkg=gcompat"
185+
- from_image: alpine
186+
image_platform: linux/arm64
187+
gem_platform: aarch64-linux
188+
dockerfile: alpine
189+
docker_arg: "--build-arg with_pkg=gcompat"
190+
os: ubuntu-24.04-arm
173191

174-
runs-on: ubuntu-latest
192+
runs-on: ${{ matrix.os || 'ubuntu-latest' }}
175193
steps:
176194
- uses: actions/checkout@v4
177195
- name: Download gem-${{ matrix.gem_platform }}
@@ -180,8 +198,7 @@ jobs:
180198
name: binary-gem-${{ matrix.gem_platform }}
181199
- name: Build image and Run tests
182200
run: |
183-
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
184-
docker build --rm --platform ${{matrix.image_platform}} --build-arg from_image=${{matrix.from_image}} -t ruby-test -f spec/env/Dockerfile.${{matrix.dockerfile}} .
201+
docker build --rm --platform ${{matrix.image_platform}} --build-arg from_image=${{matrix.from_image}} ${{matrix.docker_arg}} -t ruby-test -f spec/env/Dockerfile.${{matrix.dockerfile}} .
185202
docker run --rm -t --network=host -v `pwd`:/build ruby-test
186203
187204
job_binary_yugabyte:

Rakefile

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ CrossLibraries = [
5050
['x86-mingw32', 'mingw', 'i686-w64-mingw32'],
5151
['x64-mingw32', 'mingw64', 'x86_64-w64-mingw32'],
5252
['x86_64-linux', 'linux-x86_64', 'x86_64-linux-gnu'],
53+
['x86_64-linux-musl', 'linux-x86_64', 'x86_64-unknown-linux-musl'],
5354
['aarch64-linux', 'linux-aarch64', 'aarch64-linux-gnu'],
55+
['aarch64-linux-musl', 'linux-aarch64', 'aarch64-linux-musl'],
5456
['x86_64-darwin', 'darwin64-x86_64', 'x86_64-apple-darwin'],
5557
['arm64-darwin', 'darwin64-arm64', 'arm64-apple-darwin'],
5658
].map do |platform, openssl_config, toolchain|
@@ -68,7 +70,13 @@ Rake::ExtensionTask.new do |ext|
6870
ext.lib_dir = 'lib'
6971
ext.source_pattern = "*.{c,h}"
7072
ext.cross_compile = true
71-
ext.cross_platform = CrossLibraries.map(&:platform)
73+
74+
# Activate current cross compiled platform only.
75+
# This is to work around the issue that `linux` platform is selected in `linux-musl` image.
76+
ext.cross_platform = CrossLibraries.map(&:platform).select do |pl|
77+
m = ENV["RCD_IMAGE"]&.match(/:(?<ruby_ver>[\d\.]+)-mri-(?<platform>[-\w]+)$/)
78+
m && m[:platform] == pl
79+
end
7280

7381
ext.cross_config_options += CrossLibraries.map do |xlib|
7482
{

spec/env/Dockerfile.alpine

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
ARG from_image
22
FROM ${from_image}
33

4+
ARG with_pkg
45
RUN uname -a
5-
RUN apk add ruby ruby-rake ruby-dev git gcc make musl-dev gcompat postgresql16 sudo
6+
RUN apk add ruby ruby-rake ruby-dev git gcc make musl-dev postgresql16 sudo $with_pkg
67

78
RUN git config --global --add safe.directory /build
89
RUN ruby --version

0 commit comments

Comments
 (0)