From 88ab767d1bfc8065203aa59350fcf30fa131bf8e Mon Sep 17 00:00:00 2001 From: Silvan Calarco Date: Mon, 22 Apr 2013 12:26:12 +0200 Subject: [PATCH] autodist: added jobs support for %continue_on_error and some other fixes --- autodist | 59 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/autodist b/autodist index 54d3487..1bf0060 100755 --- a/autodist +++ b/autodist @@ -81,7 +81,6 @@ PIDFILE="/var/run/autodist/autodist.pid" # Configuration defaults normally overriden in configuration file AUTOBUILD_MAXNUM=50 AUTOBUILD_DATEFROM=20070101 -GNOME_VER=2.24.0 AUTODIST_REPOSITORY= SEND_SERVER= @@ -471,17 +470,19 @@ function launch_pkgs_loop() { cross_target_cpu="" autodist_crossonly="" patch_operation=$operation + continue_on_error= for i in `seq 1 ${#JOB_VALUES[*]}`; do [ "${JOB_VALUES[$i-1]}" = "-" ] || \ case ${JOB_VARNAMES[$i-1]} in %build_and_install) [ "$operation" = "build" ] && operation=buildinstall - break + ;; + %continue_on_error) + continue_on_error=1 ;; %*) echo "!! Warning: skipping unknown internal variable: ${JOB_VARNAMES[$i-1]}" - break ;; autodist_crossonly) autodist_crossonly=1 @@ -637,8 +638,8 @@ function launch_pkgs_loop() { version_find_bigger "${passed_arguments/ *}" "$pkglinever" [ $? -eq 1 ] || { echo "!! Warning: skipping ${pkg} package already up to date ($pkglinever >= ${passed_arguments/ *})." - echo "%% Adding ${pkg} job to skipped list." - echo "${pkg} $DATE_NOW 255" >> $SKIPPEDLISTDIR/auto.skip +# echo "%% Adding ${pkg} job to skipped list." +# echo "${pkg} $DATE_NOW 255" >> $SKIPPEDLISTDIR/auto.skip [ "$do_autobuild" ] && autobuild_log $pkg $operation skipped $JOB_NAME continue } @@ -769,7 +770,7 @@ function launch_pkgs_loop() { } ;; esac - [ $SEVERITY -gt 0 ] && { + [ $SEVERITY -gt 0 -a ! "$continue_on_error" ] && { rm -f $tmpfile return $ret } @@ -832,9 +833,11 @@ function launch_pkgs_loop() { fi if [ "$operation" = "buildinstall" -o "${passed_arguments/--norpm}" != "${passed_arguments}" ]; then # send operation: check for --norpm (source send) to avoid sending notification twice - [ "$WEBBUILD_URL" -a "$WEBBUILD_USER" ] && \ + [ "$WEBBUILD_URL" -a "$WEBBUILD_USER" ] && { + SPEC_VERSION=`grep -m1 "^Version:" $spec_dir/$pkg.spec | sed "s|Version:[[:space:]]*||"` curl -s "$WEBBUILD_URL?REQUEST=message&USER=$WEBBUILD_USER&SECRET=$WEBBUILD_SECRET&USER_EMAIL=$WEBBUILD_EMAIL&\ -MESSAGE=`cgi_encodevar \"sent $pkg to $SEND_SERVER\"`" >/dev/null +MESSAGE=`cgi_encodevar \"sent $pkg $SPEC_VERSION for ${TARGETARCH} to $SEND_SERVER\"`" >/dev/null + } fi ;; esac @@ -849,11 +852,15 @@ function launch_job_loop() { # Iterates launch_pkgs_loop for each of the lines of current job # (defined from JOB_FIRST to JOB_LAST) # This is needed for build, send and install operations + numerr=0 for j in `seq $JOB_FIRST $JOB_LAST`; do launch_pkgs_loop "$1" "$2" "${JOBS[$j]}" $j - [ $? -gt 0 ] && return 1; + if [ $? -gt 0 ]; then + numerr=$(($numerr + 1)) + [ "$continue_on_error" ] || return $numerr; + fi done - return 0 + return $numerr } function log_date() { @@ -963,18 +970,20 @@ if [ "$do_autobuild" = "1" ]; then continue } - # check skippedlist - SKIPPEDLINE=`awk '{ print $1" "$2 }' $SKIPPEDLISTDIR/*.skip | grep -m1 "^$PKGNAME "` - if [ "$SKIPPEDLINE" ]; then - set -- $SKIPPEDLINE - SKIPPEDTIME=$2 - SKIPPEDDAYS=`expr \( $DATE_NOW - $SKIPPEDTIME \) / 86400` - if [ "$SKIPPEDDAYS" -le "$AUTOBUILD_SKIP_DAYS" ]; then - SKIPPEDCOUNT=`expr $SKIPPEDCOUNT + 1` -# echo "?= Package $PKGNAME has been in the skippedlist for $SKIPPEDDAYS days; skipping" - continue - else - sed -i "/^$PKGNAME /d" $SKIPPEDLISTDIR/*.skip + # check skippedlist (but ignore for scheduled updates) + if [ "${VERSION:0:1}" != "+" ]; then + SKIPPEDLINE=`awk '{ print $1" "$2 }' $SKIPPEDLISTDIR/*.skip | grep -m1 "^$PKGNAME "` + if [ "$SKIPPEDLINE" ]; then + set -- $SKIPPEDLINE + SKIPPEDTIME=$2 + SKIPPEDDAYS=`expr \( $DATE_NOW - $SKIPPEDTIME \) / 86400` + if [ "$SKIPPEDDAYS" -le "$AUTOBUILD_SKIP_DAYS" ]; then + SKIPPEDCOUNT=`expr $SKIPPEDCOUNT + 1` + #echo "?= Package $PKGNAME has been in the skippedlist for $SKIPPEDDAYS days; skipping" + continue + else + sed -i "/^$PKGNAME /d" $SKIPPEDLISTDIR/*.skip + fi fi fi @@ -1131,8 +1140,7 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do } || { [ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] && AUTOSPEC_ARGS="$AUTOSPEC_ARGS --changelog \"automatic update by autodist\"" - launch_pkgs_loop autoupdate "$AUTOSPEC_ARGS $SEND_FORCE \ - --define gnomever=$GNOME_VER" + launch_pkgs_loop autoupdate "$AUTOSPEC_ARGS $SEND_FORCE" ret=$? } if [ $ret != 0 ]; then @@ -1176,8 +1184,7 @@ for JOB_NUM in `seq 1 ${#JOBNAME[*]}`; do # WARNING: JOB_VER must be passed to launch_pkgs_loop as the first string in the second parameter [ "${AUTOSPEC_ARGS/--changelog}" = "${AUTOSPEC_ARGS}" ] && AUTOSPEC_ARGS="$AUTOSPEC_ARGS --changelog \"automatic version update by autodist\"" - launch_pkgs_loop update "${JOB_VER:1} $AUTOSPEC_ARGS $SEND_FORCE \ - --define gnomever=$GNOME_VER" || { + launch_pkgs_loop update "${JOB_VER:1} $AUTOSPEC_ARGS $SEND_FORCE" || { if [ ! "$rebuild_packages" ]; then case $SEVERITY in 0) ;;