diff --git a/.github/workflows/pr_tests.yml b/.github/workflows/pr_tests.yml index 040d49a87..24b86a30e 100644 --- a/.github/workflows/pr_tests.yml +++ b/.github/workflows/pr_tests.yml @@ -44,7 +44,7 @@ jobs: run: | BINDINGS_HASH=$(git rev-parse HEAD:vendor/logos-delivery-python-bindings) DELIVERY_HASH=$(git -C vendor/logos-delivery-python-bindings rev-parse HEAD:vendor/logos-delivery) - echo "key=liblogosdelivery-${{ runner.os }}-nim2.2.4-v2-${BINDINGS_HASH}-${DELIVERY_HASH}" >> "$GITHUB_OUTPUT" + echo "key=liblogosdelivery-${{ runner.os }}-nim2.2.4-v3-${BINDINGS_HASH}-${DELIVERY_HASH}" >> "$GITHUB_OUTPUT" - name: Cache liblogosdelivery.so id: cache-lib @@ -106,7 +106,16 @@ jobs: # `nimble setup --localdeps` (build-deps prerequisite); a bare # `nimble install -y` here is redundant and pulls Nim from the lock, # which is what triggered the checksum mismatch. - make liblogosdelivery + # + # -d:disableMarchNative: without it config.nims compiles with + # -march=native, and the cached .so then crashes with SIGILL + # ("Illegal instruction") when a later job lands on a runner with + # an older CPU generation. -d:marchOptimized keeps a portable + # x86-64-v2 baseline, which all GitHub-hosted runners support. + # Passed via the environment (not a make argument) so the + # Makefile's own NIM_PARAMS appends (-d:release, git_version) + # still apply. + NIM_PARAMS="-d:disableMarchNative -d:marchOptimized" make liblogosdelivery SO_PATH="$(find . -type f -name 'liblogosdelivery.so' | head -n 1)"