diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2013-12-03 21:46:50 +0100 |
---|---|---|
committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2013-12-03 21:46:50 +0100 |
commit | 81324fff912a530295fddb187245d71808487a09 (patch) | |
tree | 5ba170e13f9bb44c84f7a8f5aaa6a1a6e3ebe511 /bin | |
parent | d77abe540ea30abb0d4b9e01d513b24d8011058b (diff) | |
download | buildscripts-81324fff912a530295fddb187245d71808487a09.tar.gz buildscripts-81324fff912a530295fddb187245d71808487a09.tar.bz2 buildscripts-81324fff912a530295fddb187245d71808487a09.zip |
add lock file support to build-rpm-package, as well
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/build-rpm-package | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/bin/build-rpm-package b/bin/build-rpm-package index 5f6b4ae..ae5fa58 100755 --- a/bin/build-rpm-package +++ b/bin/build-rpm-package @@ -81,6 +81,9 @@ set_vars() { PROJECT_DIR="$HOME/build/$COMPONENT/$PROJECT" PKGDIST="$HOME/pkg-dist/$COMPONENT/$PROJECT" + # lock file + LOCK_FILE=$PROJECT_DIR/../.$PROJECT.lock + # creating paths mkdir -p "$TEMP_BASE" mkdir -p "$PROJECT_DIR" @@ -177,6 +180,7 @@ build_packages() { IS_RELEASE="1" fi sed -i $PROJECT.spec -e "s/%{?dist}/.$IS_RELEASE.git$DATE.$GITREV.$COMPONENT%{?dist}/" + mv $TEMP_DIR/$PROJECT $TEMP_DIR/$PROJECT-$UPSTREAM_VERSION tar -czf $PKGDIST/rpmbuild/SOURCES/$PROJECT-$UPSTREAM_VERSION.tar.gz $PROJECT-$UPSTREAM_VERSION @@ -257,14 +261,37 @@ upload_packages() { return 0 } +wait_for_lock() { + while [ -f $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 seconds..." + sleep 10 + fi + 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-rpm-package" ] || [ "x$(basename $0)" = "x$PREFIX-build+upload-rpm-package" ]; then cd $PROJECT_DIR && pkgneedsbuild $CHECKOUT || [ "$FORCE_BUILD" = "yes" ] && { + lock_workspace prepare_workspace && { + unlock_workspace clear_pkgdist build_packages } + unlock_workspace } fi if [ "x$(basename $0)" = "x$PREFIX-upload-rpm-package" ] || [ "x$(basename $0)" = "x$PREFIX-build+upload-rpm-package" ]; then |