Commit | Line | Data |
e1eaa4ae |
1 | use strict; |
2 | use warnings; |
0effd05f |
3 | use 5.006; |
4 | use lib 'inc'; |
5 | use ExtUtils::HasCompiler qw(can_compile_loadable_object); |
6 | use ExtUtils::MakeMaker; |
e1eaa4ae |
7 | |
0effd05f |
8 | my %META = ( |
9 | name => 'Class-Accessor-Grouped', |
10 | license => 'perl_5', |
11 | author => [ 'Matt S. Trout <mst@shadowcatsystems.co.uk>' ], |
12 | prereqs => { |
13 | configure => { requires => { |
14 | 'ExtUtils::MakeMaker' => 0, |
15 | } }, |
16 | runtime => { |
17 | requires => { |
18 | 'perl' => '5.006', |
19 | 'Carp' => 0, |
20 | 'Module::Runtime' => '0.012', |
21 | 'Scalar::Util' => 0, |
22 | }, |
23 | recommends => { |
24 | 'Sub::Name' => '0.05', |
25 | # when changing CXSA version don't forget to adjust lib/Class/Accessor/Grouped.pm as well |
26 | 'Class::XSAccessor' => '1.19', |
27 | }, |
28 | }, |
29 | test => { |
30 | requires => { |
31 | 'Test::More' => '0.88', |
32 | 'Test::Exception' => '0.31', |
33 | }, |
34 | }, |
35 | develop => { |
36 | requires => { |
37 | 'Sub::Name' => '0.05', |
38 | 'Class::XSAccessor' => '1.19', |
39 | 'Pod::Coverage' => '0.14', |
40 | 'Test::CheckManifest' => '0.09', |
41 | 'Test::NoTabs' => '0.03', |
42 | 'Test::Pod' => '1.00', |
43 | 'Test::Pod::Coverage' => '1.04', |
44 | 'Test::Spelling' => '0.11', |
45 | 'Test::Strict' => '0.05', |
46 | }, |
47 | }, |
48 | }, |
49 | resources => { |
50 | homepage => 'https://metacpan.org/release/Class-Accessor-Grouped', |
51 | repository => { |
52 | url => 'git://git.shadowcat.co.uk/p5sagit/Class-Accessor-Grouped.git', |
53 | web => 'https://github.com/p5sagit/Class-Accessor-Grouped', |
54 | type => 'git', |
55 | }, |
56 | bugtracker => { |
57 | web => 'https://rt.cpan.org/Public/Dist/Display.html?Name=Class-Accessor-Grouped', |
58 | mailto => 'bug-Class-Accessor-Grouped@rt.cpan.org', |
59 | }, |
60 | license => [ 'http://dev.perl.org/licenses/' ], |
61 | }, |
62 | no_index => { |
63 | directory => [ 't', 'xt' ] |
64 | }, |
65 | ); |
e1eaa4ae |
66 | |
0effd05f |
67 | my %MM_ARGS = ( |
68 | PREREQ_PM => { |
69 | ( |
70 | ( |
71 | parse_args()->{PUREPERL_ONLY} |
72 | or !can_compile_loadable_object(quiet => 1) |
73 | ) ? () |
74 | : ( |
75 | 'Sub::Name' => $META{prereqs}{runtime}{recommends}{'Sub::Name'}, |
76 | # CXSA does not work on 5.6 |
77 | ( "$]" > 5.008 ? ( |
78 | 'Class::XSAccessor' => $META{prereqs}{runtime}{recommends}{'Class::XSAccessor'} |
79 | ) : ()), |
80 | ) |
81 | ), |
82 | ("$]" < 5.009_005 ? ( 'MRO::Compat' => 0 ) : ()), |
83 | }, |
84 | realclean => { FILES => 'README' }, |
85 | (-e 'META.yml' ? () : test => { TESTS => 't/*.t xt/*.t xt/*/*.t' } ), |
86 | ); |
85ccab9a |
87 | |
e0a942a7 |
88 | { |
89 | package MY; |
90 | sub distdir { |
91 | my ($self, @arg) = @_; |
92 | my $frag = $self->SUPER::distdir(@arg); |
93 | $frag =~ s/^(distdir\s*:.*)/$1 create_readme/m; |
94 | $frag .= <<'END_MAKE'; |
95 | create_readme: create_distdir |
96 | pod2text lib/Class/Accessor/Grouped.pm > $(DISTVNAME)/README |
97 | cd $(DISTVNAME) && $(PERLRUN) "-MExtUtils::Manifest=maniadd" -e "maniadd({ README => 'Generated README' })" |
98 | END_MAKE |
99 | $frag; |
100 | } |
0effd05f |
101 | } |
8e292826 |
102 | |
0effd05f |
103 | use Text::ParseWords; |
85ccab9a |
104 | |
0effd05f |
105 | sub parse_args { |
106 | # copied from EUMM |
107 | ExtUtils::MakeMaker::parse_args( |
108 | my $tmp = {}, |
109 | Text::ParseWords::shellwords($ENV{PERL_MM_OPT} || ''), |
110 | @ARGV, |
111 | ); |
112 | return $tmp->{ARGS} || {}; |
85ccab9a |
113 | } |
b9a69571 |
114 | |
0effd05f |
115 | ## BOILERPLATE ############################################################### |
116 | require ExtUtils::MakeMaker; |
e1eaa4ae |
117 | |
0effd05f |
118 | # have to do this since old EUMM dev releases miss the eval $VERSION line |
119 | my $eumm_version = eval $ExtUtils::MakeMaker::VERSION; |
120 | my $mymeta = $eumm_version >= 6.57_02; |
121 | my $mymeta_broken = $mymeta && $eumm_version < 6.57_07; |
e1eaa4ae |
122 | |
0effd05f |
123 | ($MM_ARGS{NAME} = $META{name}) =~ s/-/::/g; |
124 | ($MM_ARGS{VERSION_FROM} = "lib/$MM_ARGS{NAME}.pm") =~ s{::}{/}g; |
4da64f3c |
125 | $MM_ARGS{ABSTRACT_FROM} = $MM_ARGS{VERSION_FROM}; |
0effd05f |
126 | $META{license} = [ $META{license} ] |
127 | if $META{license} && !ref $META{license}; |
128 | $MM_ARGS{LICENSE} = $META{license}[0] |
129 | if $META{license} && $eumm_version >= 6.30; |
130 | $MM_ARGS{NO_MYMETA} = 1 |
131 | if $mymeta_broken; |
132 | $MM_ARGS{META_ADD} = { 'meta-spec' => { version => 2 }, %META } |
133 | unless -f 'META.yml'; |
134 | |
135 | for (qw(configure build test runtime)) { |
136 | my $key = $_ eq 'runtime' ? 'PREREQ_PM' : uc $_.'_REQUIRES'; |
137 | my $r = $MM_ARGS{$key} = { |
138 | %{$META{prereqs}{$_}{requires} || {}}, |
139 | %{delete $MM_ARGS{$key} || {}}, |
140 | }; |
141 | defined $r->{$_} or delete $r->{$_} for keys %$r; |
81feed1e |
142 | } |
143 | |
0effd05f |
144 | $MM_ARGS{MIN_PERL_VERSION} = delete $MM_ARGS{PREREQ_PM}{perl} || 0; |
d8b59db3 |
145 | |
0effd05f |
146 | delete $MM_ARGS{MIN_PERL_VERSION} |
147 | if $eumm_version < 6.47_01; |
148 | $MM_ARGS{BUILD_REQUIRES} = {%{$MM_ARGS{BUILD_REQUIRES}}, %{delete $MM_ARGS{TEST_REQUIRES}}} |
149 | if $eumm_version < 6.63_03; |
150 | $MM_ARGS{PREREQ_PM} = {%{$MM_ARGS{PREREQ_PM}}, %{delete $MM_ARGS{BUILD_REQUIRES}}} |
151 | if $eumm_version < 6.55_01; |
152 | delete $MM_ARGS{CONFIGURE_REQUIRES} |
153 | if $eumm_version < 6.51_03; |
81feed1e |
154 | |
0effd05f |
155 | ExtUtils::MakeMaker::WriteMakefile(%MM_ARGS); |
156 | ## END BOILERPLATE ########################################################### |