@@ -15,6 +15,8 @@ The current work is intentionally limited to build-tool behavior:
1515- make automatic package-index refresh quiet from the mcpp user's perspective;
1616- make index freshness use a reliable mcpp-owned timestamp marker;
1717- make dependency cache status use canonical dependency identities;
18+ - make large xpkg/toolchain installs retry through direct ` xlings install `
19+ when the NDJSON interface path fails;
1820- keep local xlings validation as the integration proof.
1921
2022## Findings
@@ -103,6 +105,33 @@ deps/mcpplibs/xpkg@0.0.39
103105
104106while the consumer dependency remains ` mcpplibs.xpkg v0.0.41 ` .
105107
108+ ### 5. Cold Linux CI can fail musl-gcc via xlings interface install
109+
110+ PR #91 inherited a main-branch Linux CI failure in:
111+
112+ ``` text
113+ Toolchain: musl-gcc - build mcpp (--target)
114+ ```
115+
116+ The failing command was:
117+
118+ ``` text
119+ mcpp build --target x86_64-linux-musl
120+ ```
121+
122+ The visible error was only:
123+
124+ ``` text
125+ xlings install of 'xim:musl-gcc@15.1.0' failed (exit 1)
126+ ```
127+
128+ The same workflow's e2e suite had already proven that fresh-home musl-gcc
129+ installation can work, and recent CI history showed this as a cold-cache
130+ failure on main too. The weak point is that ` Fetcher::resolve_xpkg_path() `
131+ uses only the xlings NDJSON interface path for regular xpkg installs, while
132+ ` mcpp.xlings::install_with_progress() ` already documents the direct CLI path
133+ as more reliable for large package installs.
134+
106135## Implementation Plan
107136
108137- [x] Add focused regression coverage for default-index refresh quietness.
@@ -113,8 +142,11 @@ while the consumer dependency remains `mcpplibs.xpkg v0.0.41`.
113142- [x] Avoid using stale embedded package version as the user-facing resolved
114143 dependency version when the index resolution already knows the requested
115144 version.
145+ - [x] Add a direct ` xlings install <target> -y ` fallback after interface
146+ install failure, preserving visible direct-install output for CI
147+ diagnostics.
116148- [x] Validate with the local xlings checkout using the new mcpp binary.
117- - [ ] Push a draft PR and use it as the multi-commit checkpoint.
149+ - [x ] Push a draft PR and use it as the multi-commit checkpoint.
118150
119151## Verification Plan
120152
@@ -126,7 +158,7 @@ while the consumer dependency remains `mcpplibs.xpkg v0.0.41`.
126158 while the marker is inside TTL.
127159- [x] Confirm cached dependencies display as ` Cached ` when their artifacts are
128160 staged.
129- - [ ] Record CI status on the PR.
161+ - [ ] Record CI status on the PR after the second checkpoint commit .
130162
131163## Dynamic Notes
132164
@@ -157,3 +189,12 @@ while the consumer dependency remains `mcpplibs.xpkg v0.0.41`.
157189 ` mcpplibs.tinyhttps ` / ` mcpplibs.xpkg ` displayed as ` Cached ` .
158190 - Marker was written at
159191 ` ~/.mcpp/registry/data/mcpplibs/.mcpp-index-updated ` .
192+ - CI follow-up:
193+ - Linux CI on PR #91 failed in `Toolchain: musl-gcc - build mcpp
194+ (--target)`.
195+ - The same step had already failed on ` origin/main ` run ` 26691717542 ` , so
196+ this is not introduced solely by PR #91 .
197+ - Added direct-install fallback in ` src/xlings.cppm ` and
198+ ` src/pm/package_fetcher.cppm ` .
199+ - Re-ran local ` mcpp build --no-cache ` , `mcpp test --
200+ --gtest_filter=XlingsIndexFreshness.* `, and the three related e2e tests.
0 commit comments