File Coverage

Makefile.PL
Criterion Covered Total %
statement 7 74 9.4
branch 0 48 0.0
condition 0 12 0.0
subroutine 3 8 37.5
pod n/a
total 10 142 7.0


line stmt bran cond sub pod time code
1             # -*- mode: perl; c-basic-offset: 4; indent-tabs-mode: nil; -*-
2              
3 1     1   328 use strict;
  1         1  
  1         27  
4 1     1   650 use ExtUtils::MakeMaker qw(WriteMakefile);
  1         87135  
  1         1039  
5             # See lib/ExtUtils/MakeMaker.pm for details of how to influence
6             # the contents of the Makefile that is written.
7              
8             # Normalize version strings like 6.30_02 to 6.3002,
9             # so that we can do numerical comparisons on it.
10             my $eumm_version = $ExtUtils::MakeMaker::VERSION;
11             $eumm_version =~ s/_//;
12              
13             my $module = 'Random::PoissonDisc';
14             (my $main_file = "lib/$module.pm" ) =~ s!::!/!g;
15             (my $distbase = $module) =~ s!::!-!g;
16             my $distlink = lc $distbase;
17              
18             my @tests = map { glob $_ } 't/*.t', 't/*/*.t';
19              
20             my %module = (
21             NAME => $module,
22             AUTHOR => q{Max Maischein },
23             VERSION_FROM => $main_file,
24             ABSTRACT_FROM => $main_file,
25             META_MERGE => {
26             "meta-spec" => { version => 2 },
27             resources => {
28             repository => {
29             web => "https://github.com/Corion/$distlink",
30             url => "git://github.com/Corion/$distlink.git",
31             type => 'git',
32             },
33             bugtracker => {
34             web => "https://github.com/Corion/$distbase/issues",
35             # mailto => 'meta-bugs@example.com',
36             },
37             license => "https://dev.perl.org/licenses/",
38             },
39             dynamic_config => 0, # we promise to keep META.* up-to-date
40             x_static_install => 1, # we are pure Perl and don't do anything fancy
41             },
42              
43             MIN_PERL_VERSION => '5.010', # I use // in some places
44              
45             'LICENSE'=> 'perl',
46              
47             PL_FILES => {},
48             BUILD_REQUIRES => {
49             'ExtUtils::MakeMaker' => 0,
50             },
51              
52             PREREQ_PM => {
53             'List::Util' => 0, # for sum()
54             'Math::Random::MT::Auto' => 0, # for gaussian distribution
55             # 'Algorithm::Loops' => 0, # We implement our own Cartesian product instead
56             },
57             TEST_REQUIRES => {
58             'Test::More' => 0,
59             },
60              
61             dist => { COMPRESS => 'gzip -9f', SUFFIX => 'gz', },
62             clean => { FILES => "$distbase-*" },
63              
64             test => { TESTS => join( ' ', @tests ) },
65             );
66              
67             # This is so that we can do
68             # require 'Makefile.PL'
69             # and then call get_module_info
70              
71 1     1   10 sub get_module_info { %module }
72              
73             if( ! caller ) {
74             # I should maybe use something like Shipwright...
75             regen_README($main_file);
76             regen_EXAMPLES() if -d 'examples';
77             WriteMakefile1(get_module_info);
78             };
79              
80             1;
81              
82             sub WriteMakefile1 { #Written by Alexandr Ciornii, version 0.21. Added by eumm-upgrade.
83 0     0     my %params=@_;
84 0           my $eumm_version=$ExtUtils::MakeMaker::VERSION;
85 0           $eumm_version=eval $eumm_version;
86 0 0         die "EXTRA_META is deprecated" if exists $params{EXTRA_META};
87 0 0         die "License not specified" if not exists $params{LICENSE};
88 0 0 0       if ($params{BUILD_REQUIRES} and $eumm_version < 6.5503) {
89             #EUMM 6.5502 has problems with BUILD_REQUIRES
90 0 0         $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{BUILD_REQUIRES}} };
  0            
  0            
