#! /bin/sh # The build failed for and identifier in the range bwetween LOW and HIGH. # Find a new patch id to try within that range. # # It's meant to be easy to modify the heuristics used to select the # next patch to try by adding to or rearranging the patches listed in # MIDLIST. Known failures are recorded in ${REG_FAILLIST}. # # A nifty improvement would be to record known ranges of failure as # ranges, and then pick revisions just before and just after the range. # # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # For a copy of the GNU General Public License, write the the # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, # Boston, MA 02111-1301, USA. LOW=$1 HIGH=$2 MIDLIST="" let MID01=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH let MID01=MID01/12 let MID02=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH let MID02=MID02/12 let MID03=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH let MID03=MID03/12 let MID04=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH let MID04=MID04/12 let MID05=LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH let MID05=MID05/12 let MID06=LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH let MID06=MID06/12 let MID07=LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH let MID07=MID07/12 let MID08=LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH let MID08=MID08/12 let MID09=LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH let MID09=MID09/12 let MID10=LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH let MID10=MID10/12 let MID11=LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH let MID11=MID11/12 # Look in this order; MID has already been done: # # LOW--10---7---6---3---2---MID---1---4---5---8---9---HIGH MIDLIST="${MIDLIST} ${MID07}" MIDLIST="${MIDLIST} ${MID05}" MIDLIST="${MIDLIST} ${MID04}" MIDLIST="${MIDLIST} ${MID08}" MIDLIST="${MIDLIST} ${MID09}" MIDLIST="${MIDLIST} ${MID03}" MIDLIST="${MIDLIST} ${MID02}" MIDLIST="${MIDLIST} ${MID10}" MIDLIST="${MIDLIST} ${MID11}" MIDLIST="${MIDLIST} ${MID01}" for MID in ${MIDLIST} do # Skip this if it's the low endpoint. if [ ${MID} != ${LOW} ]; then # Is this patch already known to fail? ${REG_CHECKFAIL} ${MID} if [ $? -ne 0 ]; then echo ${MID} exit 0 fi fi done echo 0 exit 1 |