Skip to content
Snippets Groups Projects
Commit f1d87822 authored by Simon McVittie's avatar Simon McVittie
Browse files

Merge branch 'wip/smcv/force-protected' into 'master'

platformize, purge-conffiles: Use dpkg --force-protected if available

See merge request smcv/flatdeb!44
parents 11c599b8 fc04777d
No related branches found
No related tags found
No related merge requests found
......@@ -86,6 +86,14 @@ is_installed () {
return 0
}
# shellcheck disable=SC2016
dpkg_version=$(in_chroot_simple dpkg-query --show -f '${Version}\n' dpkg)
declare -a force_remove=(--force-remove-essential --force-depends)
if in_chroot_simple dpkg --compare-versions "${dpkg_version}" ge 1.20.1; then
force_remove+=(--force-remove-protected)
fi
declare -a unwanted=()
echo "Packages installed at the moment:"
......@@ -159,8 +167,7 @@ if [ -n "${unwanted[*]}" ]; then
echo "- $p"
done
in_chroot dpkg --purge --force-remove-essential --force-depends \
"${unwanted[@]}"
in_chroot dpkg --purge "${force_remove[@]}" "${unwanted[@]}"
fi
unwanted=()
......@@ -197,8 +204,7 @@ if [ -n "${unwanted[*]}" ]; then
echo "- $p"
done
in_chroot dpkg --purge --force-remove-essential --force-depends \
"${unwanted[@]}"
in_chroot dpkg --purge "${force_remove[@]}" "${unwanted[@]}"
fi
unwanted=()
......@@ -213,6 +219,5 @@ if [ -n "${unwanted[*]}" ]; then
echo "- $p"
done
in_chroot dpkg --purge --force-remove-essential --force-depends \
"${unwanted[@]}"
in_chroot dpkg --purge "${force_remove[@]}" "${unwanted[@]}"
fi
......@@ -32,6 +32,8 @@ import os
import subprocess
import sys
from debian.debian_support import Version
try:
import typing
except ImportError:
......@@ -75,8 +77,24 @@ def main():
logger.info('Purging leftover configuration files:')
force_remove = ['--force-depends', '--force-remove-essential']
unwanted = set() # type: typing.Set[str]
dpkg_version = subprocess.check_output(
in_chroot_simple + [
'dpkg-query',
'--show',
'-f',
r'${Version}',
'dpkg',
],
universal_newlines=True,
)
if Version(dpkg_version) >= Version('1.20.1'):
force_remove.append('--force-remove-protected')
with subprocess.Popen(in_chroot_simple + [
'dpkg-query',
'--show',
......@@ -109,9 +127,7 @@ def main():
subprocess.check_call(in_chroot + [
'dpkg',
'--purge',
'--force-depends',
'--force-remove-essential',
] + list(unwanted))
] + list(force_remove) + list(unwanted))
if __name__ == '__main__':
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment