]> git.saurik.com Git - apt.git/commitdiff
support kfreebsd and hurd in the kernel hook
authorDavid Kalnischkies <david@kalnischkies.de>
Mon, 10 Mar 2014 19:57:07 +0000 (20:57 +0100)
committerDavid Kalnischkies <david@kalnischkies.de>
Thu, 13 Mar 2014 12:58:46 +0000 (13:58 +0100)
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
debian/apt.conf.autoremove
test/integration/framework
test/integration/test-kernel-helper-autoremove

index 9c4a4157d5f0fed1aa55b485eac3282ad545f56c..ab8201898f58382ac68af628637b278ae3fdd7cc 100644 (file)
@@ -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"
index ea68f88fc2fbe3f81c8b826e419e8e6d6e293acc..5b958c71606144493ef38f2415f2543cbe1a74fc 100644 (file)
@@ -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
index dad8c99f01d581f941ad8ab7b0725a9dd4a384e7..6502dbad1807574bab6fc5bbb563ba53f5e2752b 100644 (file)
@@ -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
index be30c6f6e7b6d9e51b3ded3b7f56fab34ba63ef1..cb1c54e81563a6c56cfb834d7e8f3b331051d84a 100755 (executable)
@@ -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