summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2014-03-10 20:57:07 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2014-03-13 13:58:46 +0100
commit33677a0cddd552f96963eac6dc74d8ffe9c1f2f6 (patch)
tree118a6bf481ed5fb1663721aa07d24ee25f6884fa
parentb9b0f6222c489db78331cc8be3c093538d22c70b (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.sh16
-rw-r--r--debian/apt.conf.autoremove8
-rw-r--r--test/integration/framework2
-rwxr-xr-xtest/integration/test-kernel-helper-autoremove44
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