Skip to content

Bench and toolchain handle Arch's clang-libs split, live-mirror test tier (3.5.0-B146, B147, DEV24) - #12

Merged
KeithRaghubar merged 3 commits into
mainfrom
fix/stock-clang-libs-split
Oct 26, 2026
Merged

KeithRaghubar merged 3 commits into
mainfrom
fix/stock-clang-libs-split

Conversation

@KeithRaghubar

@KeithRaghubar KeithRaghubar commented Oct 26, 2026 •

Copy link
Copy Markdown
Owner

Summary

Arch's clang 23.1.3-4 moved libclang-cpp and the builtin headers out of clang into a new clang-libs package (built from the llvm pkgbase, required by clang at its exact version).

  • 3.5.0-B146: bench toolchain. The bench fetched only clang + llvm-libs, so the stock compiler failed on <stddef.h>. Before failing, it had loaded the host's (sysforge) libclang-cpp through the LD_LIBRARY_PATH fallback, so a split that moved only the library would have silently timed the sysforge frontend as "stock". The bench now resolves clang-libs as an optional package (looked up separately, since one unknown target fails a whole pacman -Sp; a local-repo hit is refused). stock_pkg.check_complete also refuses a stock prefix missing libclang-cpp, libLLVM or the builtin headers.
  • 3.5.0-B147: run toolchain. Build, staging, the install's dependency closure and recording already handled the split (3.5.0-F2). Rollback on the first build across it did not. The cached old clang owns files clang-libs now owns, so pacman -U of the snapshot fails on file conflicts. Rollback now removes the added members (-Rdd) first. The stored sentinel recovery for such a run is the online pacman -S <suite> <added>, because one command can't both remove and downgrade. clang-libs joins LLVM_LOCKSTEP_SUITE. The toolchain pacman hook gains clang-libs, plus polly and openmp, which it never had; a new test holds its targets to the suite.
  • 3.5.0-DEV24: live-mirror tier. make test-live runs network-marked tests against the live repos (skipped unless SYSFORGE_LIVE_TESTS=1, so make test and the gates stay offline). The first is the bench's real stock fetch, unpack and probe: it checks that libLLVM and libclang-cpp resolve inside the stock prefix, and compiles against the builtin headers. It runs in a new live CI job, is in CI_JOBS, and is exempt from the release preflight like e2e. DESIGN.md §Release Process gains a rubric for which test tier a fix belongs in, and CLAUDE.md points at it.
  • ROADMAP: DEV25–DEV34 and Q1, from an audit of e2e coverage against the maintainer's command history and the 3.5.0 bug classes. The e2e tier covers 36/43 commands but only 62/248 flags.

Test plan

  • make test: 7712 passed, 4 skipped (the live tests)
  • lint, typecheck, check-shipped, check-personal, check-design, check-roadmap-table, check-standards, check-surface
  • make test-live on a host with sysforge-built LLVM: 4 passed. With the B146 fix reverted, 3 fail (missing files; libclang-cpp resolves outside the stock prefix; stddef.h not found)
  • sysforge bench toolchain on the workstation: exit 0, stock 23.1.3-4 vs sysforge 23.1.3-3, 1.29x
  • CI gates, e2e and the new live job

Test tiers per the new rubric: B146 is covered by unit tests plus the live tier, since it was a repo-contents boundary. B147 is covered by unit and stage-level tests; a real Gate 3 rollback needs a toolchain build (DEV26).

🤖 Generated with Claude Code

KeithRaghubar and others added 3 commits October 26, 2026 10:43
… (3.5.0-B146)

Arch's clang 23.1.3-4 moved the builtin headers and libclang-cpp into a new
clang-libs package. The bench fetched only clang and llvm-libs, so the stock
compiler failed on <stddef.h> after loading the host's (sysforge) libclang-cpp
through the LD_LIBRARY_PATH fallback.

- stock_pkg.resolve takes optional names, each looked up on its own since one
  unknown target fails a whole pacman -Sp call; a local-repo hit is refused
- stock_pkg.check_complete requires libclang-cpp, libLLVM and the builtin
  headers in the prefix before the stock binary runs
- design section and release note updated

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(3.5.0-B147, DEV24)

B147: Arch's clang 23.1.3-4 split libclang-cpp and the builtin headers into
clang-libs, which the first toolchain build after it adds.
- gates.install_adds names members the install adds; rollback removes them
  with pacman -Rdd before reinstalling the snapshot, which would otherwise stop
  on file conflicts with the old clang
- the stored recovery for such a run is the online pacman -S of the suite plus
  the added members, since one command cannot remove and downgrade
- clang-libs joins LLVM_LOCKSTEP_SUITE (Gate 3 skew, preflight, provenance)
- the toolchain pacman hook gains clang-libs, polly and openmp; a test holds
  its targets to the suite
- pacman.remove_pkgs takes nodeps

DEV24: make test-live runs network-marked tests against the live mirrors
(skipped unless SYSFORGE_LIVE_TESTS=1), starting with the bench's stock
fetch, unpack and probe; it fails all three ways on the pre-B146 code. Own CI
job, in CI_JOBS, exempt from the release preflight. DESIGN.md gains the rubric
for which tier a test belongs in; CLAUDE.md points at it.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…V25 to DEV34, Q1)

Toolchain to kernel handoff and the real chain (DEV25, DEV26), whether to
measure a sysforge-toolchain kernel against stock (Q1), and eight scenarios
the audit found uncovered: update --devel, stock install over a sysforge
build, the build sandbox in the VM tier, config merge, --interactive, package
PGO, unattended runs and the --frozen/--thaw flags (DEV27 to DEV34).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@KeithRaghubar
KeithRaghubar merged commit 5b9520d into main Oct 26, 2026
3 checks passed
@KeithRaghubar
KeithRaghubar deleted the fix/stock-clang-libs-split branch October 26, 2026 18:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant