back to using a tmp file
[infrastructure.git] / scripts / all-modules.sh
1 #!/bin/bash
2 # $Id$
3 # this script is a wrapper around the module-tools (version and diff)
4 # it is invoked every 30 minutes on onelab build box
5 # prior to that, the following directories will have been svn updated :
6 # /root/svn-build
7 # /root/svn-build-4.2
8
9 # avoid running several instances of this script
10 # when the svn server has problems, this can very well last quite a while
11
12 COMMAND=$(basename $0)
13 OUTPUT=/build/modules
14 LOCK=/var/run/all-modules.pid
15
16 function do_update() {
17     build_dir=$1; shift
18     if [ -f $build_dir/auto-update.sh ] ; then
19         $build_dir/auto-update.sh
20     else
21         pushd $build_dir; svn update > .update.log 2>&1 ; popd
22     fi
23 }
24
25 # usage: do_version dir name 
26 function do_version () {
27     build_dir=$1; shift
28     name=$1; shift
29
30     out_dir=$OUTPUT/$name
31     out_file=$out_dir/version.txt
32     out_tmp=$out_dir/.version.txt
33     
34     mkdir -p $out_dir
35     
36     ( echo $name ; \
37       date ; \
38       $build_dir/module-version -a --url ; \
39       date ) &> $out_tmp
40     mv -f $out_tmp $out_file
41 }
42
43 # usage: do_version dir name 
44 function do_diff () {
45     build_dir=$1; shift
46     name=$1; shift
47
48     out_dir=$OUTPUT/$name
49     out_file=$out_dir/diff.txt
50     out_tmp=$out_dir/.diff.txt
51     
52     mkdir -p $out_dir
53     
54 ### older syntax was messy    
55 #    ( echo $name ; \
56 #      date ; \
57 #      $build_dir/module-diff -a -o ; \
58 #      date ) &> $out_tmp
59 #
60 #    ( echo 'WARNINGS (if any)' ; \
61 #      egrep 'was not found|Skipping failed' $out_tmp ;
62 #      cat $out_tmp ) > $out_file
63
64     $build_dir/module-diff -a -W $name &> $out_tmp
65
66     rm -f $out_tmp
67
68 }
69
70 function usage () {
71     echo "Usage: $COMMAND [-v] [-f] [-i]"
72 }
73
74 function main () {
75
76     while [[ -n "$@" ]] ; do
77         case "$1" in 
78             -f) rm -f $LOCK ;;
79             -i) ls -l $LOCK ; exit 0 ;;
80             -v) set -x ;;
81             *) usage; exit 1;;
82         esac
83         shift
84     done
85
86     [ -f $LOCK ] && exit 1
87     
88     echo $$ > $LOCK
89
90     do_update  /root/svn-build
91     do_diff    /root/svn-build     trunk 
92     do_version /root/svn-build     trunk 
93 #    do_update  /root/svn-build-4.2
94 #    do_diff    /root/svn-build-4.2 4.2 
95 #    do_version /root/svn-build-4.2 4.2 
96
97     rm $LOCK
98
99 }
100
101 main "$@"