Skip to content

Commit 92a8bda

Browse files
committed
fix(ci): disable SIMD to prevent SIGILL, add Windows and macOS tests
- Disable AVX/NEON SIMD on Linux CI runners to prevent illegal instruction crashes (GitHub runners don't support all AVX2/FMA instructions at runtime) - Add macOS ARM64 tests with NEON enabled (macos-latest has M1) - Add Windows MSVC tests with vcpkg for SQLite dependency - Add Windows MinGW tests via MSYS2 - Rename jobs for clarity (test -> test-linux, etc.) - Update artifact names to avoid conflicts
1 parent 828c0ed commit 92a8bda

1 file changed

Lines changed: 131 additions & 11 deletions

File tree

.github/workflows/ci.yml

Lines changed: 131 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ on:
88
pull_request:
99

1010
jobs:
11-
test:
11+
# =============================================================================
12+
# Linux Tests
13+
# =============================================================================
14+
test-linux:
1215
runs-on: ubuntu-latest
1316

1417
steps:
@@ -26,8 +29,13 @@ jobs:
2629
python3-pip \
2730
gcovr
2831
29-
- name: Configure (coverage)
30-
run: meson setup build_coverage -Dbuildtype=debugoptimized -Db_coverage=true
32+
- name: Configure (coverage, no SIMD)
33+
run: |
34+
meson setup build_coverage \
35+
-Dbuildtype=debugoptimized \
36+
-Db_coverage=true \
37+
-Denable_simd_avx=false \
38+
-Denable_simd_neon=false
3139
3240
- name: Build
3341
run: meson compile -C build_coverage
@@ -50,10 +58,13 @@ jobs:
5058
- name: Upload coverage artifacts
5159
uses: actions/upload-artifact@v4
5260
with:
53-
name: coverage
61+
name: coverage-linux
5462
path: coverage/
5563

56-
tsan:
64+
# =============================================================================
65+
# Linux TSAN
66+
# =============================================================================
67+
tsan-linux:
5768
runs-on: ubuntu-latest
5869

5970
steps:
@@ -69,19 +80,24 @@ jobs:
6980
pkg-config \
7081
libsqlite3-dev
7182
72-
- name: Configure (TSAN)
83+
- name: Configure (TSAN, no SIMD)
7384
run: |
7485
CC=clang CXX=clang++ meson setup build_tsan \
7586
-Dbuildtype=debugoptimized \
76-
-Db_sanitize=thread
87+
-Db_sanitize=thread \
88+
-Denable_simd_avx=false \
89+
-Denable_simd_neon=false
7790
7891
- name: Build
7992
run: meson compile -C build_tsan
8093

8194
- name: Test
8295
run: meson test -C build_tsan
8396

84-
benchmarks:
97+
# =============================================================================
98+
# Linux Benchmarks
99+
# =============================================================================
100+
benchmarks-linux:
85101
runs-on: ubuntu-latest
86102

87103
steps:
@@ -97,8 +113,13 @@ jobs:
97113
libsqlite3-dev \
98114
libbenchmark-dev
99115
100-
- name: Configure (release + benchmarks)
101-
run: meson setup build_bench -Dbuildtype=release -Denable_benchmarks=true
116+
- name: Configure (release + benchmarks, no SIMD)
117+
run: |
118+
meson setup build_bench \
119+
-Dbuildtype=release \
120+
-Denable_benchmarks=true \
121+
-Denable_simd_avx=false \
122+
-Denable_simd_neon=false
102123
103124
- name: Build
104125
run: meson compile -C build_bench
@@ -112,5 +133,104 @@ jobs:
112133
- name: Upload benchmark artifacts
113134
uses: actions/upload-artifact@v4
114135
with:
115-
name: bench_results
136+
name: bench_results-linux
116137
path: bench_results/*.json
138+
139+
# =============================================================================
140+
# macOS Tests (ARM64 - NEON)
141+
# =============================================================================
142+
test-macos:
143+
runs-on: macos-latest
144+
145+
steps:
146+
- uses: actions/checkout@v4
147+
148+
- name: Install build dependencies
149+
run: |
150+
brew install meson ninja pkg-config sqlite
151+
152+
- name: Configure
153+
run: |
154+
meson setup build \
155+
-Dbuildtype=debugoptimized \
156+
-Denable_simd_avx=false \
157+
-Denable_simd_neon=true
158+
159+
- name: Build
160+
run: meson compile -C build
161+
162+
- name: Test
163+
run: meson test -C build
164+
165+
# =============================================================================
166+
# Windows Tests (MSVC)
167+
# =============================================================================
168+
test-windows:
169+
runs-on: windows-latest
170+
171+
steps:
172+
- uses: actions/checkout@v4
173+
174+
- name: Install build dependencies
175+
run: |
176+
pip install meson ninja
177+
178+
- name: Setup MSVC
179+
uses: ilammy/msvc-dev-cmd@v1
180+
181+
- name: Install SQLite via vcpkg
182+
run: |
183+
git clone https://github.com/microsoft/vcpkg.git C:\vcpkg
184+
C:\vcpkg\bootstrap-vcpkg.bat
185+
C:\vcpkg\vcpkg install sqlite3:x64-windows
186+
187+
- name: Configure
188+
run: |
189+
meson setup build `
190+
-Dbuildtype=debugoptimized `
191+
-Denable_simd_avx=false `
192+
-Denable_simd_neon=false `
193+
--pkg-config-path=C:\vcpkg\installed\x64-windows\lib\pkgconfig
194+
195+
- name: Build
196+
run: meson compile -C build
197+
198+
- name: Test
199+
run: meson test -C build
200+
201+
# =============================================================================
202+
# Windows Tests (MinGW)
203+
# =============================================================================
204+
test-windows-mingw:
205+
runs-on: windows-latest
206+
207+
defaults:
208+
run:
209+
shell: msys2 {0}
210+
211+
steps:
212+
- uses: actions/checkout@v4
213+
214+
- uses: msys2/setup-msys2@v2
215+
with:
216+
msystem: MINGW64
217+
update: true
218+
install: >-
219+
mingw-w64-x86_64-gcc
220+
mingw-w64-x86_64-meson
221+
mingw-w64-x86_64-ninja
222+
mingw-w64-x86_64-pkg-config
223+
mingw-w64-x86_64-sqlite3
224+
225+
- name: Configure
226+
run: |
227+
meson setup build \
228+
-Dbuildtype=debugoptimized \
229+
-Denable_simd_avx=false \
230+
-Denable_simd_neon=false
231+
232+
- name: Build
233+
run: meson compile -C build
234+
235+
- name: Test
236+
run: meson test -C build

0 commit comments

Comments
 (0)