first commit
This commit is contained in:
commit
1354db6c39
90 files changed
+13123
No files matched your search
Executable
+67
@@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env bash
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2026 Bryan Joshua Pedini
|
||||
|
||||
# fake apt-mark (unit tests): hold state in $FAKE_DIR/holds (one name per line).
|
||||
# FAKE_APT_MARK_LOCKED=N: the first N hold/unhold calls fail like dpkg's busy frontend lock.
|
||||
# FAKE_APT_MARK_UNHOLD_SIGNAL=SIG: send SIG to the applet before an unhold (a second Ctrl-C).
|
||||
# FAKE_APT_MARK_UNHOLD_RC=N: unhold fails (nothing released). FAKE_APT_MARK_FAIL_MSG: the message a
|
||||
# failing hold prints. Every unhold logs whether $STATE_DIR/holds.lock is held by someone.
|
||||
# shellcheck source=../fakelib.bash
|
||||
. "${BASH_SOURCE[0]%/*}/../fakelib.bash"
|
||||
fake_log "$@"
|
||||
h=$FAKE_DIR/holds
|
||||
touch "$h"
|
||||
verb=$1
|
||||
shift
|
||||
case $verb in hold | unhold)
|
||||
if [[ -n ${FAKE_APT_MARK_LOCKED:-} ]]; then
|
||||
n=$(cat "$FAKE_DIR/locked-calls" 2>/dev/null || echo 0)
|
||||
if ((n < FAKE_APT_MARK_LOCKED)); then
|
||||
echo $((n + 1)) >"$FAKE_DIR/locked-calls"
|
||||
echo "${FAKE_APT_MARK_LOCK_MSG:-dpkg: error: dpkg frontend lock was locked by another process with pid 4242}"
|
||||
echo "E: Sub-process dpkg --set-selections returned an error code (2)"
|
||||
echo "E: Executing dpkg failed. Are you root?"
|
||||
exit 100
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
case $verb in
|
||||
showhold) sort "$h" ;;
|
||||
hold)
|
||||
for p in "$@"; do
|
||||
if grep -qxF -- "$p" "$h"; then echo "$p was already set on hold."; else
|
||||
echo "$p" >>"$h"
|
||||
echo "$p set on hold."
|
||||
fi
|
||||
done
|
||||
[[ -z ${FAKE_APT_MARK_FAIL_MSG:-} ]] || echo "$FAKE_APT_MARK_FAIL_MSG" >&2
|
||||
exit "$(fake_rc FAKE_APT_MARK_HOLD_RC 0)"
|
||||
;;
|
||||
unhold)
|
||||
if [[ -n ${SKEPTICAL_UPDATER_STATE_DIR:-} && -e $SKEPTICAL_UPDATER_STATE_DIR/holds.lock ]] && command -v flock >/dev/null; then
|
||||
if flock -n "$SKEPTICAL_UPDATER_STATE_DIR/holds.lock" true; then l=free; else l=held; fi
|
||||
echo "holds.lock during unhold: $l" >>"$FAKE_LOG"
|
||||
fi
|
||||
if [[ -n ${FAKE_APT_MARK_UNHOLD_RC:-} ]]; then
|
||||
echo "E: Unable to correct problems" >&2
|
||||
exit "$FAKE_APT_MARK_UNHOLD_RC"
|
||||
fi
|
||||
if [[ -n ${FAKE_APT_MARK_UNHOLD_SIGNAL:-} ]]; then
|
||||
kill -s "$FAKE_APT_MARK_UNHOLD_SIGNAL" "$(cat "$FAKE_DIR/applet.pid" 2>/dev/null || echo "$PPID")" 2>/dev/null
|
||||
sleep 0.2
|
||||
fi
|
||||
for p in "$@"; do
|
||||
if grep -qxF -- "$p" "$h"; then
|
||||
grep -vxF -- "$p" "$h" >"$h.new" || true
|
||||
mv "$h.new" "$h"
|
||||
echo "Canceled hold on $p."
|
||||
else echo "$p was already not on hold."; fi
|
||||
done
|
||||
;;
|
||||
*)
|
||||
echo "fake apt-mark: unhandled: $verb $*" >&2
|
||||
exit 99
|
||||
;;
|
||||
esac
|
||||
Reference in new issue
Block a user