Skip to content

Commit dd2fd89

Browse files
authored
fix(ci): use macos-15 with Rosetta for darwin-amd64 Ruby builds (#230)
1 parent 4075aa9 commit dd2fd89

2 files changed

Lines changed: 27 additions & 8 deletions

File tree

.github/workflows/build-ruby-from-source.yml

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,21 +108,40 @@ jobs:
108108
run: |
109109
brew install openssl@3 readline libyaml gmp rust
110110
111-
- name: Build Ruby (Unix)
112-
if: matrix.build_os != 'windows'
111+
- name: Build Ruby (Linux)
112+
if: matrix.build_os == 'linux'
113+
env:
114+
RUBY_CONFIGURE_OPTS: "--enable-shared --disable-install-doc"
115+
CPPFLAGS: "-DENABLE_PATH_CHECK=0"
116+
run: |
117+
ruby-build ${{ matrix.version }} "$RUNNER_TEMP/ruby-install/ruby"
118+
119+
- name: Build Ruby (macOS ARM64)
120+
if: matrix.platform == 'darwin-arm64'
113121
env:
114-
RUBY_CONFIGURE_OPTS: >-
115-
${{ matrix.platform == 'darwin-arm64'
116-
&& '--disable-shared --disable-install-doc'
117-
|| '--enable-shared --disable-install-doc' }}
122+
RUBY_CONFIGURE_OPTS: "--disable-shared --disable-install-doc"
118123
CPPFLAGS: "-DENABLE_PATH_CHECK=0"
119124
run: |
120125
ruby-build ${{ matrix.version }} "$RUNNER_TEMP/ruby-install/ruby"
121126
127+
- name: Build Ruby (macOS x86_64 via Rosetta)
128+
if: matrix.platform == 'darwin-amd64'
129+
env:
130+
RUBY_CONFIGURE_OPTS: "--enable-shared --disable-install-doc"
131+
CPPFLAGS: "-DENABLE_PATH_CHECK=0"
132+
run: |
133+
arch -x86_64 ruby-build ${{ matrix.version }} "$RUNNER_TEMP/ruby-install/ruby"
134+
122135
- name: Verify Ruby (Unix)
123136
if: matrix.build_os != 'windows'
124137
run: |
125138
"$RUNNER_TEMP/ruby-install/ruby/bin/ruby" --version
139+
# Verify architecture matches expected platform
140+
FILE_ARCH=$(file "$RUNNER_TEMP/ruby-install/ruby/bin/ruby")
141+
echo "Binary architecture: $FILE_ARCH"
142+
if [ "${{ matrix.platform }}" = "darwin-amd64" ]; then
143+
echo "$FILE_ARCH" | grep -q "x86_64" || { echo "ERROR: Expected x86_64 binary"; exit 1; }
144+
fi
126145
127146
- name: Package Ruby (Unix)
128147
if: matrix.build_os != 'windows'

scripts/detect-ruby-gaps/main.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ type MatrixOutput struct {
4343
var allPlatforms = []Platform{
4444
{Name: "linux-amd64", Runner: "ubuntu-latest", BuildOS: "linux", Arch: "amd64"},
4545
{Name: "linux-arm64", Runner: "ubuntu-24.04-arm", BuildOS: "linux", Arch: "arm64"},
46-
{Name: "darwin-amd64", Runner: "macos-13", BuildOS: "darwin", Arch: "amd64"},
47-
{Name: "darwin-arm64", Runner: "macos-latest", BuildOS: "darwin", Arch: "arm64"},
46+
{Name: "darwin-amd64", Runner: "macos-15", BuildOS: "darwin", Arch: "amd64"},
47+
{Name: "darwin-arm64", Runner: "macos-15", BuildOS: "darwin", Arch: "arm64"},
4848
{Name: "windows-amd64", Runner: "windows-latest", BuildOS: "windows", Arch: "amd64"},
4949
{Name: "windows-386", Runner: "windows-latest", BuildOS: "windows", Arch: "386"},
5050
}

0 commit comments

Comments
 (0)