From ff1b6c0dc6c8ff90258b339ccba9b536160a8fd8 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Wed, 24 Jun 2026 16:53:54 +0200 Subject: Annotate build order with cache outcome (run + dry-run) Co-Authored-By: Claude Opus 4.8 --- sbo-batch-test | 37 ++++++++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/sbo-batch-test b/sbo-batch-test index 01280a3..a6ec6b4 100755 --- a/sbo-batch-test +++ b/sbo-batch-test @@ -646,6 +646,31 @@ CHROOT_EOF return 1 } +# Echo a human label for a package's cache outcome, given its SlackBuild dir and +# whether it is the run's target. Mirrors cache_decision but renders text. +# target, build (new) | target, rebuild: A -> B | cached (V) | rebuild: A -> B | build (new) +cache_label() { + local dir="$1" is_target="$2" + local cat prog ver dec + cat="$(category_of "$dir")"; prog="$(basename "$dir")"; ver="$(version_of "$dir")" + dec="$(cache_decision "$cat" "$prog" "$ver")" + local label + case "$dec" in + cached) label="cached ($ver)" ;; + bump:*) label="rebuild: ${dec#bump:}"; label="${label/:/ -> }" ;; + *) label="build (new)" ;; + esac + # The target always builds; never show it as plain "cached". + if [[ "$is_target" == "1" ]]; then + case "$dec" in + cached) label="build (cached $ver, rebuilt as target)" ;; + esac + echo "target, $label" + else + echo "$label" + fi +} + # ============================================================================= # Run one target: fresh overlay, build its resolved chain, teardown. # Args: @@ -677,14 +702,20 @@ run_target() { echo " build order:" local d for d in "${RESOLVED_ORDER[@]}"; do - echo " $(pkg_key "$d")$([[ "${HAS_README[$d]:-}" == 1 ]] && echo " [%README%]")" + local it=0; [[ "$d" == "$target_dir" ]] && it=1 + local rdm=""; [[ "${HAS_README[$d]:-}" == 1 ]] && rdm=" [%README%]" + printf " %-30s %s%s\n" "$(pkg_key "$d")" "$(cache_label "$d" "$it")" "$rdm" echo "$(pkg_key "$d")" >> "$RUN_DIR/build-order.txt" done return fi - echo " build order: ${RESOLVED_ORDER[*]##*/}" - for d in "${RESOLVED_ORDER[@]}"; do echo "$(pkg_key "$d")" >> "$RUN_DIR/build-order.txt"; done + echo " build order:" + for d in "${RESOLVED_ORDER[@]}"; do + local it=0; [[ "$d" == "$target_dir" ]] && it=1 + printf " %-30s %s\n" "$(pkg_key "$d")" "$(cache_label "$d" "$it")" + echo "$(pkg_key "$d")" >> "$RUN_DIR/build-order.txt" + done local tmpdir; tmpdir="$(setup_overlay)" -- cgit v1.2.3