diff options
-rw-r--r-- | debian/apt.auto-removal.sh | 16 | ||||
-rw-r--r-- | debian/apt.conf.autoremove | 8 | ||||
-rw-r--r-- | test/integration/framework | 2 | ||||
-rwxr-xr-x | test/integration/test-kernel-helper-autoremove | 44 |
4 files changed, 44 insertions, 26 deletions
diff --git a/debian/apt.auto-removal.sh b/debian/apt.auto-removal.sh index 9c4a4157d..ab8201898 100644 --- a/debian/apt.auto-removal.sh +++ b/debian/apt.auto-removal.sh @@ -1,5 +1,4 @@ #!/bin/sh - set -e # Author: Steve Langasek <steve.langasek@canonical.com> @@ -42,7 +41,7 @@ version_test_gt () return "$?" } -list=$(${DPKG} -l 'linux-image-[0-9]*'|awk '/^ii/ && $2 !~ /-dbg$/ { print $2 }' | sed -e's/linux-image-//') +list="$(${DPKG} -l | awk '/^ii[ ]+(linux|kfreebsd|gnumach)-image-[0-9]*/ && $2 !~ /-dbg$/ { print $2 }' | sed -e 's#\(linux\|kfreebsd\|gnumach\)-image-##')" latest_version="" previous_version="" @@ -74,21 +73,16 @@ EOF generateconfig() { cat <<EOF -// File autogenerated by $0, do not edit -APT +// DO NOT EDIT! File autogenerated by $0 +APT::NeverAutoRemove { - NeverAutoRemove - { EOF apt-config dump --no-empty --format '%v%n' 'APT::VersionedKernelPackages' | while read package; do for kernel in $kernels; do - echo " \"^${package}-${kernel}$\";" + echo " \"^${package}-${kernel}$\";" done done - cat <<EOF - }; -}; -EOF + echo '};' } generateconfig > "${config_file}.dpkg-new" mv "${config_file}.dpkg-new" "$config_file" diff --git a/debian/apt.conf.autoremove b/debian/apt.conf.autoremove index ea68f88fc..5b958c716 100644 --- a/debian/apt.conf.autoremove +++ b/debian/apt.conf.autoremove @@ -4,18 +4,18 @@ APT { "^firmware-linux.*"; "^linux-firmware$"; - "^kfreebsd-image.*"; - "^gnumach$"; - "^gnumach-image.*"; }; VersionedKernelPackages { "linux-image"; + "linux-headers"; "linux-image-extra"; "linux-signed-image"; "linux-backports-modules-.*"; - "linux-headers"; + "kfreebsd-image"; + "kfreebsd-headers"; + "gnumach-image"; }; Never-MarkAuto-Sections diff --git a/test/integration/framework b/test/integration/framework index dad8c99f0..6502dbad1 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -194,7 +194,7 @@ setupenvironment() { mkdir rootdir aptarchive keys cd rootdir mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d - mkdir -p var/cache var/lib var/log tmp + mkdir -p var/cache var/lib/apt var/log tmp mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers touch var/lib/dpkg/available mkdir -p usr/lib/apt diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove index be30c6f6e..cb1c54e81 100755 --- a/test/integration/test-kernel-helper-autoremove +++ b/test/integration/test-kernel-helper-autoremove @@ -4,7 +4,7 @@ set -e TESTDIR=$(readlink -f $(dirname $0)) . $TESTDIR/framework setupenvironment -configarchitecture 'native' +configarchitecture 'amd64' # the executed script would use the installed apt-config, # which is outside of our control @@ -16,21 +16,21 @@ else exit 0 fi -# install fake-dpkg into it +CURRENTKERNEL="linux-image-$(uname -r)" +insertinstalledpackage "$CURRENTKERNEL" 'amd64' '1' +insertinstalledpackage 'linux-image-1.0.0-2-generic' 'amd64' '1.0.0-2' +insertinstalledpackage 'linux-image-100.0.0-1-generic' 'amd64' '100.0.0-1' + +testsuccess aptmark auto "$CURRENTKERNEL" 'linux-image-1.0.0-2-generic' 'linux-image-100.0.0-1-generic' + cat > ./fake-dpkg <<EOF #!/bin/sh -set -e -if [ "\$1" = "-l" ]; then - echo "ii linux-image-1.0.0-2-generic 1.0.0-2 amd64" - echo "ii linux-image-\$(uname -r) not-used amd64" - echo "ii linux-image-100.0.0-1-generic 100.0.0.1-1 amd64" -else - dpkg "\$@" -fi +exec $(aptconfig dump --no-empty --format='%v ' 'DPKG::options') "\$@" EOF chmod +x ./fake-dpkg echo 'Dir::Bin::dpkg "./fake-dpkg";' > rootdir/etc/apt/apt.conf.d/99fakedpkg +# install fake-dpkg into it catfail() { echo >&2 echo >&2 '### List of protected kernels:' @@ -59,10 +59,34 @@ testprotected() { grep -q "^\\^linux-image-$(uname -r)\\\$\$" protected.list && msgpass || catfail } +testequal "Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + linux-image-1.0.0-2-generic (1.0.0-2) + linux-image-100.0.0-1-generic (100.0.0-1) + $CURRENTKERNEL (1) +0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded. +Remv linux-image-1.0.0-2-generic [1.0.0-2] +Remv linux-image-100.0.0-1-generic [100.0.0-1] +Remv $CURRENTKERNEL [1]" aptget autoremove -sV + testprotected msgtest 'Check kernel autoremoval protection list does not include' 'old kernel' grep -q '^\^linux-image-1\.0\.0-2-generic\$$' protected.list && catfail || msgpass +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +The following packages will be REMOVED: + linux-image-1.0.0-2-generic +0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded. +Remv linux-image-1.0.0-2-generic [1.0.0-2]' aptget autoremove -s + testprotected 1.0.0-2-generic msgtest 'Check kernel autoremoval protection list includes' 'installed kernel' grep -q '^\^linux-image-1\.0\.0-2-generic\$$' protected.list && msgpass || catfail +testequal 'Reading package lists... +Building dependency tree... +Reading state information... +0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.' aptget autoremove -s |