#!/bin/sh set -e case "${1}" in install|upgrade) mkdir -p /usr/lib/container/divert for FILE in halt poweroff reboot shutdown coldreboot do # DEP17 M18 duplicated diversion. Once trixie is # released, remove the aliased diversions in postinst # and only have the canonical one with --rename here. TRUENAME="$(dpkg-divert --truename "/sbin/${FILE}")" if [ "$(dpkg-divert --truename "/usr/sbin/${FILE}")" != "/usr/sbin/${FILE}" ] then : # Canonically diverted already. Nothing to rename. elif [ "${TRUENAME}" = "/lib/container/divert/${FILE}.orig.usr-is-merged" ] then : # Aliased diversion as expected. Nothing to rename. elif [ "${TRUENAME}" != "/sbin/${FILE}" ] then # Aliased diversion with earlier target. Fix target. dpkg-divert --remove --no-rename "/sbin/${FILE}" if [ -e "${DPKG_ROOT}${TRUENAME}" ] || [ -h "${DPKG_ROOT}${TRUENAME}" ] then mv "${DPKG_ROOT}${TRUENAME}" "${DPKG_ROOT}/lib/container/divert/${FILE}.orig.usr-is-merged" fi elif dpkg -S "/sbin/${FILE}" >/dev/null 2>&1 then # Not diverted yet. Installed as aliased. mv "${DPKG_ROOT}/sbin/${FILE}" "${DPKG_ROOT}/lib/container/divert/${FILE}.orig.usr-is-merged" elif [ -e "${DPKG_ROOT}/usr/sbin/${FILE}" ] || [ -h "${DPKG_ROOT}/usr/sbin/${FILE}" ] then # Not diverted yet. Installed as canonical. mv "${DPKG_ROOT}/usr/sbin/${FILE}" "${DPKG_ROOT}/usr/lib/container/divert/${FILE}.orig" fi # All necessary moving has been done. Hence --no-rename. dpkg-divert --package bfh-container --quiet --add --no-rename --divert "/lib/container/divert/${FILE}.orig.usr-is-merged" "/sbin/${FILE}" dpkg-divert --package bfh-container --quiet --add --no-rename --divert "/usr/lib/container/divert/${FILE}.orig" "/usr/sbin/${FILE}" done for FILE in pm-hibernate pm-suspend pm-suspend-hybrid do TRUENAME="$(dpkg-divert --truename "/usr/sbin/${FILE}")" if [ "${TRUENAME}" = "/usr/sbin/${FILE}" ] then # Not diverted yet. dpkg-divert --package bfh-container --quiet --add --rename --divert "/usr/lib/container/divert/${FILE}.orig" "/usr/sbin/${FILE}" elif [ "${TRUENAME}" != "/usr/lib/container/divert/${FILE}.orig" ] then # Upgrading from pre-trixie. Update the diversion target from aliased to canonical. dpkg-divert --package bfh-container --quiet --remove --no-rename "/usr/sbin/${FILE}" dpkg-divert --package bfh-container --quiet --add --no-rename --divert "/usr/lib/container/divert/${FILE}.orig" "/usr/sbin/${FILE}" if [ "${TRUENAME}" != "/lib/container/divert/${FILE}.orig" ] then # Diversion target differs in more than aliasing. if [ -e "${DPKG_ROOT}${TRUENAME}" ] || [ -h "${DPKG_ROOT}${TRUENAME}" ] then mv "${DPKG_ROOT}${TRUENAME}" "${DPKG_ROOT}/usr/lib/container/divert/${FILE}.orig" fi fi fi done ;; abort-upgrade) ;; *) echo "preinst called with unknown argument \`${1}'" >&2 exit 1 ;; esac exit 0