diff options
author | David Kalnischkies <david@kalnischkies.de> | 2014-03-10 20:57:07 +0100 |
---|---|---|
committer | David Kalnischkies <david@kalnischkies.de> | 2014-03-13 13:58:46 +0100 |
commit | 33677a0cddd552f96963eac6dc74d8ffe9c1f2f6 (patch) | |
tree | 118a6bf481ed5fb1663721aa07d24ee25f6884fa | |
parent | b9b0f6222c489db78331cc8be3c093538d22c70b (diff) |
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.
-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 |