Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion .github/workflows/validate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 <member>` plans that member and what it
# reaches in the workspace's build directory, `target/<triple>/<key>/` at
# this repository's root, with the member's products in `bin/<name>/`. 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:
Expand Down
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -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/
Expand Down
10 changes: 9 additions & 1 deletion index.toml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
14 changes: 9 additions & 5 deletions tests/check_graphics_install_side_effects.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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/<package name>/` 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"
}
Expand Down Expand Up @@ -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 ;;
Expand Down
Loading