32 lines
1.3 KiB
Bash
32 lines
1.3 KiB
Bash
# Install AUR packages one at a time, so a single build failure (common with the
|
|
# AUR — removed packages, broken builds) doesn't abort the rest. yay still pulls
|
|
# each package's AUR dependencies automatically. Failures are collected and
|
|
# reported at the end, and logged to ~/aur-failed.log for retrying.
|
|
LOG="$HOME/aur-failed.log"
|
|
: > "$LOG"
|
|
|
|
# Keep sudo's credential cache warm for the whole AUR run. yay installs each
|
|
# built package via `sudo pacman`; a long compile can outlast sudo's default
|
|
# 15-minute timeout and trigger a password prompt mid-run. Authenticate once,
|
|
# then refresh the timestamp in the background (self-terminating if run.sh dies).
|
|
sudo -v || die "sudo authentication failed"
|
|
{ while true; do sudo -n true; sleep 60; kill -0 "$$" 2>/dev/null || exit; done; } &
|
|
sudo_keepalive=$!
|
|
|
|
while read -r pkg; do
|
|
yay -S --needed --noconfirm "$pkg" || echo "$pkg" >> "$LOG"
|
|
done < <(grep -vE '^\s*#|^\s*$' "$REPO_ROOT/03-user/packages/aur.txt")
|
|
|
|
kill "$sudo_keepalive" 2>/dev/null || true # stop the sudo refresher
|
|
|
|
if [ -s "$LOG" ]; then
|
|
echo ""
|
|
echo "!! $(wc -l < "$LOG") AUR package(s) FAILED — retry later with:"
|
|
echo " yay -S \$(cat $LOG)"
|
|
echo " failed:"
|
|
sed 's/^/ - /' "$LOG"
|
|
else
|
|
rm -f "$LOG"
|
|
info "all AUR packages installed"
|
|
fi
|