We aren't actually interested in bisecting the FreeBSD
version (usually, the anointed version) which was used as the platform
for the failed builds. We are thereby making the assumption that any
build failure (or indeed test failure) is the result in changes to the
recent FreeBSD being actually built or used, not the version being
used as a build host.
Achieve ignoring this by having other_revision_job_suffix return a new
magic new value DISCARD, which all callers must know means `skip
this one'. There are three call sites:
In cs-bisection-step:flight_rmap, we skip those rows in the Perl
loop. (We can't skip them conveniently in the SQL because we can't
refer to the column `othrev'; we'd have to duplicate the expression,
or have a subquery. This doesn't seem likely to matter much.)
In cs-bisection-step:preparejob, we always compare the returned suffix
with a fixed value (which eventually came from the previous call). So
DISCARD will never match. No change is needed here.
In Osstest.pm:main_revision_job_cond, we compare the returned suffix
with ''. Again, it will never match and no change is needed.
I have checked that now a cs-bisection-step run chooses a single
FreeBSD master commit to try to build.
CC: Roger Pau Monné <royger@FreeBSD.org>
Signed-off-by: Ian Jackson <ian.jackson@eu.citrix.com>
(CASE
WHEN ($jobfield) LIKE 'build-%-prev' THEN '${separator}prev'
WHEN (($jobfield) LIKE 'build-%-freebsd'
- AND $refrunvar = 'freebsdbuildjob') THEN '${separator}recurse'
+ AND $refrunvar = 'freebsdbuildjob') THEN 'DISCARD'
ELSE ''
END)
END
my $mixed=0;
my (@ttreenames, @ttreeurls, @trevisions);
while ($row= $sth->fetchrow_hashref()) {
+ next if $row->{othrev} eq 'DISCARD';
$row->{longname} =~ m/^tree_/ or die "$row->{longname} ?";
my $name= $'; #'
print DEBUG " $flight.$row->{job} uval=$row->{uval}".