Skip to content

release: v0.0.4 — glob exclusion, xlings layout, auto sandbox PATH#21

Merged
Sunrisepeak merged 2 commits intomainfrom
feat/0.0.4-polish
May 9, 2026
Merged

release: v0.0.4 — glob exclusion, xlings layout, auto sandbox PATH#21
Sunrisepeak merged 2 commits intomainfrom
feat/0.0.4-polish

Conversation

@Sunrisepeak
Copy link
Copy Markdown
Member

Summary

Three QoL improvements for 0.0.4:

  1. Glob exclusionsources = ["src/**/*.cpp", "!src/**/*_test.cpp"] subtracts excluded paths from the include set. Unblocks upstreams like ftxui whose test files sit alongside library sources.
  2. xlings at registry/bin/ — the bundled xlings now sits at <MCPP_HOME>/registry/bin/xlings (= <XLINGS_HOME>/bin/xlings), eliminating the hardlink dance and putting it where xlings's shim guard expects it.
  3. mcpp test sandbox PATH — test binaries inherit <XLINGS_HOME>/subos/default/bin in PATH so patchelf/ninja/etc. are findable.

Test plan

  • e2e 31 (transitive deps) passes
  • e2e 32 (semver merge) passes
  • CI green on linux x86_64 self-host
  • After merge: tag v0.0.4 → release workflow

Three quality-of-life improvements:

1. **Glob exclusion (`!` prefix)** in `[modules].sources` / Form B
   sources. Patterns starting with `!` expand to a set of paths that
   are subtracted from the include set. This lets upstreams like
   ftxui declare `["src/**/*.cpp", "!src/**/*_test.cpp"]` instead of
   listing 73 files individually. Implemented in `scan_one_into`
   (scanner.cppm) and `stage_with_rewrite` (cli.cppm).

2. **xlings at `registry/bin/`** instead of `bin/`. The bundled xlings
   binary now sits at `<MCPP_HOME>/registry/bin/xlings`, which IS
   `<XLINGS_HOME>/bin/xlings`. xlings 0.4.x's shim-creation guard
   (`if fs::exists(homeDir/"bin"/"xlings")`) is trivially satisfied,
   making `ensure_sandbox_xlings_binary` a no-op. Eliminates the
   hardlink dance and the "two binaries in bin/" confusion.

3. **`mcpp test` inherits sandbox PATH**. Before invoking each test
   binary, mcpp now prepends `<XLINGS_HOME>/subos/default/bin` to
   `$PATH`. Tools bootstrapped during sandbox init — patchelf, ninja,
   and any xim shims — are visible to test binaries that shell out
   to them, fixing the "patchelf: command not found" failures that
   libxpkg's elfpatch tests hit in CI.
Tests 10 and 27 checked for xlings at $MCPP_HOME/bin/xlings; the
0.0.4 layout moved it to $MCPP_HOME/registry/bin/xlings.
@Sunrisepeak Sunrisepeak merged commit 0f805c8 into main May 9, 2026
1 check passed
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