diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 0d3ae0ce..cfddd750 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -377,7 +377,27 @@ env: # as its floor, and tests/examples/mcpp-plugins builds against it. Engine # warnings the members may newly print: W1 to W3 of SPEC-008 (the library # interface), warnings only. - MCPP_VERSION: "2026.9.28.3" + # + # 2026.9.29.1 (mcpp-community/mcpp#738) builds a workspace as one graph per + # configuration: `mcpp test -p ` plans that member and what it + # reaches in the workspace's build directory, `target///` at + # this repository's root, with the member's products in `bin//`. The + # members' own `tests/examples/*/target/` directories are no longer written. + # The directory name no longer hashes a package's own flags, so a member + # whose flags differ from another's shares the directory and ninja rebuilds + # the commands that changed. + # + # 2026.9.29.2 (mcpp-community/mcpp#739) reads what a member states about + # itself from the member: a member's own relative [indices].path is anchored + # at the member, a member whose tests import std is tested with the std + # module built, and a member's product directory holds every shared library + # of its closure. 2026.9.29.1 is not used here: its sweep refused the 47 + # members that declare their own [indices]. + # + # 2026.9.29.3 (mcpp-community/mcpp#740): a program a member ships through + # `artifacts` waits for no plan-level runtime file, and its own runtime + # files are placed beside it in the member's product directory. + MCPP_VERSION: "2026.9.29.3" jobs: lint: diff --git a/.gitignore b/.gitignore index 772af0bf..9f58afa2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,10 @@ .xlings-index-cache.json +# The workspace's build directory, project data, compile database and lock: +# mcpp 2026.9.29.1+ writes them at the workspace root for every member. +/target/ +/.mcpp/ +/compile_commands.json +/mcpp.lock # example project build/fetch artifacts tests/examples/*/target/ tests/examples/*/.mcpp/ diff --git a/index.toml b/index.toml index 3feb98ba..6f3da6a9 100644 --- a/index.toml +++ b/index.toml @@ -126,7 +126,15 @@ # registers mcpp.plugins 0.17.0, whose package floor it is. The release changes # no descriptor grammar; its `[package] mcpp` key is manifest vocabulary, which # an older engine reports as unsupported and ignores. +# ── 2026-09-29: latest_mcpp -> 2026.9.29.3, min_mcpp unchanged ───────────── +# +# Moved in the pull request that moves validate.yml's pin to 2026.9.29.3, +# which runs every member on every platform with it. 2026.9.29.1 is skipped: +# it resolved a member's own relative [indices].path against the workspace +# root; 2026.9.29.2 is the version the full sweep ran with, and 2026.9.29.3 +# adds the runtime placement of programs shipped through `artifacts`. None of +# the three changes descriptor grammar. [index] spec = "1" min_mcpp = "2026.9.18.3" -latest_mcpp = "2026.9.28.3" +latest_mcpp = "2026.9.29.3" diff --git a/tests/check_graphics_install_side_effects.sh b/tests/check_graphics_install_side_effects.sh index 9e9ebabd..5fee79ac 100755 --- a/tests/check_graphics_install_side_effects.sh +++ b/tests/check_graphics_install_side_effects.sh @@ -81,11 +81,15 @@ describe() { # which is the failure that would actually invalidate the comparison. build_and_describe() { ( cd "$PROJ" && "$MCPP" test ) > "$1" 2>&1 || true - local bin - bin=$(find "$PROJ/target" -type f -path '*/bin/*' -perm -u+x 2>/dev/null \ - | head -1) + # mcpp 2026.9.29.1+ builds a workspace at its root: a member's programs + # are in `bin//` of the workspace's build directory, and + # the member's own directory holds no build. + local pkg bin + pkg=$(sed -n 's/^name *= *"\(.*\)".*/\1/p' "$PROJ/mcpp.toml" | head -1) + bin=$(find "$ROOT/target" -type f -path "*/bin/$pkg/*" ! -name '*.so*' \ + -perm -u+x 2>/dev/null | head -1) [[ -n "$bin" ]] || { - echo "no artifact produced under $PROJ/target:" >&2 + echo "no artifact produced under $ROOT/target/*/*/bin/$pkg:" >&2 tail -25 "$1" >&2; return 1; } describe "$bin" } @@ -161,7 +165,7 @@ this check installs into. Installing the graphics stack into one home and measuring artifacts from another compares two unrelated things, and the comparison passes for any - mcpp. Clean the member's target/ (or use a checkout that has none) so the + mcpp. Clean the workspace's target/ (or use a checkout that has none) so the build actually resolves through MCPP_HOME. MSG exit 1 ;;