#!/bin/bash cd "$(dirname "$(readlink -e "$0")")" shutdownasap_progress=$(shutdownasap -g || echo 'none') if [ "${shutdownasap_progress}" != 'none' ]; then >&2 printf 'shutdownasap in progress: %s\n' "${shutdownasap_state}" exit 1 fi if [ $# -eq 1 ] \ && [ -z "${1##*/PKGBUILD}" ] \ && [ -f "$1" ]; then cd "${1%/PKGBUILD}" ../addPkgbuildPatch add { printf '%s-build:latest\n' arch artix printf 'arch32-%s-build\n' i486 i686 pentium4 } \ | shuf \ | xargs -rn1 docker run --rm -d -v .:/build exit fi 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 [ $# -ne 0 ]; then >&2 printf 'too many parameters:' >&2 printf ' "%s"' "$@" >&2 printf '\n' exit 1 fi if [ -n "$(git status --porcelain)" ]; then >&2 echo 'git is not clean' exit 1 fi ./bumpPkgrel -a ids=$( parallel "$0" ::: */PKGBUILD \ | tee /dev/stderr ) check_and_commit_package_updates() { [ -z "$(git status --porcelain)" ] && return for pkg in $( git status --porcelain \ | sed ' s@^.. @@ s@/[^/]\+$@@ ' \ | grep -vxFf <( docker ps --format '{{.Mounts}}' --no-trunc \ | sed 's@^.*/@@' ) ); do if ! [ -d "$pkg" ]; then >&2 echo "$pkg is not a directory" continue fi 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 rm -f */logpipe.*