correct captures assignment in quote_sub
[gitmo/Moo.git] / Makefile.PL
1 use strict;
2 use warnings FATAL => 'all';
3 use 5.008001;
4 use ExtUtils::MakeMaker;
5
6 check_conflicts();
7 (do 'maint/Makefile.PL.include' or die $@) unless -f 'META.yml';
8
9 my %CONFIGURE_DEPS = (
10   'ExtUtils::MakeMaker'   => 0,
11   'Dist::CheckConflicts'  => '0.02',
12 );
13 my %BUILD_DEPS = ();
14
15 my %TEST_DEPS = (
16   'Test::More'  => 0.94,
17   'Test::Fatal' => 0.003,
18 );
19
20 my %RUN_DEPS = (
21   'Class::Method::Modifiers'  => 1.10,  # for RT#80194
22   'strictures'                => 1.004003,
23   'Module::Runtime'           => 0.012, # for RT#74789
24   'Role::Tiny'                => 1.003002,
25   'Devel::GlobalDestruction'  => 0.11,  # for RT#78617
26   'Dist::CheckConflicts'      => 0.02,
27 );
28
29 my %extra_info = (
30   'meta-spec' => { version => 2 },
31   resources => {
32     # r/w: gitmo@git.shadowcat.co.uk:Moo.git
33     repository => {
34       url => 'git://git.shadowcat.co.uk/gitmo/Moo.git',
35       web => 'http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo/Moo.git',
36       type => 'git',
37     },
38     x_IRC => 'irc://irc.perl.org/#moose',
39     bugtracker => {
40       web => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Moo',
41       mailto => 'bug-Moo@rt.cpan.org',
42     },
43     license => [ 'http://dev.perl.org/licenses/' ],
44   },
45   prereqs => {
46     configure => { requires => { %CONFIGURE_DEPS } },
47     build     => { requires => { %BUILD_DEPS } },
48     test      => { requires => { %TEST_DEPS } },
49     runtime   => { requires => { %RUN_DEPS, perl => '5.8.1' } },
50     develop   => { requires => { map { $_ => 0 } qw(
51       Class::XSAccessor
52       indirect multidimensional bareword::filehandles
53       Moose Mouse namespace::clean namespace::autoclean
54       MooseX::Types::Common::Numeric
55     ) } },
56   },
57 );
58
59 # have to do this since old EUMM dev releases miss the eval $VERSION line
60 my $mymeta_works = do { no warnings; $ExtUtils::MakeMaker::VERSION >= 6.57_07 };
61 my $mymeta = do { no warnings; $ExtUtils::MakeMaker::VERSION >= 6.57_02 };
62
63 my $has_test_requires = do { no warnings; $ExtUtils::MakeMaker::VERSION >= 6.63_03 };
64
65 my $has_meta_v2 = do { no warnings; $ExtUtils::MakeMaker::VERSION >= 6.57_10 };
66
67 if (! $has_meta_v2) {
68   %extra_info = ();
69 }
70 if (not $has_test_requires) {
71   %BUILD_DEPS = (%BUILD_DEPS, %TEST_DEPS);
72   %TEST_DEPS = ();
73 }
74 if (not $mymeta_works) {
75   %RUN_DEPS = (%RUN_DEPS, %BUILD_DEPS);
76   %BUILD_DEPS = ();
77 }
78
79 WriteMakefile(
80   NAME => 'Moo',
81   VERSION_FROM => 'lib/Moo.pm',
82   CONFIGURE_REQUIRES => \%CONFIGURE_DEPS,
83   PREREQ_PM => {
84     %RUN_DEPS,
85     ($] >= 5.010 ? () : ('MRO::Compat' => 0)),
86   },
87   keys %BUILD_DEPS ? ( BUILD_REQUIRES => \%BUILD_DEPS ) : (),
88   keys %TEST_DEPS ? ( TEST_REQUIRES => \%TEST_DEPS ) : (),
89   META_ADD => \%extra_info,
90   META_MERGE => {
91     no_index => {
92       directory => [ 'xt' ]
93     },
94     Moo::Conflicts->can('conflicts') ? (
95       x_breaks => { Moo::Conflicts->conflicts }
96     ) : (),
97   },
98   ($mymeta && !$mymeta_works ? (NO_MYMETA => 1) : ()),
99   LICENSE => 'perl',
100   EXE_FILES => [
101     'bin/moo-outdated',
102   ],
103 );
104
105
106 # copied from Moose-2.0801/Makefile.PL
107 sub check_conflicts {
108     if ( eval { require 'lib/Moo/Conflicts.pm'; 1; } ) {
109         if ( eval { Moo::Conflicts->check_conflicts; 1 } ) {
110             return;
111         }
112         else {
113             my $err = $@;
114             $err =~ s/^/    /mg;
115             warn "***\n$err***\n";
116         }
117     }
118     else {
119         print <<'EOF';
120 ***
121     Your toolchain doesn't support configure_requires, so
122     Dist::CheckConflicts hasn't been installed yet. You should check for
123     conflicting modules manually using the 'moo-outdated' script that is
124     installed with this distribution once the installation finishes.
125 ***
126 EOF
127     }
128
129     return if $ENV{AUTOMATED_TESTING} || $ENV{NONINTERACTIVE_TESTING};
130
131     # More or less copied from Module::Build
132     return if $ENV{PERL_MM_USE_DEFAULT};
133     return unless -t STDIN && ( -t STDOUT || !( -f STDOUT || -c STDOUT ) );
134
135     sleep 4;
136 }
137