glib2.0/debian/libglib2.0-0t64.preinst

49 lines
2.1 KiB
Bash

#!/bin/sh
# Copyright 2024 Simon McVittie
# SPDX-License-Identifier: LGPL-2.1-or-later
set -e
# Clean up libglib2.0-0:*.postrm, so that when libglib2.0-0 is purged, it
# will not delete non-dpkg-managed files that have been taken over by
# libglib2.0-0t64, most problematically
# /usr/share/glib-2.0/schemas/gschemas.compiled.
# See https://bugs.debian.org/1065022, https://bugs.debian.org/1065170.
# TODO: When, if ever, can we safely remove this?
case "$1" in
(install|upgrade)
# Do this cleanup on upgrade from any version older than the one that
# introduced this change to experimental.
#
# We also need to do this cleanup on new installations of
# libglib2.0-0t64 (because any new installation might be replacing
# libglib2.0-0) so treat an empty version as being arbitrarily old.
if dpkg --compare-versions "${2:-}" lt "2.79.3-3"
then
# If there are several multiarch instances, they might have been
# removed but not purged, in which case purging them (perhaps
# much later, and perhaps without installing libglib2.0-0t64 of
# the corresponding architecture) would still remove
# /usr/share/glib-2.0/schemas/gschemas.compiled; so instead of
# only doing this cleanup for the current architecture, we attempt
# to clean up all multiarch instances the first time any single
# instance is installed or upgraded.
for arch in $(dpkg --print-architecture) $(dpkg --print-foreign-architectures)
do
if old_postrm=$(dpkg-query --control-path "libglib2.0-0:$arch" postrm 2>/dev/null) \
&& [ -n "$old_postrm" ] \
&& [ -e "$old_postrm" ]
then
echo "libglib2.0-0t64.preinst: Removing $old_postrm to avoid" \
"loss of /usr/share/glib-2.0/schemas/gschemas.compiled..."
rm -f -v "$old_postrm"
fi
done
fi
;;
esac
#DEBHELPER#
# vim:set sw=4 sts=4 et: