From 33677a0cddd552f96963eac6dc74d8ffe9c1f2f6 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 10 Mar 2014 20:57:07 +0100 Subject: support kfreebsd and hurd in the kernel hook kfreebsd as well as hurd kernel packages call the postinst script as well so we just need to enable the correct parsing for installed packages and disable the "protect every version" hammer for them. --- debian/apt.auto-removal.sh | 16 +++------- debian/apt.conf.autoremove | 8 ++--- test/integration/framework | 2 +- 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 @@ -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 < "${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 < 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 -- cgit v1.2.3