Skip to content

Commit 2fbbaec

Browse files
ci(release): drop macos-13 and harden cross-platform configure (#213)
1 parent 0f1bd18 commit 2fbbaec

File tree

1 file changed

+52
-35
lines changed

1 file changed

+52
-35
lines changed

.github/workflows/release.yml

Lines changed: 52 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ jobs:
2323
vixos: linux
2424
arch: aarch64
2525

26-
# macOS Intel runner (macos-13 retired)
2726
- os: macos-15-intel
2827
vixos: macos
2928
arch: x86_64
@@ -48,10 +47,10 @@ jobs:
4847
uses: lukka/get-cmake@latest
4948

5049
# -------------------------
51-
# Linux deps (native)
50+
# Linux deps (native only)
5251
# -------------------------
5352
- name: Install deps (Linux)
54-
if: runner.os == 'Linux'
53+
if: runner.os == 'Linux' && matrix.arch != 'aarch64'
5554
shell: bash
5655
run: |
5756
set -euxo pipefail
@@ -69,25 +68,20 @@ jobs:
6968
run: |
7069
set -euxo pipefail
7170
72-
retry() { n=0; until [ $n -ge 3 ]; do "$@" && break; n=$((n+1)); sleep 5; done; [ $n -lt 3 ]; }
73-
74-
retry sudo apt-get update
75-
76-
# Cross compilers + binutils
77-
retry sudo apt-get install -y --no-install-recommends \
78-
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu
79-
80-
# Enable multiarch and install ARM64 runtime + dev libs
8171
sudo dpkg --add-architecture arm64
82-
retry sudo apt-get update
72+
sudo apt-get update
8373
84-
# Runtime libs often required to resolve dependencies cleanly
85-
retry sudo apt-get install -y --no-install-recommends \
86-
libc6:arm64 libstdc++6:arm64 libgcc-s1:arm64
74+
# Cross compilers
75+
sudo apt-get install -y --no-install-recommends \
76+
gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
8777
88-
# Dev libs for find_package() during cross configure
89-
retry sudo apt-get install -y --no-install-recommends \
90-
libssl-dev:arm64 zlib1g-dev:arm64 libsqlite3-dev:arm64 libbrotli-dev:arm64
78+
# ARM64 dev libs (for find_package on cross builds)
79+
sudo apt-get install -y --no-install-recommends \
80+
pkg-config ninja-build ca-certificates \
81+
libssl-dev:arm64 \
82+
zlib1g-dev:arm64 \
83+
libsqlite3-dev:arm64 \
84+
libbrotli-dev:arm64
9185
9286
cat > toolchain-aarch64.cmake <<'EOF'
9387
set(CMAKE_SYSTEM_NAME Linux)
@@ -96,7 +90,7 @@ jobs:
9690
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
9791
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
9892
99-
# Prefer arm64 sysroot paths when cross compiling
93+
# Make CMake search target libs/includes first
10094
set(CMAKE_FIND_ROOT_PATH
10195
/usr/aarch64-linux-gnu
10296
/usr/lib/aarch64-linux-gnu
@@ -110,6 +104,17 @@ jobs:
110104
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
111105
EOF
112106
107+
# -------------------------
108+
# macOS deps (help pkg-config + openssl path)
109+
# -------------------------
110+
- name: Install deps (macOS)
111+
if: runner.os == 'macOS'
112+
shell: bash
113+
run: |
114+
set -euxo pipefail
115+
brew update
116+
brew install pkg-config openssl@3 || true
117+
113118
# -------------------------
114119
# Windows deps
115120
# -------------------------
@@ -125,29 +130,41 @@ jobs:
125130
- name: Configure (Unix)
126131
if: runner.os != 'Windows'
127132
shell: bash
133+
env:
134+
GH_PAGER: cat
135+
PAGER: cat
128136
run: |
129137
set -euxo pipefail
130138
131-
COMMON_ARGS=(
132-
-G Ninja
139+
CMAKE_ARGS=(
140+
-S . -B build -G Ninja
133141
-DCMAKE_BUILD_TYPE=Release
134142
-DVIX_ENABLE_INSTALL=OFF
135-
# Keep release CI portable across platforms:
143+
144+
# Stabilize release CI: disable deps that are not guaranteed everywhere
136145
-DVIX_DB_USE_MYSQL=OFF
137146
-DVIX_CORE_WITH_MYSQL=OFF
138147
-DVIX_ENABLE_HTTP_COMPRESSION=OFF
148+
139149
-DCMAKE_MESSAGE_LOG_LEVEL=VERBOSE
140150
--log-level=VERBOSE
141151
)
142152
143153
if [ "${{ runner.os }}" = "Linux" ] && [ "${{ matrix.arch }}" = "aarch64" ]; then
144-
cmake -S . -B build "${COMMON_ARGS[@]}" \
145-
-DCMAKE_TOOLCHAIN_FILE="${GITHUB_WORKSPACE}/toolchain-aarch64.cmake" \
146-
--debug-find
147-
else
148-
cmake -S . -B build "${COMMON_ARGS[@]}" --debug-find
154+
CMAKE_ARGS+=(-DCMAKE_TOOLCHAIN_FILE="${GITHUB_WORKSPACE}/toolchain-aarch64.cmake" --debug-find)
149155
fi
150156
157+
if [ "${{ runner.os }}" = "macOS" ]; then
158+
# Help OpenSSL discovery on macOS runners (Homebrew)
159+
if [ -d "/opt/homebrew/opt/openssl@3" ]; then
160+
CMAKE_ARGS+=(-DOPENSSL_ROOT_DIR=/opt/homebrew/opt/openssl@3)
161+
elif [ -d "/usr/local/opt/openssl@3" ]; then
162+
CMAKE_ARGS+=(-DOPENSSL_ROOT_DIR=/usr/local/opt/openssl@3)
163+
fi
164+
fi
165+
166+
cmake "${CMAKE_ARGS[@]}"
167+
151168
- name: Dump CMake logs (Unix)
152169
if: failure() && runner.os != 'Windows'
153170
shell: bash
@@ -178,7 +195,6 @@ jobs:
178195
build/CMakeFiles/CMakeError.log
179196
build/CMakeFiles/CMakeOutput.log
180197
build/CMakeFiles/CMakeConfigureLog.yaml
181-
build/CMakeFiles/*.log
182198
if-no-files-found: warn
183199

184200
- name: Build (Unix)
@@ -195,7 +211,11 @@ jobs:
195211
if: runner.os == 'Windows'
196212
shell: pwsh
197213
run: |
198-
$openssl = "C:\Program Files\OpenSSL-Win64"
214+
$openssl = (Get-ChildItem "C:\Program Files" -Directory -ErrorAction SilentlyContinue |
215+
Where-Object { $_.Name -like "OpenSSL-*" } | Select-Object -First 1).FullName
216+
if (-not $openssl) { $openssl = "C:\Program Files\OpenSSL-Win64" }
217+
Write-Host "OPENSSL_ROOT_DIR=$openssl"
218+
199219
cmake -S . -B build -A x64 `
200220
-DVIX_ENABLE_INSTALL=OFF `
201221
-DVIX_DB_USE_MYSQL=OFF `
@@ -226,7 +246,7 @@ jobs:
226246
if [ -z "$BIN" ]; then
227247
echo "Expected vix binary not found. Listing build/ ..." >&2
228248
ls -la build || true
229-
find build -maxdepth 6 -type f -name vix -print || true
249+
find build -maxdepth 5 -type f -name vix -print || true
230250
exit 1
231251
fi
232252
@@ -267,9 +287,6 @@ jobs:
267287
Compress-Archive -Path dist\vix.exe -DestinationPath "dist\$asset" -Force
268288
Remove-Item dist\vix.exe -Force
269289
270-
# -------------------------
271-
# Upload dist
272-
# -------------------------
273290
- name: Upload dist
274291
uses: actions/upload-artifact@v4
275292
with:
@@ -286,7 +303,7 @@ jobs:
286303
with:
287304
path: dist-all
288305

289-
- name: Flatten (best effort)
306+
- name: Flatten
290307
shell: bash
291308
run: |
292309
set -euxo pipefail

0 commit comments

Comments
 (0)