Skip to content

Commit 197e67b

Browse files
authored
ci: validate every member with mcpp 2026.9.29.3; latest_mcpp -> 2026.9.29.3; ignore the workspace-root build outputs (#488)
mcpp 2026.9.29.1 builds a workspace as one graph per configuration and writes the build directory, project data, compile database and lock at the workspace root; these four paths are ignored. 2026.9.29.2 (mcpp-community/mcpp#739) corrects what such a plan reads from its members, among them a member's own relative [indices].path, which 47 members of this index declare, and 2026.9.29.3 (mcpp-community/mcpp#740) places the runtime files of a program shipped through artifacts. - validate.yml pins mcpp 2026.9.29.3; index.toml latest_mcpp -> 2026.9.29.3, min_mcpp unchanged. - The graphics check reads the member's program from its product directory, bin/<package name>/ of the workspace's build directory. The full sweep with 2026.9.29.3 (run 36525705026) passed on every platform.
1 parent 1e571c4 commit 197e67b

4 files changed

Lines changed: 45 additions & 7 deletions

File tree

‎.github/workflows/validate.yml‎

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -377,7 +377,27 @@ env:
377377
# as its floor, and tests/examples/mcpp-plugins builds against it. Engine
378378
# warnings the members may newly print: W1 to W3 of SPEC-008 (the library
379379
# interface), warnings only.
380-
MCPP_VERSION: "2026.9.28.3"
380+
#
381+
# 2026.9.29.1 (mcpp-community/mcpp#738) builds a workspace as one graph per
382+
# configuration: `mcpp test -p <member>` plans that member and what it
383+
# reaches in the workspace's build directory, `target/<triple>/<key>/` at
384+
# this repository's root, with the member's products in `bin/<name>/`. The
385+
# members' own `tests/examples/*/target/` directories are no longer written.
386+
# The directory name no longer hashes a package's own flags, so a member
387+
# whose flags differ from another's shares the directory and ninja rebuilds
388+
# the commands that changed.
389+
#
390+
# 2026.9.29.2 (mcpp-community/mcpp#739) reads what a member states about
391+
# itself from the member: a member's own relative [indices].path is anchored
392+
# at the member, a member whose tests import std is tested with the std
393+
# module built, and a member's product directory holds every shared library
394+
# of its closure. 2026.9.29.1 is not used here: its sweep refused the 47
395+
# members that declare their own [indices].
396+
#
397+
# 2026.9.29.3 (mcpp-community/mcpp#740): a program a member ships through
398+
# `artifacts` waits for no plan-level runtime file, and its own runtime
399+
# files are placed beside it in the member's product directory.
400+
MCPP_VERSION: "2026.9.29.3"
381401

382402
jobs:
383403
lint:

‎.gitignore‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
.xlings-index-cache.json
2+
# The workspace's build directory, project data, compile database and lock:
3+
# mcpp 2026.9.29.1+ writes them at the workspace root for every member.
4+
/target/
5+
/.mcpp/
6+
/compile_commands.json
7+
/mcpp.lock
28
# example project build/fetch artifacts
39
tests/examples/*/target/
410
tests/examples/*/.mcpp/

‎index.toml‎

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,15 @@
126126
# registers mcpp.plugins 0.17.0, whose package floor it is. The release changes
127127
# no descriptor grammar; its `[package] mcpp` key is manifest vocabulary, which
128128
# an older engine reports as unsupported and ignores.
129+
# ── 2026-09-29: latest_mcpp -> 2026.9.29.3, min_mcpp unchanged ─────────────
130+
#
131+
# Moved in the pull request that moves validate.yml's pin to 2026.9.29.3,
132+
# which runs every member on every platform with it. 2026.9.29.1 is skipped:
133+
# it resolved a member's own relative [indices].path against the workspace
134+
# root; 2026.9.29.2 is the version the full sweep ran with, and 2026.9.29.3
135+
# adds the runtime placement of programs shipped through `artifacts`. None of
136+
# the three changes descriptor grammar.
129137
[index]
130138
spec = "1"
131139
min_mcpp = "2026.9.18.3"
132-
latest_mcpp = "2026.9.28.3"
140+
latest_mcpp = "2026.9.29.3"

‎tests/check_graphics_install_side_effects.sh‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,15 @@ describe() {
8181
# which is the failure that would actually invalidate the comparison.
8282
build_and_describe() {
8383
( cd "$PROJ" && "$MCPP" test ) > "$1" 2>&1 || true
84-
local bin
85-
bin=$(find "$PROJ/target" -type f -path '*/bin/*' -perm -u+x 2>/dev/null \
86-
| head -1)
84+
# mcpp 2026.9.29.1+ builds a workspace at its root: a member's programs
85+
# are in `bin/<package name>/` of the workspace's build directory, and
86+
# the member's own directory holds no build.
87+
local pkg bin
88+
pkg=$(sed -n 's/^name *= *"\(.*\)".*/\1/p' "$PROJ/mcpp.toml" | head -1)
89+
bin=$(find "$ROOT/target" -type f -path "*/bin/$pkg/*" ! -name '*.so*' \
90+
-perm -u+x 2>/dev/null | head -1)
8791
[[ -n "$bin" ]] || {
88-
echo "no artifact produced under $PROJ/target:" >&2
92+
echo "no artifact produced under $ROOT/target/*/*/bin/$pkg:" >&2
8993
tail -25 "$1" >&2; return 1; }
9094
describe "$bin"
9195
}
@@ -161,7 +165,7 @@ this check installs into.
161165
162166
Installing the graphics stack into one home and measuring artifacts from
163167
another compares two unrelated things, and the comparison passes for any
164-
mcpp. Clean the member's target/ (or use a checkout that has none) so the
168+
mcpp. Clean the workspace's target/ (or use a checkout that has none) so the
165169
build actually resolves through MCPP_HOME.
166170
MSG
167171
exit 1 ;;

0 commit comments

Comments
 (0)