This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
When bisecting, use `git tag -l` to get the list of stable releases.
authorNicholas Clark <nick@ccl4.org>
Wed, 4 Jul 2012 13:34:31 +0000 (14:34 +0100)
committerNicholas Clark <nick@ccl4.org>
Tue, 28 May 2013 07:19:29 +0000 (09:19 +0200)
Previously bisect.pl was using a hard coded list, which (obviously) will
become stale.

Also, note in the docs that we only use .0 stable releases, and why.

Porting/bisect-runner.pl
Porting/bisect.pl

index a22798a..ee3f9d5 100755 (executable)
@@ -189,10 +189,13 @@ If your F<db.h> is old enough you can override this with C<-Unoextensions>.
 
 Earliest revision to test, as a I<commit-ish> (a tag, commit or anything
 else C<git> understands as a revision). If not specified, F<bisect.pl> will
-search stable perl releases until it finds one where the test case passes.
-The default is to search from 5.002 to 5.14.0. If F<bisect.pl> detects that
-the checkout is on a case insensitive file system, it will search from
-5.005 to 5.14.0
+search stable .0 perl releases until it finds one where the test case passes
+(5.16.0 at the time of writing). The default is to search from 5.002 to the
+most recent tagged stable release.  If F<bisect.pl> detects that the
+checkout is on a case insensitive file system, it will search from 5.005 to
+the most recent tagged stable release. Only .0 stable releases are used
+because these are the only stable releases that are parents of blead, and
+hence suitable for a bisect run.
 
 =item *
 
@@ -562,12 +565,12 @@ Passing this to F<bisect.pl> will likely cause the bisect to fail badly.
 
 --validate
 
-Test that all stable revisions can be built. By default, attempts to build
-I<blead>, I<v5.14.0> .. I<perl-5.002> (or I<perl5.005> on a case insensitive
-file system). Stops at the first failure, without
-cleaning the checkout. Use I<--start> to specify the earliest revision to
-test, I<--end> to specify the most recent. Useful for validating a new
-OS/CPU/compiler combination. For example
+Test that all stable (.0) revisions can be built. By default, attempts to
+build I<blead>, then tagged stable releases in reverse order down to
+I<perl-5.002> (or I<perl5.005> on a case insensitive file system). Stops at
+the first failure, without cleaning the checkout. Use I<--start> to specify
+the earliest revision to test, I<--end> to specify the most recent. Useful
+for validating a new OS/CPU/compiler combination. For example
 
     ../perl/Porting/bisect.pl --validate -le 'print "Hello from $]"'
 
index f5c401b..0423fd3 100755 (executable)
@@ -58,7 +58,10 @@ unshift @ARGV, '--jobs', $jobs if defined $jobs;
 unshift @ARGV, '--make', $make if defined $make;
 
 # We try these in this order for the start revision if none is specified.
-my @stable = qw(perl-5.005 perl-5.6.0 perl-5.8.0 v5.10.0 v5.12.0 v5.14.0);
+my @stable = map {chomp $_; $_} grep {/v5\.[0-9]+[02468]\.0$/} `git tag -l`;
+die "git tag -l didn't seem to return any tags for stable releases"
+    unless @stable;
+unshift @stable, qw(perl-5.005 perl-5.6.0 perl-5.8.0);
 
 {
     my ($dev_C, $ino_C) = stat 'Configure';