Skip to content

Commit 35b31ce

Browse files
committed
Check CAPI ext binary compatibility
1 parent 0dc1cd4 commit 35b31ce

3 files changed

Lines changed: 72 additions & 0 deletions

File tree

.github/actions/capiext/action.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
name: rubyspec C-API extensions
2+
3+
inputs:
4+
builddir:
5+
required: false
6+
default: '.'
7+
8+
outputs:
9+
key:
10+
value: >-
11+
${{
12+
!steps.restore.outputs.cache-hit &&
13+
github.ref == 'refs/heads/master' &&
14+
steps.config.outputs.key
15+
}}
16+
17+
runs:
18+
using: composite
19+
20+
steps:
21+
- id: config
22+
shell: bash
23+
run: |
24+
eval $(grep -e '^arch *=' -e '^ruby_version *=' -e '^DLEXT *=' Makefile |
25+
sed 's/ *= */=/')
26+
key=capiexts-${arch}-${ruby_version}
27+
echo key=$key >> $GITHUB_OUTPUT
28+
echo DLEXT=$DLEXT >> $GITHUB_OUTPUT
29+
working-directory: ${{ inputs.builddir }}
30+
31+
- name: CAPI extensions cache
32+
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
33+
id: cache
34+
with:
35+
path: ${{ inputs.builddir }}/spec/ruby/optional/capi/ext/
36+
key: ${{ steps.config.outputs.key }}
37+
38+
- name: Force rubyspec CAPI extension binaries up to date
39+
shell: bash
40+
run: |
41+
touch ${{ inputs.builddir }}/spec/ruby/optional/capi/ext/*.$DLEXT
42+
env:
43+
DLEXT: ${{ steps.config.outputs.DLEXT }}
44+
if: ${{ steps.cache.outputs.cache-hit }}

.github/workflows/macos.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ jobs:
4545
os: macos-14
4646
- test_task: check
4747
os: macos-15
48+
capi_check: true
4849
- test_task: check
4950
os: macos-13
5051
fail-fast: false
@@ -159,6 +160,19 @@ jobs:
159160
if: ${{ matrix.test_task == 'check' && matrix.skipped_tests }}
160161
continue-on-error: ${{ matrix.continue-on-skipped_tests || false }}
161162

163+
- name: CAPI extensions
164+
uses: ./.github/actions/capiext
165+
with:
166+
builddir: build
167+
if: ${{ matrix.capi_check }}
168+
169+
- name: Check with previous CAPI extensions
170+
run: |
171+
make -s test-spec
172+
env:
173+
RUBY_TESTOPTS: '-v --tty=no'
174+
if: ${{ matrix.capi_check }}
175+
162176
- uses: ./.github/actions/slack
163177
with:
164178
label: ${{ matrix.os }} / ${{ matrix.test_task }}

.github/workflows/ubuntu.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ jobs:
3939
- test_task: test-bundled-gems
4040
- test_task: check
4141
os: ubuntu-24.04
42+
capi_check: true
4243
# ubuntu-24.04-arm jobs don't start on ruby/ruby as of 2025-09-04
4344
#- test_task: check
4445
# os: ubuntu-24.04-arm
@@ -152,6 +153,19 @@ jobs:
152153
DESTDIR=${RUNNER_TEMP-${TMPDIR-/tmp}}/installed
153154
$SETARCH make test-pc "DESTDIR=$DESTDIR"
154155
156+
- name: CAPI extensions
157+
uses: ./.github/actions/capiext
158+
with:
159+
builddir: build
160+
if: ${{ matrix.capi_check }}
161+
162+
- name: Check with previous CAPI extensions
163+
run: |
164+
$SETARCH make -s test-spec
165+
env:
166+
RUBY_TESTOPTS: '-v --tty=no'
167+
if: ${{ matrix.capi_check }}
168+
155169
- uses: ./.github/actions/slack
156170
with:
157171
label: ${{ matrix.test_task }} ${{ matrix.configure }}${{ matrix.arch }}

0 commit comments

Comments
 (0)