svn keywords
[infrastructure.git] / scripts / all-builds.sh
1 #!/bin/bash
2 # $Id$
3 # this script is managed under subversion at 
4 # http://svn.one-lab.org/infrastructure/scripts/all-builds.sh
5 # it is triggered every night at 0:05 french time on build.one-lab.org aka blitz.inria.fr
6
7 COMMAND=$(basename $0)
8
9 function usage () {
10     echo "Usage: $COMMAND"
11     echo "In manual mode you should export the following vars (or use related option)"
12     echo "MAJOR_DISTROS (-d) TRUNK_DISTROS (-td) VS_DISTROS (-vd)"
13     echo "FCDISTROS (-f) BITS (-i) BASE (-b)"
14     echo "RETRY (-O) TEST (-T) DRY_RUN (-n)"
15     echo "Use at least one space for blanking a set of distros"
16     exit 1
17 }
18
19 # comment off for usual dailies
20 MAJOR=4.2
21 MINOR=rc6
22
23 while [[ -n "$@" ]] ; do
24     case "$1" in
25         -d) shift ; MAJOR_DISTROS="$MAJOR_DISTROS $1" ;;
26         -f) shift ; FCDISTROS="$FCDISTROS $1" ;;
27         -i) shift ; BITS="$BITS $1" ;;
28         -td) shift; TRUNK_DISTROS="$1" ;;
29         -vd) shift; VS_DISTROS="$1" ;;
30         -b) shift; BASE="$1" ;;
31         -O) RETRY=true ;;
32         -T) TEST=true ;;
33         -n) DRY_RUN=true ;;
34         -z) MINOR="" ;;
35         *) usage ;;
36     esac
37     shift
38 done
39
40 DEFAULT_FCDISTROS="f8"
41 DEFAULT_BITS="32 64"
42 DEFAULT_BASE="@DATE@"
43
44 if [ -z "$MINOR" ] ; then
45     DEFAULT_MAJOR_DISTROS=""
46     DEFAULT_VS_DISTROS=""
47 # 5.0 ready for planetlab distro only so far
48     DEFAULT_TRUNK_DISTROS="planetlab"
49 #    DEFAULT_TRUNK_DISTROS="onelab planetlab"
50     BUILDOPT=""
51 else
52     DEFAULT_MAJOR_DISTROS="planetlab onelab"
53     DEFAULT_VS_DISTROS="onelab"
54     DEFAULT_TRUNK_DISTROS=""
55     BUILDOPT="-s http://svn.planet-lab.org/svn/build/tags/${MAJOR}-${MINOR}"
56 fi
57
58
59
60 [[ -n "$@" ]] && usage
61
62 # export any of these to override - this is for manual use only
63 if [ -z "$MAJOR_DISTROS" ] ;    then MAJOR_DISTROS=$DEFAULT_MAJOR_DISTROS ;     else manual=true ; fi
64 if [ -z "$FCDISTROS" ] ;        then FCDISTROS=$DEFAULT_FCDISTROS ;             else manual=true ; fi
65 if [ -z "$BITS" ] ;             then BITS=$DEFAULT_BITS ;                       else manual=true ; fi
66 if [ -z "$TRUNK_DISTROS" ] ;    then TRUNK_DISTROS=$DEFAULT_TRUNK_DISTROS ;     else manual=true ; fi
67 if [ -z "$VS_DISTROS" ] ;       then VS_DISTROS=$DEFAULT_VS_DISTROS ;           else manual=true ; fi
68 if [ -z "$BASE" ] ;             then BASE=$DEFAULT_BASE ;                       else manual=true ; fi
69 [ -n "$RETRY" ] &&      { extra_option="$extra_option -O" ; manual=true ; }
70 [ -n "$TEST" ] &&       { extra_option="$extra_option -T" ; manual=true ; }
71 [ -n "$DRY_RUN" ] &&    { manual=true ; }
72
73 function run () {
74     [ -n "$manual" ] && echo "$@" '; \'
75     if [ -z "$DRY_RUN" ] ; then
76         "$@"
77     fi
78 }
79
80 function shortname () {
81     distro=$1; shift
82     case $distro in
83         onelab)         echo 1l;;
84         planetlab)      echo pl;;
85         *)              echo xx;;
86     esac
87 }
88
89 ############################## ${MAJOR}
90 for d in $MAJOR_DISTROS ; do
91     for f in $FCDISTROS ; do 
92         for bits in $BITS; do
93             p=linux${bits}
94             s=$(shortname $d)
95             if [ -z "$MINOR" ] ; then
96                 buildname="${BASE}--${s}.${MAJOR}--${f}-${bits}"
97             else
98                 buildname="${d}-${MAJOR}-${MINOR}.1lab-${f}-${bits}"
99             fi
100             command="/root/bin/vbuild-nightly.sh -m onelab-build@one-lab.org ${BUILDOPT} \
101                 -d $d -p $p -f $f -t ${d}-tags-${MAJOR}.mk \
102                 -b $buildname $extra_option"
103             run $command
104         done
105     done
106 done
107
108 ############################## ${MAJOR}/centos5
109 # centos5 : for both archs, make the vserver rpms
110 # does not test, so skip if test is requested
111 if [ -z "$TEST" ] ; then
112     f=centos5
113     for d in $VS_DISTROS ; do
114         for bits in $BITS ; do
115             p=linux${bits}
116             s=$(shortname $d)
117             if [ -z "$MINOR" ] ; then
118                 buildname="${BASE}--${s}.${MAJOR}--${f}-${bits}"
119             else
120                 buildname="${d}-${MAJOR}-${MINOR}.1lab-${f}-${bits}"
121             fi
122             command="/root/bin/vbuild-nightly.sh -m onelab-build@one-lab.org ${BUILDOPT} \
123             -d $d -p $p -f $f -t ${d}-tags-${MAJOR}.mk \
124             -b $buildname -B vserver"
125             run $command
126         done
127     done
128 fi
129
130 ############################## TRUNK
131 # raw - std planetlab x f8 x 32bits for deploying on alpha nodes
132 for d in $TRUNK_DISTROS; do
133     for bits in $BITS; do
134         p=linux${bits}
135         s=$(shortname $d)
136         buildname="${BASE}--tr${s}-${bits}"
137         command="/root/bin/vbuild-nightly.sh -m onelab-build@one-lab.org ${BUILDOPT} \
138          -d $d -p $p -b $buildname $extra_option"
139         run $command
140     done
141 done
142
143 ##############################