@@ -1,15 +1,31 @@
BEGIN { push @INC , ' .' unless $INC [-1] eq ' .' }
use inc::Module::Install 1.06;
use strict;
use warnings;
# to deal wuth x.y.z versions properly
configure_requires ' ExtUtils::MakeMaker' => ' 6.54' ;
perl_version ' 5.008001' ;
my $deps = {
requires => {
use ExtUtils::MakeMaker;
use File::ShareDir::Install;
do ' ./maint/Makefile.PL.include' or die $@
unless -f ' META.yml' ;
my $eumm_version = eval $ExtUtils::MakeMaker::VERSION ;
my %eumm_args = (
NAME => ' SQL::Translator' ,
ABSTRACT => ' SQL DDL transformations and more' ,
VERSION_FROM => ' lib/SQL/Translator.pm' ,
LICENSE => ' perl' ,
MIN_PERL_VERSION => ' 5.008001' ,
CONFIGURE_REQUIRES => {
' ExtUtils::MakeMaker' => ' 6.54' , # to deal with x.y.z versions properly
' File::ShareDir::Install' => ' 0' ,
},
TEST_REQUIRES => {
' JSON::MaybeXS' => ' 1.003003' ,
' YAML' => ' 0.66' ,
' XML::Writer' => ' 0.500' ,
' Test::More' => ' 0.88' ,
' Test::Differences' => ' 0' ,
' Test::Exception' => ' 0.31' ,
' Text::ParseWords' => ' 0' ,
},
PREREQ_PM => {
' Digest::SHA' => ' 0' ,
' Carp::Clan' => ' 0' ,
' Parse::RecDescent' => ' 1.967009' ,
Expand All
@@ -21,186 +37,87 @@ my $deps = {
' Try::Tiny' => ' 0.04' ,
' Scalar::Util' => ' 0' ,
},
recommends => {
' Template' => ' 2.20' ,
' GD' => ' 0' ,
' GraphViz' => ' 0' ,
' Graph::Directed' => ' 0' ,
' Spreadsheet::ParseExcel' => ' 0.41' ,
' Text::RecordParser' => ' 0.02' ,
' XML::LibXML' => ' 1.69' ,
realclean => {
FILES => ' t/data/roundtrip_autogen.yaml'
},
test_requires => {
' JSON::MaybeXS' => ' 1.003003' ,
' YAML' => ' 0.66' ,
' XML::Writer' => ' 0.500' ,
' Test::More' => ' 0.88' ,
' Test::Differences' => ' 0' ,
' Test::Exception' => ' 0.31' ,
' Text::ParseWords' => ' 0' ,
},
};
name ' SQL-Translator' ;
author ' Ken Youens-Clark <kclark@cpan.org>' ;
abstract ' SQL DDL transformations and more' ;
license ' perl' ;
resources repository => ' https://github.com/dbsrgits/sql-translator/' ;
resources bugtracker => ' https://rt.cpan.org/NoAuth/Bugs.html?Dist=SQL-Translator' ;
resources Ratings => ' http://cpanratings.perl.org/d/SQL-Translator' ;
resources IRC => ' irc://irc.perl.org/#sql-translator' ;
Meta-> {values }{x_authority } = ' cpan:JROBINSON' ;
all_from ' lib/SQL/Translator.pm' ;
for my $type (qw/ requires recommends test_requires/ ) {
no strict qw/ refs/ ;
my $f = \&$type ;
for my $mod (sort keys %{$deps -> {$type } || {} }) {
$f -> ($mod , $deps -> {$type }{$mod });
}
}
install_script (qw|
script/sqlt-diagram
script/sqlt-diff
script/sqlt-diff-old
script/sqlt-dumper
script/sqlt-graph
script/sqlt
| );
install_share();
tests_recursive ();
if ($Module::Install::AUTHOR ) {
my @missing_plugins ;
for my $plugin (qw( AuthorTests ReadmeFromPod) ) {
unless (eval " require Module::Install::$plugin ; 1" ) {
push @missing_plugins , " Module::Install::$plugin " ;
chomp (my $err = $@ );
$missing_plugins [-1] .= " ($err )"
unless $err =~ m { ^Can't locate Module/Install/$plugin \. pm in \@ INC} ;
}
}
die " \n You need to install the following modules to run this Makefile.PL in author mode:\n\n " , join (" \n " , @missing_plugins ), " \n\n "
if @missing_plugins ;
recursive_author_tests (qw/ xt/ );
readme_from(' lib/SQL/Translator.pm' );
}
auto_install();
if ($Module::Install::AUTHOR ) {
_recompile_grammars();
_recreate_rt_source();
}
WriteAll();
sub _recompile_grammars {
return ; # disabled until RT#74593 is resolved
require File::Spec;
my $compiled_parser_dir = File::Spec-> catdir(qw/
share PrecompiledParsers Parse RecDescent DDL SQLT
/ );
# Currently consider only single-name parsers containing a grammar marker
# This is somewhat fragile, but better than loading all kinds of parsers
# to some of which we may not even have the deps
my $parser_libdir = ' lib/SQL/Translator/Parser' ;
for my $parser_fn (glob " $parser_libdir /*.pm" ) {
die " $parser_fn does not look like a readable file\n "
unless ( -f $parser_fn and -r $parser_fn );
my ($type ) = $parser_fn =~ / ^\Q $parser_libdir \E\/ (.+)\. pm$ /i
or die " $parser_fn not named in expected format\n " ;
my $parser_source = do { local (@ARGV , $/ ) = $parser_fn ; <> };
next unless $parser_source =~ / \$ GRAMMAR.+?END_OF_GRAMMAR/s ;
my $precomp_parser_fn = File::Spec-> catfile($compiled_parser_dir , " $type .pm" );
next if (
-f $precomp_parser_fn
and
(stat ($parser_fn ))[9] <= (stat ($precomp_parser_fn ))[9]
);
print " Precompiling parser for $type \n " ;
require $parser_fn ;
require Parse::RecDescent;
Parse::RecDescent-> Precompile(
do {
no strict ' refs' ;
${" SQL::Translator::Parser::${type} ::GRAMMAR" }
|| die " No \$ GRAMMAR global found in SQL::Translator::Parser::$type ($parser_fn )\n "
EXE_FILES => [ qw|
script/sqlt-diagram
script/sqlt-diff
script/sqlt-diff-old
script/sqlt-dumper
script/sqlt-graph
script/sqlt
| ],
META_MERGE => {
" meta-spec" => { version => 2 },
dynamic_config => 0,
resources => {
bugtracker => {
web => ' https://rt.cpan.org/NoAuth/Bugs.html?Dist=SQL-Translator' ,
mailto => ' bug-SQL-Translator@rt.cpan.org' ,
},
" Parse::RecDescent::DDL::SQLT::$type "
);
rename ( " $type .pm" , $precomp_parser_fn )
or die " Unable to move $type .pm to $compiled_parser_dir : $! \n " ;
}
}
sub _recreate_rt_source {
my $base_xml = " t/data/roundtrip.xml" ;
my $autogen_yaml = " t/data/roundtrip_autogen.yaml" ;
print " Updating $autogen_yaml \n " ;
unlink $autogen_yaml ;
eval {
use lib ' lib' ;
require SQL::Translator;
require SQL::Translator::Parser::XML;
open (my $fh , ' >' , $autogen_yaml ) or die " $autogen_yaml : $! \n " ;
repository => {
type => ' git' ,
url => ' git@github.com/dbsrgits/sql-translator.git' ,
web => ' https://github.com/dbsrgits/sql-translator/' ,
},
license => [ ' http://dev.perl.org/licenses/' ],
x_IRC => ' irc://irc.perl.org/#sql-translator' ,
x_Ratings => ' http://cpanratings.perl.org/d/SQL-Translator' ,
},
x_authority => ' cpan:JROBINSON' ,
no_index => {
directory => [qw( maint share xt) ],
},
prereqs => {
runtime => {
recommends => {
' Template' => ' 2.20' ,
' GD' => ' 0' ,
' GraphViz' => ' 0' ,
' Graph::Directed' => ' 0' ,
' Spreadsheet::ParseExcel' => ' 0.41' ,
' Text::RecordParser' => ' 0.02' ,
' XML::LibXML' => ' 1.69' ,
},
},
develop => {
requires => {
' Template' => ' 2.20' ,
' GD' => ' 0' ,
' GraphViz' => ' 0' ,
' Graph::Directed' => ' 0' ,
' Spreadsheet::ParseExcel' => ' 0.41' ,
' Text::RecordParser' => ' 0.02' ,
' XML::LibXML' => ' 1.69' ,
' Test::EOL' => ' 1.1' ,
' Test::NoTabs' => ' 1.1' ,
' Software::LicenseUtils' => ' 0' , # for Distar
},
},
},
},
);
my $tr = SQL::Translator-> new;
my $yaml = $tr -> translate (
parser => ' XML' ,
file => $base_xml ,
producer => ' YAML' ,
) or die sprintf (" Unable to translate %s to YAML: %s \n " ,
$base_xml ,
$tr -> error || ' error unknown'
);
install_share ' share' ;
print $fh $yaml ;
close $fh ;
sub _move_to {
my ($hash , $fromkey , $tokey ) = @_ ;
$hash -> {$tokey } = {
%{ $hash -> {$tokey } || {} },
%{ delete ($hash -> {$fromkey }) || {} },
};
if ($@ ) {
die <<EOE ;
=========================================================================
=============== WARNING !!! =================
=========================================================================
Unable to update the roundtrip schema (attempt triggered by AUTHOR mode).
Aborting Makefile generation, please fix the errors indicated below
(typically by installing the missing modules).
-------------------------------------------------------------------------
$@
EOE
}
}
delete $eumm_args {META_MERGE } if $eumm_version < 6.45_01;
delete $eumm_args {CONFIGURE_REQUIRES }
if $eumm_version < 6.51_03; # too late to use so just delete
_move_to(\%eumm_args , ' TEST_REQUIRES' , ' BUILD_REQUIRES' )
if $eumm_version < 6.63_03;
_move_to(\%eumm_args , ' BUILD_REQUIRES' , ' PREREQ_PM' )
if $eumm_version < 6.55_01;
$eumm_args {NO_MYMETA } = 1
if $eumm_version >= 6.57_02 and $eumm_version < 6.57_07;
WriteMakefile(%eumm_args );
package MY ;
use File::ShareDir::Install qw( postamble) ;