X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;ds=inline;f=vbuild-nightly.sh;h=739bf1b12ff6673999f3696e8d3d7758830a9e69;hb=f52ee6820186be0458063d53b2ef802d0ed0ab9b;hp=3fedba7947bf099160519f57e400515d33d0f9cc;hpb=cb881081294f0638d538dd52b78fdebc19905da0;p=build.git diff --git a/vbuild-nightly.sh b/vbuild-nightly.sh index 3fedba79..739bf1b1 100755 --- a/vbuild-nightly.sh +++ b/vbuild-nightly.sh @@ -9,7 +9,7 @@ DEFAULT_FCDISTRO=centos5 DEFAULT_PLDISTRO=planetlab DEFAULT_PERSONALITY=linux32 DEFAULT_BASE="@DATE@--@PLDISTRO@-@FCDISTRO@-@PERSONALITY@" -DEFAULT_BUILD_SCM_URL="http://svn.planet-lab.org/svn/build/trunk" +DEFAULT_BUILD_SCM_URL="git://git.onelab.eu/build" DEFAULT_IFNAME=eth0 # default gpg path used in signing yum repo @@ -121,7 +121,7 @@ function webpublish_append_stdin_to_file () { ssh root@${WEBHOST} cat \>\> $1; } function failure() { set -x # early stage ? - let's not create /build/@PLDISTRO@ - if webpublish_misses_dir $WEBPATH ; then + if test -z "$WEBLOG" ; then WEBHOST=localhost WEBPATH=/tmp WEBBASE=/tmp/vbuild-early-$(date +%Y-%m-%d) @@ -136,6 +136,7 @@ function failure() { if [ -n "$MAILTO" ] ; then ( \ echo "Subject: Failures with $MAIL_SUBJECT $BASE on $(hostname)" ; \ + echo "To: $MAILTO" ; \ echo "See full build log at $WEBBASE_URL/log.txt" ; \ echo "and tail version at $WEBBASE_URL.ko" ; \ echo "See complete set of testlogs at $WEBBASE_URL/testlogs" ; \ @@ -149,7 +150,7 @@ function failure() { function success () { set -x # early stage ? - let's not create /build/@PLDISTRO@ - if webpublish_misses_dir ${WEBPATH} ; then + if test -z "$WEBLOG" ; then WEBHOST=localhost WEBPATH=/tmp WEBLOG=/tmp/vbuild-early-$(date +%Y-%m-%d).log.txt @@ -174,6 +175,7 @@ function success () { if [ -n "$MAILTO" ] ; then ( \ echo "Subject: Success with ${MAIL_SUBJECT} ${BASE} on $(hostname)" ; \ + echo "To: $MAILTO" ; \ echo "$PLDISTRO ($BASE) build for $FCDISTRO completed on $(date)" ; \ echo "See full build log at $WEBBASE_URL/log.txt" ; \ [ -n "$DO_TEST" ] && echo "See complete set of testlogs at $WEBBASE_URL/testlogs" ) \ @@ -214,6 +216,9 @@ function build () { MAKEVARS=("BASE=${BASE}" "${MAKEVARS[@]}") + # initialize latex + /build/latex-first-run.sh || : + # stage1 make -C /build $DRY_RUN "${MAKEVARS[@]}" stage1=true # versions @@ -405,6 +410,7 @@ function usage () { echo " -p personality - defaults to $DEFAULT_PERSONALITY" echo " -m mailto - no default" echo " -s build_scm_url - git or svn URL where to fetch the build module - defaults to $DEFAULT_BUILD_SCM_URL" + echo " define GIT tag or branch name appending @tagname to url" echo " -t pldistrotags - defaults to \${PLDISTRO}-tags.mk" echo " -b base - defaults to $DEFAULT_BASE" echo " @NAME@ replaced as appropriate" @@ -426,6 +432,7 @@ function usage () { echo " -v - be verbose" echo " -7 - uses weekday-@FCDISTRO@ as base" echo " -i ifname - defaults to $DEFAULT_IFNAME - used to determine local IP" + echo " --build-branch branch - build using the branch from build module" exit 1 } @@ -442,40 +449,47 @@ function main () { PUBLISH_SRPMS=true SSH_KEY="" SIGNYUMREPO="" - while getopts "f:d:p:m:s:t:b:o:c:w:W:r:M:yg:u:K:SBTnv7i:" opt ; do - case $opt in - f) FCDISTRO=$OPTARG ;; - d) PLDISTRO=$OPTARG ;; - p) PERSONALITY=$OPTARG ;; - m) MAILTO=$OPTARG ;; - s) BUILD_SCM_URL=$OPTARG ;; - t) PLDISTROTAGS=$OPTARG ;; - b) BASE=$OPTARG ;; - o) OVERBASE=$OPTARG ;; - c) TESTCONFIG="$TESTCONFIG $OPTARG" ;; - w) WEBPATH=$OPTARG ;; - W) TESTBUILDURL=$OPTARG ;; - r) WEBROOT=$OPTARG ;; - M) TESTMASTER=$OPTARG ;; - y) SIGNYUMREPO=true ;; - g) GPGPATH=$OPTARG ;; - u) GPGUID=$OPTARG ;; - K) SSH_KEY=$OPTARG ;; - S) PUBLISH_SRPMS="" ;; - B) DO_TEST= ;; - T) DO_BUILD= ;; - n) DRY_RUN="-n" ;; - v) set -x ; VERBOSE="-v" ;; - 7) BASE="$(date +%a|tr A-Z a-z)-@FCDISTRO@" ;; - i) IFNAME=$OPTARG ;; - h|*) usage ;; + + OPTS_ORIG=$@ + OPTS=$(getopt -o "f:d:p:m:s:t:b:o:c:w:W:r:M:yg:u:K:SBTnv7i:h" -l "build-branch:" -- $@) + if [ $? != 0 ] + then + usage + fi + eval set -- "$OPTS" + while true; do + case $1 in + -f) FCDISTRO=$2; shift 2 ;; + -d) PLDISTRO=$2; shift 2 ;; + -p) PERSONALITY=$2; shift 2 ;; + -m) MAILTO=$2; shift 2 ;; + -s) BUILD_SCM_URL=$2; shift 2 ;; + -t) PLDISTROTAGS=$2; shift 2 ;; + -b) BASE=$2; shift 2 ;; + -o) OVERBASE=$2; shift 2 ;; + -c) TESTCONFIG="$TESTCONFIG $2"; shift 2 ;; + -w) WEBPATH=$2; shift 2 ;; + -W) TESTBUILDURL=$2; shift 2 ;; + -r) WEBROOT=$2; shift 2 ;; + -M) TESTMASTER=$2; shift 2 ;; + -y) SIGNYUMREPO=true; shift ;; + -g) GPGPATH=$2; shift 2 ;; + -u) GPGUID=$2; shift 2 ;; + -K) SSH_KEY=$2; shift 2 ;; + -S) PUBLISH_SRPMS="" ; shift ;; + -B) DO_TEST= ; shift ;; + -T) DO_BUILD= ; shift;; + -n) DRY_RUN="-n" ; shift ;; + -v) set -x ; VERBOSE="-v" ; shift ;; + -7) BASE="$(date +%a|tr A-Z a-z)-@FCDISTRO@" ; shift ;; + -i) IFNAME=$2; shift 2 ;; + -h) usage ; shift ;; + --) shift; break ;; esac done - + # preserve options for passing them again later, together with expanded base - declare -a options - toshift=$(($OPTIND - 1)) - arg=1; while [ $arg -le $toshift ] ; do options=(${options[@]} "$1") ; shift; arg=$(($arg+1)) ; done + options=$OPTS_ORIG # allow var=value stuff; for target in "$@" ; do @@ -560,25 +574,24 @@ function main () { echo "XXXXXXXXXX $COMMAND: using existing vserver $BASE" $(date) # start in case e.g. we just rebooted vserver ${BASE} start || : + # retrieve environment from the previous run + FCDISTRO=$(vserver ${BASE} exec /build/getdistroname.sh) + BUILD_SCM_URL=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +build-SVNPATH +build-GITPATH) + # for efficiency, crop everything in one make run + tmp=/tmp/${BASE}-env.sh + vserver ${BASE} exec make --no-print-directory -C /build stage1=skip \ + ++PLDISTRO ++PLDISTROTAGS ++PERSONALITY ++MAILTO ++WEBPATH ++TESTBUILDURL ++WEBROOT > $tmp + . $tmp + rm -f $tmp # update build [ -n "$SSH_KEY" ] && setupssh ${BASE} ${SSH_KEY} if echo $BUILD_SCM_URL | grep -q git ; then - vserver $BASE exec bash -c "cd /build; git pull" + vserver $BASE exec bash -c "cd /build; git pull; make tests-clean" else vserver $BASE exec svn update /build fi # make sure we refresh the tests place in case it has changed rm -f /build/MODULES/tests - # get environment from the first run - FCDISTRO=$(vserver ${BASE} exec /build/getdistroname.sh) - # retrieve all in one run - tmp=/tmp/${BASE}-env.sh - vserver ${BASE} exec make --no-print-directory -C /build stage1=skip \ - ++PLDISTRO ++PLDISTROTAGS ++PERSONALITY ++MAILTO ++WEBPATH ++TESTBUILDURL ++WEBROOT > $tmp - # sh vars cannot have a minus - echo BUILD_SCM_URL=$(vserver ${BASE} exec make --no-print-directory -C /build stage1=skip +build-SVNPATH +build-GITPATH) >> $tmp - . $tmp - rm -f $tmp options=(${options[@]} -d $PLDISTRO -t $PLDISTROTAGS -s $BUILD_SCM_URL) [ -n "$PERSONALITY" ] && options=(${options[@]} -p $PERSONALITY) [ -n "$MAILTO" ] && options=(${options[@]} -m $MAILTO)