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
This commit is contained in:
Ian Wienand 2014-02-28 14:29:02 +11:00
parent 0dfbf9b4b9
commit b27f16d716
2 changed files with 17 additions and 2 deletions

View File

@ -13,6 +13,6 @@ python-lxml #dist:f18,f19,f20,rhel7
python-paste-deploy #dist:f18,f19,f20,rhel7
python-routes
python-sqlalchemy
python-wsgiref
python-wsgiref #dist:f18,f19,f20
pyxattr
zlib-devel # testonly

View File

@ -938,9 +938,24 @@ function yum_install {
[[ "$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