54 lines
2.0 KiB
Bash
54 lines
2.0 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
# Abort if any command fails or undefined variable is used.
|
||
|
set -eu
|
||
|
|
||
|
export LC_ALL=C
|
||
|
|
||
|
CONFIG=fedora-dnf.conf
|
||
|
TARGET_DIR=/mnt/koji/compose/rawhide-dnf
|
||
|
DATE=$(date +%Y%m%d)
|
||
|
COMPSDIR=$(mktemp -d "/tmp/rawhide-dnf.$DATE.XXXX")
|
||
|
COMPSFILE=comps-rawhide.xml
|
||
|
|
||
|
# Clone comps repo, create comps file for rawhide and copy it into current
|
||
|
# directory.
|
||
|
git clone https://pagure.io/fedora-comps.git "$COMPSDIR"
|
||
|
make -C "$COMPSDIR" "$COMPSFILE"
|
||
|
cp "$COMPSDIR/$COMPSFILE" "$(pwd)/"
|
||
|
rm -rf "$COMPSDIR"
|
||
|
|
||
|
# Pick yum-based compose to replicate: the one from the same day should do.
|
||
|
YUM_COMPOSE=/mnt/koji/compose/rawhide/Fedora-Rawhide-$DATE.n.0
|
||
|
|
||
|
# Retrieve Koji event id from it
|
||
|
EVENT=$(python -m json.tool <"$YUM_COMPOSE/work/global/koji-event" | grep id | tr -d -c '0-9')
|
||
|
|
||
|
# Make sure target directory exists
|
||
|
mkdir -p $TARGET_DIR
|
||
|
|
||
|
# Run the compose with correct event, and only use the required phases.
|
||
|
time pungi-koji --config="$CONFIG" --target-dir="$TARGET_DIR" --nightly --koji-event="$EVENT" \
|
||
|
--just-phase init --just-phase pkgset --just-phase gather --just-phase test \
|
||
|
--old-composes="$TARGET_DIR"
|
||
|
|
||
|
DNF_COMPOSE=$(readlink -f $TARGET_DIR/latest-Fedora-Rawhide)
|
||
|
|
||
|
# Compose was successful, let's compute differences in packages
|
||
|
LOG_DIR="$DNF_COMPOSE/logs/global/depsolve/"
|
||
|
mkdir -p "$LOG_DIR"
|
||
|
|
||
|
# For each variant.arch combination there is a separate log file. The filenames
|
||
|
# contain both variant UID and arch, so they are unique and can be safely
|
||
|
# copied into one directory.
|
||
|
for logfile in $YUM_COMPOSE/work/*/pungi/*.log; do
|
||
|
# Find path relative to compose topdir: work/<arch>/pungi/<variant>.<arch>.log
|
||
|
log=$(echo "$logfile" | rev | cut -d/ -f-4 | rev)
|
||
|
# The command exits with 1 if there are differences, so we will suppress
|
||
|
# that to avoid having script exit after processing first log.
|
||
|
pungi-compare-depsolving "$YUM_COMPOSE/$log" "$DNF_COMPOSE/$log" >"$LOG_DIR/$(basename "$log")" || true
|
||
|
done
|
||
|
|
||
|
# Delete composes older than 7 days.
|
||
|
find $TARGET_DIR -xdev -depth -maxdepth 2 -mtime +7 -exec rm -rf {} \;
|