Update mash.sh script

Do not bother using DNF to get the NVR of packages.  Call out to RPM
directly instead.

More completely parameterize script to allow for sourcing of variables
from parameters.sh sometime in the future.

Signed-off-by: George T Kramer <george.t.kramer@intel.com>
This commit is contained in:
George T Kramer
2019-03-04 19:13:19 -08:00
parent fc26fcf467
commit 7aec646ade
+27 -15
View File
@@ -7,32 +7,44 @@ if [[ -e /etc/profile.d/proxy.sh ]]; then
source /etc/profile.d/proxy.sh
fi
KOJI_HOME=/srv/koji
MASH_HOME=/srv/mash
MASH_TRACKER_FILE="$MASH_HOME"/latest-mash-build
MASH_DIR="$MASH_HOME"/latest
MASH_DIR_OLD="$MASH_DIR".old
MASH_DIR_NEW="$MASH_DIR".new
TAG_NAME="${TAG_NAME:-clear}"
BUILD_ARCH="${BUILD_ARCH:-x86_64}"
KOJI_DIR="${KOJI_DIR:-/srv/koji}"
MASH_DIR="${MASH_DIR:-/srv/mash}"
MASH_TRACKER_FILE="$MASH_DIR"/latest-mash-build
MASH_TRACKER_DIR="$MASH_DIR"/latest
MASH_DIR_OLD="$MASH_TRACKER_DIR".old
MASH_DIR_NEW="$MASH_TRACKER_DIR".new
write_packages_file() {
local PKG_DIR="$1"
local PKG_FILE="$2"
rpm -qp --qf="%{NAME}\t%{VERSION}\t%{RELEASE}\n" "$PKG_DIR"/*.rpm | sort > "$PKG_FILE"
}
if [[ -e "$MASH_TRACKER_FILE" ]]; then
MASH_BUILD_NUM="$(< "$MASH_TRACKER_FILE")"
else
MASH_BUILD_NUM=0
fi
KOJI_BUILD_NUM="$(basename "$(realpath "$KOJI_HOME"/repos/dist-clear-build/latest/)")"
KOJI_BUILD_NUM="$(basename "$(realpath "$KOJI_DIR"/repos/dist-"$TAG_NAME"-build/latest/)")"
if [[ "$MASH_BUILD_NUM" -ne "$KOJI_BUILD_NUM" ]]; then
COMPS_FILE=$(mktemp)
koji show-groups --comps dist-clear-build > "$COMPS_FILE"
COMPS_FILE="$(mktemp)"
koji show-groups --comps dist-"$TAG_NAME"-build > "$COMPS_FILE"
rm -rf "$MASH_DIR_NEW"
mkdir -p "$MASH_DIR_NEW"
mash --outputdir="$MASH_DIR_NEW" --compsfile="$COMPS_FILE" clear
rm -f "$COMPS_FILE"
dnf -q --repofrompath=mash,file://"$MASH_DIR_NEW"/clear/x86_64/os repoquery -a --queryformat="%{NAME}\t%{VERSION}\t%{RELEASE}" | sort > "$MASH_DIR_NEW"/clear/x86_64/packages-os &>/dev/null
dnf -q --repofrompath=mash,file://"$MASH_DIR_NEW"/clear/x86_64/debug repoquery -a --queryformat="%{NAME}\t%{VERSION}\t%{RELEASE}" | sort > "$MASH_DIR_NEW"/clear/x86_64/packages-debug &>/dev/null
dnf -q --repofrompath=mash,file://"$MASH_DIR_NEW"/clear/source/SRPMS repoquery -a --queryformat="%{NAME}\t%{VERSION}\t%{RELEASE}" | sort > "$MASH_DIR_NEW"/clear/source/packages-SRPMS &>/dev/null
if [[ -e "$MASH_DIR" ]]; then
mv "$MASH_DIR" "$MASH_DIR_OLD"
write_packages_file "$MASH_DIR_NEW"/clear/"$BUILD_ARCH"/os/Packages "$MASH_DIR_NEW"/clear/"$BUILD_ARCH"/packages-os
write_packages_file "$MASH_DIR_NEW"/clear/"$BUILD_ARCH"/debug "$MASH_DIR_NEW"/clear/"$BUILD_ARCH"/packages-debug
write_packages_file "$MASH_DIR_NEW"/clear/source/SRPMS "$MASH_DIR_NEW"/clear/source/packages-SRPMS
if [[ -e "$MASH_TRACKER_DIR" ]]; then
mv "$MASH_TRACKER_DIR" "$MASH_DIR_OLD"
fi
mv "$MASH_DIR_NEW" "$MASH_DIR"
mv "$MASH_DIR_NEW" "$MASH_TRACKER_DIR"
rm -rf "$MASH_DIR_OLD"
echo "$KOJI_BUILD_NUM" > "$MASH_TRACKER_FILE"
fi