/usr/local/CPAN/DBIx-Schema/Makefile.PL
use Getopt::Long ();
use ExtUtils::MakeMaker qw( prompt WriteMakefile );
use lib "lib";
use ExtUtils::PerlPP ();
# All this stuff is copied largely from the Makefile.PL of
# DBIx::Abstract, which I strongly suspect is based on a DBD's
# Makefile.PL. Except not really.
use vars qw( $options );
$options = { 'prompt' => 1 };
{
Getopt::Long::GetOptions($options, qw(
help verbose noprompt prompt!
test-dsn=s
test-user=s
test-pass=s
));
if ($options->{'help'}) {
print <<'EOF';
Usage: perl Makefile.PL <options>
Possible Options are:
--verbose Enable verbose mode
--noprompt Disable interactive dialog
--test-dsn=dsn Sets data source for testing. Uses dbi:mysql:test
by default.
--test-user=user Username and password to use with the dsn above
--test-pass=password during testing. They both default to undef.
EOF
exit 1;
}
eval 'use Data::Dumper';
if ($@) {
print q{
You don't have installed the Data::Dumper module, which is
required for building this package. Missing modules are available
from any CPAN mirror, for example
ftp://ftp.funet.fi/pub/languages/perl/CPAN/modules/by-module
};
exit 1;
}
if (!$$options{'test-dsn'}) {
$$options{'test-dsn'} = 'dbi:mysql:test';
$$options{'test-user'} = 'undef';
$$options{'test-pass'} = 'undef';
if ($$options{'prompt'}) {
$$options{'test-dsn'} = prompt(
"Which data source should I use for testing the module?",
$$options{'test-dsn'});
$$options{'test-user'} = prompt(
"Which username should I use for testing the module?",
$$options{'test-user'});
$$options{'test-pass'} = prompt(
"Which passwordshould I use for testing the module?",
$$options{'test-pass'});
}
$$options{'test-user'} = undef if $$options{'test-user'} eq 'undef';
$$options{'test-pass'} = undef if $$options{'test-pass'} eq 'undef';
}
$Data::Dumper::Indent = 1;
my $config;
foreach my $key (keys(%$options)) {
$newkey = $key;
$newkey =~ s/-/_/g;
$$config{$newkey} = $$options{$key};
}
my $cf = Data::Dumper::Dumper($config);
my $time = localtime();
my $cfg_file = <<"CFG_FILE";
# -*- perl -*-
#
# This file was automatically generated at $time
# by Makefile.PL. Do not edit, instead do a "make realclean" in
# the toplevel directory and rerun "perl makefile.PL".
#
my $cf
CFG_FILE
open(CFG_FILE,">config.pl");
print CFG_FILE $cfg_file;
close(CFG_FILE);
}
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
'NAME' => 'DBIx::Schema',
'VERSION_FROM' => 'Schema.pm', # finds $VERSION
'DISTNAME' => 'DBIx-Schema',
'PREREQ_PM' => { 'DBIx::Abstract' => 0.90 },
'clean' => {FILES=>'config.pl t/basic.t test.log'},
'PL_FILES' => ['t/basic.t.PL', 't/basic.t'],
'PM' => {'Schema.pm'=>'blib/lib/DBIx/Schema.pm',
'Datadict.pm'=>'blib/lib/DBIx/Datadict.pm'},
'linkext' => { LINKTYPE=>'' },
'dist' => {'COMPRESS'=>'gzip -9f', 'SUFFIX' => 'gz'},
);
package MY;
sub libscan {
my($self, $path) = @_;
if ($path =~ /(PerlPP\.pm|Config\.pm|Install\.pm|,v|~)$/) { return undef; }
$path;
}
sub processPL {
my($self) = shift;
my @output;
my @files = @{$self->{'PL_FILES'}};
while (@files) {
my $from = shift @files;
my $to = shift @files;
my $cfg = 'config.pl';
push(@output, qq|
pm_to_blib: $to
$to: $from
\$(PERL) -I\$(INST_ARCHLIB) -I\$(INST_LIB) -I\$(PERL_ARCHLIB) \\
-I\$(PERL_LIB) -Ilib -MExtUtils::PerlPP \\
-e ppp '$from' '$to' '$cfg'
|);
}
join('', @output);
}