On Fri, Mar 7, 2008 at 1:25 PM, John Peacock <[EMAIL PROTECTED]> wrote: > OK, I give up. How to I communicate to the CPAN testing framework that > the test machine is missing a required/vital external binary and should > just NA this test? I've replicated the way that the code itself > searches for the binary (svnlook if you care) in my Build.PL, and I'm > using 'exit 0', which is what is supposed to make CPAN itself happy to > stop. But the damn CPAN Testing framework is trying to grovel around > inside the [now ungenerated] _cpan/prereqs file:
No -- this isn't a CPAN Testing framework problem. It's a Makefile.PL and Module::Build::Compat problem. If you look at the test report, you see this: Output from '/home/src/perl/repoperls/installed-perls/maint-5.8/p8tnrrm/[EMAIL PROTECTED]/bin/perl Makefile.PL': So here's what I think happens: 1. Makefile.PL runs M::B::Compat, which runs Build.PL, which exits with 0 and doesn't create a Build file. 2. M::B::Compat doesn't check if a Build file was created -- it only checks to see if Build.PL ran without error -- and "exit 0" is not an error. 3. M::B::Compat writes a Makefile and therefore CPAN.pm decides that Makefile.PL was successful and continues instead of stopping. The last line of the Makefile.PL just needs to test for the presence of a "Build" file: Module::Build::Compat->run_build_pl(args => [EMAIL PROTECTED]); Module::Build::Compat->write_makefile() if -f "Build"; Regards, David