From deb94180c670aa90043dc6e32c509acabd33ad77 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Sat, 22 Jun 2024 09:22:18 +0200 Subject: improve build-all-with-docker: * locking * pull git * commit package updates from makepkg * only run on clean git --- build-all-with-docker | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'build-all-with-docker') diff --git a/build-all-with-docker b/build-all-with-docker index f7dc4f9d5..f3089b4fe 100755 --- a/build-all-with-docker +++ b/build-all-with-docker @@ -2,6 +2,28 @@ cd "$(dirname "$(readlink -e "$0")")" +exec 9> build-all-with-docker.lock +if ! flock -n 9; then + >&2 echo 'another build-all-with-docker still holds the lock' + exit 1 +fi + +if [ "x$1" = 'x--pull' ]; then + shift + if ! git pull --ff-only; then + if ! git pull --rebase \ + && git push; then + >&2 echo 'cannot push/pull' + exit 1 + fi + fi +fi + +if [ -n "$(git status --porcelain)" ]; then + >&2 echo 'git is not clean' + exit 1 +fi + ids=$( for pkg in */PKGBUILD; do cd "${pkg%/PKGBUILD}" @@ -12,7 +34,19 @@ ids=$( | tee /dev/stderr ) +check_and_commit_package_updates() { + [ -z "$(git status --porcelain)" ] && return + for pkg in $(git status --porcelain | sed 's@/.*$//'); do + cd "$pkg" + ../commit-package -a && git push + cd .. + done +} + while docker ps --no-trunc | grep -wF "${ids}"; do sleep 10 + check_and_commit_package_updates date done + +check_and_commit_package_updates -- cgit v1.2.3-70-g09d2