ci: pin march to x86-64-v2, drop upload-artifact to v3
Some checks failed
CI / build-test-release (pull_request) Failing after 12m27s
Some checks failed
CI / build-test-release (pull_request) Failing after 12m27s
Two CI fixes from run #276 (got all the way through tests + mingw cross- compile + packaging, only failed on artifact upload): march: workflow now sets CRAFTER_BUILD_MARCH=x86-64-v2 / MTUNE=generic; project.cpp reads both and applies them to the lib + exe Configurations so the self-rebuild and mingw cross-compile honor the same baseline. v3 is unusable on the runner — Intel N5105 (Tremont) has no AVX2, so a v3 bootstrap binary wouldn't even start. v2 (SSE4.2) runs on the SBC and on every x86_64 CPU since ~2011. upload-artifact: pinned to v3. v4+ uses a GHES-only API that Forgejo Actions doesn't implement; the v3 action stays on the older API that Forgejo supports. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
f0b1fd899c
commit
87a64d3b3c
2 changed files with 24 additions and 1 deletions
|
|
@ -10,6 +10,14 @@ on:
|
||||||
jobs:
|
jobs:
|
||||||
build-test-release:
|
build-test-release:
|
||||||
runs-on: arch-latest
|
runs-on: arch-latest
|
||||||
|
env:
|
||||||
|
# x86-64-v2 = SSE4.2 baseline; runs on the CI SBC (Intel N5105 / Tremont,
|
||||||
|
# no AVX) and on essentially every x86_64 CPU since ~2011. v3 is out —
|
||||||
|
# it requires AVX2 the SBC doesn't have, so the bootstrap binary
|
||||||
|
# wouldn't even run there. mtune=generic keeps codegen balanced across
|
||||||
|
# consumer CPUs.
|
||||||
|
CRAFTER_BUILD_MARCH: x86-64-v2
|
||||||
|
CRAFTER_BUILD_MTUNE: generic
|
||||||
steps:
|
steps:
|
||||||
- name: Install build dependencies
|
- name: Install build dependencies
|
||||||
run: |
|
run: |
|
||||||
|
|
@ -83,7 +91,9 @@ jobs:
|
||||||
ls -la dist/
|
ls -la dist/
|
||||||
|
|
||||||
- name: Upload workflow artifacts
|
- name: Upload workflow artifacts
|
||||||
uses: actions/upload-artifact@v4
|
# v4+ uses a GHES-only upload API Forgejo Actions doesn't implement;
|
||||||
|
# v3 stays on the older API that works on Forgejo.
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: crafter-build
|
name: crafter-build
|
||||||
path: dist/
|
path: dist/
|
||||||
|
|
|
||||||
13
project.cpp
13
project.cpp
|
|
@ -11,11 +11,22 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
||||||
else if (arg.starts_with("--target=")) target = std::string(arg.substr(std::string_view("--target=").size()));
|
else if (arg.starts_with("--target=")) target = std::string(arg.substr(std::string_view("--target=").size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Honor CRAFTER_BUILD_MARCH/MTUNE so CI (which sets these for portability)
|
||||||
|
// applies them to both the self-rebuild and the mingw cross-compile —
|
||||||
|
// otherwise Configuration's "native" defaults bake in the build host's
|
||||||
|
// CPU and the published artifact's portability becomes accidental.
|
||||||
|
const char* envMarch = std::getenv("CRAFTER_BUILD_MARCH");
|
||||||
|
const char* envMtune = std::getenv("CRAFTER_BUILD_MTUNE");
|
||||||
|
std::string march = (envMarch && *envMarch) ? envMarch : "native";
|
||||||
|
std::string mtune = (envMtune && *envMtune) ? envMtune : "native";
|
||||||
|
|
||||||
static auto crafterBuildLib = std::make_unique<Configuration>();
|
static auto crafterBuildLib = std::make_unique<Configuration>();
|
||||||
crafterBuildLib->path = "./";
|
crafterBuildLib->path = "./";
|
||||||
crafterBuildLib->name = "crafter.build-lib";
|
crafterBuildLib->name = "crafter.build-lib";
|
||||||
crafterBuildLib->outputName = "crafter-build";
|
crafterBuildLib->outputName = "crafter-build";
|
||||||
crafterBuildLib->target = target;
|
crafterBuildLib->target = target;
|
||||||
|
crafterBuildLib->march = march;
|
||||||
|
crafterBuildLib->mtune = mtune;
|
||||||
crafterBuildLib->type = ConfigurationType::LibraryStatic;
|
crafterBuildLib->type = ConfigurationType::LibraryStatic;
|
||||||
crafterBuildLib->debug = debug;
|
crafterBuildLib->debug = debug;
|
||||||
{
|
{
|
||||||
|
|
@ -60,6 +71,8 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
||||||
cfg.name = "crafter.build-exe";
|
cfg.name = "crafter.build-exe";
|
||||||
cfg.outputName = "crafter-build";
|
cfg.outputName = "crafter-build";
|
||||||
cfg.target = target;
|
cfg.target = target;
|
||||||
|
cfg.march = march;
|
||||||
|
cfg.mtune = mtune;
|
||||||
cfg.type = ConfigurationType::Executable;
|
cfg.type = ConfigurationType::Executable;
|
||||||
cfg.debug = debug;
|
cfg.debug = debug;
|
||||||
cfg.dependencies = { crafterBuildLib.get() };
|
cfg.dependencies = { crafterBuildLib.get() };
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue