1use strict; 2use warnings; 3 4use FindBin qw/$Bin/; 5 6use inc::Module::Install 0.79; 7 8perl_version '5.008001'; 9name 'TryCatch'; 10all_from 'lib/TryCatch.pm'; 11 12 13test_requires 'Test::More' => 0.88; 14test_requires 'Test::Exception'; 15 16my %config_deps = ( 17 'ExtUtils::Depends' => 0.302, 18); 19# These are config and runtime deps 20my %run_deps = ( 21 'B::Hooks::OP::Check' => 0.18, 22 'B::Hooks::OP::PPAddr' => 0.03, 23); 24 25requires %run_deps; 26requires 'Parse::Method::Signatures' => '1.003012'; 27requires 'B::Hooks::EndOfScope' => 0.12; 28requires 'Devel::Declare' => '0.005007'; 29requires 'Moose'; 30requires 'MooseX::Types'; 31requires 'Scope::Upper' => 0.06; 32requires 'Variable::Magic' => 0.28; 33requires 'Sub::Exporter' => 0.979; 34requires 'XSLoader'; 35requires 'namespace::clean' => '0.20'; 36 37resources repository => 'http://github.com/ashb/trycatch/tree/master'; 38 39auto_provides; 40 41configure_requires %config_deps, %run_deps; 42my $ok = 1; 43 44# Does the toolchain support configure_requires 45# If yes, it should be here already. 46can_use('ExtUtils::Depends') or do { 47 warn "***\n* Your CPAN toolchain is out of date. Please upgrade it\n***\n"; sleep 5; 48 requires %config_deps; 49 50}; 51 52# Since we can bundle things under inc, do so. That way it should be easier to 53# install 54unshift @INC, "$Bin/inc/EUDeps"; 55can_use('ExtUtils::Depends') or do { 56 warn "ExtUtils::Depends not installed and can't use version from inc!"; 57 $ok = 0; 58}; 59 60 61unless ($ok) { 62 auto_install; 63 WriteAll; 64 exit 1; 65} 66 67my $pkg = ExtUtils::Depends->new('TryCatch', keys %run_deps); 68makemaker_args( 69 $pkg->get_makefile_vars, 70); 71 72{ no warnings 'once'; 73if ($Module::Install::AUTHOR) { 74 system('pod2text lib/TryCatch.pm > README'); 75 76 # Pull in the header files from B::Hooks modules we need. 77 # This only works since I know they only use .h files, not XS or typemaps. 78 79 # Author only - use what ever modules we like! 80 require Path::Class; 81 require File::Copy::Recursive; 82 83 Path::Class::dir(qw/inc EUDeps/)->rmtree; 84 85 $File::Copy::Recursive::KeepMode = 0; 86 my %deps = $pkg->get_deps; 87 while (my ($mod, $conf) = each %deps ) { 88 my $dest = Path::Class::dir('inc', 'EUDeps', split(/::/, $mod), 'Install', ); 89 my $src = Path::Class::dir($conf->{instpath}); 90 91 File::Copy::Recursive::dircopy("$src", "$dest"); 92 } 93 File::Copy::Recursive::fcopy($INC{'ExtUtils/Depends.pm'}, 'inc/EUDeps/ExtUtils/'); 94} 95} 96 97auto_install; 98WriteAll; 99 100 101