91 0           delete $params{BUILD_REQUIRES};
92             }
93 0 0 0       if ($params{TEST_REQUIRES} and $eumm_version < 6.64) {
94 0 0         $params{PREREQ_PM}={ %{$params{PREREQ_PM} || {}} , %{$params{TEST_REQUIRES}} };
  0            
  0            
95 0           delete $params{TEST_REQUIRES};
96             }
97 0 0         delete $params{CONFIGURE_REQUIRES} if $eumm_version < 6.52;
98 0 0         delete $params{MIN_PERL_VERSION} if $eumm_version < 6.48;
99 0 0         delete $params{META_MERGE} if $eumm_version < 6.46;
100 0 0         delete $params{META_ADD} if $eumm_version < 6.46;
101 0 0         delete $params{LICENSE} if $eumm_version < 6.31;
102 0 0         delete $params{AUTHOR} if $] < 5.005;
103 0 0         delete $params{ABSTRACT_FROM} if $] < 5.005;
104 0 0         delete $params{BINARY_LOCATION} if $] < 5.005;
105              
106 0           WriteMakefile(%params);
107             }
108              
109             sub regen_README {
110             # README is the short version that just tells people what this is
111             # and how to install it
112 0     0     eval {
113             # Get description
114 0           my $readme = join "\n",
115             pod_section($_[0], 'NAME', 'no heading' ),
116             pod_section($_[0], 'DESCRIPTION' ),
117             <
118              
119             INSTALLATION
120              
121             This is a Perl module distribution. It should be installed with whichever
122             tool you use to manage your installation of Perl, e.g. any of
123              
124             cpanm .
125             cpan .
126             cpanp -i .
127              
128             Consult https://www.cpan.org/modules/INSTALL.html for further instruction.
129             Should you wish to install this module manually, the procedure is
130              
131             perl Makefile.PL
132             make
133             make test
134             make install
135              
136             INSTALL
137             pod_section($_[0], 'REPOSITORY'),
138             pod_section($_[0], 'SUPPORT'),
139             pod_section($_[0], 'TALKS'),
140             pod_section($_[0], 'KNOWN ISSUES'),
141             pod_section($_[0], 'BUG TRACKER'),
142             pod_section($_[0], 'CONTRIBUTING'),
143             pod_section($_[0], 'SEE ALSO'),
144             pod_section($_[0], 'AUTHOR'),
145             pod_section($_[0], 'LICENSE' ),
146             pod_section($_[0], 'COPYRIGHT' ),
147             ;
148 0           update_file( 'README', $readme );
149             };
150             # README.mkdn is the documentation that will be shown as the main
151             # page of the repository on Github. Hence we recreate the POD here
152             # as Markdown
153 0           eval {
154 0           require Pod::Markdown;
155              
156 0           my $parser = Pod::Markdown->new();
157              
158             # Read POD from Module.pm and write to README
159 0           $parser->parse_from_file($_[0]);
160 0           my $readme_mkdn = <as_markdown;
161              
162             [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/Corion/$distlink?branch=master&svg=true)](https://ci.appveyor.com/project/Corion/$distlink)
163             [![Windows](https://github.com/Corion/$distbase/workflows/windows/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Awindows)
164             [![MacOS](https://github.com/Corion/$distbase/workflows/macos/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Amacos)
165             [![Linux](https://github.com/Corion/$distbase/workflows/linux/badge.svg)](https://github.com/Corion/$distbase/actions?query=workflow%3Alinux)
166              
167             STATUS
168 0           update_file( 'README.mkdn', $readme_mkdn );
169             };
170             }
171              
172             sub pod_section {
173 0     0     my( $filename, $section, $remove_heading ) = @_;
174 0 0         open my $fh, '<', $filename
175             or die "Couldn't read '$filename': $!";
176              
177             my @section =
178 0           grep { /^=head1\s+$section/.../^=/ } <$fh>;
  0            
179              
180             # Trim the section
181 0 0         if( @section ) {
182 0 0         pop @section if $section[-1] =~ /^=/;
183 0 0         shift @section if $remove_heading;
184              
185             pop @section
186 0   0       while @section and $section[-1] =~ /^\s*$/;
187             shift @section
188 0   0       while @section and $section[0] =~ /^\s*$/;
189             };
190              
191 0           @section = map { $_ =~ s!^=\w+\s+!!; $_ } @section;
  0            
  0            
192 0           return join "", @section;
193             }
194              
195             sub regen_EXAMPLES {
196 0     0     my $perl = $^X;
197 0 0         if ($perl =~/\s/) {
198 0           $perl = qq{"$perl"};
199             };
200 0           (my $example_file = $main_file) =~ s!\.pm$!/Examples.pm!;
201 0           my $examples = `$perl -w examples/gen_examples_pod.pl`;
202 0 0         if ($examples) {
203 0           warn "(Re)Creating $example_file\n";
204 0           $examples =~ s/\r\n/\n/g;
205 0           update_file( $example_file, $examples );
206             };
207             };
208              
209             sub update_file {
210 0     0     my( $filename, $new_content ) = @_;
211 0           my $content;
212 0 0         if( -f $filename ) {
213 0 0         open my $fh, '<', $filename
214             or die "Couldn't read '$filename': $!";
215 0           binmode $fh;
216 0           local $/;
217 0           $content = <$fh>;
218             };
219              
220 0 0         if( $content ne $new_content ) {
221 0 0         if( open my $fh, '>', $filename ) {
222 0           binmode $fh;
223 0           print $fh $new_content;
224             } else {
225 0           warn "Couldn't (re)write '$filename': $!";
226             };
227             };
228             }