| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #!/bin/sh -e
- # This script can be called in the following ways:
- #
- # Before the package is removed:
- # <prerm> remove
- #
- # Before an upgrade:
- # <old-prerm> upgrade <new-version>
- # if that fails:
- # <new-prerm> failed-upgrade <old-version>
- #
- #
- # Before package is deconfigured while dependency is replaced due to conflict:
- # <prerm> deconfigure in-favour <new-package> <version>
- # removing <old-package> <version>
- #
- # Before the package is replaced due to conflict:
- # <prerm> remove in-favour <new-package> <version>
- ensure_no_triggers_noawait()
- {
- admindir=${DPKG_ADMINDIR:-/var/lib/dpkg}
- pkgadmindir=$admindir/info
- trig_noawait=$(find "$pkgadmindir" -name "*.triggers" -type f | \
- xargs -r grep -El "^(interest|activate)-(no)?await" | \
- sed -e 's,^.*/\([^/.:]\+\)[^/]\+$,\1,')
- # Abort if we cannot possibly downgrade
- if [ -n "$trig_noawait" ]; then
- cat <<- MSG
- dpkg: error: You have packages using the "interest-noawait" and/or
- "activate-noawait" trigger directives but the dpkg version that
- you're trying to downgrade to doesn't support them. Aborting
- downgrade.
- List of affected packages:
- $trig_noawait
- MSG
- exit 1
- fi
- bad_triggers_files=$(find "$admindir/triggers" -type f | \
- xargs -r grep -l "/noawait$" || true)
- if [ -n "$bad_triggers_files" ]; then
- cat <<- MSG
- dpkg: error: Some internal trigger files unexpectedly reference
- packages tagged with "/noawait" while their corresponding
- infodb files doesn't seem to contain any "interest-noawait"
- directive. Aborting the downgrade as those tags are not supported
- by the version you're trying to downgrade to.
- List of internal trigger files that are affected:
- $bad_triggers_files
- MSG
- exit 1
- fi
- }
- case "$1" in
- upgrade)
- # Allow the downgrade only if no package is using the
- # (interest|activate)-noawait trigger directives
- if dpkg --compare-versions "$2" lt 1.16.1~; then
- ensure_no_triggers_noawait
- fi
- ;;
- remove|failed-upgrade|deconfigure)
- ;;
- *)
- echo "$0 called with unknown argument \`$1'" 1>&2
- exit 1
- ;;
- esac
- #DEBHELPER#
- exit 0
|