40 lines
1.4 KiB
Bash
40 lines
1.4 KiB
Bash
#!/bin/bash
|
|
# shellcheck disable=SC2034
|
|
DESCRIPTION="a machine a month behind on a stale mirror: update picks fresh mirrors, upgrades the kernel, asks for a reboot"
|
|
IMAGE=installed
|
|
TIER="nightly"
|
|
|
|
scenario() {
|
|
local date kernel_before
|
|
date="$(date -d '30 days ago' +%Y/%m/%d)"
|
|
|
|
# Go back to Arch as it was a month ago, from the Arch Linux Archive, which
|
|
# is also a mirror that stopped syncing a month ago
|
|
run_in_vm downgrade "set -e
|
|
echo 'Server = https://archive.archlinux.org/repos/$date/\$repo/os/\$arch' \
|
|
| sudo tee /etc/pacman.d/mirrorlist
|
|
sudo pacman -Syyuu --noconfirm"
|
|
[ "$STATUS" -eq 0 ] || skip "couldn't downgrade to Arch as of $date (see $LAST_LOG)"
|
|
vm_reboot
|
|
kernel_before="$(vm_value 'uname -r')"
|
|
|
|
run_in_vm version '"$HOME/.local/bin/version"'
|
|
assert_output "last synced with Arch"
|
|
|
|
local snapshots_before
|
|
snapshots_before="$(vm_value 'sudo snapper -c root list 2> /dev/null | wc -l')"
|
|
|
|
cd_update
|
|
assert_status 0
|
|
assert_output "Please reboot when convenient"
|
|
refute_vm "the first mirror isn't the archive any more" \
|
|
'grep -m1 "^Server" /etc/pacman.d/mirrorlist | grep -q archive.archlinux.org'
|
|
assert_vm "update took a snapshot first (if / is btrfs)" "
|
|
[ \"\$(findmnt -no FSTYPE /)\" != btrfs ] \
|
|
|| [ \"\$(sudo snapper -c root list | wc -l)\" -gt $snapshots_before ]"
|
|
|
|
vm_reboot
|
|
refute_vm "a newer kernel is running" "[ \"\$(uname -r)\" = $(q "$kernel_before") ]"
|
|
health
|
|
}
|