diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2013-12-03 21:11:47 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2013-12-03 21:11:47 +0100 |
commit | 3014a906a2eb4d6a9488d0f59aa095b8124457e1 (patch) | |
tree | 351e88e23ce2f5b1d6e0dfc9bffe1860208f6cdb /bin | |
parent | 5799b7c7fa70b7c6dc80ba9a22425476ff99f386 (diff) | |
download | buildscripts-3014a906a2eb4d6a9488d0f59aa095b8124457e1.tar.gz buildscripts-3014a906a2eb4d6a9488d0f59aa095b8124457e1.tar.bz2 buildscripts-3014a906a2eb4d6a9488d0f59aa095b8124457e1.zip |
lock PROJECT_DIR during git sync, needed for parallel builds
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/build-deb-package | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/bin/build-deb-package b/bin/build-deb-package index 0ab5ee1..445411d 100755 --- a/bin/build-deb-package +++ b/bin/build-deb-package @@ -86,6 +86,9 @@ set_vars() { EXTRA_ARCHS="${EXTRA_ARCHS:-}" EXTRA_ARCHS_ONLY="${EXTRA_ARCHS_ONLY:-}" + # lock file + LOCK_FILE=$PROJECT_DIR/../.$PROJECT.lock + # creating paths mkdir -p "$TEMP_BASE" mkdir -p "$PROJECT_DIR" @@ -120,7 +123,6 @@ prepare_workspace() { cd "$PROJECT_DIR" # by default we build for all current debian versions - echo "HIIIIIIEEEEEERR: $ARGV2_CODENAME" if [ "x$ARGV2_CODENAME" != "x" ]; then if echo "$DEBIAN_DISTROS" | grep $ARGV2_CODENAME >/dev/null; then DEB_BUILD_FOR="debian:$ARGV2_CODENAME" @@ -311,14 +313,34 @@ upload_packages() { return 0 } +wait_for_lock() { + while $LOCK_FILE; do + pid=$(head -n1 $LOCK_FILE) + if ! ps $pid 1>/dev/null; then rm -f $LOCK_FILE + else echo "PROJECT directory is locked, sleeping for 10 secs..." + sleep 10 + done +} + +lock_workspace() { + wait_for_lock + echo $$ > $LOCK_FILE +} + +unlock_workspace() { + rm -f $LOCK_FILE +} + ### MAIN ### set_vars $@ && { if [ "x$(basename $0)" = "x$PREFIX-build-deb-package" ] || [ "x$(basename $0)" = "x$PREFIX-build+upload-deb-package" ]; then cd $PROJECT_DIR && pkgneedsbuild $CHECKOUT || [ "$FORCE_BUILD" = "yes" ] && { + lock_workspace prepare_workspace && { clear_pkgdist build_packages } + unlock_workspace } fi if [ "x$(basename $0)" = "x$PREFIX-upload-deb-package" ] || [ "x$(basename $0)" = "x$PREFIX-build+upload-deb-package" ]; then |