Crafter.Build/.forgejo
Jorijn van der Graaf af41ee5084
Some checks failed
CI / build-test-release (pull_request) Failing after 14m50s
CI / build-test-release (push) Failing after 14m45s
ci: ship per-march variants (v2/v3/v4) as individual artifacts
Replaces the single Linux + single Windows tarball with six self-
contained variants — three µarch levels × two OSes. End users on the
Releases page see them as six individually-downloadable archives:

  crafter-build-{linux,windows}-x86_64-{v2,v3,v4}.{tar.gz,zip}

Pick the v-level your CPU supports:
  v2: SSE4.2 baseline (every x86_64 since ~2011)
  v3: AVX2 + FMA + BMI (Intel Haswell+, AMD Excavator+, ~2013+)
  v4: AVX-512 (Skylake-X+, recent server-class)

How: the bootstrap binary stays at v2 because the CI SBC (N5105 / Tremont,
no AVX) can't execute v3 or v4 instructions and would crash before it
could rebuild itself for higher levels. Once bootstrap's done, the same
v2 binary is re-invoked with CRAFTER_BUILD_MARCH overridden per variant
to produce v2/v3/v4 outputs. Same again with --target=x86_64-w64-mingw32
for the Windows variants. ExternalDependency cache keys on (url, target,
march) already so glslang gets built per variant; subsequent CI runs hit
the cache.

Also drops the wrapper zip from workflow artifacts: instead of one
upload-artifact call producing crafter-build.zip containing six archives,
there's now one call per archive. The PR / run page shows six small
downloads named for what they are.

forgejo-release continues to upload release-dir/* as individual assets,
so the Releases page already has the right shape — this just brings the
workflow artifact UX in line.

Bumped the glslang cache key to v2 (one-time invalidation) since the
cache layout now needs space for six glslang builds rather than two.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-29 02:29:50 +02:00
..
workflows ci: ship per-march variants (v2/v3/v4) as individual artifacts 2026-04-29 02:29:50 +02:00