diff options
author | Eli Schwartz <eschwartz@archlinux.org> | 2019-02-21 03:35:19 +0100 |
---|---|---|
committer | Allan McRae <allan@archlinux.org> | 2019-02-21 05:16:16 +0100 |
commit | 4b83bcfcee46b6adcb80fc7a9fb85d3af58fb741 (patch) | |
tree | 7c5074622bffde55b7615a6210075223280b7f7a | |
parent | 477a66cd0e7a1b8f5fb7d3b79d977da2771ee09a (diff) | |
download | pacman-4b83bcfcee46b6adcb80fc7a9fb85d3af58fb741.tar.gz pacman-4b83bcfcee46b6adcb80fc7a9fb85d3af58fb741.tar.xz |
makepkg: implement locking for pacman commands
When pacman is run as root to do -S, -U, or -R, it would immediately
abort if pacman is not ready for use. Instead, poll the lockfile and
wait until it becomes available.
Implements FS#28840
Original-patch-by: Georges Dubus <georges.dubus@compiletoi.net>
Signed-off-by: Eli Schwartz <eschwartz@archlinux.org>
Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r-- | scripts/makepkg.sh.in | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in index 5606f65b..4e7b2e6c 100644 --- a/scripts/makepkg.sh.in +++ b/scripts/makepkg.sh.in @@ -228,6 +228,15 @@ run_pacman() { else cmd=(su root -c "$(printf '%q ' "${cmd[@]}")") fi + local lockfile="$(pacman-conf DBPath)/db.lck" + while [[ -f $lockfile ]]; do + local timer=0 + msg "$(gettext "Pacman is currently in use, please wait...")" + while [[ -f $lockfile ]] && (( timer < 10 )); do + (( ++timer )) + sleep 3 + done + done fi "${cmd[@]}" } |