OpenBSD pkg utils does not return properly, so we have to verify success by looking at the list of installed packages after the present/absent actions

This commit is contained in:
og 2014-03-03 14:59:50 -07:00
parent ef1f9bf633
commit 3fffb93150
1 changed files with 16 additions and 6 deletions

View File

@ -69,12 +69,17 @@ case "$state_should" in
# use this because pkg_add doesn't properly handle errors
cat << eof
export PKG_PATH="$pkg_path"
status=\$(pkg_add "$pkgopts" "$name--$flavor")
status=\$(pkg_add "$pkgopts" "$name--$flavor" 2>&1)
pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
# no error
if [ -n "\$status" ]; then
# We didn't find the package in the list of 'installed packages', so it failed
# This is necessary because pkg_add doesn't return properly
if [ $? -ne 0 ]; then
if [ -z "${status}" ]; then
status="Failed to add package, uncaught exception."
fi
echo "Error: \$status"
exit 1
exit 1
fi
eof
;;
@ -83,9 +88,14 @@ eof
# use this because pkg_add doesn't properly handle errors
cat << eof
status=\$(pkg_delete "$pkgopts" "$name--$flavor")
pkg_info | grep "^${name}.*${flavor}" > /dev/null 2>&1
# no error
if [ -n "\$status" ]; then
# We found the package in the list of 'installed packages'
# This would indicate that pkg_delete failed, send the output of pkg_delete
if [ $? -eq 0 ]; then
if [ -z "${status}" ]; then
status="Failed to remove package, uncaught exception."
fi
echo "Error: \$status"
exit 1
fi