The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# make sure we have Module::Build so we can use it, else install it
unless(eval "use Module::Build::Compat 0.03; 1") {
    print "This module requires Module::Build to install itself.\n";

    require ExtUtils::MakeMaker;
    my $yn = ExtUtils::MakeMaker::prompt('  Install Module::Build now from CPAN?', 'y');

    unless($yn =~ /^y/i) {
        die " *** Cannot install without Module::Build.  Exiting ...\n";
    }

    require Cwd;
    require File::Spec;
    require CPAN;

    # Save this 'cause CPAN will chdir all over the place.
    my $cwd = Cwd::cwd();

    CPAN::Shell->install('Module::Build::Compat');
    CPAN::Shell->expand("Module", "Module::Build::Compat")->uptodate
      or die "Couldn't install Module::Build, giving up.\n";

    chdir $cwd or die "Cannot chdir() back to $cwd: $!";
}
eval "use Module::Build::Compat 0.02; 1" or die $@;

# see if they have Apache::Test, if not, ask if they want it
my $build_pkg = 'Module::Build';
unless(eval "use Apache::Test 1.30; 1") {
    print "This module can optionally use Apache::Test to test the mod_perl functionality.\n";
    my $yn = ExtUtils::MakeMaker::prompt('  Install Apache::Test now from CPAN?', 'y');

    if($yn =~ /^y/i) {
        # Save this 'cause CPAN will chdir all over the place.
        my $cwd = Cwd::cwd();

        CPAN::Shell->install('Apache::Test');
        if( CPAN::Shell->expand("Module", "Apache::Test")->uptodate ) {
            $build_pkg = 'Apache::TestMB';
        } else {
            print "Couldn't install Apache::Test, skipping mod_perl tests.\n";
        }

        chdir $cwd or die "Cannot chdir() back to $cwd: $!";
    }
}

Module::Build::Compat->run_build_pl(args => \@ARGV);
Module::Build::Compat->write_makefile(build_class => $build_pkg);