listupgrade: update old-kernel-removal.sh from upstream
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Jérémy Lecour 2021-07-02 14:37:22 +02:00 committed by Jérémy Lecour
parent 90cbd17f9b
commit 27a09ce682

View file

@ -4,48 +4,53 @@
set -e set -e
# shellcheck disable=SC2046
eval $(apt-config shell DPKG Dir::bin::dpkg/f) eval $(apt-config shell DPKG Dir::bin::dpkg/f)
test -n "$DPKG" || DPKG="/usr/bin/dpkg" DPKG="${DPKG:-/usr/bin/dpkg}"
# Detect which one of apt/aptitude we should use. # Detect which one of apt/aptitude we should use.
# shellcheck disable=SC2120
get_apt_binary() { get_apt_binary() {
root="$1" root="${1:-}"
# apt could be a Java binary... # apt could be a Java binary...
if [ -x $root/usr/bin/apt ] && ! $root/usr/bin/apt --version 2>&1 |grep -q "javac"; then if [ -x "${root}/usr/bin/apt" ] && ! ${root}/usr/bin/apt --version 2>&1 | grep -q "javac"; then
echo "apt" echo "apt"
elif [ -x $root/usr/bin/aptitude ]; then elif [ -x "${root}/usr/bin/aptitude" ]; then
echo "aptitude" echo "aptitude"
# Usually in containers # Usually in containers
else else
echo "apt-get" echo "apt-get"
fi fi
} }
listupgrade_state_dir="${listupgrade_state_dir:-/var/lib/listupgrade}"
APT=$(get_apt_binary) APT=$(get_apt_binary)
list="$("${DPKG}" -l | awk '/^[ih][^nc][ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg(:.*)?$/ && $2 !~ /-dbgsym(:.*)?$/ { print $2,$3; }' \ list="$("${DPKG}" -l | awk '/^[ih][^nc][ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg(:.*)?$/ && $2 !~ /-dbgsym(:.*)?$/ { print $2,$3; }' \
| sed -e 's#^\(linux\|kfreebsd\|gnumach\)-image-##' -e 's#:[^:]\+ # #')" | sed -e 's#^\(linux\|kfreebsd\|gnumach\)-image-##' -e 's#:[^:]\+ # #')"
debverlist="$(echo "$list" | cut -d' ' -f 2 | sort --unique --reverse --version-sort)" debverlist="$(echo "${list}" | cut -d' ' -f 2 | sort --unique --reverse --version-sort)"
if [ -n "$1" ]; then if [ -n "$1" ]; then
installed_version="$(echo "$list" | awk "\$1 == \"$1\" { print \$2;exit; }")" installed_version="$(echo "$list" | awk "\$1 == \"$1\" { print \$2;exit; }")"
fi fi
unamer="$(uname -r | tr '[A-Z]' '[a-z]')" unamer="$(uname -r | tr '[:upper:]' '[:lower:]')"
if [ -n "$unamer" ]; then if [ -n "${unamer}" ]; then
running_version="$(echo "$list" | awk "\$1 == \"$unamer\" { print \$2;exit; }")" running_version="$(echo "${list}" | awk "\$1 == \"${unamer}\" { print \$2;exit; }")"
fi fi
# ignore the currently running version if attempting a reproducible build # ignore the currently running version if attempting a reproducible build
if [ -n "${SOURCE_DATE_EPOCH}" ]; then if [ -n "${SOURCE_DATE_EPOCH}" ]; then
unamer="" unamer=""
running_version="" running_version=""
fi fi
latest_version="$(echo "$debverlist" | sed -n 1p)" latest_version="$(echo "${debverlist}" | sed -n 1p)"
previous_version="$(echo "$debverlist" | sed -n 2p)" previous_version="$(echo "${debverlist}" | sed -n 2p)"
debkernels="$(echo "$latest_version debkernels="$(echo "${latest_version}
$installed_version ${installed_version}
$running_version" | sort -u | sed -e '/^$/ d')" ${running_version}" | sort -u | sed -e '/^$/ d')"
kernels="$( (echo "$1 kernels="$( (echo "$1
$unamer"; for deb in $debkernels; do echo "$list" | awk "\$2 == \"$deb\" { print \$1; }"; done; ) \ ${unamer}"; for deb in ${debkernels}; do echo "${list}" | awk "\$2 == \"${deb}\" { print \$1; }"; done; ) \
| sed -e 's#\([\.\+]\)#\\\1#g' -e '/^$/ d' | sort -u|tr '\n' '|' | sed -e 's/|$//')" | sed -e 's#\([\.\+]\)#\\\1#g' -e '/^$/ d' | sort -u|tr '\n' '|' | sed -e 's/|$//')"
@ -54,19 +59,19 @@ List of installed kernel packages:
$list $list
# Running kernel: ${running_version:-ignored} (${unamer:-ignored}) # Running kernel: ${running_version:-ignored} (${unamer:-ignored})
# Last kernel: $latest_version # Last kernel: ${latest_version}
# Previous kernel: $previous_version # Previous kernel: ${previous_version}
# Kernel versions list to keep: # Kernel versions list to keep:
$debkernels ${debkernels}
# Kernel packages (version part) to protect: # Kernel packages (version part) to protect:
$kernels ${kernels}
" "
echo "BEFORE" echo "BEFORE"
dpkg -l | grep linux-image dpkg -l | grep linux-image
dpkg --get-selections | tr '\t' ' ' | cut -d" " -f1 | grep ^linux-image-[234] | egrep -v "($kernels)" | xargs --no-run-if-empty $APT -y purge dpkg --get-selections | tr '\t' ' ' | cut -d" " -f1 | grep '^linux-image-[234]' | grep -v -E "(${kernels})" | xargs --no-run-if-empty ${APT} -o Dir::State::Lists="${listupgrade_state_dir}" -y purge
echo " echo "
AFTER" AFTER"