summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2013-12-03 21:46:50 +0100
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2013-12-03 21:46:50 +0100
commit81324fff912a530295fddb187245d71808487a09 (patch)
tree5ba170e13f9bb44c84f7a8f5aaa6a1a6e3ebe511 /bin
parentd77abe540ea30abb0d4b9e01d513b24d8011058b (diff)
downloadbuildscripts-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-xbin/build-rpm-package27
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