update modules list
[build.git] / vbuild-nightly.sh
index 8fd782a..9b558d8 100755 (executable)
@@ -5,7 +5,7 @@ COMMANDPATH=$0
 COMMAND=$(basename $0)
 
 # default values, tunable with command-line options
-DEFAULT_FCDISTRO=f8
+DEFAULT_FCDISTRO=centos5
 DEFAULT_PLDISTRO=planetlab
 DEFAULT_PERSONALITY=linux32
 DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@"
@@ -39,7 +39,7 @@ function summary () {
 # read a full log and tries to extract the interesting stuff
 
 import sys,re
-m_show_line=re.compile(".* BEG (RPM|VSERVER).*|.*'boot'.*|\* .*|.*is not installed.*")
+m_show_line=re.compile(".* BEG (RPM|VSERVER).*|.*'boot'.*|\* .*|.*is not installed.*|.*PROPFIND.*|.*Starting.*:runtest.*")
 m_installing_any=re.compile('\r  (Installing:[^\]]*]) ')
 m_installing_err=re.compile('\r  (Installing:[^\]]*])(..+)')
 m_installing_end=re.compile('Installed:.*')
@@ -163,6 +163,8 @@ function build () {
     MAKEVARS=("PLDISTROTAGS=${PLDISTROTAGS}" "${MAKEVARS[@]}")
     MAKEVARS=("build-SVNPATH=${build_SVNPATH}" "${MAKEVARS[@]}")
     MAKEVARS=("PERSONALITY=${PERSONALITY}" "${MAKEVARS[@]}")
+    MAKEVARS=("MAILTO=${MAILTO}" "${MAKEVARS[@]}")
+
     MAKEVARS=("BASE=${BASE}" "${MAKEVARS[@]}")
 
     # stage1
@@ -303,21 +305,26 @@ function show_env () {
     set +x
     echo FCDISTRO=$FCDISTRO
     echo PLDISTRO=$PLDISTRO
+    echo PERSONALITY=$PERSONALITY
     echo BASE=$BASE
     echo build_SVNPATH=$build_SVNPATH
     echo MAKEVARS="${MAKEVARS[@]}"
     echo DRY_RUN="$DRY_RUN"
     echo PLDISTROTAGS="$PLDISTROTAGS"
     echo TAGSRELEASE="$TAGSRELEASE"
-    echo -n "(might be unexpanded)"
-    echo WEBPATH="$WEBPATH"
+    # this does not help, it's not yet set when we run show_env
+    #echo WEBPATH="$WEBPATH"
     echo TESTBUILDURL="$TESTBUILDURL"
     if in_root_context ; then
        echo PLDISTROTAGS="$PLDISTROTAGS"
     else
-       echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file /build/$PLDISTROTAGS"
-       cat /build/$PLDISTROTAGS
-       echo "XXXXXXXXXXXXXXXXXXXX end tags definition"
+       if [ -f /build/$PLDISTROTAGS ] ; then
+           echo "XXXXXXXXXXXXXXXXXXXX Contents of tags definition file /build/$PLDISTROTAGS"
+           cat 
+           echo "XXXXXXXXXXXXXXXXXXXX end tags definition"
+       else
+           echo "XXXXXXXXXXXXXXXXXXXX Cannot find tags definition file /build/$PLDISTROTAGS, assuming remote pldistro"
+       fi
     fi
     set -x
 }
@@ -331,6 +338,8 @@ function usage () {
     echo " -p personality - defaults to $DEFAULT_PERSONALITY"
     echo " -b base - defaults to $DEFAULT_BASE"
     echo "    @NAME@ replaced as appropriate"
+    echo " -o base: (overwrite) do not re-create vserver, re-use base instead"
+    echo "    the -f/-d/-t/-s/-p/-m options are uneffective in this case"
     echo " -t pldistrotags - defaults to \${PLDISTRO}-tags.mk"
     echo " -r tagsrelease - a release number that refers to PLDISTROTAGS - defaults to HEAD"
     echo " -s svnpath - where to fetch the build module - defaults to $DEFAULT_build_SVNPATH"
@@ -341,7 +350,6 @@ function usage () {
     echo " -g path to gpg secring used to sign rpms.  Defaults to $DEFAULT_GPGPATH" 
     echo " -u gpg email used in secring. Defaults to $DEFAULT_GPGUID"
     echo " -m mailto - no default"
-    echo " -O : overwrite - re-run in base directory, do not re-create vserver"
     echo " -B : run build only"
     echo " -T : run test only"
     echo " -n dry-run : -n passed to make - vserver gets created though - no mail sent"
@@ -362,12 +370,13 @@ function main () {
     DO_BUILD=true
     DO_TEST=true
     SIGNYUMREPO=""
-    while getopts "f:d:p:b:t:r:s:x:c:w:W:g:u:m:OBTnyv7i:" opt ; do
+    while getopts "f:d:p:b:o:t:r:s:x:c:w:W:g:u:m:BTnyv7i:" opt ; do
        case $opt in
            f) FCDISTRO=$OPTARG ;;
            d) PLDISTRO=$OPTARG ;;
            p) PERSONALITY=$OPTARG ;;
            b) BASE=$OPTARG ;;
+           o) OVERBASE=$OPTARG ;;
            t) PLDISTROTAGS=$OPTARG ;;
            r) TAGSRELEASE=$OPTARG ;;
            s) build_SVNPATH=$OPTARG ;;
