Detect missing packages with yum
yum -y doesn't report an error when packages are missing (see [1] for
upstream discussion). Thus we run the output of yum through a small
awk script looking for missing packages output.
The one change required for RHEL is that python-wsgiref is included in
the distro python, so doesn't need a separate package.
[1] https://bugzilla.redhat.com/show_bug.cgi?id=965567
Change-Id: I9908ff4edbf2b0d961d25837a08a34e1417bbb02
diff --git a/functions-common b/functions-common
index 0db3ff3..ed3d883 100644
--- a/functions-common
+++ b/functions-common
@@ -938,9 +938,24 @@
[[ "$OFFLINE" = "True" ]] && return
local sudo="sudo"
[[ "$(id -u)" = "0" ]] && sudo="env"
+
+ # The manual check for missing packages is because yum -y assumes
+ # missing packages are OK. See
+ # https://bugzilla.redhat.com/show_bug.cgi?id=965567
$sudo http_proxy=$http_proxy https_proxy=$https_proxy \
no_proxy=$no_proxy \
- yum install -y "$@"
+ yum install -y "$@" 2>&1 | \
+ awk '
+ BEGIN { fail=0 }
+ /No package/ { fail=1 }
+ { print }
+ END { exit fail }' || \
+ die $LINENO "Missing packages detected"
+
+ # also ensure we catch a yum failure
+ if [[ ${PIPESTATUS[0]} != 0 ]]; then
+ die $LINENO "Yum install failure"
+ fi
}
# zypper wrapper to set arguments correctly