/usr/local/CPAN/XML-XPathScript/Build.PL
# Note: this file has been initially generated by Module::Build::Convert 0.25
use strict;
#use warnings;
use Module::Build;
use Getopt::Long;
use File::Find;
my $XML_parser = undef;
my( $with_axkit, $with_tomkit ) = ( undef, undef );
my @pm_dirs = ( qw/ lib / );
GetOptions( 'parser=s' => \$XML_parser,
'axkit!' => \$with_axkit,
'tomkit!' => \$with_tomkit );
$XML_parser = choose_parser( $XML_parser );
unless ( $with_axkit ) {
$with_axkit ||= eval 'use AxKit; 1';
print 'AxKit ', 'not 'x!$with_axkit, "detected\n";
}
if ( $with_axkit ) {
print "adding Apache::Axkit::Language::YPathScript to installation\n";
push @pm_dirs, 'lib_axkit';
}
unless ( $with_tomkit ) {
$with_tomkit ||= eval 'use Apache2::TomKit; 1';
print 'TomKit ', 'not 'x!$with_tomkit, "detected\n";
}
if ( $with_tomkit ) {
print "adding Apache2::Tomkit::Processor::XPathScript to installation\n";
push @pm_dirs, 'lib_tomkit';
}
my $class = Module::Build->subclass
(code => <<"PROPAGATE_VARIABLES"
our \$XML_parser = '$XML_parser';
our \$with_axkit = '$with_axkit';
our \$with_tomkit = '$with_tomkit';
PROPAGATE_VARIABLES
. <<'CODE');
use strict;
use warnings;
use File::Spec ();
sub process_pm_files {
my $self = shift;
$self->SUPER::process_pm_files(@_);
my $outfile = File::Spec->catfile(qw(blib lib XML XPathScript.pm));
unlink($outfile);
my $in = new IO::File("lib/XML/XPathScript.pm", "<") or die "$!";
my $out = new IO::File($outfile, ">") or die "$!";
while(<$in>) {
s/^(\$XML_parser = )'.*?';$/$1'$XML_parser';/;
$out->print($_);
}
}
CODE
my %pm_files;
find(\&find_module, @pm_dirs);
my $build = $class->new
(
module_name => 'XML::XPathScript',
dist_author => [ 'Yanick Champoux <yanick@cpan.org>',
'Dominique Quatravaux <domq@cpan.org> ',
'Matt Sergeant <matt@sergeant.org>' ],
dist_version_from => 'lib/XML/XPathScript.pm',
license => 'artistic',
requires => {
$XML_parser => 0,
'Carp' => 0,
'Symbol' => 0,
'File::Basename' => 0,
'IO::File' => 0,
'Data::Dumper' => 0,
'Scalar::Util' => 0,
'Readonly' => 0,
'Clone' => 0,
},
build_requires => {
"File::Find" => 0,
"File::Spec" => 0,
},
pm_files => \%pm_files,
script_files => [ qw# script/xpathscript # ],
create_makefile_pl => 'passthrough',
sign => 1,
);
$build->create_build_script;
### utility functions #####################################
sub choose_parser {
my( $XML_parser ) = @_;
if( $XML_parser ) {
unless( grep $XML_parser eq $_, qw/ XML::XPath XML::LibXML / ) {
die "XML parser $XML_parser not supported\n",
"please choose XML::XPath or XML::LibXML\n";
}
print "XML parser configured to be $XML_parser\n";
return $XML_parser;
}
print "detecting XML parser...\n";
print "checking if XML::LibXML is present.. ";
if ( $XML_parser = eval "use XML::LibXML; 'XML::LibXML'" ) {
print "XML::LibXML detected, good!\n",
"setting XML parser to XML::LibXML\n";
return $XML_parser;
}
print "XML::LibXML not detected, drat\n";
print "checking if XML::XPath is present.. ";
if ( $XML_parser = eval "use XML::XPath; 'XML::XPath'" ) {
print "XML::XPath detected\nsetting XML parser to XML::XPath\n";
return $XML_parser;
}
print "XML::XPath not found\n";
print <<'END_MESSAGE';
Neither XML::LibXML or XML::XPath are already installed.
Setting XML::LibXML as a dependency, as it is the
most efficient of the two. If, for whatever reason,
it fails to install on your machine, consider trying
to install XML::XPath.
END_MESSAGE
return 'XML::LibXML';
}
sub find_module {
return unless /\.pm$/;
my $dest = $File::Find::name;
$dest =~ s/lib_(axkit|tomkit)/lib/;
$pm_files{$File::Find::name } = $dest;
}