Skip to content

Commit 0ccb0db

Browse files
hyperpolymathclaude
andcommitted
fix(ci): rust-ci.yml — only the linking test steps drop --all-features (#85)
--all-features force-enables flint/spark/chapel — opt-in, system-library-dependent features (libflint LGPL-3, GNAT+libechidna_spark, Zig FFI). build.rs correctly gates their link directives behind cfg(feature=...), but the bare GitHub runner lacks those libraries, so 'cargo test --all-features' failed at link time on EVERY PR (present on main; surfaced on #73): rust-lld: error: unable to find library -lflint Key distinction: clippy / doc / check type-check and lint the cfg-gated flint/spark/chapel code WITHOUT invoking the linker, so they keep --all-features (full lint/compile coverage, zero infra). Only the two 'cargo test' steps build a linked binary -> they drop to --features verisim (the only pure-Rust optional feature; live-provers superset). flint/spark/chapel test execution remains covered by their dedicated CI (chapel-ci.yml, SPARK Theatre Gate, live-provers.yml). This preserves lint/compile coverage that a blanket --features verisim would have lost for ~510 LoC of flint + the spark-gated FFI. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent d3db97d commit 0ccb0db

1 file changed

Lines changed: 15 additions & 4 deletions

File tree

.github/workflows/rust-ci.yml

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,25 @@ jobs:
4545
- name: Check formatting
4646
run: cargo fmt --all -- --check
4747

48+
# echidna#85: `flint`/`spark`/`chapel` are opt-in, system-library-
49+
# dependent features (libflint LGPL-3 / GNAT+libechidna_spark / Zig
50+
# FFI). build.rs gates their `-l...` link directives correctly, but
51+
# the bare runner has none of those libraries. Key distinction:
52+
# `clippy`/`doc`/`check` type-check and lint the cfg-gated code WITHOUT
53+
# invoking the linker, so `--all-features` is safe there and keeps full
54+
# lint/compile coverage of flint/spark/chapel. Only `cargo test` builds
55+
# a linked binary — so the two test steps drop to `--features verisim`
56+
# (the only pure-Rust optional feature; `live-provers ⊇ verisim`).
57+
# flint/spark/chapel test execution stays in their dedicated CI
58+
# (chapel-ci.yml, SPARK Theatre Gate, live-provers.yml).
4859
- name: Clippy lints
4960
run: cargo clippy --all-targets --all-features -- -D warnings
5061

5162
- name: Run unit tests
52-
run: cargo test --lib --all-features
63+
run: cargo test --lib --features verisim
5364

5465
- name: Run integration tests
55-
run: cargo test --test integration_tests --all-features
66+
run: cargo test --test integration_tests --features verisim
5667

5768
- name: Build release
5869
run: cargo build --release
@@ -133,7 +144,7 @@ jobs:
133144
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2
134145

135146
- name: Build documentation
136-
run: cargo doc --no-deps --all-features
147+
run: cargo doc --no-deps --all-features # echidna#85: doc doesn't link, --all-features safe
137148
env:
138149
RUSTDOCFLAGS: -D warnings
139150

@@ -202,4 +213,4 @@ jobs:
202213
uses: Swatinem/rust-cache@ad397744b0d591a723ab90405b7247fac0e6b8db # v2
203214

204215
- name: Check MSRV
205-
run: cargo check --all-features
216+
run: cargo check --all-features # echidna#85: check doesn't link, --all-features safe

0 commit comments

Comments
 (0)