X-Git-Url: http://git.grml.org/?p=grml-live.git;a=blobdiff_plain;f=etc%2Fgrml%2Ffai%2Fconfig%2Fscripts%2FGRMLBASE%2F01-packages;h=aae58ae82e90a01efef66d60b5abe970f750989f;hp=bf92ae922976fb7a92d11a636d2fd7eba08bae3e;hb=4e93b8eddcee4f8e2a8d4b3bed24ed794a936c0e;hpb=8c0c9d9228f2ac667279c6384edf08af401ffe00 diff --git a/etc/grml/fai/config/scripts/GRMLBASE/01-packages b/etc/grml/fai/config/scripts/GRMLBASE/01-packages index bf92ae9..aae58ae 100755 --- a/etc/grml/fai/config/scripts/GRMLBASE/01-packages +++ b/etc/grml/fai/config/scripts/GRMLBASE/01-packages @@ -9,12 +9,24 @@ set -u set -e -PACKAGE_LIST=/var/log/install_packages.list +echo -n > "${LOGDIR}"/package_errors.log # ensure we start with an empty file -if ! [ -r "$target/${PACKAGE_LIST}" ] ; then - echo "No $target/${PACKAGE_LIST} found, will not run package validation check." +if ! [ -e "${LOGDIR}"/software.log ] ; then + echo "Warning: no ${LOGDIR}/software.log found (build/update run?), skipping check for unknown packages." else - printf "Validating package list: " + if grep -q 'These unknown packages' "${LOGDIR}"/software.log ; then + echo "Identified unknown packages in ${LOGDIR}/software.log" + grep 'These unknown packages' "${LOGDIR}"/software.log | \ + sed 's/.*These unknown packages.*: //; s/ / not_installable\n/g' >> "${LOGDIR}/package_errors.log" + fi +fi + +PACKAGE_LIST=/var/log/install_packages.list +# shellcheck disable=SC2154 +if ! [ -r "${target}/${PACKAGE_LIST}" ] ; then + echo "No ${target}/${PACKAGE_LIST} found, will not run package validation check." +else + echo "Validating package list against dpkg state..." TMPSTDOUT=$(mktemp) TMPSTDERR=$(mktemp) @@ -25,23 +37,24 @@ else # for packages unknown to dpkg on stderr # NOTE: 'grep -v -- '-$' ignores packages in FAI's package list that are # marked for removal - $ROOTCMD dpkg --list $(grep -v '^#' $target/${PACKAGE_LIST} | grep -v -- '-$') 2>"$TMPSTDERR" | \ - grep -e '^[urph][ncufhWt]' > "$TMPSTDOUT" || true + # shellcheck disable=SC2046 + ${ROOTCMD} dpkg --list $(grep -v '^#' "${target}/${PACKAGE_LIST}" | grep -v -- '-$') 2>"${TMPSTDERR}" | \ + grep -e '^[urph][ncufhWt]' > "${TMPSTDOUT}" || true # extract packages from stdout - awk '/^un/ {print $2 " not_installable"}' "$TMPSTDOUT" > "$LOGDIR/package_errors.log" + awk '/^un/ {print $2 " not_installable"}' "${TMPSTDOUT}" >> "${LOGDIR}/package_errors.log" # extract packages from stderr - grep 'packages found matching' "$TMPSTDERR" | \ - sed 's/dpkg-query: [Nn]o packages found matching \(.*\)/\1 not_installable/' >> "$LOGDIR/package_errors.log" + grep 'packages found matching' "${TMPSTDERR}" | \ + sed 's/dpkg-query: [Nn]o packages found matching \(.*\)/\1 not_installable/' >> "${LOGDIR}/package_errors.log" - if [ -s "$LOGDIR/package_errors.log" ] ; then - printf "failed (there have been errors, find them at $LOGDIR/package_errors.log)\n" - else - printf "done - no errors found\n" - fi + rm -f "${TMPSTDOUT}" "${TMPSTDERR}" +fi - rm -f "$TMPSTDOUT" "$TMPSTDERR" +if [ -s "${LOGDIR}/package_errors.log" ] ; then + echo "Warning: failed (there have been errors, find them at ${LOGDIR}/package_errors.log)." +else + echo "Done - no errors found." fi ## END OF FILE #################################################################