Make sure the downgrade operation is always reverted

This commit is contained in:
Lumir Balhar 2026-07-07 08:32:41 +02:00
commit 3bc0535c27

View file

@ -19,6 +19,19 @@ set -eo pipefail
PYVER=${VERSION}
SCRIPT_DIR="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
WORK_DIR=""
DOWNGRADED=false
cleanup() {
if [[ "$DOWNGRADED" == true ]]; then
echo ""
echo "=== Reverting package downgrade ==="
dnf history undo last -y 2>&1 || echo "WARNING: dnf history undo failed" >&2
fi
[[ -n "$WORK_DIR" ]] && rm -rf "$WORK_DIR"
}
trap cleanup EXIT
# Directories containing compiled extension modules
SCAN_DIRS=()
for d in "/usr/lib64/python${PYVER}" "/usr/lib64/python${PYVER}t"; do
@ -36,7 +49,6 @@ for f in /usr/lib64/libpython${PYVER}*.so.*; do
done
WORK_DIR=$(mktemp -d)
trap 'rm -rf "$WORK_DIR"' EXIT
echo "=== Collecting PR build symbols ==="
python${PYVER} "$SCRIPT_DIR/collect_symbols.py" "${SCAN_ARGS[@]}" > "$WORK_DIR/new.json"
@ -62,6 +74,7 @@ if ! dnf downgrade -y "${PKGS[@]}" 2>&1; then
echo "INFO: dnf downgrade failed or no stable version available; skipping comparison." >&2
exit 0
fi
DOWNGRADED=true
echo ""
echo "=== Collecting stable version symbols ==="
@ -69,10 +82,4 @@ python${PYVER} "$SCRIPT_DIR/collect_symbols.py" "${SCAN_ARGS[@]}" > "$WORK_DIR/o
echo ""
echo "=== Comparing PR build against stable ==="
python${PYVER} "$SCRIPT_DIR/compare_symbols.py" "$WORK_DIR/old.json" "$WORK_DIR/new.json" || COMPARE_RC=$?
echo ""
echo "=== Reverting package downgrade ==="
dnf history undo last -y 2>&1
exit ${COMPARE_RC:-0}
python${PYVER} "$SCRIPT_DIR/compare_symbols.py" "$WORK_DIR/old.json" "$WORK_DIR/new.json"