avoid concurrent instances
[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 running=$(pgrep $COMMAND 2> /dev/null)
14 # bail out if another instance is already running
15 [ -n "$running" ] && exit 1
16
17 OUTPUT=/build/modules
18
19 # usage: do_version dir name 
20 function do_version () {
21     build_dir=$1; shift
22     name=$1; shift
23
24     out_dir=$OUTPUT/$name
25     out_file=$out_dir/version.txt
26     out_tmp=$out_dir/.version.txt
27     
28     mkdir -p $out_dir
29     
30     ( echo $name ; \
31       date ; \
32       $build_dir/module-version -a ; \
33       date ) &> $out_tmp
34     mv -f $out_tmp $out_file
35 }
36
37 # usage: do_version dir name 
38 function do_diff () {
39     build_dir=$1; shift
40     name=$1; shift
41
42     out_dir=$OUTPUT/$name
43     out_file=$out_dir/diff.txt
44     out_tmp=$out_dir/.diff.txt
45     
46     mkdir -p $out_dir
47     
48     ( echo $name ; \
49       date ; \
50       $build_dir/module-diff -a -o -q ; \
51       date ) &> $out_tmp
52
53     ( echo 'WARNINGS (if any)' ; \
54       egrep 'was not found|Skipping failed' $out_tmp ;
55       cat $out_tmp ) > $out_file
56
57     rm -f $out_tmp
58 }
59
60 do_version /root/svn-build-4.2 4.2 
61 do_diff    /root/svn-build-4.2 4.2 
62 do_version /root/svn-build     trunk 
63 do_diff    /root/svn-build     trunk