common build script for all boxes
[infrastructure.git] / scripts / all-modules.sh
index a2854ea..12058e7 100755 (executable)
@@ -1,53 +1,85 @@
 #!/bin/bash
-
+# $Id$
 # this script is a wrapper around the module-tools (version and diff)
 # it is invoked every 30 minutes on onelab build box
 # prior to that, the following directories will have been svn updated :
 # /root/svn-build
 # /root/svn-build-4.2
 
+# avoid running several instances of this script
+# when the svn server has problems, this can very well last quite a while
+
+COMMAND=$(basename $0)
 OUTPUT=/build/modules
+LOCK=/var/run/all-modules.pid
+
+function do_update() {
+    build_dir=$1; shift
+    if [ -f $build_dir/auto-update.sh ] ; then
+       $build_dir/auto-update.sh
+    else
+       pushd $build_dir; svn update > .update.log 2>&1 ; popd
+    fi
+}
 
-# usage: do_version name dir 
+# usage: do_version dir name 
 function do_version () {
-    name=$1; shift
     build_dir=$1; shift
+    name=$1; shift
 
     out_dir=$OUTPUT/$name
-    out_file=$out_dir/version.txt
-    out_tmp=$out_file.new
+    out_file=$out_dir/version.html
+    out_tmp=$out_dir/.version.html
     
     mkdir -p $out_dir
-    
-    ( echo $name ; \
-      date ; \ 
-      $build_dir/module-version -a ; \
-      date ) > $out_tmp
+    $build_dir/module-version --www $name -a --url &> $out_tmp
     mv -f $out_tmp $out_file
 }
 
-# usage: do_version name dir 
+# usage: do_version dir name 
 function do_diff () {
-    name=$1; shift
     build_dir=$1; shift
+    name=$1; shift
 
     out_dir=$OUTPUT/$name
-    out_file=$out_dir/version.txt
-    out_tmp=$out_file.new
+    out_file=$out_dir/diff.html
+    out_tmp=$out_dir/.diff.html
     
     mkdir -p $out_dir
+    $build_dir/module-diff --www $name -a &> $out_tmp
+    mv -f $out_tmp $out_file
+
+}
+
+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 $name ; \
-      date ; \ 
-      $build_dir/module-diff -a -o -q ; \
-      date ) > $out_tmp
-
-    ( echo 'WARNINGS (if any)' ; \
-      egrep 'was not found|Skipping failed' $out_tmp ;
-      cat $out_tmp ) > $out_file
+    echo $$ > $LOCK
+
+    do_update  /root/svn-build
+    do_diff    /root/svn-build     trunk 
+    do_version /root/svn-build     trunk 
+#    do_update  /root/svn-build-4.2
+#    do_diff    /root/svn-build-4.2 4.2 
+#    do_version /root/svn-build-4.2 4.2 
+
+    rm $LOCK
+
 }
 
-do_version trunk /root/svn-build
-do_diff    trunk /root/svn-build
-do_version 4.2 /root/svn-build-4.2
-do_diff    4.2 /root/svn-build-4.2
+main "$@"