#!/bin/bash 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}" ../addPkgbuildPatch add docker run -d -v .:/build arch-build:latest docker run -d -v .:/build artix-build:latest cd .. done \ | tee /dev/stderr ) check_and_commit_package_updates() { [ -z "$(git status --porcelain)" ] && return for pkg in $( git status --porcelain \ | sed ' s@/[^/]\+$@@ ' \ | grep -vxFf <( docker ps --format '{{.Mounts}}' --no-trunc \ | sed 's@^.*/@@' ) ); do cd "$pkg" ../addPkgbuildPatch del [ -n "$(git status --porcelain -- .)" ] \ && ../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