#!/usr/bin/env bash . lib.bash || exit check_zfs_pkgver() { local lpkg=$1 zpkg=$2 #local lver=$(expac -S %r,%v "$lpkg" | awk -F, '$1 !~ /testing$/ {print $2}' | head -1) local lver=$(expac -S %v "core/$lpkg" | head -1) local zver=$(expac -S %v "$zpkg" | head -1) local zdep=$(expac -S %d -l '\n' "$zpkg" \ | awk -F= "/^$lpkg/ {print \$2}") lver=${lver%-*} zver=${zver%-*} zver=${zver%.*} zver=${zver#*_} debug "$lpkg $lver ?? $zpkg $zver" [[ "$lver" == "$zver" ]] } declare -A alsoignore=( [linux]=wireguard-arch [linux-lts]=wireguard-lts ) set -e sudo: pacman -Sy for kpkg in linux{,-lts}; do zpkg="zfs-$kpkg" also="zfs-utils,spl-$kpkg,${alsoignore[$kpkg]}" if ! check_zfs_pkgver $kpkg $zpkg; then notice "ignoring $kpkg upgrade (ZFS version mismatch)" set -- --ignore="$kpkg,$kpkg-headers,$zpkg,$also" "$@" fi done sudo: pacman -Su "$@"