You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
A path package's host-tool key covers the consumer nested in its tree, so the tool is rebuilt after the consumer's own build #705
The host-tool store keys a path package by tool_store::tree_stamp: the relative path, size and modification time of every regular file under the package root, excluding target/, .git, .mcpp and compile_commands.json (modules/buildmcpp/src/tool_store.cppm). When the consumer lies inside that tree, the stamp covers the consumer's own files. The layout is common: a plugin package's test fixtures, or a monorepo whose tool package sits at the root with the applications below it. Each file the consumer's build writes outside its target/ changes the key, and the next planned build rebuilds the tool.
Measured on 2026.9.26.2 with mcpp-plugins 0.13.0's tests/vcpkg-consumer, which depends on plugins = { path = "../.." } and uses the host tool mcpp-deps:
mcpp build builds plugins:mcpp-deps, and the prepare action installs into tests/vcpkg-consumer/vcpkg_installed/.
mcpp build again: on Windows and macOS the build is planned, the tree stamp now includes vcpkg_installed/, and the tool is rebuilt. The rebuilt binary is an input of the prepare action, so the installation runs again. On Linux the fast path skips planning. After touch build.mcpp it does the same.
Consequence
A build with nothing changed rebuilds the host tool and re-runs every action that names the tool as an input. On a vcpkg installation the cost is minutes.
Proposed behaviour
The stamp covers the package's sources, not the consumer's. Either rule removes the effect:
Skip a directory below the root that holds its own mcpp.toml. Such a directory is another package, as it already is for source globbing.
Stamp only what the package's manifest declares: the sources of the selected features and targets, the manifest, and build.mcpp.
mcpp-plugins 0.13.0 places the fixtures' installations under target/ in the meantime.
Fixed in mcpp 2026.9.27.1 (#719, merged as b439fd9), released on GitHub and mirrored to GitCode (xlings-res/mcpp), and published in the xim index (openxlings/xim-pkgindex#894).
Verified after the release with the published binary inside an xlings subos sandbox (xlings subos use eco-0927 --sandbox --cmd ...), mcpp configured for the CN mirror in a fresh MCPP_HOME:
A consumer nested inside a host-tool package's directory (toolpkg/examples/app depending on ../.. with tools = ["gen"]): the second build, planned with --profile dev, rebuilds no host tool. PASS; the same script fails on 2026.9.26.2 ("the consumer's own build output rebuilt the tool").
Activity
2026.9.27.1: #704-#716 fixed, feature tools, artifacts edges, payload…
speak-agent commentedon Sep 27, 2026
Fixed in mcpp 2026.9.27.1 (#719, merged as b439fd9), released on GitHub and mirrored to GitCode (xlings-res/mcpp), and published in the xim index (openxlings/xim-pkgindex#894).
Verified after the release with the published binary inside an xlings subos sandbox (
xlings subos use eco-0927 --sandbox --cmd ...), mcpp configured for the CN mirror in a freshMCPP_HOME:toolpkg/examples/appdepending on../..withtools = ["gen"]): the second build, planned with--profile dev, rebuilds no host tool. PASS; the same script fails on 2026.9.26.2 ("the consumer's own build output rebuilt the tool").