82 lines
2.9 KiB
Bash
Executable file
82 lines
2.9 KiB
Bash
Executable file
#!/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
|
|
|
|
#DEBHELPER#
|
|
|
|
exit 0
|