X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=vbuild-nightly.sh;h=18b424657517616ed98c982b15a035d3fb9f33f3;hb=f10b29e6e508ef76e6ecb9d316c3f463255c2439;hp=ec2e4d9de20c682efeb143fe04d9ff69302bed89;hpb=74f31f6f337ef4c2c1b8ce609034bfa1da6519bd;p=build.git diff --git a/vbuild-nightly.sh b/vbuild-nightly.sh index ec2e4d9d..18b42465 100755 --- a/vbuild-nightly.sh +++ b/vbuild-nightly.sh @@ -9,7 +9,7 @@ DEFAULT_FCDISTRO=f8 DEFAULT_PLDISTRO=planetlab DEFAULT_PERSONALITY=linux32 DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@" -DEFAULT_SVNPATH="http://svn.planet-lab.org/svn/build/trunk" +DEFAULT_build_SVNPATH="http://svn.planet-lab.org/svn/build/trunk" DEFAULT_TESTCONFIG="default" DEFAULT_IFNAME=eth0 @@ -161,9 +161,11 @@ function build () { # stuff our own variable settings MAKEVARS=("PLDISTRO=${PLDISTRO}" "${MAKEVARS[@]}") MAKEVARS=("PLDISTROTAGS=${PLDISTROTAGS}" "${MAKEVARS[@]}") - MAKEVARS=("NIGHTLY_BASE=${BASE}" "${MAKEVARS[@]}") - MAKEVARS=("NIGHTLY_PERSONALITY=${PERSONALITY}" "${MAKEVARS[@]}") - MAKEVARS=("build-SVNPATH=${SVNPATH}" "${MAKEVARS[@]}") + MAKEVARS=("build-SVNPATH=${build_SVNPATH}" "${MAKEVARS[@]}") + MAKEVARS=("PERSONALITY=${PERSONALITY}" "${MAKEVARS[@]}") + MAKEVARS=("MAILTO=${MAILTO}" "${MAKEVARS[@]}") + + MAKEVARS=("BASE=${BASE}" "${MAKEVARS[@]}") # stage1 make -C /build $DRY_RUN "${MAKEVARS[@]}" stage1=true @@ -196,7 +198,7 @@ function runtest () { # xxx - Thierry - need to rework the test framework in tests/system so it can work # with the entire tests/ module checked out, rather than only tests/system/ # ugly workaround for now - SYSTEM_SVNPATH=${TESTS_SVNPATH}/system + TESTS_SYSTEM_SVNPATH=${TESTS_SVNPATH}/system ### the URL to the RPMS/ location url="" @@ -219,7 +221,7 @@ function runtest () { # clean it ssh -n ${TESTBOXSSH} rm -rf ${testdir} # check it out - ssh -n ${TESTBOXSSH} svn co ${SYSTEM_SVNPATH} ${testdir} + ssh -n ${TESTBOXSSH} svn co ${TESTS_SYSTEM_SVNPATH} ${testdir} # check out the entire tests/ module (with system/ duplicated) as a subdir - see xxx above ssh -n ${TESTBOXSSH} svn co ${TESTS_SVNPATH} ${testdir}/tests # invoke test on testbox - pass url and build url - so the tests can use vtest-init-vserver.sh @@ -231,7 +233,7 @@ function runtest () { # need to proceed despite of set -e success=true - ssh 2>&1 -n ${TESTBOXSSH} ${testdir}/runtest --build ${SVNPATH} --url ${url} $configs $test_env --all || success= + ssh 2>&1 -n ${TESTBOXSSH} ${testdir}/runtest --build ${build_SVNPATH} --url ${url} $configs $test_env --all || success= # gather logs in the vserver mkdir -p /vservers/$BASE/build/testlogs @@ -304,13 +306,13 @@ function show_env () { echo FCDISTRO=$FCDISTRO echo PLDISTRO=$PLDISTRO echo BASE=$BASE - echo SVNPATH=$SVNPATH + 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" @@ -331,9 +333,11 @@ 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" + echo " -s svnpath - where to fetch the build module - defaults to $DEFAULT_build_SVNPATH" echo " -c testconfig - defaults to $DEFAULT_TESTCONFIG" echo " -w webpath - defaults to $DEFAULT_WEBPATH" echo " -W testbuildurl - defaults to $DEFAULT_TESTBUILDURL" @@ -341,7 +345,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,15 +365,16 @@ 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) SVNPATH=$OPTARG ;; + s) build_SVNPATH=$OPTARG ;; c) TESTCONFIG="$TESTCONFIG $OPTARG" ;; w) WEBPATH=$OPTARG ;; W) TESTBUILDURL=$OPTARG ;; @@ -378,9 +382,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@" ;; @@ -416,15 +419,17 @@ function main () { [ -z "$GPGPATH" ] && GPGPATH="$DEFAULT_GPGPATH" [ -z "$GPGUID" ] && GPGUID="$DEFAULT_GPGUID" [ -z "$IFNAME" ] && IFNAME="$DEFAULT_IFNAME" - [ -z "$SVNPATH" ] && SVNPATH="$DEFAULT_SVNPATH" + [ -z "$build_SVNPATH" ] && build_SVNPATH="$DEFAULT_build_SVNPATH" [ -z "$TESTCONFIG" ] && TESTCONFIG="$DEFAULT_TESTCONFIG" [ -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) + if [ -n "$OVERBASE" ] ; then + BASE=${OVERBASE} + 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 # where to store the log for web access WEBLOG=${WEBPATH}/${BASE}.log.txt @@ -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 @@ -457,11 +462,19 @@ function main () { exec > $LOG 2>&1 set -x echo "XXXXXXXXXX $COMMAND: using existing vserver $BASE" $(date) - show_env # start in case e.g. we just rebooted vserver ${BASE} start || : # update build 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) + build_SVNPATH=$(vserver ${BASE} exec make --no-print-directory -C /build +build-SVNPATH) + PERSONALITY=$(vserver ${BASE} exec make --no-print-directory -C /build +PERSONALITY) + MAILTO=$(vserver ${BASE} execmake --no-print-directory -C /build +MAILTO) + show_env else # create vserver: check it does not exist yet i= @@ -486,7 +499,7 @@ function main () { ### extract the whole build - much simpler tmpdir=/tmp/$COMMAND-$$ - svn export $SVNPATH $tmpdir + svn export $build_SVNPATH $tmpdir # Create vserver cd $tmpdir ./vbuild-init-vserver.sh -f ${FCDISTRO} -d ${PLDISTRO} -p ${PERSONALITY} -i ${IFNAME} ${BASE} @@ -494,7 +507,7 @@ function main () { cd - rm -rf $tmpdir # Extract build again - in the vserver - vserver ${BASE} exec svn checkout ${SVNPATH} /build + vserver ${BASE} exec svn checkout ${build_SVNPATH} /build fi echo "XXXXXXXXXX $COMMAND: preparation of vserver $BASE done" $(date) @@ -510,6 +523,9 @@ 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) + if [ -n "$DO_BUILD" ] ; then cp $COMMANDPATH /vservers/${BASE}/build/