From 030dd1b1f6532383affb590390e61a9287285478 Mon Sep 17 00:00:00 2001 From: sunrisepeak Date: Thu, 9 Jul 2026 00:52:56 +0800 Subject: [PATCH] =?UTF-8?q?release:=200.0.86=20=E2=80=94=20pipeline=20hard?= =?UTF-8?q?ening=20(A4),=20unified=20macOS=20test=20stdlib=20(A1),=20cross?= =?UTF-8?q?=20gcc16=20floor=20(A2/R5a)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Version bump + remediation-doc live status. Ships on top of the merged PRs #201 (verified gated mirroring) and #202 (static libc++ for test binaries, llvm 22.1.8 green); this branch adds the aarch64 cross floor: -gcc@16.1.0 (xim entry #344), retiring GCC 15 from the cross path. The manifest instantiation anchor REMAINS for the x86_64 musl release build (musl-gcc 15.1.0) until R5b packages its gcc 16. --- .../docs/2026-07-08-root-cause-remediation-design.md | 10 +++++----- .github/workflows/cross-build-test.yml | 2 +- mcpp.toml | 2 +- src/build/prepare.cppm | 10 ++++++---- src/manifest/types.cppm | 5 ++++- src/toolchain/fingerprint.cppm | 2 +- 6 files changed, 18 insertions(+), 13 deletions(-) diff --git a/.agents/docs/2026-07-08-root-cause-remediation-design.md b/.agents/docs/2026-07-08-root-cause-remediation-design.md index 588a06f..ce92458 100644 --- a/.agents/docs/2026-07-08-root-cause-remediation-design.md +++ b/.agents/docs/2026-07-08-root-cause-remediation-design.md @@ -189,11 +189,11 @@ defense-in-depth for the next regression of any kind. | # | Task | Repo / PR | Status | |---|------|-----------|--------| -| R1 (A4) | pipeline hardening: timeouts, GH-side verify+retry, completeness gate, fresh-install bounded wait | mcpp `.github/` | πŸ”„ | -| R2 (A1) | TestBinary β†’ toolchain libc++ (dynamic+rpath); e2e otool assertion; unpin macOS llvm | mcpp `flags.cppm` | pending | -| R3 (A3) | staged+atomic index acquisition | xlings `downloader.cppm` | pending | -| R4 (C.1) | toolchain-bump consumer smoke | xim-pkgindex CI | pending | -| R5 (A2) | cross gcc 16 packaging feasibility β†’ floor bump β†’ delete anchor | xlings-res packaging | pending | +| R1 (A4) | pipeline hardening | βœ… PR #201 merged (6/6); positive+negative tested against live 0.0.85 mirror | βœ… | +| R2 (A1) | TestBinary stdlib unification | βœ… PR #202 merged (6/6, 8 forensics-driven rounds): static -load_hidden for tests = distributable model; llvm 22.1.8 green; dynamic route falsified (dylib set upward-links system libc++) | βœ… | +| R3 (A3) | staged+atomic git index acquisition + catalog self-heal | βœ… xlings PR #353 merged; artifact path already atomic since 0.4.62 β€” incidents were v0.4.44 pins, bumped in #343 | βœ… | +| R4 (C.1) | toolchain-bump consumer smoke + xlings pin v0.4.62 | βœ… xim-pkgindex PR #343 merged | βœ… | +| R5 (A2) | cross gcc 16 packaging β†’ floor bump | βœ… packaged (build-cross/build-native workflows added, release 16.1.0 4 assets, smoke-tested); xim entry merged (#344); mcpp cross pin β†’ 16.1.0. **R5b remains**: anchor stays until xim ships x86_64 musl gcc 16 (the x86_64-linux-musl release build is still on musl-gcc 15.1.0) | πŸ”„ | | R6 | mcpp 0.0.86 release + ecosystem closure (mirror / index bump / fresh-install) | all | pending | ## Order of execution diff --git a/.github/workflows/cross-build-test.yml b/.github/workflows/cross-build-test.yml index 5709573..50a1d4f 100644 --- a/.github/workflows/cross-build-test.yml +++ b/.github/workflows/cross-build-test.yml @@ -10,7 +10,7 @@ name: cross-build-test # ── Supported cross matrix (built + verified below) ──────────────────────── # target | toolchain | hostβ†’target | run # ----------------------|---------------------------------|---------------|----- -# aarch64-linux-musl | aarch64-linux-musl-gcc@15.1.0 | x86_64β†’arm64 | qemu +# aarch64-linux-musl | aarch64-linux-musl-gcc@16.1.0 | x86_64β†’arm64 | qemu # # mcpp resolves a cross `--target -musl` build to the triple-named cross # gcc musl toolchain from the xlings ecosystem (xim:-gcc, see diff --git a/mcpp.toml b/mcpp.toml index a7910bf..2b6e484 100644 --- a/mcpp.toml +++ b/mcpp.toml @@ -1,6 +1,6 @@ [package] name = "mcpp" -version = "0.0.85" +version = "0.0.86" description = "Modern C++ build & package management tool" license = "Apache-2.0" authors = ["mcpp-community"] diff --git a/src/build/prepare.cppm b/src/build/prepare.cppm index ab3bca6..d8e8cc7 100644 --- a/src/build/prepare.cppm +++ b/src/build/prepare.cppm @@ -636,9 +636,11 @@ prepare_build(bool print_fingerprint, // - target arch != host arch β†’ CROSS build, use the target-named // cross toolchain `-gcc@15.1.0` (β†’ xim:-gcc), // e.g. building aarch64 on an x86_64 host. - // We pin 15.1.0 because xim only has musl variants for 9.4 / 11.5 / - // 13.3 / 15.1 (gcc 16.1 has none yet); 15.1.0 matches what mcpp uses - // for `mcpp build --target x86_64-linux-musl` (see mcpp.toml). + // Versions: CROSS uses 16.1.0 (packaged 2026-07-08; GCC 15 drops + // module template instantiations at link β€” remediation doc A2). + // NATIVE musl stays 15.1.0 until xim ships an x86_64 musl gcc 16 + // (R5b); the manifest:types instantiation anchor covers it until + // then. if (endswith(overrides.target_triple, "-musl") && (it == m->targetOverrides.end() || it->second.toolchain.empty())) { @@ -649,7 +651,7 @@ prepare_build(bool print_fingerprint, if (targetArch.empty() || targetArch == mcpp::platform::host_arch) tcSpec = "gcc@15.1.0-musl"; // native else - tcSpec = overrides.target_triple + "-gcc@15.1.0"; // cross + tcSpec = overrides.target_triple + "-gcc@16.1.0"; // cross } if (endswith(overrides.target_triple, "-musl") && m->buildConfig.linkage.empty()) { diff --git a/src/manifest/types.cppm b/src/manifest/types.cppm index d939542..4206b0c 100644 --- a/src/manifest/types.cppm +++ b/src/manifest/types.cppm @@ -517,7 +517,10 @@ std::filesystem::path resolve_lib_root_path(const Manifest& manifest) { // ── GCC 15 cross-link workaround ──────────────────────────────────── -// GCC 15 (aarch64-linux-musl cross, xim gcc 15.1.0) does not emit +// GCC 15 does not emit +// (cross is on gcc 16 since 2026-07-08; this anchor stays for the +// x86_64-linux-musl NATIVE release build, still on musl-gcc 15.1.0 β€” +// remove when xim ships an x86_64 musl gcc 16, remediation doc R5b) // implicit template instantiations for std::map/... members of // module-attached structs in IMPORTER object files β€” it expects the // owning module to provide them. The old single-file mcpp.manifest diff --git a/src/toolchain/fingerprint.cppm b/src/toolchain/fingerprint.cppm index 3ff167e..79362a6 100644 --- a/src/toolchain/fingerprint.cppm +++ b/src/toolchain/fingerprint.cppm @@ -18,7 +18,7 @@ import mcpp.toolchain.detect; export namespace mcpp::toolchain { -inline constexpr std::string_view MCPP_VERSION = "0.0.85"; +inline constexpr std::string_view MCPP_VERSION = "0.0.86"; struct FingerprintInputs { Toolchain toolchain;