2 # A simple listing of core files that have specific maintainers,
3 # or at least someone that can be called an "interested party".
4 # Also, a "module" does not necessarily mean a CPAN module, it
5 # might mean a file or files or a subdirectory.
6 # Most (but not all) of the modules have dual lives in the core
14 use File::Glob qw(:case);
16 # IGNORABLE: files which, if they appear in the root of a CPAN
17 # distribution, need not appear in core (i.e. core-cpan-diff won't
18 # complain if it can't find them)
21 .cvsignore .dualLivedDiffConfig .gitignore .github .perlcriticrc .perltidyrc
22 .travis.yml ANNOUNCE Announce Artistic AUTHORS BENCHMARK BUGS Build.PL
23 CHANGELOG ChangeLog Changelog CHANGES Changes CONTRIBUTING CONTRIBUTING.md
24 CONTRIBUTING.mkdn COPYING Copying cpanfile CREDITS dist.ini GOALS HISTORY
25 INSTALL INSTALL.SKIP LICENCE LICENSE Makefile.PL MANIFEST MANIFEST.SKIP
26 META.json META.yml MYMETA.json MYMETA.yml NEW NEWS NOTES perlcritic.rc
27 ppport.h README README.md README.pod README.PATCHING SIGNATURE THANKS TODO
31 # Each entry in the %Modules hash roughly represents a distribution,
32 # except when DISTRIBUTION is set, where it *exactly* represents a single
35 # The keys of %Modules are human descriptions of the distributions, and
36 # may not exactly match a module or distribution name. Distributions
37 # which have an obvious top-level module associated with them will usually
38 # have a key named for that module, e.g. 'Archive::Extract' for
39 # Archive-Extract-N.NN.tar.gz; the remaining keys are likely to be based
40 # on the name of the distribution, e.g. 'Locale-Codes' for
41 # Locale-Codes-N.NN.tar.gz'.
43 # UPSTREAM indicates where patches should go. This is generally now
44 # inferred from the FILES: modules with files in dist/, ext/ and lib/
45 # are understood to have UPSTREAM 'blead', meaning that the copy of the
46 # module in the blead sources is to be considered canonical, while
47 # modules with files in cpan/ are understood to have UPSTREAM 'cpan',
48 # meaning that the module on CPAN is to be patched first.
50 # MAINTAINER has previously been used to indicate who the current maintainer
51 # of the module is, but this is no longer stated explicitly. It is now
52 # understood to be either the Perl 5 Porters if UPSTREAM is 'blead', or else
53 # the CPAN author whose PAUSE user ID forms the first part of the DISTRIBUTION
54 # value, e.g. 'BINGOS' in the case of 'BINGOS/Archive-Tar-2.00.tar.gz'.
55 # (PAUSE's View Permissions page may be consulted to find other authors who
56 # have owner or co-maint permissions for the module in question.)
58 # FILES is a list of filenames, glob patterns, and directory
59 # names to be recursed down, which collectively generate a complete list
60 # of the files associated with the distribution.
62 # BUGS is an email or url to post bug reports. For modules with
63 # UPSTREAM => 'blead', use perl5-porters@perl.org. rt.cpan.org
64 # appears to automatically provide a URL for CPAN modules; any value
65 # given here overrides the default:
66 # http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName
68 # DISTRIBUTION names the tarball on CPAN which (allegedly) the files
69 # included in core are derived from. Note that the file's version may not
70 # necessarily match the newest version on CPAN. (For dist/ distributions,
71 # which are blead-first, a request should be placed with the releaser(s) to
72 # upload the corresponding cpan release, and the entry in this file should
73 # only be updated when that release has been done.)
75 # MAIN_MODULE names the top-level module by which the tarball is indexed on
76 # CPAN in cases where this differs from the distribution's key in %Modules.
77 # (If it is equal then MAIN_MODULE is optional and should be omitted.)
79 # EXCLUDED is a list of files to be excluded from a CPAN tarball before
80 # comparing the remaining contents with core. Each item can either be a
81 # full pathname (eg 't/foo.t') or a pattern (e.g. qr{^t/}).
82 # It defaults to the empty list.
84 # CUSTOMIZED is a list of files that have been customized within the
85 # Perl core. Use this whenever patching a cpan upstream distribution
86 # or whenever we expect to have a file that differs from the tarball.
87 # If the file in blead matches the file in the tarball from CPAN,
88 # Porting/core-cpan-diff will warn about it, as it indicates an expected
89 # customization might have been lost when updating from upstream. The
90 # path should be relative to the distribution directory. If the upstream
91 # distribution should be modified to incorporate the change then be sure
92 # to raise a ticket for it on rt.cpan.org and add a comment alongside the
93 # list of CUSTOMIZED files noting the ticket number.
95 # DEPRECATED contains the *first* version of Perl in which the module
96 # was considered deprecated. It should only be present if the module is
97 # actually deprecated. Such modules should use deprecate.pm to
98 # issue a warning if used. E.g.:
100 # use if $] >= 5.011, 'deprecate';
103 # MAP is a hash that maps CPAN paths to their core equivalents.
104 # Each key represents a string prefix, with longest prefixes checked
105 # first. The first match causes that prefix to be replaced with the
106 # corresponding key. For example, with the following MAP:
112 # these files are mapped as shown:
114 # README becomes lib/Foo/README
115 # lib/Foo.pm becomes lib/Foo.pm
117 # The default is dependent on the type of module.
118 # For distributions which appear to be stored under ext/, it defaults to:
120 # { '' => 'ext/Foo-Bar/' }
126 # '' => 'lib/Foo/Bar/',
132 'DISTRIBUTION' => 'BINGOS/Archive-Tar-3.02_001.tar.gz',
133 'SYNCINFO' => 'jkeenan on Tue Dec 5 07:32:24 2023',
134 'FILES' => q[cpan/Archive-Tar],
135 'BUGS' => 'bug-archive-tar@rt.cpan.org',
138 qr{t/src/(long|short)/foo.txz},
143 'Attribute::Handlers' => {
144 'DISTRIBUTION' => 'RJBS/Attribute-Handlers-0.99.tar.gz',
145 'FILES' => q[dist/Attribute-Handlers],
149 'DISTRIBUTION' => 'TODDR/autodie-2.37.tar.gz',
150 'SYNCINFO' => 'jkeenan on Sat Dec 30 15:24:00 2023',
151 'FILES' => q[cpan/autodie],
156 # All these tests depend upon external
157 # modules that don't exist when we're
158 # building the core. Hence, they can
159 # never run, and should not be merged.
160 qw( t/author-critic.t
167 t/release-pod-coverage.t
168 t/release-pod-syntax.t
177 'DISTRIBUTION' => 'SMUELLER/AutoLoader-5.74.tar.gz',
178 'FILES' => q[cpan/AutoLoader],
179 'EXCLUDED' => ['t/00pod.t'],
180 'CUSTOMIZED' => ['t/02AutoSplit.t'],
184 'DISTRIBUTION' => 'RJBS/autouse-1.11.tar.gz',
185 'FILES' => q[dist/autouse],
186 'EXCLUDED' => [qr{^t/release-.*\.t}],
190 'DISTRIBUTION' => 'RJBS/base-2.23.tar.gz',
191 'FILES' => q[dist/base],
195 'DISTRIBUTION' => 'PJACKLAM/bignum-0.67.tar.gz',
196 'SYNCINFO' => 'jkeenan on Sat Dec 30 15:32:11 2023',
197 'FILES' => q[cpan/bignum],
209 'DISTRIBUTION' => 'XSAWYERX/Carp-1.50.tar.gz',
210 'FILES' => q[dist/Carp],
213 'Compress::Raw::Bzip2' => {
214 'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.206.tar.gz',
215 'SYNCINFO' => 'yorton on Tue Jul 25 20:45:42 2023',
216 'FILES' => q[cpan/Compress-Raw-Bzip2],
220 'bzip2-src/bzip2-const.patch',
221 'bzip2-src/bzip2-cpp.patch',
222 'bzip2-src/bzip2-unsigned.patch',
226 'Compress::Raw::Zlib' => {
227 'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.206.tar.gz',
228 'SYNCINFO' => 'yorton on Tue Jul 25 20:37:04 2023',
229 'FILES' => q[cpan/Compress-Raw-Zlib],
240 'Config::Perl::V' => {
241 'DISTRIBUTION' => 'HMBRAND/Config-Perl-V-0.36.tgz',
242 'SYNCINFO' => 'yorton on Sat Mar 4 10:43:06 2023',
243 'FILES' => q[cpan/Config-Perl-V],
250 'DISTRIBUTION' => 'RJBS/constant-1.33.tar.gz',
251 'FILES' => q[dist/constant],
263 'DISTRIBUTION' => 'ANDK/CPAN-2.36.tar.gz',
264 'FILES' => q[cpan/CPAN],
271 qw( lib/CPAN/Admin.pm
287 t/43distroprefspref.t
294 t/71_minimumversion.t
302 # Note: When updating CPAN-Meta the META.* files will need to be regenerated
303 # perl -Icpan/CPAN-Meta/lib Porting/makemeta
305 'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.150010.tar.gz',
306 'FILES' => q[cpan/CPAN-Meta],
308 qw[t/00-report-prereqs.t
309 t/00-report-prereqs.dd
316 'CPAN::Meta::Requirements' => {
317 'DISTRIBUTION' => 'RJBS/CPAN-Meta-Requirements-2.143.tar.gz',
318 'FILES' => q[cpan/CPAN-Meta-Requirements],
320 qw(t/00-report-prereqs.t),
321 qw(t/00-report-prereqs.dd),
322 qw(t/version-cleanup.t),
327 'CPAN::Meta::YAML' => {
328 'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-YAML-0.018.tar.gz',
329 'FILES' => q[cpan/CPAN-Meta-YAML],
331 't/00-report-prereqs.t',
332 't/00-report-prereqs.dd',
338 'DISTRIBUTION' => 'NWCLARK/Data-Dumper-2.183.tar.gz',
339 'FILES' => q[dist/Data-Dumper],
343 'DISTRIBUTION' => 'PMQS/DB_File-1.859.tar.gz',
344 'SYNCINFO' => 'jkeenan on Tue Sep 5 20:46:44 2023',
345 'FILES' => q[cpan/DB_File],
358 'DISTRIBUTION' => 'ATOOMIC/Devel-PPPort-3.68.tar.gz',
359 'FILES' => q[dist/Devel-PPPort],
361 'PPPort.pm', # we use PPPort_pm.PL instead
365 'Devel::SelfStubber' => {
366 'DISTRIBUTION' => 'FLORA/Devel-SelfStubber-1.05.tar.gz',
367 'FILES' => q[dist/Devel-SelfStubber],
368 'EXCLUDED' => [qr{^t/release-.*\.t}],
372 'DISTRIBUTION' => 'TODDR/Digest-1.20.tar.gz',
373 'FILES' => q[cpan/Digest],
374 'EXCLUDED' => ['digest-bench'],
378 'DISTRIBUTION' => 'TODDR/Digest-MD5-2.59.tar.gz',
379 'SYNCINFO' => 'root on Sat Dec 30 21:42:47 2023',
380 'FILES' => q[cpan/Digest-MD5],
381 'EXCLUDED' => [ 'rfc1321.txt', 'bin/md5sum.pl' ],
383 # https://github.com/Dual-Life/digest-md5/pull/24
392 'DISTRIBUTION' => 'MSHELOR/Digest-SHA-6.04.tar.gz',
393 'FILES' => q[cpan/Digest-SHA],
403 'DISTRIBUTION' => 'FLORA/Dumpvalue-1.17.tar.gz',
404 'FILES' => q[dist/Dumpvalue],
405 'EXCLUDED' => [qr{^t/release-.*\.t}],
409 'DISTRIBUTION' => 'DANKOGAI/Encode-3.20.tar.gz',
410 'SYNCINFO' => 'jkeenan on Fri Nov 10 15:12:07 2023',
411 'FILES' => q[cpan/Encode],
413 qw( t/whatwg-aliases.json
419 'encoding::warnings' => {
420 'DISTRIBUTION' => 'AUDREYT/encoding-warnings-0.11.tar.gz',
421 'FILES' => q[dist/encoding-warnings],
429 'DISTRIBUTION' => 'FLORA/Env-1.04.tar.gz',
430 'FILES' => q[dist/Env],
431 'EXCLUDED' => [qr{^t/release-.*\.t}],
435 'DISTRIBUTION' => 'LEONT/experimental-0.031.tar.gz',
436 'FILES' => q[cpan/experimental],
437 'EXCLUDED' => [qr{^xt/}],
441 'DISTRIBUTION' => 'TODDR/Exporter-5.78.tar.gz',
442 'FILES' => q[dist/Exporter],
450 'ExtUtils::CBuilder' => {
451 'DISTRIBUTION' => 'AMBS/ExtUtils-CBuilder-0.280236.tar.gz',
452 'FILES' => q[dist/ExtUtils-CBuilder],
459 'ExtUtils::Constant' => {
461 'DISTRIBUTION' => 'NWCLARK/ExtUtils-Constant-0.25.tar.gz',
462 'FILES' => q[cpan/ExtUtils-Constant],
464 # https://rt.cpan.org/Ticket/Display.html?id=142181
465 'lib/ExtUtils/Constant/Base.pm',
467 # https://rt.cpan.org/Public/Bug/Display.html?id=132995
468 # https://rt.cpan.org/Ticket/Display.html?id=142183
472 qw( lib/ExtUtils/Constant/Aaargh56Hash.pm
473 examples/perl_keyword.pl
474 examples/perl_regcomp_posix_keyword.pl
479 'ExtUtils::Install' => {
480 'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.22.tar.gz',
481 'FILES' => q[cpan/ExtUtils-Install],
483 qw( t/lib/Test/Builder.pm
484 t/lib/Test/Builder/Module.pm
493 'ExtUtils::MakeMaker' => {
494 'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.70.tar.gz',
495 'SYNCINFO' => 'yorton on Sun Mar 26 16:20:23 2023',
496 'FILES' => q[cpan/ExtUtils-MakeMaker],
500 qr{^t/Liblist_Kid.t},
505 'lib/ExtUtils/MakeMaker/version/vpp.pm',
509 'ExtUtils::PL2Bat' => {
510 'DISTRIBUTION' => 'LEONT/ExtUtils-PL2Bat-0.005.tar.gz',
511 'FILES' => q[cpan/ExtUtils-PL2Bat],
518 'ExtUtils::Manifest' => {
519 'DISTRIBUTION' => 'ETHER/ExtUtils-Manifest-1.75.tar.gz',
520 'FILES' => q[cpan/ExtUtils-Manifest],
522 qr(^t/00-report-prereqs),
527 'ExtUtils::ParseXS' => {
528 'DISTRIBUTION' => 'LEONT/ExtUtils-ParseXS-3.51.tar.gz',
529 'FILES' => q[dist/ExtUtils-ParseXS],
533 'DISTRIBUTION' => 'BINGOS/File-Fetch-1.04.tar.gz',
534 'FILES' => q[cpan/File-Fetch],
538 'DISTRIBUTION' => 'JKEENAN/File-Path-2.18.tar.gz',
539 'FILES' => q[cpan/File-Path],
547 'DISTRIBUTION' => 'ETHER/File-Temp-0.2311.tar.gz',
548 'FILES' => q[cpan/File-Temp],
554 qr[^t/00-report-prereqs],
559 'Filter::Simple' => {
560 'DISTRIBUTION' => 'SMUELLER/Filter-Simple-0.94.tar.gz',
561 'FILES' => q[dist/Filter-Simple],
567 'Filter::Util::Call' => {
568 'DISTRIBUTION' => 'RURBAN/Filter-1.64.tar.gz',
569 'FILES' => q[cpan/Filter-Util-Call
580 .github/workflows/testsuite.yml
596 t/z_perl_minimum_version.t
602 'Call/' => 'cpan/Filter-Util-Call/',
603 't/filter-util.pl' => 'cpan/Filter-Util-Call/filter-util.pl',
604 'perlfilter.pod' => 'pod/perlfilter.pod',
605 '' => 'cpan/Filter-Util-Call/',
608 qw(pod/perlfilter.pod)
613 'DISTRIBUTION' => 'TODDR/FindBin-1.54.tar.gz',
614 'FILES' => q[dist/FindBin],
618 'DISTRIBUTION' => 'JV/Getopt-Long-2.57.tar.gz',
619 'SYNCINFO' => 'jkeenan on Sat Nov 11 13:09:21 2023',
620 'FILES' => q[cpan/Getopt-Long],
630 'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.088.tar.gz',
631 'SYNCINFO' => 'jkeenan on Sat Aug 12 14:49:17 2023',
632 'FILES' => q[cpan/HTTP-Tiny],
634 'corpus/snake-oil.crt', # only used by 210_live_ssl.t
635 't/00-report-prereqs.t',
636 't/00-report-prereqs.dd',
638 't/200_live_local_ip.t',
646 'DISTRIBUTION' => 'FLORA/I18N-Collate-1.02.tar.gz',
647 'FILES' => q[dist/I18N-Collate],
648 'EXCLUDED' => [qr{^t/release-.*\.t}],
651 'I18N::LangTags' => {
652 'FILES' => q[dist/I18N-LangTags],
656 'DISTRIBUTION' => 'XSAWYERX/if-0.0608.tar.gz',
657 'FILES' => q[dist/if],
661 'DISTRIBUTION' => 'TODDR/IO-1.55.tar.gz',
662 'FILES' => q[dist/IO],
663 'EXCLUDED' => ['t/test.pl'],
667 'DISTRIBUTION' => 'PMQS/IO-Compress-2.206.tar.gz',
668 'SYNCINFO' => 'yorton on Tue Jul 25 20:51:33 2023',
669 'MAIN_MODULE' => 'IO::Compress::Base',
670 'FILES' => q[cpan/IO-Compress],
676 't/010examples-bzip2.t',
677 't/010examples-zlib.t',
682 'IO::Socket::IP' => {
683 'DISTRIBUTION' => 'PEVANS/IO-Socket-IP-0.42.tar.gz',
684 'SYNCINFO' => 'jkeenan on Wed Aug 16 21:34:20 2023',
685 'FILES' => q[cpan/IO-Socket-IP],
692 'DISTRIBUTION' => 'TOMHUGHES/IO-Zlib-1.14.tar.gz',
693 'FILES' => q[cpan/IO-Zlib],
697 'DISTRIBUTION' => 'BINGOS/IPC-Cmd-1.04.tar.gz',
698 'FILES' => q[cpan/IPC-Cmd],
702 'DISTRIBUTION' => 'MHX/IPC-SysV-2.09.tar.gz',
703 'FILES' => q[cpan/IPC-SysV],
712 'DISTRIBUTION' => 'ISHIGAKI/JSON-PP-4.16.tar.gz',
713 'FILES' => q[cpan/JSON-PP],
717 'DISTRIBUTION' => 'SMUELLER/lib-0.63.tar.gz',
718 'FILES' => q[dist/lib],
727 'DISTRIBUTION' => 'SHAY/libnet-3.15.tar.gz',
728 'SYNCINFO' => 'yorton on Mon Mar 20 20:48:38 2023',
729 'MAIN_MODULE' => 'Net::Cmd',
730 'FILES' => q[cpan/libnet],
743 'Locale::Maketext' => {
744 'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.33.tar.gz',
745 'FILES' => q[dist/Locale-Maketext],
755 'Locale::Maketext::Simple' => {
756 'DISTRIBUTION' => 'JESSE/Locale-Maketext-Simple-0.21.tar.gz',
757 'FILES' => q[cpan/Locale-Maketext-Simple],
760 qw( lib/Locale/Maketext/Simple.pm )
765 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-2.003002.tar.gz',
766 'SYNCINFO' => 'corion on Thu Jan 11 20:23:12 2024',
767 'SYNCINFO' => 'book on Tue Dec 26 22:44:58 2023',
768 'FILES' => q[cpan/Math-BigInt],
778 'Math::BigInt::FastCalc' => {
779 'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.5018.tar.gz',
780 'SYNCINFO' => 'corion on Thu Jan 11 20:24:21 2024',
781 'SYNCINFO' => 'jkeenan on Sat Dec 30 14:31:28 2023',
782 'SYNCINFO' => 'jkeenan on Sun Sep 24 08:29:56 2023',
783 'FILES' => q[cpan/Math-BigInt-FastCalc],
787 qr{^t/Math/BigInt/Lib/TestUtil.pm},
792 # instead we use the versions of these test
793 # files that come with Math::BigInt:
805 'DISTRIBUTION' => 'ZEFRAM/Math-Complex-1.59.tar.gz',
806 'FILES' => q[dist/Math-Complex],
815 'DISTRIBUTION' => 'ARISTOTLE/Memoize-1.16.tar.gz',
816 'FILES' => q[cpan/Memoize],
817 'EXCLUDED' => [ qr{^inc/} ],
821 'DISTRIBUTION' => 'CAPOEIRAB/MIME-Base64-3.16.tar.gz',
822 'FILES' => q[cpan/MIME-Base64],
823 'EXCLUDED' => [ qr{^xt/}, 'benchmark', 'benchmark-qp', qr{^t/00-report-prereqs} ],
825 # https://github.com/Dual-Life/mime-base64/pull/17
827 'lib/MIME/Base64.pm',
829 'lib/MIME/QuotedPrint.pm'
833 'Module::CoreList' => {
834 'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20231230.tar.gz',
835 'FILES' => q[dist/Module-CoreList],
839 'DISTRIBUTION' => 'BINGOS/Module-Load-0.36.tar.gz',
840 'FILES' => q[cpan/Module-Load],
843 'Module::Load::Conditional' => {
844 'DISTRIBUTION' => 'BINGOS/Module-Load-Conditional-0.74.tar.gz',
845 'FILES' => q[cpan/Module-Load-Conditional],
848 'Module::Loaded' => {
849 'DISTRIBUTION' => 'BINGOS/Module-Loaded-0.08.tar.gz',
850 'FILES' => q[cpan/Module-Loaded],
853 'Module::Metadata' => {
854 'DISTRIBUTION' => 'ETHER/Module-Metadata-1.000038.tar.gz',
855 'FILES' => q[cpan/Module-Metadata],
857 qw(t/00-report-prereqs.t),
858 qw(t/00-report-prereqs.dd),
865 'DISTRIBUTION' => 'RURBAN/Net-Ping-2.75.tar.gz',
866 'FILES' => q[dist/Net-Ping],
870 qw(t/020_external.t),
872 qw(t/601_pod-coverage.t),
873 qw(t/602_kwalitee.t),
875 qw(t/604_manifest.t),
876 qw(t/appveyor-test.bat),
882 'DISTRIBUTION' => 'NEILB/NEXT-0.69.tar.gz',
883 'FILES' => q[cpan/NEXT],
884 'EXCLUDED' => [qr{^demo/}],
888 'DISTRIBUTION' => 'BINGOS/Params-Check-0.38.tar.gz',
889 'FILES' => q[cpan/Params-Check],
893 'DISTRIBUTION' => 'CORION/parent-0.241.tar.gz',
894 'FILES' => q[cpan/parent],
901 'DISTRIBUTION' => 'XSAWYERX/PathTools-3.75.tar.gz',
902 'MAIN_MODULE' => 'File::Spec',
903 'FILES' => q[dist/PathTools],
906 qw( t/rel2abs_vs_symlink.t),
911 'DISTRIBUTION' => 'DAGOLDEN/Perl-OSType-1.010.tar.gz',
912 'FILES' => q[cpan/Perl-OSType],
913 'EXCLUDED' => [qw(tidyall.ini), qr/^xt/, qr{^t/00-}],
917 'DISTRIBUTION' => 'ETHER/perlfaq-5.20230812.tar.gz',
918 'SYNCINFO' => 'jkeenan on Wed Aug 16 18:13:51 2023',
919 'FILES' => q[cpan/perlfaq],
920 'EXCLUDED' => [ qr/^inc/, qr/^xt/, qr{^t/00-} ],
923 'PerlIO::via::QuotedPrint' => {
924 'DISTRIBUTION' => 'SHAY/PerlIO-via-QuotedPrint-0.10.tar.gz',
925 'FILES' => q[cpan/PerlIO-via-QuotedPrint],
929 'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.76.tar.gz',
930 'SYNCINFO' => 'corion on Tue Jan 9 20:34:18 2024',
931 'FILES' => q[cpan/Pod-Checker],
935 'DISTRIBUTION' => 'NEILB/Pod-Escapes-1.07.tar.gz',
936 'FILES' => q[cpan/Pod-Escapes],
940 'DISTRIBUTION' => 'MALLEN/Pod-Perldoc-3.28.tar.gz',
941 'FILES' => q[cpan/Pod-Perldoc],
943 # Note that we use the CPAN-provided Makefile.PL, since it
944 # contains special handling of the installation of perldoc.pod
947 # In blead, the perldoc executable is generated by perldoc.PL
949 # XXX We can and should fix this, but clean up the DRY-failure in
953 # files only used for manual testing
956 # https://rt.cpan.org/Ticket/Display.html?id=116827
957 't/02_module_pod_output.t'
961 # [rt.cpan.org #88204], [rt.cpan.org #120229]
962 'lib/Pod/Perldoc.pm',
967 'DISTRIBUTION' => 'KHW/Pod-Simple-3.45.tar.gz',
968 'SYNCINFO' => 'jkeenan on Wed Aug 2 19:32:39 2023',
969 'FILES' => q[cpan/Pod-Simple],
977 'DISTRIBUTION' => 'MAREKR/Pod-Usage-2.03.tar.gz',
978 'FILES' => q[cpan/Pod-Usage],
986 'DISTRIBUTION' => 'RRA/podlators-5.01.tar.gz',
987 'MAIN_MODULE' => 'Pod::Man',
988 'FILES' => q[cpan/podlators pod/perlpodstyle.pod],
990 qr{^\.github/dependabot\.yml},
991 qr{^\.github/workflows/build\.yaml},
995 '' => 'cpan/podlators/',
996 # this file lives outside the cpan/ directory
997 'pod/perlpodstyle.pod' => 'pod/perlpodstyle.pod',
1002 'DISTRIBUTION' => 'RGARCIA/Safe-2.35.tar.gz',
1003 'FILES' => q[dist/Safe],
1007 'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.63.tar.gz',
1008 'FILES' => q[cpan/Scalar-List-Utils],
1012 'DISTRIBUTION' => 'DAGOLDEN/Search-Dict-1.07.tar.gz',
1013 'FILES' => q[dist/Search-Dict],
1017 'DISTRIBUTION' => 'SMUELLER/SelfLoader-1.24.tar.gz',
1018 'FILES' => q[dist/SelfLoader],
1019 'EXCLUDED' => ['t/00pod.t'],
1023 'DISTRIBUTION' => 'PEVANS/Socket-2.037.tar.gz',
1024 'FILES' => q[cpan/Socket],
1025 'EXCLUDED' => ['.editorconfig'],
1029 'DISTRIBUTION' => 'NWCLARK/Storable-3.25.tar.gz',
1030 'FILES' => q[dist/Storable],
1037 'DISTRIBUTION' => 'SAPER/Sys-Syslog-0.36.tar.gz',
1038 'FILES' => q[cpan/Sys-Syslog],
1053 'Term::ANSIColor' => {
1054 'DISTRIBUTION' => 'RRA/Term-ANSIColor-5.01.tar.gz',
1055 'FILES' => q[cpan/Term-ANSIColor],
1062 qw( t/module/aliases-env.t ),
1067 'DISTRIBUTION' => 'JSTOWE/Term-Cap-1.18.tar.gz',
1068 'FILES' => q[cpan/Term-Cap],
1071 'Term::Complete' => {
1072 'DISTRIBUTION' => 'FLORA/Term-Complete-1.402.tar.gz',
1073 'FILES' => q[dist/Term-Complete],
1074 'EXCLUDED' => [qr{^t/release-.*\.t}],
1077 'Term::ReadLine' => {
1078 'DISTRIBUTION' => 'FLORA/Term-ReadLine-1.14.tar.gz',
1079 'FILES' => q[dist/Term-ReadLine],
1080 'EXCLUDED' => [qr{^t/release-.*\.t}],
1084 'DISTRIBUTION' => 'EXODIST/Term-Table-0.018.tar.gz',
1085 'SYNCINFO' => 'jkeenan on Wed Nov 1 19:16:24 2023',
1086 'FILES' => q[cpan/Term-Table],
1093 'DISTRIBUTION' => 'JESSE/Test-1.26.tar.gz',
1094 'FILES' => q[dist/Test],
1097 'Test::Harness' => {
1098 'DISTRIBUTION' => 'LEONT/Test-Harness-3.48.tar.gz',
1099 'SYNCINFO' => 'gknop on Sat Oct 21 15:01:02 2023',
1100 'FILES' => q[cpan/Test-Harness],
1105 MANIFEST.CUMMULATIVE
1115 'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302198.tar.gz',
1116 'SYNCINFO' => 'jkeenan on Fri Dec 1 07:01:54 2023',
1117 'FILES' => q[cpan/Test-Simple],
1124 t/zzz-check-breaks.t
1130 'DISTRIBUTION' => 'EXODIST/Test2-Suite-0.000159.tar.gz',
1131 'SYNCINFO' => 'jkeenan on Wed Nov 1 20:18:33 2023',
1132 'FILES' => q[cpan/Test2-Suite],
1138 # https://github.com/Test-More/Test2-Suite/issues/208
1139 't/acceptance/Workflow-Acceptance.t',
1144 'DISTRIBUTION' => 'FLORA/Text-Abbrev-1.02.tar.gz',
1145 'FILES' => q[dist/Text-Abbrev],
1146 'EXCLUDED' => [qr{^t/release-.*\.t}],
1149 'Text::Balanced' => {
1150 'DISTRIBUTION' => 'SHAY/Text-Balanced-2.06.tar.gz',
1151 'FILES' => q[cpan/Text-Balanced],
1154 'Text::ParseWords' => {
1155 'DISTRIBUTION' => 'NEILB/Text-ParseWords-3.31.tar.gz',
1156 'FILES' => q[cpan/Text-ParseWords],
1159 'Text-Tabs+Wrap' => {
1160 'DISTRIBUTION' => 'ARISTOTLE/Text-Tabs+Wrap-2023.0511.tar.gz',
1161 'MAIN_MODULE' => 'Text::Tabs',
1162 'FILES' => q[cpan/Text-Tabs],
1168 '' => 'cpan/Text-Tabs/',
1169 'lib.modern/Text/Tabs.pm' => 'cpan/Text-Tabs/lib/Text/Tabs.pm',
1170 'lib.modern/Text/Wrap.pm' => 'cpan/Text-Tabs/lib/Text/Wrap.pm',
1174 # Jerry Hedden does take patches that are applied to blead first, even
1175 # though that can be hard to discern from the Git history; so it's
1176 # correct for this (and Thread::Semaphore, threads, and threads::shared)
1177 # to be under dist/ rather than cpan/
1178 'Thread::Queue' => {
1179 'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.13.tar.gz',
1180 'FILES' => q[dist/Thread-Queue],
1190 'Thread::Semaphore' => {
1191 'DISTRIBUTION' => 'JDHEDDEN/Thread-Semaphore-2.13.tar.gz',
1192 'FILES' => q[dist/Thread-Semaphore],
1194 qw( examples/semaphore.pl
1203 'DISTRIBUTION' => 'JDHEDDEN/threads-2.21.tar.gz',
1204 'FILES' => q[dist/threads],
1213 'threads::shared' => {
1214 'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.59.tar.gz',
1215 'FILES' => q[dist/threads-shared],
1217 qw( examples/class.pl
1225 'DISTRIBUTION' => 'TODDR/Tie-File-1.07.tar.gz',
1226 'FILES' => q[dist/Tie-File],
1230 'DISTRIBUTION' => 'ETHER/Tie-RefHash-1.40.tar.gz',
1231 'FILES' => q[cpan/Tie-RefHash],
1239 'DISTRIBUTION' => 'ATOOMIC/Time-HiRes-1.9764.tar.gz',
1240 'FILES' => q[dist/Time-HiRes],
1244 'DISTRIBUTION' => 'DROLSKY/Time-Local-1.35.tar.gz',
1245 'FILES' => q[cpan/Time-Local],
1250 qw( CODE_OF_CONDUCT.md
1255 t/00-report-prereqs.t
1256 t/00-report-prereqs.dd
1262 'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3401.tar.gz',
1263 'FILES' => q[cpan/Time-Piece],
1264 'EXCLUDED' => [ qw[reverse_deps.txt] ],
1266 # https://github.com/Dual-Life/Time-Piece/pull/64
1272 'Unicode::Collate' => {
1273 'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-1.31.tar.gz',
1274 'FILES' => q[cpan/Unicode-Collate],
1286 'Unicode::Normalize' => {
1287 'DISTRIBUTION' => 'KHW/Unicode-Normalize-1.26.tar.gz',
1288 'FILES' => q[dist/Unicode-Normalize],
1299 'DISTRIBUTION' => 'LEONT/version-0.9930.tar.gz',
1300 'SYNCINFO' => 'LeoNerd on Mon Sep 18 21:49:09 2023',
1301 'FILES' => q[cpan/version vutil.c vutil.h vxs.inc],
1304 'vutil/Makefile.PL',
1312 # When adding the CPAN-distributed files for version.pm, it is necessary
1313 # to delete an entire block out of lib/version.pm, since that code is
1314 # only necessary with the CPAN release.
1323 '' => 'cpan/version/',
1337 'DISTRIBUTION' => "JDB/Win32-0.59.tar.gz",
1338 'FILES' => q[cpan/Win32],
1341 'Win32API::File' => {
1342 'DISTRIBUTION' => 'CHORNY/Win32API-File-0.1203.tar.gz',
1343 'FILES' => q[cpan/Win32API-File],
1347 # https://rt.cpan.org/Ticket/Display.html?id=127837
1356 'DISTRIBUTION' => 'SAPER/XSLoader-0.24.tar.gz',
1357 'FILES' => q[dist/XSLoader],
1367 'XSLoader.pm', # we use XSLoader_pm.PL
1371 # this pseudo-module represents all the files under ext/ and lib/
1372 # that aren't otherwise claimed. This means that the following two
1373 # commands will check that every file under ext/ and lib/ is
1374 # accounted for, and that there are no duplicates:
1376 # perl Porting/Maintainers --checkmani lib ext
1377 # perl Porting/Maintainers --checkmani
1387 ext/ExtUtils-Miniperl/
1394 ext/Hash-Util-FieldHash/
1402 ext/PerlIO-encoding/
1410 ext/Tie-Hash-NamedCapture/
1421 lib/AnyDBM_File.{pm,t}
1422 lib/Benchmark.{pm,t}
1423 lib/B/Deparse{.pm,.t,-*.t}
1426 lib/Class/Struct.{pm,t}
1428 lib/Config/Extensions.{pm,t}
1432 lib/DirHandle.{pm,t}
1434 lib/ExtUtils/Embed.pm
1435 lib/ExtUtils/XSSymSet.pm
1436 lib/ExtUtils/t/Embed.t
1437 lib/ExtUtils/typemap
1438 lib/File/Basename.{pm,t}
1439 lib/File/Compare.{pm,t}
1440 lib/File/Copy.{pm,t}
1441 lib/File/stat{.pm,.t,-7896.t}
1442 lib/FileHandle.{pm,t}
1443 lib/Getopt/Std.{pm,t}
1446 lib/meta_notation.{pm,t}
1447 lib/Net/hostent.{pm,t}
1448 lib/Net/netent.{pm,t}
1449 lib/Net/protoent.{pm,t}
1450 lib/Net/servent.{pm,t}
1453 lib/SelectSaver.{pm,t}
1462 lib/Tie/Scalar.{pm,t}
1463 lib/Tie/StdHandle.pm
1464 lib/Tie/SubstrHash.{pm,t}
1465 lib/Time/gmtime.{pm,t}
1466 lib/Time/localtime.{pm,t}
1470 lib/Unicode/testnorm.t
1471 lib/Unicode/UCD.{pm,t}
1472 lib/User/grent.{pm,t}
1473 lib/User/pwent.{pm,t}
1480 lib/charnames.{pm,t}
1481 lib/dbm_filter_util.pl
1483 lib/diagnostics.{pm,t}
1493 lib/locale_threads.t
1495 lib/overload/numbers.pm
1496 lib/overloading.{pm,t}
1497 lib/overload{.pm,.t,64.t}
1507 lib/vars{.pm,.t,_carp.t}
1515 for my $mod_name ( keys %Modules ) {
1516 my $data = $Modules{$mod_name};
1517 $data->{CPAN} = !!$data->{DISTRIBUTION};
1518 my (@files)= split /\s+/, $data->{FILES};
1519 if (@files and $files[0]=~s!^(cpan|dist)/!!) {
1520 $DistName{$files[0]} = $mod_name;
1521 $DistName{"$1/$files[0]"} = $mod_name;
1525 # legacy UPSTREAM flag
1526 for ( keys %Modules ) {
1527 # Keep any existing UPSTREAM flag so that "overrides" can be applied
1528 next if exists $Modules{$_}{UPSTREAM};
1530 if ($_ eq '_PERLLIB' or $Modules{$_}{FILES} =~ m{^\s*(?:dist|ext|lib)/}) {
1531 $Modules{$_}{UPSTREAM} = 'blead';
1533 elsif ($Modules{$_}{FILES} =~ m{^\s*cpan/}) {
1534 $Modules{$_}{UPSTREAM} = 'cpan';
1537 warn "Unexpected location of FILES for module $_: $Modules{$_}{FILES}";
1542 # legacy MAINTAINER field
1543 for ( keys %Modules ) {
1544 # Keep any existing MAINTAINER flag so that "overrides" can be applied
1545 next if exists $Modules{$_}{MAINTAINER};
1547 if ($Modules{$_}{UPSTREAM} eq 'blead') {
1548 $Modules{$_}{MAINTAINER} = 'P5P';
1549 $Maintainers{P5P} = 'perl5-porters <perl5-porters@perl.org>';
1551 elsif (exists $Modules{$_}{DISTRIBUTION}) {
1552 (my $pause_id = $Modules{$_}{DISTRIBUTION}) =~ s{/.*$}{};
1553 $Modules{$_}{MAINTAINER} = $pause_id;
1554 $Maintainers{$pause_id} = "<$pause_id\@cpan.org>";
1557 warn "No DISTRIBUTION for non-blead module $_";