1 1.1 mrg #! /bin/sh 2 1.1 mrg 3 1.1 mrg # The build failed for and identifier in the range bwetween LOW and HIGH. 4 1.1 mrg # Find a new patch id to try within that range. 5 1.1 mrg # 6 1.1 mrg # It's meant to be easy to modify the heuristics used to select the 7 1.1 mrg # next patch to try by adding to or rearranging the patches listed in 8 1.1 mrg # MIDLIST. Known failures are recorded in ${REG_FAILLIST}. 9 1.1 mrg # 10 1.1 mrg # A nifty improvement would be to record known ranges of failure as 11 1.1 mrg # ranges, and then pick revisions just before and just after the range. 12 1.1 mrg # 13 1.1 mrg # Copyright (C) 2006 Free Software Foundation, Inc. 14 1.1 mrg # 15 1.1 mrg # This file is free software; you can redistribute it and/or modify 16 1.1 mrg # it under the terms of the GNU General Public License as published by 17 1.1 mrg # the Free Software Foundation; either version 3 of the License, or 18 1.1 mrg # (at your option) any later version. 19 1.1 mrg # 20 1.1 mrg # This program is distributed in the hope that it will be useful, 21 1.1 mrg # but WITHOUT ANY WARRANTY; without even the implied warranty of 22 1.1 mrg # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 1.1 mrg # GNU General Public License for more details. 24 1.1 mrg # 25 1.1 mrg # For a copy of the GNU General Public License, write the the 26 1.1 mrg # Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 27 1.1 mrg # Boston, MA 02111-1301, USA. 28 1.1 mrg 29 1.1 mrg LOW=$1 30 1.1 mrg HIGH=$2 31 1.1 mrg 32 1.1 mrg MIDLIST="" 33 1.1 mrg 34 1.1 mrg let MID01=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH 35 1.1 mrg let MID01=MID01/12 36 1.1 mrg let MID02=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH 37 1.1 mrg let MID02=MID02/12 38 1.1 mrg let MID03=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH 39 1.1 mrg let MID03=MID03/12 40 1.1 mrg let MID04=LOW+LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH 41 1.1 mrg let MID04=MID04/12 42 1.1 mrg let MID05=LOW+LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH 43 1.1 mrg let MID05=MID05/12 44 1.1 mrg let MID06=LOW+LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH 45 1.1 mrg let MID06=MID06/12 46 1.1 mrg let MID07=LOW+LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH 47 1.1 mrg let MID07=MID07/12 48 1.1 mrg let MID08=LOW+LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH 49 1.1 mrg let MID08=MID08/12 50 1.1 mrg let MID09=LOW+LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH 51 1.1 mrg let MID09=MID09/12 52 1.1 mrg let MID10=LOW+LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH 53 1.1 mrg let MID10=MID10/12 54 1.1 mrg let MID11=LOW+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH+HIGH 55 1.1 mrg let MID11=MID11/12 56 1.1 mrg 57 1.1 mrg # Look in this order; MID has already been done: 58 1.1 mrg # 59 1.1 mrg # LOW--10---7---6---3---2---MID---1---4---5---8---9---HIGH 60 1.1 mrg 61 1.1 mrg MIDLIST="${MIDLIST} ${MID07}" 62 1.1 mrg MIDLIST="${MIDLIST} ${MID05}" 63 1.1 mrg MIDLIST="${MIDLIST} ${MID04}" 64 1.1 mrg MIDLIST="${MIDLIST} ${MID08}" 65 1.1 mrg MIDLIST="${MIDLIST} ${MID09}" 66 1.1 mrg MIDLIST="${MIDLIST} ${MID03}" 67 1.1 mrg MIDLIST="${MIDLIST} ${MID02}" 68 1.1 mrg MIDLIST="${MIDLIST} ${MID10}" 69 1.1 mrg MIDLIST="${MIDLIST} ${MID11}" 70 1.1 mrg MIDLIST="${MIDLIST} ${MID01}" 71 1.1 mrg 72 1.1 mrg for MID in ${MIDLIST} 73 1.1 mrg do 74 1.1 mrg # Skip this if it's the low endpoint. 75 1.1 mrg if [ ${MID} != ${LOW} ]; then 76 1.1 mrg # Is this patch already known to fail? 77 1.1 mrg ${REG_CHECKFAIL} ${MID} 78 1.1 mrg if [ $? -ne 0 ]; then 79 1.1 mrg echo ${MID} 80 1.1 mrg exit 0 81 1.1 mrg fi 82 1.1 mrg fi 83 1.1 mrg done 84 1.1 mrg 85 1.1 mrg echo 0 86 1.1 mrg exit 1 87