2025-02-24 04:42:58 +01:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
2025-02-24 06:04:26 +01:00
|
|
|
# DEP17 M18: Duplicate diversion in aliased location /bin.
|
|
|
|
|
2025-05-02 04:31:57 +02:00
|
|
|
die() {
|
|
|
|
printf '%s, cannot proceed\n' "$*" 1>&2
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
2025-02-24 04:42:58 +01:00
|
|
|
case "${1}" in
|
|
|
|
install)
|
2025-05-02 04:31:57 +02:00
|
|
|
# Situations considered:
|
|
|
|
# * bookworm or earlier gzip is fully installed.
|
|
|
|
# -> No diversions, /bin/${FILE}
|
|
|
|
# * trixie or later gzip is unpacked.
|
|
|
|
# -> No diversions, /usr/bin/${FILE}
|
|
|
|
# * trixie or later gzip has been unpacked while bookworm's
|
|
|
|
# zutils was installed, but zutils has since been removed.
|
|
|
|
# -> /usr/bin/FILE -> /usr/bin/FILE.usr-is-merged
|
|
|
|
# * trixie or later gzip is fully installed.
|
|
|
|
# -> No diversions, /usr/bin/${FILE}
|
|
|
|
#
|
|
|
|
# We cannot run between gzip.preinst and gzip unpack.
|
|
|
|
GZIP_VERSION=$(dpkg-query -f '${Version}' -W gzip)
|
|
|
|
GZIP_PREFIX=/usr
|
2025-05-12 18:51:47 +02:00
|
|
|
GZIP_SUFFIX=
|
|
|
|
dpkg --compare-versions "$GZIP_VERSION" lt 1.12-1.1~ && {
|
|
|
|
GZIP_PREFIX=
|
|
|
|
GZIP_SUFFIX=.usr-is-merged
|
|
|
|
}
|
2025-02-24 05:56:37 +01:00
|
|
|
for FILE in zcat zcmp zdiff zegrep zfgrep zgrep
|
2025-02-24 04:42:58 +01:00
|
|
|
do
|
2025-05-02 04:31:57 +02:00
|
|
|
TRUENAME=$(dpkg-divert --truename "/usr/bin/${FILE}")
|
|
|
|
if [ "${TRUENAME}" = "/usr/bin/${FILE}.usr-is-merged" ]
|
|
|
|
then
|
|
|
|
dpkg-divert --package zutils --quiet --remove --no-rename --divert "${TRUENAME}" "/usr/bin/${FILE}"
|
|
|
|
elif [ "${TRUENAME}" != "/usr/bin/${FILE}" ]
|
|
|
|
then
|
|
|
|
die "unexpected diversion of /usr/bin/${FILE} to ${TRUENAME}"
|
|
|
|
fi
|
|
|
|
# We cannot --rename, because it'll rename any existing
|
|
|
|
# file without checking whether the file is owned or
|
|
|
|
# not. Correctly compute the required rename depending
|
|
|
|
# on the gzip version.
|
|
|
|
dpkg-divert --package zutils --quiet --add --no-rename --divert "/usr/bin/${FILE}.gzip" "/usr/bin/${FILE}"
|
|
|
|
dpkg-divert --package zutils --quiet --add --no-rename --divert "/bin/${FILE}.gzip.usr-is-merged" "/bin/${FILE}"
|
2025-05-12 18:51:47 +02:00
|
|
|
mv "${DPKG_ROOT:-}${TRUENAME}" "${DPKG_ROOT:-}${GZIP_PREFIX}/bin/${FILE}.gzip${GZIP_SUFFIX}"
|
2025-02-24 05:10:50 +01:00
|
|
|
dpkg-divert --package zutils --quiet --add --rename --divert /usr/share/man/man1/${FILE}.gzip.1.gz /usr/share/man/man1/${FILE}.1.gz
|
2025-02-24 04:42:58 +01:00
|
|
|
done
|
|
|
|
;;
|
|
|
|
|
2025-02-24 06:04:26 +01:00
|
|
|
upgrade)
|
|
|
|
for FILE in zcat zcmp zdiff zegrep zfgrep zgrep
|
|
|
|
do
|
2025-02-24 06:04:27 +01:00
|
|
|
TRUENAME=$(dpkg-divert --truename "/usr/bin/${FILE}")
|
|
|
|
|
|
|
|
if [ "${TRUENAME}" = "/usr/bin/${FILE}.usr-is-merged" ]
|
|
|
|
then
|
2025-05-02 04:31:57 +02:00
|
|
|
|
|
|
|
# This branch should be dead code. The
|
|
|
|
# diversion indicates that trixie's gzip has
|
|
|
|
# been unpacked, but trixie's gzip also
|
|
|
|
# conflicts with zutils (<< trixie), so either
|
|
|
|
# we're not installing or we are upgrading from
|
|
|
|
# trixie.
|
|
|
|
if ! [ -e "${DPKG_ROOT}${TRUENAME}" ]
|
|
|
|
then
|
|
|
|
die "diverted file ${TRUENAME} does not exist"
|
|
|
|
fi
|
2025-02-24 06:04:27 +01:00
|
|
|
dpkg-divert --package zutils --quiet --remove --no-rename --divert "/usr/bin/${FILE}.usr-is-merged" "/usr/bin/${FILE}"
|
|
|
|
dpkg-divert --package zutils --quiet --remove --no-rename "/bin/${FILE}"
|
|
|
|
dpkg-divert --package zutils --quiet --add --no-rename --divert "/usr/bin/${FILE}.gzip" "/usr/bin/${FILE}"
|
|
|
|
dpkg-divert --package zutils --quiet --add --no-rename --divert "/bin/${FILE}.gzip.usr-is-merged" "/bin/${FILE}"
|
2025-05-02 04:31:57 +02:00
|
|
|
mv "${DPKG_ROOT}${TRUENAME}" "${DPKG_ROOT}/usr/bin/${FILE}.gzip"
|
|
|
|
elif [ "${TRUENAME}" = "/usr/bin/${FILE}" ]
|
2025-02-24 06:04:27 +01:00
|
|
|
then
|
|
|
|
dpkg-divert --package zutils --quiet --add --no-rename --divert "/usr/bin/${FILE}.gzip" "/usr/bin/${FILE}"
|
|
|
|
|
|
|
|
TRUENAME=$(dpkg-divert --truename "/bin/${FILE}")
|
|
|
|
|
|
|
|
if [ "${TRUENAME}" != "/bin/${FILE}.gzip.usr-is-merged" ]
|
|
|
|
then
|
|
|
|
dpkg-divert --package zutils --quiet --remove --no-rename "/bin/${FILE}"
|
|
|
|
dpkg-divert --package zutils --quiet --add --no-rename --divert "/bin/${FILE}.gzip.usr-is-merged" "/bin/${FILE}"
|
|
|
|
if [ -e "${DPKG_ROOT}${TRUENAME}" ] || [ -h "${DPKG_ROOT}${TRUENAME}" ]
|
|
|
|
then
|
|
|
|
mv "${DPKG_ROOT}${TRUENAME}" "${DPKG_ROOT}/bin/${FILE}.gzip.usr-is-merged"
|
2025-02-24 06:04:26 +01:00
|
|
|
fi
|
|
|
|
fi
|
2025-05-12 18:51:47 +02:00
|
|
|
elif [ "${TRUENAME}" = "/usr/bin/${FILE}.gzip" ]
|
2025-05-02 04:31:57 +02:00
|
|
|
then
|
2025-05-12 18:51:47 +02:00
|
|
|
# 1.14-4 wrongly moved files. Fix.
|
|
|
|
if [ -e "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip.usr-is-merged" ] && ! [ -e "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip" ]
|
|
|
|
then
|
|
|
|
mv "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip.usr-is-merged" "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip"
|
|
|
|
fi
|
|
|
|
else
|
2025-05-02 04:31:57 +02:00
|
|
|
die "unexpected diversion of /usr/bin/${FILE} to ${TRUENAME}"
|
2025-02-24 06:04:26 +01:00
|
|
|
fi
|
|
|
|
done
|
|
|
|
;;
|
2025-02-24 06:04:38 +01:00
|
|
|
|
2025-02-24 06:04:26 +01:00
|
|
|
abort-upgrade)
|
2025-02-24 04:42:58 +01:00
|
|
|
|
|
|
|
;;
|
|
|
|
|
|
|
|
*)
|
2025-02-24 05:52:50 +01:00
|
|
|
echo "preinst called with unknown argument \`${1}'" >&2
|
2025-02-24 04:42:58 +01:00
|
|
|
exit 1
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
|
|
|
#DEBHELPER#
|
|
|
|
|
|
|
|
exit 0
|