summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Schwartz <eschwartz@archlinux.org>2019-02-20 21:35:19 -0500
committerAllan McRae <allan@archlinux.org>2019-02-21 14:16:16 +1000
commit4b83bcfcee46b6adcb80fc7a9fb85d3af58fb741 (patch)
tree7c5074622bffde55b7615a6210075223280b7f7a
parent477a66cd0e7a1b8f5fb7d3b79d977da2771ee09a (diff)
downloadpacman-4b83bcfcee46b6adcb80fc7a9fb85d3af58fb741.tar.gz
pacman-4b83bcfcee46b6adcb80fc7a9fb85d3af58fb741.zip
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.in9
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[@]}"
}