@@ -378,9 +387,8 @@ function main () {
             g) GPGPATH=$OPTARG ;;
             u) GPGUID=$OPTARG ;;
            m) MAILTO=$OPTARG ;;
-           O) OVERWRITEMODE=true ;;
            B) DO_TEST= ;;
-           T) DO_BUILD= ; OVERWRITEMODE=true ;;
+           T) DO_BUILD= ;;
            n) DRY_RUN="-n" ;;
            v) set -x ;;
            7) BASE="$(date +%a|tr A-Z a-z)-@FCDISTRO@" ;;
@@ -421,17 +429,14 @@ function main () {
 
     [ -n "$DRY_RUN" ] && MAILTO=""
        
-    ### set BASE from DISTRO, if unspecified
-    sedargs="-e s,@DATE@,${DATE},g -e s,@FCDISTRO@,${FCDISTRO},g -e s,@PLDISTRO@,${PLDISTRO},g -e s,@PERSONALITY@,${PERSONALITY},g"
-    BASE=$(echo ${BASE} | sed $sedargs)
-    WEBPATH=$(echo ${WEBPATH} | sed $sedargs)
-
-    # where to store the log for web access
-    WEBLOG=${WEBPATH}/${BASE}.log.txt
-    # compute the log URL - inserted in the mail messages for convenience
-    LOG_URL=$(echo ${WEBLOG} | sed -e "s,//,/,g" -e "s,/build/,${TESTBUILDURL},")
-    TESTLOGS_URL=$(echo ${WEBPATH}/${BASE}/testlogs | sed -e "s,//,/,g" -e "s,/build/,${TESTBUILDURL},")
-    
+    if [ -n "$OVERBASE" ] ; then
+       sedargs="-e s,@DATE@,${DATE},g"
+       BASE=$(echo ${OVERBASE} | sed $sedargs)
+    else
+       sedargs="-e s,@DATE@,${DATE},g -e s,@FCDISTRO@,${FCDISTRO},g -e s,@PLDISTRO@,${PLDISTRO},g -e s,@PERSONALITY@,${PERSONALITY},g"
+       BASE=$(echo ${BASE} | sed $sedargs)
+    fi
+
     if ! in_root_context ; then
         # in the vserver
        echo "==================== Within vserver BEG $(date)"
@@ -445,7 +450,7 @@ function main () {
         # (*) copy this command in the vserver
         # (*) invoke it
        
-       if [ -n "$OVERWRITEMODE" ] ; then
+       if [ -n "$OVERBASE" ] ; then
             ### Re-use a vserver (finish an unfinished build..)
            if [ ! -d /vservers/${BASE} ] ; then
                echo $COMMAND : cannot find vserver $BASE
@@ -463,10 +468,12 @@ function main () {
            vserver ${BASE} exec svn update /build
            # get environment from the first run 
            FCDISTRO=$(vserver ${BASE} exec /build/getdistroname.sh)
-           PLDISTRO=$(vserver ${BASE} exec make --no-print-directory -C /build +PLDISTRO)
-           PLDISTROTAGS=$(vserver ${BASE} exec make --no-print-directory -C /build +PLDISTROTAGS)
-           PERSONALITY=$(vserver ${BASE} exec make --no-print-directory -C /build +PERSONALITY)
-           build_SVNPATH=$(vserver ${BASE} exec make --no-print-directory -C /build +build-SVNPATH)
+
+           PLDISTRO=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +PLDISTRO)
+           PLDISTROTAGS=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +PLDISTROTAGS)
+           build_SVNPATH=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +build-SVNPATH)
+           PERSONALITY=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +PERSONALITY)
+           MAILTO=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +MAILTO)
            show_env
        else
            # create vserver: check it does not exist yet
@@ -516,6 +523,15 @@ function main () {
        # redirect log again
        exec >> $LOG 2>&1 
 
+       sedargs="-e s,@DATE@,${DATE},g -e s,@FCDISTRO@,${FCDISTRO},g -e s,@PLDISTRO@,${PLDISTRO},g -e s,@PERSONALITY@,${PERSONALITY},g"
+       WEBPATH=$(echo ${WEBPATH} | sed $sedargs)
+
+        # where to store the log for web access
+       WEBLOG=${WEBPATH}/${BASE}.log.txt
+        # compute the log URL - inserted in the mail messages for convenience
+       LOG_URL=$(echo ${WEBLOG} | sed -e "s,//,/,g" -e "s,/build/,${TESTBUILDURL},")
+       TESTLOGS_URL=$(echo ${WEBPATH}/${BASE}/testlogs | sed -e "s,//,/,g" -e "s,/build/,${TESTBUILDURL},")
+    
        if [ -n "$DO_BUILD" ] ; then 
 
            cp $COMMANDPATH /vservers/${BASE}/build/