From f38d5a7692827e2836f09bad8bac21d26ef6ac96 Mon Sep 17 00:00:00 2001
From: thierry <thierry@41d37cc5-eb28-0410-a9bf-d37491348ade>
Date: Wed, 11 Jun 2008 08:12:39 +0000
Subject: [PATCH] protect against concurrent runs - redone

---
 scripts/all-modules.sh | 40 +++++++++++++++++++++++++++++++---------
 1 file changed, 31 insertions(+), 9 deletions(-)

diff --git a/scripts/all-modules.sh b/scripts/all-modules.sh
index a43dd8a..0c81374 100755
--- a/scripts/all-modules.sh
+++ b/scripts/all-modules.sh
@@ -10,12 +10,8 @@
 # when the svn server has problems, this can very well last quite a while
 
 COMMAND=$(basename $0)
-pid=$$
-running=$(pgrep $COMMAND 2> /dev/null | grep -v "^${pid}"'^' )
-# bail out if another instance is already running
-[ -n "$running" ] && exit 1
-
 OUTPUT=/build/modules
+LOCK=/var/run/all-modules.pid
 
 # usage: do_version dir name 
 function do_version () {
@@ -58,7 +54,33 @@ function do_diff () {
     rm -f $out_tmp
 }
 
-do_version /root/svn-build-4.2 4.2 
-do_diff    /root/svn-build-4.2 4.2 
-do_version /root/svn-build     trunk 
-do_diff    /root/svn-build     trunk 
+function usage () {
+    echo "Usage: $COMMAND [-v] [-f] [-i]"
+}
+
+function main () {
+
+    while [[ -n "$@" ]] ; do
+	case "$1" in 
+	    -f) rm -f $LOCK ;;
+	    -i) ls -l $LOCK ; exit 0 ;;
+	    -v) set -x ;;
+	    *) usage; exit 1;;
+	esac
+	shift
+    done
+
+    [ -f $LOCK ] && exit 1
+    
+    echo $$ > $LOCK
+
+    do_version /root/svn-build-4.2 4.2 
+    do_diff    /root/svn-build-4.2 4.2 
+    do_version /root/svn-build     trunk 
+    do_diff    /root/svn-build     trunk 
+
+    rm $LOCK
+
+}
+
+main "$@"
-- 
2.47.0