Ok.
I am seeing a few causes.
But by far the majority are
Debug: Rejecting cache file /home/runner/.julia/compiled/v1.11/CommonSolve/zEcGf_aN5US.ji for Base.PkgId(nothing, ""):
Reasons = "Unable to find compatible target in cached code image.\nTarget 0 (znver3): Rejecting this target due to use of runtime-disabled features\n"
Image Targets =
1-element Vector{Base.ImageTarget}:
znver3; flags=0; features_en=(sse3, pclmul, ssse3, fma, cx16, sse4.1, sse4.2, movbe, popcnt, aes, xsave, avx, f16c, fsgsbase, bmi, avx2, bmi2, adx, clflushopt, clwb, sha, shstk, vaes, vpclmulqdq, rdpid, sahf, lzcnt, sse4a, prfchw, xsavec, xsaves, clzero)
Current Targets =
1-element Vector{Base.ImageTarget}:
sapphirerapids; flags=0; features_en=(sse3, pclmul, ssse3, fma, cx16, sse4.1, sse4.2, movbe, popcnt, aes, xsave, avx, f16c, fsgsbase, bmi, avx2, bmi2, avx512f, avx512dq, adx, avx512ifma, clflushopt, clwb, avx512cd, sha, avx512bw, avx512vl, avx512vbmi, waitpkg, avx512vbmi2, shstk, gfni, vaes, vpclmulqdq, avx512vnni, avx512bitalg, avx512vpopcntdq, rdpid, cldemote, movdiri, movdir64b, serialize, tsxldtrk, amx-bf16, avx512fp16, amx-tile, amx-int8, sahf, lzcnt, prfchw, xsavec, xsaves, avxvnni, avx512bf16)
@ Base loading.jl:3818
so this says the we are running on a different CPU architecture to what was running for the one that is in the cache.
We are on a sapphirerapids which is a Intel Xeon 4
the cache was saved on a znver3 which is AMD Zen 3
Probably what is going on is that GitHub Actions is running on whatever machines are available from a big pool on Azure.
And it doesn’t care about the microarchitecture.
The znver3 has a few features that the saphirerapids does not.
clzero, sse4a
(the saphirerapids has a ton of features znver3 doesn’t have)
I believe if we always run julia as julia -C x86-64-v3 (or long julia --cpu-target x86-64-v3) that should tell it to only use features that are present in both of these types of machines.
Not sure how to do that in general however.
Because i can’t pass arguments like --cpu-target to julia-buildpkg, or julia-runtests.
I can pass it for things where i trigger julia manually in my workflow.
Which does include the linting, but does not include the tests.