first steps into solve()
[cpan-testers-parsereport.git] / Makefile.PL
blobfff73e502e25e4a45bba2312a9a50065c9fc12cf
1 use strict;
2 use warnings;
3 use ExtUtils::MakeMaker;
4 $ExtUtils::MakeMaker::VERSION =~ s/_//g;
5 my @sign = (MM->can("signature_target") ? (SIGN => 1) : ());
6 my $version_diff = 0; # we'll have to die if this becomes true
7 my $version_from = 'lib/CPAN/Testers/ParseReport.pm';
8 my $mmgenereatedversionfrom = MM->parse_version($version_from);
9 if ($ARGV[0] && $ARGV[0] eq "--setversion") {
10     die "Your perl is a bit dated[$]].\nDo not make a release with it\n" if $] < 5.008;
11     warn "Your MakeMaker is a bit dated[$ExtUtils::MakeMaker::VERSION].\nYou should get a new one\n"
12         if $ExtUtils::MakeMaker::VERSION < 6.4502;
13     eval {  require $version_from; }; die $@ if $@;
14     my $makefile = "Makefile";
15     unless (-f $makefile) {
16         $makefile = "Makefile.old";
17     }
18     unless (-f $makefile) {
19         die "no Makefile and no Makefile.old found";
20     }
21     open my $fh, "make -f $makefile the-release-name|" or die "Could not fork: $!";
22     local $/;
23     my ($have_version) = <$fh> =~ /^version\s+([\d\._]+)/m;
24     close $fh or die "Could not close: $!";
25     my ($namespace) = $version_from;
26     $namespace =~ s|^lib/(.+)\.pm$|$1|;
27     $namespace =~ s|/|::|g;
28     eval qq{ if (\$$namespace\::VERSION != \$have_version) {
29         warn "Not equal: CPAN::Testers::ParseReport::VERSION[\$$namespace\::VERSION] Makefile version[\$have_version]";
30         \$version_diff = 1;
31     }};
32     eval qq{ if (\$$namespace\::VERSION != \$mmgenereatedversionfrom) {
33         warn "Not equal: CPAN::Testers::ParseReport::VERSION[\$$namespace\::VERSION] MM generated version[\$mmgenereatedversionfrom]";
34         \$version_diff = 1;
35     }};
38 WriteMakefile
39     (
40      'NAME' => 'CPAN::Testers::ParseReport',
41      'VERSION_FROM' => $version_from,
42      'PREREQ_PM' => {
43                      'DateTime::Format::Strptime'  => 0,
44                      'File::Path'                  => 0,
45                      'Getopt::Long'                => 0,
46                      'HTML::Entities'              => 0,
47                      'IO::Prompt'                  => 0,
48                      'LWP::UserAgent'              => 0,
49                      'List::Util'                  => 0,
50                      'Pod::Usage'                  => 0,
51                      'Test::More'                  => 0,
52                      'Test::Pod'                   => 0,
53                      'XML::LibXML'                 => 0,
54                      'XML::LibXML::XPathContext'   => 0,
55                      'YAML::Syck'                  => 0,
56                     },
57      'INSTALLDIRS' => 'site',
58      'EXE_FILES' => [
59                      'bin/ctgetreports',
60                     ],
61      LICENSE => "perl",
62      ABSTRACT => "parse reports to www.cpantesters.org from various sources",
63      'PL_FILES' => {},
64      dist => {
65               DIST_DEFAULT => join(" ", # note: order matters!
66                                    "Makefile",
67                                    "META.yml",
68                                    "setversion",
69                                    "all",
70                                    "tardist",
71                                   ),
72               COMPRESS => 'gzip -9',
73              },
74      ($ExtUtils::MakeMaker::VERSION >= 6.4502 ?
75       (META_ADD => {
76                     # write: git push git+ssh://repo.or.cz/srv/git/cpan-testers-parsereport.git master
77                     repository => "git://repo.or.cz/cpan-testers-parsereport.git",
78                     provides => { "CPAN::Testers::ParseReport" => { version => $mmgenereatedversionfrom, file => $version_from }},
79                    }) : ()),
80      @sign,
81     );
83 if ($version_diff){
84   die "
85 ==> I had to update some \$VERSIONs <==
86 ==> Your Makefile has been rebuilt. <==
87 ==> Please rerun the make command.  <==
91 package MY;
92 sub postamble {
93   my @m;
94   push @m, q{
95 # the subdirs on MY OWN BOX are allowed here (only used for make dist!)
96 OKDIRS=DIST|bin|blib|cover_db\
97        |lib|t
99 META.yml: metafile
100         $(CP) $(DISTVNAME)/META.yml  ./META.yml
102 setversion:
103         $(PERL) Makefile.PL --setversion
105 verify-no-subdir:
106         @$(PERL) -e 'my$$s=join",",grep{!/^($(OKDIRS))\z/x&&-d($$_)}glob"*";' \
107                 -e 'die"unexpected dir:$$s"if$$s'
109 the-release-name :
110         $(NOECHO) $(ECHO) 'version ' $(VERSION)
111         $(NOECHO) $(ECHO) 'release-name ' $(DISTVNAME).tar$(SUFFIX)
113 release ::
114         /usr/bin/perl -I../CPAN/GIT/trunk/release-lib -S release $(DISTVNAME).tar$(SUFFIX)
115         rm -rf $(DISTVNAME)
117 sign:
118         cpansign -s
120   join "", @m;
123 sub dist_test {
124   return q{
125 # if we depend on $(DISTVNAME).tar$(SUFFIX), then the rest of the
126 # Makefile breaks our intent to NOT remake dist
127 disttest :
128         rm -rf $(DISTVNAME)
129         tar xvzf $(DISTVNAME).tar$(SUFFIX)
130         cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
131         cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
132         cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
134 distdir ::
135         touch $(DISTVNAME)/SIGNATURE && $(CP) $(DISTVNAME)/SIGNATURE ./SIGNATURE
136         $(CP) $(DISTVNAME)/META.yml  ./META.yml
137         $(CP) $(DISTVNAME)/MANIFEST  ./MANIFEST
142 sub distdir {
143   my $self = shift;
144   my $out = $self->SUPER::distdir;
145   $out =~ s/distdir :/distdir ::/g;
146   return $out;
149 # dist_dir was the name in very old MakeMaker as of 5.005_04
150 sub dist_dir {
151   my $self = shift;
152   my $out = $self->SUPER::dist_dir;
153   $out =~ s/distdir :/distdir ::/g;
154   return $out;