build: examples вне регрессной сборки; эталон размеров пересобран

`make all` собирал и examples/, из-за чего цикл «правка libc -> проверка»
упирался в mdview (компилируется минутами) и ничего нового про libc не
показывал.  Регресс ловит разжирение библиотеки, а для этого хватает
мелких tests/ — каждый тянет свой кусок libc и пересобирается за секунды.

- `make all` = tools lib tests; examples собираются явно (`make examples`,
  и как зависимость `make floppy`);
- size_check.py смотрит только tests/*.

Эталон принят заново.  Разбор расхождения, чтобы оно не выглядело
необъяснённым: эталон стоял с 30 июля (0280b05), а libc менялась 1 и 3
августа (b56f2b4 kbd_raw_poll, 1f16e8f fake shift) — _irq_tramp вырос
267 -> 336 Б и не был перебазирован, отсюда +33 Б у всех, кто линкует
трамплин (cbl*, irqtest, rt_test), и +22 у gfx_dbuf (gfx_set_idle_hook в
libbgi из того же KBD-1).  Текущий фикс BUG-KBD-5 вернул 36 Б из этих 69.
Заодно выкинуты мёртвые строки эталона (rpgprof/rpgwalk/scroll/space —
их давно нет в APPS, mdview/mdview2 — теперь вне регресса).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Александр Петров
2026-08-05 12:33:34 +03:00
parent 030af74631
commit 3d8b81c9f6
3 changed files with 27 additions and 24 deletions
+13 -8
View File
@@ -1,17 +1,23 @@
#!/usr/bin/env python3
"""
size_check.py — размерный регресс-тест: сравнение _CODE всех тестов и
приложений с эталоном docs/size_baseline.tsv.
size_check.py — размерный регресс-тест: сравнение _CODE тестов с эталоном
docs/size_baseline.tsv.
Использование:
python3 toolchain/size_check.py # сверка с эталоном
python3 toolchain/size_check.py --update # перезаписать эталон
Логика: собираем _CODE из .map каждой программы (tests/*, examples/*),
сравниваем с эталоном. Любое отличие печатается; выход 1 — если есть
РОСТ (случайное разжирение libc), 0 — если только уменьшения/без
изменений. Новые программы (нет в эталоне) — предупреждение, добавить
через --update. Запускать после `make all`.
Логика: собираем _CODE из .map каждой программы под tests/, сравниваем с
эталоном. Любое отличие печатается; выход 1 — если есть РОСТ (случайное
разжирение libc), 0 — если только уменьшения/без изменений. Новые
программы (нет в эталоне) — предупреждение, добавить через --update.
Запускать после `make all`.
ТОЛЬКО tests/, без examples/: регресс ловит разжирение libc, а для этого
хватает мелких тестов — каждый тянет свой кусок библиотеки и пересобирается
за секунды. Крупные приложения (examples/mdview компилируется минутами)
не показывают ничего сверх этого и лишь удлиняют цикл, поэтому и из
`make all` они убраны (см. корневой Makefile).
"""
import glob
@@ -28,7 +34,6 @@ def collect():
sizes = {}
pats = [
os.path.join(ROOT, "tests", "*", ".sprinter-cc-*", "*.map"),
os.path.join(ROOT, "examples", "*", ".sprinter-cc-*", "*.map"),
]
for pat in pats:
for map_path in glob.glob(pat):