From aabb777c5d4f5a81c386b9c52547319306bdd38c Mon Sep 17 00:00:00 2001 From: Natalie Spiva Date: Sat, 20 Jun 2026 05:36:59 -0700 Subject: [PATCH] feat: implement build performance metrics (#5) - Add build-metrics.sh: lightweight timing script for build stages - Integrate metrics tracking into build.sh - Logs elapsed time for each build stage - Outputs timestamped metrics log file Closes #5 --- build-metrics.sh | 32 ++++++++++++++++++++++++++++++++ build.sh | 14 +++++++++++--- 2 files changed, 43 insertions(+), 3 deletions(-) create mode 100755 build-metrics.sh diff --git a/build-metrics.sh b/build-metrics.sh new file mode 100755 index 00000000..cf127749 --- /dev/null +++ b/build-metrics.sh @@ -0,0 +1,32 @@ +#!/usr/bin/env bash +set -euo pipefail + +METRICS_FILE="build-metrics-$(date +%Y%m%d-%H%M%S).log" +START_TIME=$(date +%s) + +log_metric() { + local stage="$1" + local elapsed=$(( $(date +%s) - START_TIME )) + local elapsed_min=$(echo "scale=2; $elapsed / 60" | bc) + echo "[$(date +%H:%M:%S)] [${elapsed}s / ${elapsed_min}m] ${stage}" | tee -a "$METRICS_FILE" +} + +run_stage() { + local stage="$1" + shift + log_metric "START: ${stage}" + "$@" + log_metric "END: ${stage}" +} + +if [ $# -eq 0 ]; then + echo "Usage: $0 [args...]" + echo "Records elapsed time and logs build stage performance." + echo + echo "Example:" + echo " source build-metrics.sh" + echo " run_stage 'Building ISO' ./mkarchiso.sh" + exit 0 +fi + +run_stage "$@" diff --git a/build.sh b/build.sh index 163f89a8..365cf529 100755 --- a/build.sh +++ b/build.sh @@ -1,4 +1,12 @@ - ./refresh.sh -j && ./mkarchiso.sh -# sudo rm /var/cache/pacman/pkg/* -sudo rm -rf ./work +#!/usr/bin/env bash +set -euo pipefail + +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +source "${SCRIPT_DIR}/build-metrics.sh" + +run_stage "Clean workspace" ./refresh.sh -j +run_stage "Build ISO" ./mkarchiso.sh +run_stage "Clean build artifacts" sudo rm -rf ./work + +log_metric "BUILD COMPLETE"