Skip to content

Commit 27d9a27

Browse files
committed
Add build metrics tooling, docs, and baseline CSVs
- tools/build_metrics/measure_dep_fanin.py (M1: dependency fan-in) - tools/build_metrics/measure_tu_sizes.py (M2: preprocessed TU sizes) - tools/build_metrics/measure_build_graph.py (M3+M4: transitive srcs + change impact) - tools/build_metrics/measure_header_fanin.py (M5: header fan-in) - tools/build_metrics/compare_build_metrics.py (comparison report generator) - tools/build_metrics/README.md (full documentation) - tools/build_metrics/current/ (current branch metrics) - Makefile: build_metrics and build_metrics_compare targets
1 parent 1523624 commit 27d9a27

12 files changed

Lines changed: 4372 additions & 0 deletions

Makefile

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -694,3 +694,41 @@ endif
694694

695695
run_lib_files_test:
696696
docker run --entrypoint bash -v $(realpath tests/file_lists):/test $(OVMS_CPP_DOCKER_IMAGE):$(OVMS_CPP_IMAGE_TAG)$(IMAGE_TAG_SUFFIX) ./test/test_release_files.sh ${BAZEL_DEBUG_FLAGS} > file_test.log 2>&1 ; exit_status=$$? ; tail -200 file_test.log ; exit $$exit_status
697+
698+
# ── Build Metrics ──────────────────────────────────────────────
699+
# Run all 5 build metrics inside an existing -build container:
700+
# make build_metrics BUILD_CONTAINER=u24a_ovms1
701+
#
702+
# Compare current vs baseline (git diff shows changes after commit):
703+
# make build_metrics_compare
704+
#
705+
METRICS_TARGET ?= //src/...
706+
METRICS_DIR ?= tools/build_metrics/current
707+
BUILD_CONTAINER ?= $(OVMS_CPP_IMAGE_TAG)$(IMAGE_TAG_SUFFIX)
708+
METRICS_BEFORE ?= tools/build_metrics/prebuild_baseline
709+
METRICS_AFTER ?= $(METRICS_DIR)
710+
711+
build_metrics:
712+
@mkdir -p $(METRICS_DIR)
713+
docker exec $(BUILD_CONTAINER) bash -c \
714+
"cd /ovms && python3 tools/build_metrics/measure_dep_fanin.py /ovms/$(METRICS_DIR)/deps.csv '$(METRICS_TARGET)'"
715+
docker exec $(BUILD_CONTAINER) bash -c \
716+
"cd /ovms && python3 tools/build_metrics/measure_tu_sizes.py /ovms/$(METRICS_DIR)/tu.csv '$(METRICS_TARGET)'"
717+
docker exec $(BUILD_CONTAINER) bash -c \
718+
"cd /ovms && python3 tools/build_metrics/measure_build_graph.py /ovms/$(METRICS_DIR)/trans_srcs.csv /ovms/$(METRICS_DIR)/impact.csv"
719+
docker exec $(BUILD_CONTAINER) bash -c \
720+
"cd /ovms && python3 tools/build_metrics/measure_header_fanin.py /ovms/$(METRICS_DIR)/headers.csv '$(METRICS_TARGET)'"
721+
@# Filter TU and headers to src/ only (drop external/third_party rows)
722+
head -1 $(METRICS_DIR)/tu.csv > $(METRICS_DIR)/tu_src.csv
723+
grep '^src/' $(METRICS_DIR)/tu.csv >> $(METRICS_DIR)/tu_src.csv || true
724+
head -1 $(METRICS_DIR)/headers.csv > $(METRICS_DIR)/headers_src.csv
725+
grep '^src/' $(METRICS_DIR)/headers.csv >> $(METRICS_DIR)/headers_src.csv || true
726+
@# Remove unfiltered intermediates (only _src variants are committed)
727+
rm -f $(METRICS_DIR)/tu.csv $(METRICS_DIR)/headers.csv
728+
@echo "=== Metrics saved to $(METRICS_DIR)/ ==="
729+
730+
build_metrics_compare:
731+
python3 tools/build_metrics/compare_build_metrics.py \
732+
--before-dir $(METRICS_BEFORE) \
733+
--after-dir $(METRICS_AFTER) \
734+
--scopes all,non-test,test

tools/build_metrics/README.md

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

0 commit comments

Comments
 (0)