firmware: add version/repository check for core packages #3473

This commit is contained in:
Franco Fichtner 2019-09-23 09:53:49 +02:00
parent a58ad17289
commit 245486bc87

View File

@ -27,6 +27,7 @@
MTREE="mtree -e -p /"
PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
TMPFILE=/tmp/pkg_check.exclude
UPSTREAM="OPNsense"
# Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE}
@ -92,24 +93,80 @@ set_check()
if [ ${MTREE_RET} -eq 0 ]; then
if [ "${MTREE_MIA}" = "0" ]; then
echo "No problems detected." >> ${PKG_PROGRESS_FILE} 2>&1
echo "No problems detected." >> ${PKG_PROGRESS_FILE}
else
echo "Missing files: ${MTREE_MIA}" >> ${PKG_PROGRESS_FILE} 2>&1
echo "${MTREE_OUT}" >> ${PKG_PROGRESS_FILE} 2>&1
echo "Missing files: ${MTREE_MIA}" >> ${PKG_PROGRESS_FILE}
echo "${MTREE_OUT}" >> ${PKG_PROGRESS_FILE}
fi
else
echo "Error ${MTREE_RET} ocurred." >> ${PKG_PROGRESS_FILE} 2>&1
echo "${MTREE_OUT}" >> ${PKG_PROGRESS_FILE} 2>&1
echo "Error ${MTREE_RET} ocurred." >> ${PKG_PROGRESS_FILE}
echo "${MTREE_OUT}" >> ${PKG_PROGRESS_FILE}
fi
rm ${TMPFILE}
}
core_check()
{
echo ">>> Check for core packages consistency" >> ${PKG_PROGRESS_FILE}
CORE=$(opnsense-version -n)
PROGRESS=
for DEP in $( (echo ${CORE}; pkg query %dn ${CORE}) | sort); do
if [ -z "${PROGRESS}" ]; then
echo -n "Checking core packages: ." >> ${PKG_PROGRESS_FILE}
PROGRESS=1
else
echo -n "." >> ${PKG_PROGRESS_FILE}
fi
read REPO LVER AUTO VITA << EOF
$(pkg query "%R %v %a %V" ${DEP})
EOF
if [ "${REPO}" != ${UPSTREAM} ]; then
if [ -n "${PROGRESS}" ]; then
echo >> ${PKG_PROGRESS_FILE}
fi
echo "${DEP}-${LVER} repository mismatch: ${REPO}" >> ${PKG_PROGRESS_FILE}
PROGRESS=
fi
RVER=$(pkg rquery -r ${UPSTREAM} %v ${DEP})
if [ -z "${RVER}" ]; then
if [ -n "${PROGRESS}" ]; then
echo >> ${PKG_PROGRESS_FILE}
fi
echo "${DEP}-${LVER} has no upstream equivalent" >> ${PKG_PROGRESS_FILE}
PROGRESS=
elif [ "${RVER}" != "${LVER}" ]; then
if [ -n "${PROGRESS}" ]; then
echo >> ${PKG_PROGRESS_FILE}
fi
echo "${DEP}-${LVER} version mismatch, expected ${RVER}" >> ${PKG_PROGRESS_FILE}
PROGRESS=
fi
# XXX check AUTO and VITA
done
if [ -n "${PROGRESS}" ]; then
echo " done" >> ${PKG_PROGRESS_FILE}
fi
}
echo "***GOT REQUEST TO AUDIT HEALTH***" >> ${PKG_PROGRESS_FILE}
set_check kernel
set_check base
echo ">>> Check for and install missing package dependencies" >> ${PKG_PROGRESS_FILE}
pkg check -da >> ${PKG_PROGRESS_FILE} 2>&1
echo ">>> Check for missing or altered package files" >> ${PKG_PROGRESS_FILE}
pkg check -sa >> ${PKG_PROGRESS_FILE} 2>&1
core_check
echo '***DONE***' >> ${PKG_PROGRESS_FILE}