Fix is_package_installed() check with dpkg
is_package_installed() incorrectly returned '0' for packages that had 'un' status in the dpkg database. Change-Id: I81b77486c2ed7717ed81cb2c2572fe6c4b394ffc
This commit is contained in:
parent
8db8f38c65
commit
04762cd823
28
functions
28
functions
@ -317,16 +317,36 @@ function get_packages() {
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Assume we want this package
|
||||||
|
package=${line%#*}
|
||||||
|
inst_pkg=1
|
||||||
|
|
||||||
|
# Look for # dist:xxx in comment
|
||||||
if [[ $line =~ (.*)#.*dist:([^ ]*) ]]; then
|
if [[ $line =~ (.*)#.*dist:([^ ]*) ]]; then
|
||||||
# We are using BASH regexp matching feature.
|
# We are using BASH regexp matching feature.
|
||||||
package=${BASH_REMATCH[1]}
|
package=${BASH_REMATCH[1]}
|
||||||
distros=${BASH_REMATCH[2]}
|
distros=${BASH_REMATCH[2]}
|
||||||
# In bash ${VAR,,} will lowecase VAR
|
# In bash ${VAR,,} will lowecase VAR
|
||||||
[[ ${distros,,} =~ ${DISTRO,,} ]] && echo $package
|
# Look for a match in the distro list
|
||||||
continue
|
if [[ ! ${distros,,} =~ ${DISTRO,,} ]]; then
|
||||||
|
# If no match then skip this package
|
||||||
|
inst_pkg=0
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ${line%#*}
|
# Look for # testonly in comment
|
||||||
|
if [[ $line =~ (.*)#.*testonly.* ]]; then
|
||||||
|
package=${BASH_REMATCH[1]}
|
||||||
|
# Are we installing test packages? (test for the default value)
|
||||||
|
if [[ $INSTALL_TESTONLY_PACKAGES = "False" ]]; then
|
||||||
|
# If not installing test packages the skip this package
|
||||||
|
inst_pkg=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $inst_pkg = 1 ]]; then
|
||||||
|
echo $package
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
IFS=$OIFS
|
IFS=$OIFS
|
||||||
done
|
done
|
||||||
@ -912,7 +932,7 @@ function is_package_installed() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$os_PACKAGE" = "deb" ]]; then
|
if [[ "$os_PACKAGE" = "deb" ]]; then
|
||||||
dpkg -l "$@" > /dev/null 2> /dev/null
|
dpkg -s "$@" > /dev/null 2> /dev/null
|
||||||
elif [[ "$os_PACKAGE" = "rpm" ]]; then
|
elif [[ "$os_PACKAGE" = "rpm" ]]; then
|
||||||
rpm --quiet -q "$@"
|
rpm --quiet -q "$@"
|
||||||
else
|
else
|
||||||
|
@ -367,3 +367,25 @@ if [[ "$VAL" -ne 0 ]]; then
|
|||||||
else
|
else
|
||||||
echo "is_package_installed() on non-existing package failed"
|
echo "is_package_installed() on non-existing package failed"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# test against removed package...was a bug on Ubuntu
|
||||||
|
if is_ubuntu; then
|
||||||
|
PKG=cowsay
|
||||||
|
if ! (dpkg -s $PKG >/dev/null 2>&1); then
|
||||||
|
# it was never installed...set up the condition
|
||||||
|
sudo apt-get install -y cowsay >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
if (dpkg -s $PKG >/dev/null 2>&1); then
|
||||||
|
# remove it to create the 'un' status
|
||||||
|
sudo dpkg -P $PKG >/dev/null 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# now test the installed check on a deleted package
|
||||||
|
is_package_installed $PKG
|
||||||
|
VAL=$?
|
||||||
|
if [[ "$VAL" -ne 0 ]]; then
|
||||||
|
echo "OK"
|
||||||
|
else
|
||||||
|
echo "is_package_installed() on deleted package failed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user