75 lines
2.1 KiB
Bash
Executable File
75 lines
2.1 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# The fingerprint driver migration only repairs a machine an earlier version of
|
|
# it left with fprintd and no libfprint; any installed driver is left alone.
|
|
# The real package helpers run over a stubbed pacman.
|
|
|
|
set -euo pipefail
|
|
|
|
source "$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)/base-test.sh"
|
|
|
|
migration="$ROOT/migrations/1785090473.sh"
|
|
scratch=$(mktemp -d)
|
|
trap 'rm -rf "$scratch"' EXIT
|
|
mkdir -p "$scratch/bin"
|
|
export CALL_LOG="$scratch/calls"
|
|
export PATH="$scratch/bin:$ROOT/bin:$PATH"
|
|
|
|
cat > "$scratch/bin/sudo" <<'STUB'
|
|
#!/bin/bash
|
|
exec "$@"
|
|
STUB
|
|
# INSTALLED lists the installed package names, one per line; an install adds
|
|
# its packages to INSTALLED_LOG so omarchy-pkg-add's follow-up query sees them.
|
|
cat > "$scratch/bin/pacman" <<'STUB'
|
|
#!/bin/bash
|
|
case "$1" in
|
|
-Q)
|
|
if [[ $2 == "--" ]]; then
|
|
shift 2
|
|
else
|
|
shift
|
|
fi
|
|
if grep -qx -- "$1" <<< "${INSTALLED:-}"; then
|
|
:
|
|
else
|
|
grep -qx -- "$1" "$INSTALLED_LOG"
|
|
fi
|
|
;;
|
|
-S)
|
|
printf 'pacman %s\n' "$*" >> "$CALL_LOG"
|
|
if [[ $4 == "--" ]]; then
|
|
shift 4
|
|
for arg in "$@"; do
|
|
printf '%s\n' "$arg" >> "$INSTALLED_LOG"
|
|
done
|
|
fi
|
|
;;
|
|
*) printf 'pacman %s\n' "$*" >> "$CALL_LOG" ;;
|
|
esac
|
|
STUB
|
|
chmod +x "$scratch/bin/"*
|
|
export INSTALLED_LOG="$scratch/installed"
|
|
|
|
run_migration() {
|
|
: > "$CALL_LOG"
|
|
: > "$INSTALLED_LOG"
|
|
bash -euo pipefail "$migration" > /dev/null
|
|
}
|
|
|
|
INSTALLED='fprintd' run_migration
|
|
grep -qx 'pacman -S --noconfirm --needed -- libfprint-git' "$CALL_LOG" || fail "fprintd without a library gets libfprint-git"
|
|
pass "fprintd without a library gets libfprint-git"
|
|
|
|
INSTALLED=$'libfprint-git\nfprintd' run_migration
|
|
[[ ! -s $CALL_LOG ]] || fail "an installed libfprint-git is left alone" "$(<"$CALL_LOG")"
|
|
pass "an installed libfprint-git is left alone"
|
|
|
|
INSTALLED=$'libfprint\nfprintd' run_migration
|
|
[[ ! -s $CALL_LOG ]] || fail "an installed stock libfprint is left alone" "$(<"$CALL_LOG")"
|
|
pass "an installed stock libfprint is left alone"
|
|
|
|
INSTALLED='' run_migration
|
|
[[ ! -s $CALL_LOG ]] || fail "a machine without fprintd is left alone" "$(<"$CALL_LOG")"
|
|
pass "a machine without fprintd is left alone"
|