]>
Commit | Line | Data |
---|---|---|
b8b010d6 SI |
1 | #! /bin/sh |
2 | set -e | |
3 | ||
4 | # adapted from /etc/kernel/postinst.d/apt-auto-removal as present in | |
5 | # debian's apt package: | |
6 | # | |
7 | # Mark as not-for-autoremoval those kernel packages that are: | |
8 | # - the currently booted version | |
9 | # - the kernel version we've been called for | |
10 | # - the latest kernel version (as determined by debian version number) | |
11 | # - the second-latest kernel version | |
12 | # - the latest kernel version of each series (e.g. 4.13, 4.15, 5.0) by | |
13 | # marking the meta-packages | |
14 | ||
15 | kernel_keep_versions() { | |
16 | eval "$(apt-config shell DPKG Dir::bin::dpkg/f)" | |
17 | test -n "$DPKG" || DPKG="/usr/bin/dpkg" | |
18 | ||
19 | list="$("${DPKG}" -l | awk '/^[ih][^nc][ ]+pve-kernel-[0-9]+\./ && $2 !~ /-dbg(:.*)?$/ && $2 !~ /-dbgsym(:.*)?$/ { print $2; }' \ | |
20 | | sed -e 's#^pve-kernel-##' -e 's#:[^:]\+ # #')" | |
21 | ||
22 | sorted_list="$(echo "$list" | sort --unique --reverse --version-sort)" | |
23 | ||
24 | [ -n "$1" ] && install_version="$1" | |
25 | ||
26 | running_version="$(uname -r | tr 'A-Z' 'a-z')" | |
27 | ||
28 | # ignore the currently running version if attempting a reproducible build | |
29 | if [ -n "${SOURCE_DATE_EPOCH}" ]; then | |
30 | running_version="" | |
31 | fi | |
32 | ||
33 | latest_2_versions="$(echo "$sorted_list" | grep -E '^[^ ]+-pve' | head -n2 )" | |
34 | ||
35 | series_metapackages="$(echo "$sorted_list" | grep -Ev '^[^ ]+-pve')" | |
36 | ||
37 | kernels="$(cat <<-EOF | |
38 | $running_version | |
39 | $install_version | |
40 | $latest_2_versions | |
41 | $series_metapackages | |
42 | EOF | |
43 | )" | |
44 | ||
45 | echo "$kernels" | sort -u | sed -e '/^$/ d' | |
46 | } | |
47 | ||
48 | #bootable kernels are the same as the no_autoremove ones without the meta-package | |
49 | boot_kernel_list() { | |
50 | list="$(kernel_keep_versions "$@")" | |
51 | ||
52 | echo "$list" | grep -E '^[^ ]+-pve' | |
53 | ||
54 | } | |
55 | ||
56 | warn() { | |
57 | echo "$@" 1>&2 | |
58 | } |