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