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 августа (b56f2b4kbd_raw_poll,1f16e8ffake 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:
+13
-8
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user