diff options
Diffstat (limited to 'functions/packages.sh')
-rwxr-xr-x | functions/packages.sh | 83 |
1 files changed, 53 insertions, 30 deletions
diff --git a/functions/packages.sh b/functions/packages.sh index 049c89b8d..9e10b1dfc 100755 --- a/functions/packages.sh +++ b/functions/packages.sh @@ -14,43 +14,23 @@ Check_package () FILE="${1}" PACKAGE="${2}" - case "${LIVE_CHROOT_BUILD}" in - enabled) - for ITEM in ${PACKAGE} - do - if ! `Chroot "dpkg-query -s ${ITEM}"` - then - PACKAGES="${PACKAGES} ${ITEM}" - fi - done - ;; + Check_installed "${FILE}" "${PACKAGE}" - disabled) - if `which dpkg-query` - then - for ITEM in ${PACKAGE} - do - if ! `dpkg-query -s ${ITEM}` - then - PACKAGES="${PACKAGES} ${ITEM}" - fi - done - else - FILE="`echo ${FILE} | sed -e 's/chroot//'`" + case "${INSTALL_STATUS}" in + 1) + PACKAGES="${PACKAGES} ${PACKAGE}" + ;; - if [ ! -f "${FILE}" ] && [ ! -d "${FILE}" ] - then - Echo_error "You need to install ${PACKAGE} on your host system." - exit 1 - fi - fi + 2) + Echo_error "You need to install ${PACKAGE} on your host system." + exit 1 ;; esac } Install_package () { - if [ -n "${PACKAGES}" ] && [ "${LIVE_CHROOT_BUILD}" != "disabled" ] + if [ -n "${PACKAGES}" ] && [ "${LH_CHROOT_BUILD}" != "disabled" ] then case "${LH_APT}" in apt|apt-get) @@ -66,7 +46,7 @@ Install_package () Remove_package () { - if [ -n "${PACKAGES}" ] && [ "${LIVE_CHROOT_BUILD}" != "disabled" ] + if [ -n "${PACKAGES}" ] && [ "${LH_CHROOT_BUILD}" != "disabled" ] then case "${LH_APT}" in apt|apt-get) @@ -79,3 +59,46 @@ Remove_package () esac fi } + +# Check_installed +# uses as return value global var INSTALL_STATUS +# INSTALL_STATUS : 0 if package is installed +# 1 if package isn't installed and we're in an apt managed system +# 2 if package isn't installed and we aren't in an apt managed system +Check_installed () +{ + FILE="${1}" + PACKAGE="${2}" + + case "${LH_CHROOT_BUILD}" in + enabled) + if Chroot "dpkg-query -s ${PACKAGE}" 2> /dev/null | grep -qs "Status: install" + then + INSTALL_STATUS=0 + else + INSTALL_STATUS=1 + fi + ;; + disabled) + if which dpkg-query > /dev/null 2>&1 + then + if Chroot "dpkg-query -s ${PACKAGE}" 2> /dev/null | grep -qs "Status: install" + then + INSTALL_STATUS=0 + else + INSTALL_STATUS=1 + fi + else + FILE="`echo ${FILE} | sed -e 's/chroot//'`" + + if [ ! -e "${FILE}" ] + then + INSTALL_STATUS=2 + else + INSTALL_STATUS=0 + fi + fi + ;; + esac +} + |