summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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