develooper Front page | perl.perl5.porters | Postings from September 2011

bisecting should be trivially easy

Thread Next
From:
Nicholas Clark
Date:
September 29, 2011 13:56
Subject:
bisecting should be trivially easy
Message ID:
20110929205601.GW37285@plum.flirble.org
git bisect is cool. Everyone should use it.

However, it seems that it still has this aura of complexity.

So I've just committed Porting/bisect.pl

It's "tuned" to run on x86_64 Linux (ie dromedary), but hopefully will be
useful elsewhere. (Improvements welcome, provided they don't break running
it on dromedary)

In a clean git checkout, you run something like this:

~/Perl/perl/Porting/bisect.pl -e 'sub reftype { "whatever\n" }; sub DESTROY { undef &reftype } print sub { my $guard = bless []; goto &reftype }->(\1); undef &whatever;'


and after a bit of time and lot of output, you get this:


HEAD is now at 4c80c0b shrink pp_hot fractionally
good - zero exit from ./miniperl -e sub reftype { "whatever\n" }; sub DESTROY { undef &reftype } print sub { my $guard = bless []; goto &reftype }->(\1); undef &whatever;
840a7b70755d06740715e982aa756f9d77203c4e is the first bad commit
commit 840a7b70755d06740715e982aa756f9d77203c4e
Author: Ilya Zakharevich <ilya@math.berkeley.edu>
Date:   Mon Dec 4 19:40:25 2000 -0500

    Re: [PATCH] The largest hoax of all times?
    Date: Tue, 5 Dec 2000 00:40:25 -0500
    Message-ID: <20001205004025.A4050@monk.mps.ohio-state.edu>

    Subject: Re: [PATCH] The largest hoax of all times?
    From: Ilya Zakharevich <ilya@math.ohio-state.edu>
    Date: Mon, 4 Dec 2000 23:55:53 -0500
    Message-ID: <20001204235553.A1140@monk.mps.ohio-state.edu>

    Subject: Re: [PATCH] The largest hoax of all times?
    From: Ilya Zakharevich <ilya@math.ohio-state.edu>
    Date: Tue, 5 Dec 2000 01:28:45 -0500
    Message-ID: <20001205012844.A4227@monk.mps.ohio-state.edu>

    Fix the unpredictable order of DESTROYs.

    p4raw-id: //depot/perl@7991

:100644 100644 14dcbd7d144e224f88248644d5435e8e62a92cf0 6c90a54033ba0b1de7c1c270ed04f94d3340cc35 M  embed.h
:100755 100755 055c28b963bfa81d567b4b737d9011338b6f84ec ac43b0757d097eac41fb63e81337b3629647e3fc M  embed.pl
:100644 100644 91dc6df07c0f8579f13f19bca515b810cea3838e 5a3850cb4ef5bdb13e8a36165fcca3d4a368e33e M  objXSUB.h
:040000 040000 b706fac7a2586ff044458d9590a18a73157e936e db860b679925cb581b75521e64d458003fc1384d M  pod
:100644 100644 e561d1a024d6fcd97b21492f75f6c7ba25cd6037 1a3802ab476b9bfe8a778913fba375c72c9fd1f1 M  proto.h
:100644 100644 0713fa7e782dacdd556b74e4a8d940103ecada70 3f41a4e56bc3c62f64ecfec756e8b2f8cc70435d M  scope.c
:100644 100644 f875d58053c8ed082ff9b5e9b006d5e4c5fe8515 26914307879fbdbc50539019dfe6733bd4f8cda2 M  sv.c
:100644 100644 b155ece7b0fad5905660b130ef8fa70d04f9b984 39c1c29323c18985db52fee43ea85148519a8ab7 M  sv.h
:040000 040000 7c90678abbf5ce1867629f2e9bf2ef6a368ea903 70abb9b5147b5c11968254661fb915ff0733b7d5 M  t
bisect run success
That took 473 seconds



Which I think is rather useful.


[Example slightly simplified. You'd need to pass the options
    -j=9 --target=miniperl
to get the answer in 473 seconds. By default it will not use a parallel
make, and will build test_prep, which instead took 813 seconds]


Currently it's not very documented. It defaults to bisecting between
perl-5.005 and blead, because I've yet hacked bisect-runner.pl to go earlier
than that. (I think 5.000 is possible, as I built it somewhat by accident
whilst playing, but I think with a config.sh present that set defaults.
5.004's Configure is grumpy if I close STDIN or open it to /dev/null)

You can't (yet) change the options to Configure

But I thought it was useful enough already to commit.

Nicholas Clark

Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About