CPAN
view release on metacpan or search on metacpan
Makefile.PL view on Meta::CPAN
Exporter::Heavy
ExtUtils::CBuilder
File::Copy
File::HomeDir
File::Spec
File::Temp
File::Which
HTTP::Tiny
IO::Compress::Base
IO::Zlib
JSON::PP
Log::Log4perl
LWP::UserAgent
MIME::Base64
Module::Build
Module::Signature
Net::FTP
Parse::CPAN::Meta
Pod::Perldoc
Pod::Perldoc::ToMan
Scalar::Util
Socket
Term::ReadKey
Term::ReadLine::Perl
Test::More
Text::Glob
Text::ParseWords
Text::Wrap
YAML
YAML::Syck
YAML::XS
)) {
eval "require $interesting_module";
if (!$@) {
$prereq_pm->{$interesting_module} ||= 0;
}
}
unless (exists $prereq_pm->{"LWP::UserAgent"} && $] ge '5.006') {
# allow bootstrap with pure perl HTTP, but skip if we have LWP::UserAgent already installed
$prereq_pm->{'HTTP::Tiny'} = '0.005';
}
if ($HAVE_FILE_SPEC) {
# import PAUSE public key to user's keychain
require Config;
my $dir;
for $dir (split /$Config::Config{path_sep}/, $ENV{PATH}) {
my $abs = File::Spec->catfile($dir, 'gpg');
my $cmd;
if ($cmd = MM->maybe_command($abs)) {
print "Importing PAUSE public key into your GnuPG keychain... ";
system($cmd, '--quiet', '--import', <PAUSE*.pub>);
print "done!\n";
print "(You may wish to trust it locally with 'gpg --lsign-key $FINGERPRINT')\n";
last;
}
}
}
if ($HAVE_FILE_SPEC) {
my $have_distroprefs = -d "distroprefs";
my $have_notinchecksums = -f File::Spec->catdir("t","CPAN","authors","id","A","AN","ANDK","NotInChecksums-0.000.tar.gz");
if ($HAVE_MAKE && $have_distroprefs && !$have_notinchecksums) {
warn <<EOW;
####-Note-for-repository-users-####
Please try
make touchtestdistros
before running 'make test'
It should build NotInChecksums-0.000.tar.gz
and correct timestamps for tarballs from the repository
and thus enable a smooth 'make test' experience
####-Note-for-repository-users-####
EOW
}
}
my @sign = (MM->can("signature_target") ? (SIGN => 1) : ());
WriteMakefile(
INSTALLDIRS => ($] < 5.012) ? "perl" : "site",
NAME => 'CPAN',
VERSION => $version,
EXE_FILES => [qw(scripts/cpan scripts/cpan-mirrors)],
PREREQ_PM => $prereq_pm,
($ExtUtils::MakeMaker::VERSION >= 6.3002 ?
(LICENSE => "perl") : (),
),
($ExtUtils::MakeMaker::VERSION >= 6.48 ?
(MIN_PERL_VERSION => '5.006002') : (),
),
clean => {
FILES => "lib/CPAN/Config.pm t/dot-cpan/FTPstats.yml cpan-home t/dot-cpan*",
},
@sign,
($] >= 5.005 ?
(
ABSTRACT_FROM => 'lib/CPAN.pm', # retrieve abstract from module
AUTHOR => 'Andreas Koenig <andreas.koenig.gmwojprw@franz.ak.mind.de>') : (),
),
dist => {
DIST_DEFAULT => join(" ", # note: order matters!
"verify-no-subdir",
"verify-changes-date",
"verify-changes-version",
"kwalify-distroprefs-straight",
"Makefile",
"no_CR",
"META.yml",
"setversion",
"README",
"testdistros",
"all",
"tardist",
),
COMPRESS => 'gzip -9',
},
# I took it from RT-CPAN ticket 30098:
($ExtUtils::MakeMaker::VERSION >= 6.4502 ?
(META_ADD => {
'meta-spec' => { version => 2 },
resources => {
repository => {
type => 'git',
url => 'https://github.com/andk/cpanpm'
}
},
keywords => ['CPAN','module','module installation'],
}) : ()),
);
if ($version_diff){
die "
==> I had to update some \$VERSIONs <==
==> Your Makefile has been rebuilt. <==
==> Please rerun the make command. <==
";
}
package MY;
sub distsignature {
my($self) = shift;
my $ret = $self->SUPER::distsignature_target(@_);
$ret =~ s|cpansign|\`dirname \$(PERL)\`/cpansign|g;
return $ret;
}
sub macro {
q{
LC_ALL_noexport=en_GB.utf8
YAML_MODULE=YAML::Syck
}
}
sub postamble {
return "" unless $HAVE_MAKE; # dmake has unknown issues with my Makefile
my @m;
push @m, q{
.SUFFIXES: .rnc .rng
.rnc.rng:
trang -I rnc -O rng $*.rnc $*.rng
update: dd-prefs
# the subdirs on MY OWN BOX are allowed here (only used for make dist!)
OKDIRS=CPAN|DIST|bin|blib|cover_db|\
distroprefs|eg|inc|lib|logs|patches|perlbug|\
protocols|related|release-lib|scripts|t|talks|_eumm
FINGERPRINT=}.$FINGERPRINT.q{
verify-no-subdir:
@$(PERL) -e 'my$$s=join",",grep{!/^($(OKDIRS))\z/x&&-d($$_)}glob"*";' \
-e 'die"unexpected dir:$$s"if$$s'
verify-changes-date:
@$(PERL) -ne 'BEGIN{my@t=(localtime)[5,4,3];$$t[0]+=1900;$$t[1]++;$$t=sprintf"%04d-%02d-%02d",@t}' \
-e '$$ok++,exit if /^$$t\s/; END{die "Alert: did not find <$$t> in Changes file" unless $$ok}' Changes
verify-changes-version:
@$(PERL) -ne '$$ok++,exit if /\b$(VERSION)\b/; END{die "Alert: did not find <$(VERSION)> in Changes file" unless $$ok}' Changes
# requires Slay::Makefile
kwalify-distroprefs-slaymake:
$(PERL) `dirname $(PERL)`/slaymake validate
ddify-distroprefs:
-$(PERL) -Ilib -e 'use YAML::Syck;use CPAN::Kwalify;use Kwalify qw(validate);use Data::Dumper;{my $$errors = 0; my $$files = 0; my $$perrors = 0;my $$distroprefs_path = $$INC{"CPAN/Kwalify.pm"};$$distroprefs_path =~ s{\.pm$$}{/distroprefs.yml};my $$...
kwalify-distroprefs-straight:
-$(PERL) -Ilib -le 'use YAML::Syck;use CPAN::Kwalify;use Kwalify qw(validate);use Data::Dumper;{my $$errors = 0; my $$files = 0; my $$perrors = 0;my $$distroprefs_path = $$INC{"CPAN/Kwalify.pm"};$$distroprefs_path =~ s{\.pm$$}{/distroprefs.yml};my $...
setversion:
$(PERL) Makefile.PL --setversion
README: lib/CPAN.pm Makefile
-[ -r $@ ] && chmod +w $@
-$(PERL) -MPod::Text -e 'Pod::Text->new->parse_from_file(\*ARGV)' lib/CPAN.pm > $@
the-release-name :
$(NOECHO) $(ECHO) 'version ' $(VERSION)
$(NOECHO) $(ECHO) 'release-name ' $(DISTVNAME).tar$(SUFFIX)
pull-request :
$(NOECHO) $(ECHO) 'http://www.nntp.perl.org/group/perl.perl5.porters/2016/01/msg233838.html'
# the last test for META.json prevents that the distro goes out without it (old MakeMaker)
release :: disttest
[ -e META.json ]
ls -l $(DISTVNAME).tar$(SUFFIX)
rm -rf $(DISTVNAME)
$(NOECHO) $(ECHO) '#### Suggested next steps (if all looks good):'
$(NOECHO) $(ECHO) '#### Consider "make pull-request" for perl5-porters'
$(NOECHO) $(ECHO) make reversion AGAINST_TAG=__previous_release__
$(NOECHO) $(ECHO) git tag -m '"This is $(VERSION)"' '"$(VERSION)"'
$(NOECHO) $(ECHO) ' git push --tags origin master'
reversion:
$(NOECHO) $(ECHO) AGAINST_TAG=$(AGAINST_TAG)
$(PERL) dagolden-reversion-gist.pl $(AGAINST_TAG)
snapshot : Makefile no_CR META.yml README testdistros all tardist
# 16=Distribution; 32=Bundle; 32768=Queue
depefails:
$(PERL) -Ilib -MCPAN -e 'CPAN::HandleConfig->load;$$CPAN::DEBUG|=16;$$CPAN::DEBUG|=32;$$CPAN::DEBUG|=32768;install(qw(CPAN::Test::Dummy::Perl5::Build::DepeFails));'
logs/.exists :
mkdir -p logs
touch $@
run :
$(PERL) -Ilib -MCPAN -eshell
run_testenv_db :
$(PERL) -Ilib -It -MCPAN::MyConfig -MCPAN -deshell
record-session :
$(PERL) -Ilib -MCPAN -e '$$CPAN::Suppress_readline=$$CPAN::Echo_readline=1;shell' | tee ttt.out
run-with-sqlite :
$(PERL) -I$$HOME/.cpan -Ilib -MCPAN::SQLite -MCPAN::MyConfig -MCPAN -e '$$CPAN::Config->{use_sqlite}++; $$CPAN::Config->{sqlite_dbname}="cpandb-sqlite"; shell'
testrun_very_offline : rm_mirrored_by run_emu_offline
testrun_emu_offline :
$(PERL) -I$$HOME/.cpan -Ilib -MCPAN::MyConfig -MCPAN -e '@CPAN::Defaultsites = qw(file:///dev/null); $$CPAN::Config->{urllist} = []; shell'
rm_mirrored_by :
rm -f $$HOME/.cpan/sources/MIRRORED.BY*
Makefile.PL view on Meta::CPAN
ls -l $@
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq-1.00.tar.gz: \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq/Changes \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq/MANIFEST \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq/Makefile.PL \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq/README \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq/lib/CPAN/Test/Dummy/Perl5/Make/CircularPrereq.pm \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq/t/00_load.t
cd t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-CircularPrereq/ && \
$(PERL) Makefile.PL && \
$(MAKE) dist && \
mv CPAN-Test-Dummy-Perl5-Make-CircularPrereq-1.00.tar.gz .. && \
$(MAKE) clean
ls -l $@
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq-1.00.tar.gz: \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq/Changes \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq/MANIFEST \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq/Makefile.PL \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq/README \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq/lib/CPAN/Test/Dummy/Perl5/Make/OptionalPrereq.pm \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq/t/00_load.t
cd t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-OptionalPrereq/ && \
$(PERL) Makefile.PL && \
$(MAKE) dist && \
mv CPAN-Test-Dummy-Perl5-Make-OptionalPrereq-1.00.tar.gz .. && \
$(MAKE) clean
ls -l $@
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-Zip-1.03.zip: \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-Zip/MANIFEST \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-Zip/Makefile.PL \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-Zip/lib/CPAN/Test/Dummy/Perl5/Make/Zip.pm \
t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-Zip/t/00_load.t
cd t/CPAN/authors/id/A/AN/ANDK/CPAN-Test-Dummy-Perl5-Make-Zip && \
$(PERL) Makefile.PL && \
$(MAKE) dist && \
mv CPAN-Test-Dummy-Perl5-Make-Zip-1.03.zip .. && \
$(MAKE) clean
ls -l $@
t/CPAN/authors/id/A/AN/ANDK/NotInChecksums-0.000.tar.gz :
echo " ----No content---- " > t/CPAN/authors/id/A/AN/ANDK/tempfile
cd t/CPAN/authors/id/A/AN/ANDK && tar cvzf NotInChecksums-0.000.tar.gz tempfile
$(RM) t/CPAN/authors/id/A/AN/ANDK/tempfile
ls -l $@
#
#
#
clean ::
$(RM) t/CPAN/authors/id/A/AN/ANDK/*/Build \
t/CPAN/authors/id/A/AN/ANDK/*/Makefile.old
$(RM_RF) t/CPAN/authors/id/A/AN/ANDK/*/_build
no_CR : META.yml
$(PERL) bin/no_CR.pl MANIFEST
foreign-prefs : dd-prefs st-prefs
dd-prefs ::
`echo $(PERL) | sed -e 's/perl$$/slaymake/'` dd-prefs
st-prefs ::
chlog ::
};
for my $base (@main::ST_PREFS) {
push @m, qq{
st-prefs :: $base.st
};
if ($HAVE_YAML_SYCK) {
push @m, qq{$base.st : Makefile
\$(PERL) -MYAML::Syck=LoadFile -MStorable=nstore -e '\$\$x=shift; \@y=LoadFile("\$\$x.yml"); nstore(\\\@y, "\$\$x.st")' $base
};
}
}
join "", @m;
}
sub dist_test {
return q{
# if we depend on $(DISTVNAME).tar$(SUFFIX), then the rest of the
# Makefile breaks our intent to NOT remake dist
disttest :
rm -rf $(DISTVNAME)
tar xvzf $(DISTVNAME).tar$(SUFFIX)
cd $(DISTVNAME) && $(ABSPERLRUN) Makefile.PL
cd $(DISTVNAME) && $(MAKE) $(PASTHRU)
cd $(DISTVNAME) && $(MAKE) test $(PASTHRU)
distdir ::
touch $(DISTVNAME)/SIGNATURE && $(CP) $(DISTVNAME)/SIGNATURE ./SIGNATURE
$(CP) $(DISTVNAME)/META.yml ./META.yml
-$(CP) $(DISTVNAME)/META.json ./META.json
$(CP) $(DISTVNAME)/MANIFEST ./MANIFEST
}
}
sub distdir {
my $self = shift;
my $out = $self->SUPER::distdir;
$out =~ s/distdir :/distdir ::/g;
return $out;
}
# dist_dir was the name in very old MakeMaker as of 5.005_04
sub dist_dir {
my $self = shift;
my $out = $self->SUPER::dist_dir;
$out =~ s/distdir :/distdir ::/g;
return $out;
}
( run in 0.564 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )