Skip to content

Commit cc24173

Browse files
authored
2026.9.30.1: a build names each package when it does work, one status row with a screen of dots, --play-game, Finished from one minute, and one lock entry per identity (#743)
Build output design revision 3 (.agents/docs/2026-09-30-build-output-refinement-design.md), from a report on `mcpp build` in the xlings repository with 2026.9.29.5. A package is named once, when it does work: Compiling at its first step that is not a dependency scan, or Cached with its units when the global cache places them; nothing is folded. A package inside the project is named by its short name, version and directory, any other by its identity and source, and the name's colour states the source. The cache pass runs through the report. One status row, aligned with the verbs and drawn half a second into the command, leaves in one write that overwrites the old rows in place, with autowrap off for the row; it states the last steps running once ninja has none left to start. Its screen of 24 braille cells (mcpp.ui.dots_screen) plays the chomper, the snake, the stack or the ions; MCPP_PROGRESS names one, or plain, or off. --play-game[=snake|stack|runner] plays a game on the screen from the keyboard, in the terminal's foreground only, and the terminal's mode is restored on exit and on a signal. A build program has a line when it runs or fails, and a failure names its package. Finished states how the time was spent from one minute, names the longest compile by its source file, and states the profile's descriptor on the fast path as well, from the step record's header. The step record is version 2. A bare key of a path or git dependency states only the short name, and a contradicting namespace is reported once per consumer manifest. A planned build leaves a committed mcpp.lock unchanged: the lock holds one entry per identity again. The Windows resource script moves to docs/res, the packaging and release scripts to tools, and the empty cdb.json is removed. The bundled xlings is 2026.9.30.1.
1 parent ff04535 commit cc24173

105 files changed

Lines changed: 5016 additions & 699 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.agents/docs/2026-09-29-build-progress-display-design.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ status: landed
66
# Build progress: each step's line states its outcome, and one status line states the build
77

88
- Status: landed (revision 2). Implemented in #742, released as 2026.9.29.5
9+
(the parts listed in section 6 of
10+
`2026-09-30-build-output-refinement-design.md` are replaced by revision 3,
11+
#743, 2026.9.30.1)
912
- Date: 2026-09-29
1013
- Origin: the cross-verification of #742 on the validation project (run
1114
36562019799). `mcpp build --workspace` printed its last `Compiling` line at

‎.agents/docs/2026-09-30-build-output-refinement-design.md‎

Lines changed: 1531 additions & 0 deletions
Large diffs are not rendered by default.

‎.agents/docs/README.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ superseded_by: 2026-09-07-....md # when status is superseded
1818
---
1919
```
2020

21-
318 records.
21+
319 records.
2222

2323
## By subject
2424

@@ -30,6 +30,7 @@ Records that declare one. Everything else is listed by date below.
3030

3131
### design
3232

33+
- [Build output, revision 3: every package that does work is named, the live display is one line drawn in one write, and a repeated warning is stated once per file](2026-09-30-build-output-refinement-design.md) — landed
3334
- [The workspace as the unit of build: one graph per configuration, one scheduler, product directories, and a reusable graph module](2026-09-29-workspace-build-graph-design.md) — landed
3435
- [Build progress: each step's line states its outcome, and one status line states the build](2026-09-29-build-progress-display-design.md) — landed
3536
- [An ecosystem design for mcpp and xlings: one authority per fact, and the work that follows from it](2026-09-28-ecosystem-design-and-optimisation-plan.md) — landed
@@ -109,6 +110,7 @@ Records that declare one. Everything else is listed by date below.
109110

110111
### 2026-09
111112

113+
- [Build output, revision 3: every package that does work is named, the live display is one line drawn in one write, and a repeated warning is stated once per file](2026-09-30-build-output-refinement-design.md) — landed
112114
- [The workspace as the unit of build: one graph per configuration, one scheduler, product directories, and a reusable graph module](2026-09-29-workspace-build-graph-design.md) — landed
113115
- [Build progress: each step's line states its outcome, and one status line states the build](2026-09-29-build-progress-display-design.md) — landed
114116
- [Two days of mcpp and xlings: a review of what merged, what is known, and what is open](2026-09-28-ecosystem-review-of-two-days-of-mcpp-and-xlings.md) — active

‎.github/actions/bootstrap-mcpp/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ inputs:
2525
# `package.name`, so one of the two was simply unreachable — and which one
2626
# depended on the machine, which is why CI failed on `compat:lua` on
2727
# Windows and `mcpplibs.capi:lua` on Linux. Never pin below that.
28-
default: '2026.9.29.1'
28+
default: '2026.9.30.1'
2929
cache-target:
3030
description: also restore/save target/ (build artifacts + BMIs)
3131
required: false

‎.github/actions/setup-macos-llvm/action.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ inputs:
1515
# Floor imposed by the index, not a routine bump — see
1616
# .github/actions/bootstrap-mcpp/action.yml for why 0.4.69 is required
1717
# (two packages named `lua` in one repo need openxlings/xlings#381).
18-
default: '2026.9.29.1'
18+
default: '2026.9.30.1'
1919
image:
2020
description: >
2121
The runner label the job runs on (macos-15, xcode-27). It is part of the

‎.github/tools/check_modules_wiring.sh‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ fi
100100
# The two xmake source lists must actually carry the glob. Asserted by content
101101
# rather than by trusting the loop above: a renamed pattern would leave every
102102
# per-module check passing while compiling nothing.
103-
for f in scripts/bootstrap-macos.sh .github/workflows/bootstrap-macos.yml \
103+
for f in tools/bootstrap-macos.sh .github/workflows/bootstrap-macos.yml \
104104
bench/projects/mcpp/xmake.lua; do
105105
[[ -f "$f" ]] || { bad "$f is missing"; continue; }
106106
grep -qF 'modules/*/src/**.cppm' "$f" \
@@ -109,7 +109,7 @@ done
109109

110110
# The vendored json header is reached through a private include dir. Its path
111111
# appears in three places and has already moved once.
112-
for f in scripts/bootstrap-macos.sh .github/workflows/bootstrap-macos.yml \
112+
for f in tools/bootstrap-macos.sh .github/workflows/bootstrap-macos.yml \
113113
bench/projects/mcpp/xmake.lua; do
114114
grep -qF 'modules/libs/src/json' "$f" \
115115
|| bad "$f does not add the json include dir (modules/libs/src/json)"

‎.github/workflows/aur-publish.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ jobs:
5858
TRIGGER: ${{ github.event_name }}
5959
MANUAL_PUBLISH: ${{ inputs.publish }}
6060
# Repository variable, absent until a human has watched one publish
61-
# succeed. See "Arming the automatic triggers" in scripts/aur/README.md.
61+
# succeed. See "Arming the automatic triggers" in tools/aur/README.md.
6262
AUTOPUBLISH: ${{ vars.AUR_AUTOPUBLISH }}
6363
run: |
6464
args=(
@@ -67,7 +67,7 @@ jobs:
6767
--summary "$GITHUB_STEP_SUMMARY"
6868
)
6969
[[ -z "$REQUESTED_TAG" ]] || args+=(--tag "$REQUESTED_TAG")
70-
python3 scripts/aur/reconcile_mcpp_bin.py "${args[@]}"
70+
python3 tools/aur/reconcile_mcpp_bin.py "${args[@]}"
7171
7272
# An unattended push to a third-party service must be ARMED, not
7373
# inherited from a merge. `schedule` fires every six hours off the
@@ -102,7 +102,7 @@ jobs:
102102
install -dm700 "$HOME/.ssh"
103103
install -m600 /dev/null "$HOME/.ssh/aur"
104104
printf '%s\n' "$AUR_SSH_PRIVATE_KEY" > "$HOME/.ssh/aur"
105-
install -m600 scripts/aur/aur.archlinux.org.known_hosts "$HOME/.ssh/known_hosts"
105+
install -m600 tools/aur/aur.archlinux.org.known_hosts "$HOME/.ssh/known_hosts"
106106
ssh-keygen -lf "$HOME/.ssh/known_hosts" -E sha256 \
107107
| grep -F 'SHA256:RFzBCUItH9LZS0cKB5UE6ceAYhBD5C8GeOBip8Z11+4'
108108
install -m600 /dev/null "$HOME/.ssh/config"
@@ -145,7 +145,7 @@ jobs:
145145
# EVERY OTHER NON-ZERO CODE STILL FAILS. A refused downgrade (3) and
146146
# a permanent error (2) are this repository's problem and stay red.
147147
set +e
148-
python3 scripts/aur/reconcile_mcpp_bin.py "${args[@]}"
148+
python3 tools/aur/reconcile_mcpp_bin.py "${args[@]}"
149149
rc=$?
150150
set -e
151151
if [[ "$rc" == "75" ]]; then

‎.github/workflows/bootstrap-macos.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
# Dormant (workflow_dispatch only), but kept in step with the rest —
1818
# check_version_pins.sh holds it there. Floor: 0.4.69, below which the
1919
# index cannot resolve two packages that share a short name.
20-
XLINGS_VERSION: '2026.9.29.1'
20+
XLINGS_VERSION: '2026.9.30.1'
2121
steps:
2222
- uses: actions/checkout@v4
2323

‎.github/workflows/ci-fresh-install.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ jobs:
152152
env:
153153
XLINGS_NON_INTERACTIVE: '1'
154154
run: |
155-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.29.1
155+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.30.1
156156
echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH"
157157
158158
- name: Install mcpp and config mirror
@@ -315,7 +315,7 @@ jobs:
315315

316316
- name: Install xlings + mcpp
317317
run: |
318-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.29.1
318+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.30.1
319319
# Deliberately NOT writing to $GITHUB_PATH here. On container
320320
# images that declare no PATH in their config (opensuse/
321321
# tumbleweed), appending a single dir to GITHUB_PATH makes the
@@ -416,7 +416,7 @@ jobs:
416416
# (older ones carry minos=15 and refuse to start).
417417
# v0.4.51+: in-process sha256 — this image has no sha256sum
418418
# binary, so pinned fetches failed before it.
419-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.29.1
419+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.30.1
420420
echo "$HOME/.xlings/subos/current/bin" >> "$GITHUB_PATH"
421421
422422
- name: Install mcpp and config mirror

‎.github/workflows/ci-linux-e2e.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ jobs:
384384
385385
- name: Bootstrap xlings + released mcpp
386386
run: |
387-
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.29.1
387+
curl -fsSL https://raw.githubusercontent.com/openxlings/xlings/main/tools/other/quick_install.sh | bash -s v2026.9.30.1
388388
export PATH="$HOME/.xlings/subos/current/bin:$PATH"
389389
xlings update
390390
xlings install mcpp -y -g

0 commit comments

Comments
 (0)