From: David Kalnischkies Date: Sun, 1 May 2016 12:43:23 +0000 (+0200) Subject: warn if apt-key is run unconditionally in maintainerscript X-Git-Tag: 1.3_exp1~22 X-Git-Url: https://git.saurik.com/apt.git/commitdiff_plain/5f17b19f8f99eb6f80a10846d5891f53c16178dc?ds=inline warn if apt-key is run unconditionally in maintainerscript We want to stop hard-depending on gnupg and for this it is essential that apt-key isn't used in any critical execution path, which maintainerscript are. Especially as it is likely that these script call apt-key either only for (potentially now outdated cleanup) or still not use the much simpler trusted.gpg.d infrastructure. --- diff --git a/cmdline/apt-key.in b/cmdline/apt-key.in index 3ed2a70ce..3f9f01627 100644 --- a/cmdline/apt-key.in +++ b/cmdline/apt-key.in @@ -493,8 +493,21 @@ create_gpg_home() { } prepare_gpg_home() { + # crude detection if we are called from a maintainerscript where the + # package depends on gnupg or not. We accept recommends here as + # well as the script hopefully uses apt-key optionally then like e.g. + # debian-archive-keyring for (upgrade) cleanup did + if [ -n "$DPKG_MAINTSCRIPT_PACKAGE" ]; then + if ! dpkg-query --show --showformat '${Pre-Depends}${Depends}${Recommends}' "$DPKG_MAINTSCRIPT_PACKAGE" 2>/dev/null | grep -q gnupg; then + cat >&2 < "${BUILDDIR}/debian/postinst" + buildpackage "$BUILDDIR" 'unstable' 'main' 'native' + rm -rf "$BUILDDIR" +} +buildingpkg 'aptkeyuser-nodepends' 'Depends: unrelated' +buildingpkg 'aptkeyuser-depends' 'Depends: gnupg' + +setupaptarchive + +insertinstalledpackage 'unrelated' 'native' '1' +insertinstalledpackage 'gnupg' 'native' '1' + +testsuccess apt install aptkeyuser-depends -y +testfailure grep '^Warning: This will BREAK' rootdir/tmp/testsuccess.output + +testsuccess apt install aptkeyuser-nodepends -y +cp rootdir/tmp/testsuccess.output apt.output +testsuccess grep '^Warning: This will BREAK' apt.output