From b2554880deb779f50aa82e73b247edf3a63b8837 Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 31 Jan 2020 09:34:56 +0100 Subject: lib/intentions-queue: make intentions_left() work similar to flock and verbose_flock() --- bin/bootstrap-mysql | 2 +- bin/copy-to-build-support | 13 +++---------- bin/create-build-support-package | 6 +++--- bin/db-update | 2 +- bin/delete-packages | 2 +- bin/modify-package-state | 2 +- lib/intentions-queue | 11 +++++++++-- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/bin/bootstrap-mysql b/bin/bootstrap-mysql index cf055f7..711f3d1 100755 --- a/bin/bootstrap-mysql +++ b/bin/bootstrap-mysql @@ -20,7 +20,7 @@ if ! verbose_flock -s -n 7; then >&2 echo 'Cannot get package-database lock.' exit 1 fi -if intentions_left; then +if intentions_left -n; then >&2 echo 'There are still intentions in the queue.' exit 1 fi diff --git a/bin/copy-to-build-support b/bin/copy-to-build-support index bb7e421..0dcc298 100755 --- a/bin/copy-to-build-support +++ b/bin/copy-to-build-support @@ -77,16 +77,9 @@ verbose_flock -s ${wait_for_lock} 9 exec 8> "${package_database_lock_file}" verbose_flock ${wait_for_lock} 8 -if [ -z "${wait_for_lock}" ]; then - while intentions_left; do - >&2 echo 'There are still intentions in the queue.' - sleep 1 - done -else - if intentions_left; then - >&2 echo 'come back (shortly) later - There are still intentions in the queue.' - exit 1 - fi +if intentions_left ${wait_for_lock}; then + >&2 echo 'come back (shortly) later - There are still intentions in the queue.' + exit 1 fi tmp_dir=$(mktemp -d "${work_dir}/tmp.copy-to-build-support.0.XXXXXXXXXX") diff --git a/bin/create-build-support-package b/bin/create-build-support-package index dd8ddc3..fd4d456 100755 --- a/bin/create-build-support-package +++ b/bin/create-build-support-package @@ -256,10 +256,10 @@ elif [ -n "${shim_package}" ]; then exec 8> "${package_database_lock_file}" verbose_flock ${wait_for_lock} 8 - while intentions_left; do + if intentions_left ${wait_for_lock}; then >&2 echo 'There are still intentions in the queue.' - sleep 1 - done + exit 1 + fi original_pkg_id=$( # shellcheck disable=SC2016 diff --git a/bin/db-update b/bin/db-update index 26d2d36..e1255d6 100755 --- a/bin/db-update +++ b/bin/db-update @@ -175,7 +175,7 @@ if ! ${no_action}; then exit 0 fi - if intentions_left; then + if intentions_left ${block_flag}; then >&2 echo 'come back (shortly) later - There are still intentions in the queue.' exit 0 fi diff --git a/bin/delete-packages b/bin/delete-packages index 7486644..bfcb9ac 100755 --- a/bin/delete-packages +++ b/bin/delete-packages @@ -127,7 +127,7 @@ if [ -z "${no_action_option}" ]; then exit 0 fi - if intentions_left; then + if intentions_left ${block_flag}; then >&2 echo 'come back (shortly) later - There are still intentions in the queue.' exit 0 fi diff --git a/bin/modify-package-state b/bin/modify-package-state index 9373467..2b7ebbc 100755 --- a/bin/modify-package-state +++ b/bin/modify-package-state @@ -145,7 +145,7 @@ if ! verbose_flock ${wait_for_lock} 8; then exit fi -if intentions_left; then +if intentions_left ${wait_for_lock}; then >&2 echo 'There are still intentions in the queue.' exit fi diff --git a/lib/intentions-queue b/lib/intentions-queue index e9b79de..c92a4d1 100755 --- a/lib/intentions-queue +++ b/lib/intentions-queue @@ -68,11 +68,18 @@ execute_intention() { "${intentions_directory}/intention.${next_number}" } -# intentions_left +# intentions_left [-n] # check if there are undone intentions left # return 0 if there is something left to do # return 1 if nothing is queued +# with -n: return immediately +# without -n: wait until nothing more to do intentions_left() { + if [ ! "x$1" = 'x-n' ]; then + while intentions_left -n; do + sleep 1 + done + fi find "${intentions_directory}" \ -maxdepth 1 \ -type f \ @@ -90,7 +97,7 @@ intentions_left() { # execute_all_intentions # executes all intentions execute_all_intentions() { - while intentions_left; do + while intentions_left -n; do execute_intention done } -- cgit v1.2.3