1#!perl
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
7# and in CPAN.
8
9package Maintainers;
10
11use utf8;
12use File::Glob qw(:case);
13
14# IGNORABLE: files which, if they appear in the root of a CPAN
15# distribution, need not appear in core (i.e. core-cpan-diff won't
16# complain if it can't find them)
17
18@IGNORABLE = qw(
19    .cvsignore .dualLivedDiffConfig .gitignore .github .perlcriticrc .perltidyrc
20    .travis.yml ANNOUNCE Announce Artistic AUTHORS BENCHMARK BUGS Build.PL
21    CHANGELOG ChangeLog Changelog CHANGES Changes CONTRIBUTING CONTRIBUTING.md
22    CONTRIBUTING.mkdn COPYING Copying cpanfile CREDITS dist.ini GOALS HISTORY
23    INSTALL INSTALL.SKIP LICENCE LICENSE Makefile.PL MANIFEST MANIFEST.SKIP
24    META.json META.yml MYMETA.json MYMETA.yml NEW NEWS NOTES perlcritic.rc
25    ppport.h README README.md README.pod README.PATCHING SIGNATURE THANKS TODO
26    Todo VERSION WHATSNEW
27);
28
29# Each entry in the  %Modules hash roughly represents a distribution,
30# except when DISTRIBUTION is set, where it *exactly* represents a single
31# CPAN distribution.
32
33# The keys of %Modules are human descriptions of the distributions, and
34# may not exactly match a module or distribution name. Distributions
35# which have an obvious top-level module associated with them will usually
36# have a key named for that module, e.g. 'Archive::Extract' for
37# Archive-Extract-N.NN.tar.gz; the remaining keys are likely to be based
38# on the name of the distribution, e.g. 'Locale-Codes' for
39# Locale-Codes-N.NN.tar.gz'.
40
41# UPSTREAM indicates where patches should go.  This is generally now
42# inferred from the FILES: modules with files in dist/, ext/ and lib/
43# are understood to have UPSTREAM 'blead', meaning that the copy of the
44# module in the blead sources is to be considered canonical, while
45# modules with files in cpan/ are understood to have UPSTREAM 'cpan',
46# meaning that the module on CPAN is to be patched first.
47
48# MAINTAINER has previously been used to indicate who the current maintainer
49# of the module is, but this is no longer stated explicitly. It is now
50# understood to be either the Perl 5 Porters if UPSTREAM is 'blead', or else
51# the CPAN author whose PAUSE user ID forms the first part of the DISTRIBUTION
52# value, e.g. 'BINGOS' in the case of 'BINGOS/Archive-Tar-2.00.tar.gz'.
53# (PAUSE's View Permissions page may be consulted to find other authors who
54# have owner or co-maint permissions for the module in question.)
55
56# FILES is a list of filenames, glob patterns, and directory
57# names to be recursed down, which collectively generate a complete list
58# of the files associated with the distribution.
59
60# BUGS is an email or url to post bug reports.  For modules with
61# UPSTREAM => 'blead', use perl5-porters@perl.org.  rt.cpan.org
62# appears to automatically provide a URL for CPAN modules; any value
63# given here overrides the default:
64# http://rt.cpan.org/Public/Dist/Display.html?Name=$ModuleName
65
66# DISTRIBUTION names the tarball on CPAN which (allegedly) the files
67# included in core are derived from. Note that the file's version may not
68# necessarily match the newest version on CPAN.  (For dist/ distributions,
69# which are blead-first, a request should be placed with the releaser(s) to
70# upload the corresponding cpan release, and the entry in this file should
71# only be updated when that release has been done.)
72
73# MAIN_MODULE names the top-level module by which the tarball is indexed on
74# CPAN in cases where this differs from the distribution's key in %Modules.
75# (If it is equal then MAIN_MODULE is optional and should be omitted.)
76
77# EXCLUDED is a list of files to be excluded from a CPAN tarball before
78# comparing the remaining contents with core. Each item can either be a
79# full pathname (eg 't/foo.t') or a pattern (e.g. qr{^t/}).
80# It defaults to the empty list.
81
82# CUSTOMIZED is a list of files that have been customized within the
83# Perl core.  Use this whenever patching a cpan upstream distribution
84# or whenever we expect to have a file that differs from the tarball.
85# If the file in blead matches the file in the tarball from CPAN,
86# Porting/core-cpan-diff will warn about it, as it indicates an expected
87# customization might have been lost when updating from upstream.  The
88# path should be relative to the distribution directory.  If the upstream
89# distribution should be modified to incorporate the change then be sure
90# to raise a ticket for it on rt.cpan.org and add a comment alongside the
91# list of CUSTOMIZED files noting the ticket number.
92
93# DEPRECATED contains the *first* version of Perl in which the module
94# was considered deprecated.  It should only be present if the module is
95# actually deprecated.  Such modules should use deprecate.pm to
96# issue a warning if used.  E.g.:
97#
98#     use if $] >= 5.011, 'deprecate';
99#
100
101# MAP is a hash that maps CPAN paths to their core equivalents.
102# Each key represents a string prefix, with longest prefixes checked
103# first. The first match causes that prefix to be replaced with the
104# corresponding key. For example, with the following MAP:
105#   {
106#     'lib/'     => 'lib/',
107#     ''     => 'lib/Foo/',
108#   },
109#
110# these files are mapped as shown:
111#
112#    README     becomes lib/Foo/README
113#    lib/Foo.pm becomes lib/Foo.pm
114#
115# The default is dependent on the type of module.
116# For distributions which appear to be stored under ext/, it defaults to:
117#
118#   { '' => 'ext/Foo-Bar/' }
119#
120# otherwise, it's
121#
122#   {
123#     'lib/'     => 'lib/',
124#     ''     => 'lib/Foo/Bar/',
125#   }
126
127%Modules = (
128
129    'Archive::Tar' => {
130        'DISTRIBUTION' => 'BINGOS/Archive-Tar-2.40.tar.gz',
131        'FILES'        => q[cpan/Archive-Tar],
132        'BUGS'         => 'bug-archive-tar@rt.cpan.org',
133        'EXCLUDED'     => [
134            qw(t/07_ptardiff.t),
135            qr{t/src/(long|short)/foo.txz},
136        ],
137    },
138
139    'Attribute::Handlers' => {
140        'DISTRIBUTION' => 'RJBS/Attribute-Handlers-0.99.tar.gz',
141        'FILES'        => q[dist/Attribute-Handlers],
142    },
143
144    'autodie' => {
145        'DISTRIBUTION' => 'TODDR/autodie-2.36.tar.gz',
146        'FILES'        => q[cpan/autodie],
147        'EXCLUDED'     => [
148            qr{benchmarks},
149            qr{README\.md},
150            qr{^xt/},
151            # All these tests depend upon external
152            # modules that don't exist when we're
153            # building the core.  Hence, they can
154            # never run, and should not be merged.
155            qw( t/author-critic.t
156                t/critic.t
157                t/fork.t
158                t/kwalitee.t
159                t/lex58.t
160                t/pod-coverage.t
161                t/pod.t
162                t/release-pod-coverage.t
163                t/release-pod-syntax.t
164                t/socket.t
165                t/system.t
166                t/no-all.t
167                )
168        ],
169    },
170
171    'AutoLoader' => {
172        'DISTRIBUTION' => 'SMUELLER/AutoLoader-5.74.tar.gz',
173        'FILES'        => q[cpan/AutoLoader],
174        'EXCLUDED'     => ['t/00pod.t'],
175        'CUSTOMIZED'   => ['t/02AutoSplit.t'],
176    },
177
178    'autouse' => {
179        'DISTRIBUTION' => 'RJBS/autouse-1.11.tar.gz',
180        'FILES'        => q[dist/autouse],
181        'EXCLUDED'     => [qr{^t/release-.*\.t}],
182    },
183
184    'base' => {
185        'DISTRIBUTION' => 'RJBS/base-2.23.tar.gz',
186        'FILES'        => q[dist/base],
187    },
188
189    'bignum' => {
190        'DISTRIBUTION' => 'PJACKLAM/bignum-0.66.tar.gz',
191        'FILES'        => q[cpan/bignum],
192        'EXCLUDED'     => [
193            qr{^xt/},
194            qr{^t/author-},
195            qr{^t/release-},
196            qw( t/00sig.t
197                t/01load.t
198                ),
199        ],
200    },
201
202    'Carp' => {
203        'DISTRIBUTION' => 'XSAWYERX/Carp-1.50.tar.gz',
204        'FILES'        => q[dist/Carp],
205    },
206
207    'Compress::Raw::Bzip2' => {
208        'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.204.tar.gz',
209        'FILES'        => q[cpan/Compress-Raw-Bzip2],
210        'EXCLUDED'     => [
211            qr{^t/Test/},
212            qr{^t/meta},
213            'bzip2-src/bzip2-const.patch',
214            'bzip2-src/bzip2-cpp.patch',
215            'bzip2-src/bzip2-unsigned.patch',
216        ],
217        'CUSTOMIZED'   => [
218            # https://github.com/pmqs/Compress-Raw-Bzip2/issues/11
219            'Bzip2.xs',
220            'lib/Compress/Raw/Bzip.pm'
221        ],
222    },
223
224    'Compress::Raw::Zlib' => {
225        'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.204.tar.gz',
226        'FILES'    => q[cpan/Compress-Raw-Zlib],
227        'EXCLUDED' => [
228            qr{^examples/},
229            qr{^t/Test/},
230            qr{^t/meta},
231            qw( t/000prereq.t
232                t/99pod.t
233                ),
234        ],
235        'CUSTOMIZED' => [
236            # https://github.com/pmqs/Compress-Raw-Zlib/issues/23
237            'lib/Compress/Raw/Zlib.pm',
238            'Zlib.xs'
239        ],
240    },
241
242    'Config::Perl::V' => {
243        'DISTRIBUTION' => 'HMBRAND/Config-Perl-V-0.36.tgz',
244        'SYNCINFO'     => 'yorton on Sat Mar  4 10:43:06 2023',
245        'FILES'        => q[cpan/Config-Perl-V],
246        'EXCLUDED'     => [qw(
247		examples/show-v.pl
248		)],
249    },
250
251    'constant' => {
252        'DISTRIBUTION' => 'RJBS/constant-1.33.tar.gz',
253        'FILES'        => q[dist/constant],
254        'EXCLUDED'     => [
255            qw( t/00-load.t
256                t/more-tests.t
257                t/pod-coverage.t
258                t/pod.t
259                eg/synopsis.pl
260                ),
261        ],
262    },
263
264    'CPAN' => {
265        'DISTRIBUTION' => 'ANDK/CPAN-2.36.tar.gz',
266        'FILES'        => q[cpan/CPAN],
267        'EXCLUDED'     => [
268            qr{^distroprefs/},
269            qr{^inc/Test/},
270            qr{^t/CPAN/},
271            qr{^t/data/},
272            qr{^t/97-},
273            qw( lib/CPAN/Admin.pm
274                scripts/cpan-mirrors
275                PAUSE2015.pub
276                PAUSE2019.pub
277                PAUSE2021.pub
278                SlayMakefile
279                t/00signature.t
280                t/04clean_load.t
281                t/12cpan.t
282                t/13tarzip.t
283                t/14forkbomb.t
284                t/30shell.coverage
285                t/30shell.t
286                t/31sessions.t
287                t/41distribution.t
288                t/42distroprefs.t
289                t/43distroprefspref.t
290                t/44cpanmeta.t
291                t/50pod.t
292                t/51pod.t
293                t/52podcover.t
294                t/60credentials.t
295                t/70_critic.t
296                t/71_minimumversion.t
297                t/local_utils.pm
298                t/perlcriticrc
299                t/yaml_code.yml
300                ),
301        ],
302    },
303
304    # Note: When updating CPAN-Meta the META.* files will need to be regenerated
305    # perl -Icpan/CPAN-Meta/lib Porting/makemeta
306    'CPAN::Meta' => {
307        'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.150010.tar.gz',
308        'FILES'        => q[cpan/CPAN-Meta],
309        'EXCLUDED'     => [
310            qw[t/00-report-prereqs.t
311               t/00-report-prereqs.dd
312              ],
313            qr{^xt},
314            qr{^history},
315        ],
316    },
317
318    'CPAN::Meta::Requirements' => {
319        'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-Requirements-2.140.tar.gz',
320        'FILES'        => q[cpan/CPAN-Meta-Requirements],
321        'EXCLUDED'     => [
322            qw(t/00-report-prereqs.t),
323            qw(t/00-report-prereqs.dd),
324            qw(t/version-cleanup.t),
325            qr{^xt},
326        ],
327    },
328
329    'CPAN::Meta::YAML' => {
330        'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-YAML-0.018.tar.gz',
331        'FILES'        => q[cpan/CPAN-Meta-YAML],
332        'EXCLUDED'     => [
333            't/00-report-prereqs.t',
334            't/00-report-prereqs.dd',
335            qr{^xt},
336        ],
337    },
338
339    'Data::Dumper' => {
340        'DISTRIBUTION' => 'NWCLARK/Data-Dumper-2.183.tar.gz',
341        'FILES'        => q[dist/Data-Dumper],
342    },
343
344    'DB_File' => {
345        'DISTRIBUTION' => 'PMQS/DB_File-1.858.tar.gz',
346        'FILES'        => q[cpan/DB_File],
347        'EXCLUDED'     => [
348            qr{^patches/},
349            qr{^t/meta},
350            qw( t/pod.t
351                t/000prereq.t
352                fallback.h
353                fallback.xs
354                ),
355        ],
356    },
357
358    'Devel::PPPort' => {
359        'DISTRIBUTION' => 'ATOOMIC/Devel-PPPort-3.68.tar.gz',
360        'FILES'        => q[dist/Devel-PPPort],
361        'EXCLUDED'     => [
362            'PPPort.pm',    # we use PPPort_pm.PL instead
363        ],
364    },
365
366    'Devel::SelfStubber' => {
367        'DISTRIBUTION' => 'FLORA/Devel-SelfStubber-1.05.tar.gz',
368        'FILES'        => q[dist/Devel-SelfStubber],
369        'EXCLUDED'     => [qr{^t/release-.*\.t}],
370    },
371
372    'Digest' => {
373        'DISTRIBUTION' => 'TODDR/Digest-1.20.tar.gz',
374        'FILES'        => q[cpan/Digest],
375        'EXCLUDED'     => ['digest-bench'],
376    },
377
378    'Digest::MD5' => {
379        'DISTRIBUTION' => 'TODDR/Digest-MD5-2.58.tar.gz',
380        'FILES'        => q[cpan/Digest-MD5],
381        'EXCLUDED'     => [ 'rfc1321.txt', 'bin/md5sum.pl' ],
382        'CUSTOMIZED'   => [
383            # https://github.com/Dual-Life/digest-md5/pull/24
384            'MD5.pm',
385            'MD5.xs'
386        ],
387    },
388
389    'Digest::SHA' => {
390        'DISTRIBUTION' => 'MSHELOR/Digest-SHA-6.04.tar.gz',
391        'FILES'        => q[cpan/Digest-SHA],
392        'EXCLUDED'     => [
393            qw( t/pod.t
394                t/podcover.t
395                examples/dups
396                ),
397        ],
398    },
399
400    'Dumpvalue' => {
401        'DISTRIBUTION' => 'FLORA/Dumpvalue-1.17.tar.gz',
402        'FILES'        => q[dist/Dumpvalue],
403        'EXCLUDED'     => [qr{^t/release-.*\.t}],
404    },
405
406    'Encode' => {
407        'DISTRIBUTION' => 'DANKOGAI/Encode-3.19.tar.gz',
408        'FILES'        => q[cpan/Encode],
409        'EXCLUDED'     => [
410            qw( t/whatwg-aliases.json
411                t/whatwg-aliases.t
412                ),
413        ],
414    },
415
416    'encoding::warnings' => {
417        'DISTRIBUTION' => 'AUDREYT/encoding-warnings-0.11.tar.gz',
418        'FILES'        => q[dist/encoding-warnings],
419        'EXCLUDED'     => [
420            qr{^inc/Module/},
421            qw(t/0-signature.t),
422        ],
423    },
424
425    'Env' => {
426        'DISTRIBUTION' => 'FLORA/Env-1.04.tar.gz',
427        'FILES'        => q[dist/Env],
428        'EXCLUDED'     => [qr{^t/release-.*\.t}],
429    },
430
431    'experimental' => {
432        'DISTRIBUTION' => 'LEONT/experimental-0.031.tar.gz',
433        'FILES'        => q[cpan/experimental],
434        'EXCLUDED'     => [qr{^xt/}],
435    },
436
437    'Exporter' => {
438        'DISTRIBUTION' => 'TODDR/Exporter-5.77.tar.gz',
439        'FILES'        => q[dist/Exporter],
440        'EXCLUDED' => [
441            qw( t/pod.t
442                t/use.t
443                ),
444        ],
445    },
446
447    'ExtUtils::CBuilder' => {
448        'DISTRIBUTION' => 'AMBS/ExtUtils-CBuilder-0.280236.tar.gz',
449        'FILES'        => q[dist/ExtUtils-CBuilder],
450        'EXCLUDED'     => [
451            qw(README.mkdn),
452            qr{^xt},
453        ],
454    },
455
456    'ExtUtils::Constant' => {
457
458        'DISTRIBUTION' => 'NWCLARK/ExtUtils-Constant-0.25.tar.gz',
459        'FILES'    => q[cpan/ExtUtils-Constant],
460        'CUSTOMIZED' => [
461             # https://rt.cpan.org/Ticket/Display.html?id=142181
462            'lib/ExtUtils/Constant/Base.pm',
463
464            # https://rt.cpan.org/Public/Bug/Display.html?id=132995
465            # https://rt.cpan.org/Ticket/Display.html?id=142183
466            't/Constant.t',
467        ],
468        'EXCLUDED' => [
469            qw( lib/ExtUtils/Constant/Aaargh56Hash.pm
470                examples/perl_keyword.pl
471                examples/perl_regcomp_posix_keyword.pl
472                ),
473        ],
474    },
475
476    'ExtUtils::Install' => {
477        'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.22.tar.gz',
478        'FILES'        => q[cpan/ExtUtils-Install],
479        'EXCLUDED'     => [
480            qw( t/lib/Test/Builder.pm
481                t/lib/Test/Builder/Module.pm
482                t/lib/Test/More.pm
483                t/lib/Test/Simple.pm
484                t/pod-coverage.t
485                t/pod.t
486                ),
487        ],
488    },
489
490    'ExtUtils::MakeMaker' => {
491        'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.70.tar.gz',
492        'SYNCINFO'     => 'yorton on Sun Mar 26 16:20:23 2023',
493        'FILES'        => q[cpan/ExtUtils-MakeMaker],
494        'EXCLUDED'     => [
495            qr{^t/lib/Test/},
496            qr{^(bundled|my)/},
497            qr{^t/Liblist_Kid.t},
498            qr{^t/liblist/},
499            qr{^\.perlcriticrc},
500            'PATCHING',
501            'README.packaging',
502            'lib/ExtUtils/MakeMaker/version/vpp.pm',
503        ],
504    },
505
506    'ExtUtils::PL2Bat' => {
507        'DISTRIBUTION' => 'LEONT/ExtUtils-PL2Bat-0.005.tar.gz',
508        'FILES'        => q[cpan/ExtUtils-PL2Bat],
509        'EXCLUDED'     => [
510            't/00-compile.t',
511            'script/pl2bat.pl'
512        ],
513    },
514
515    'ExtUtils::Manifest' => {
516        'DISTRIBUTION' => 'ETHER/ExtUtils-Manifest-1.73.tar.gz',
517        'FILES'        => q[cpan/ExtUtils-Manifest],
518        'EXCLUDED'     => [
519            qr(^t/00-report-prereqs),
520            qr(^xt/)
521        ],
522    },
523
524    'ExtUtils::ParseXS' => {
525        'DISTRIBUTION' => 'XSAWYERX/ExtUtils-ParseXS-3.44.tar.gz',
526        'FILES'        => q[dist/ExtUtils-ParseXS],
527    },
528
529    'File::Fetch' => {
530        'DISTRIBUTION' => 'BINGOS/File-Fetch-1.04.tar.gz',
531        'FILES'        => q[cpan/File-Fetch],
532    },
533
534    'File::Path' => {
535        'DISTRIBUTION' => 'JKEENAN/File-Path-2.18.tar.gz',
536        'FILES'        => q[cpan/File-Path],
537        'EXCLUDED'     => [
538            qw(t/Path-Class.t),
539            qr{^xt/},
540        ],
541    },
542
543    'File::Temp' => {
544        'DISTRIBUTION' => 'ETHER/File-Temp-0.2311.tar.gz',
545        'FILES'        => q[cpan/File-Temp],
546        'EXCLUDED'     => [
547            qw( README.mkdn
548                misc/benchmark.pl
549                misc/results.txt
550                ),
551            qr[^t/00-report-prereqs],
552            qr{^xt},
553        ],
554    },
555
556    'Filter::Simple' => {
557        'DISTRIBUTION' => 'SMUELLER/Filter-Simple-0.94.tar.gz',
558        'FILES'        => q[dist/Filter-Simple],
559        'EXCLUDED'     => [
560            qr{^demo/}
561        ],
562    },
563
564    'Filter::Util::Call' => {
565        'DISTRIBUTION' => 'RURBAN/Filter-1.64.tar.gz',
566        'FILES'        => q[cpan/Filter-Util-Call
567                 pod/perlfilter.pod
568                ],
569        'EXCLUDED' => [
570            qr{^decrypt/},
571            qr{^examples/},
572            qr{^Exec/},
573            qr{^lib/Filter/},
574            qr{^tee/},
575            qw( .appveyor.yml
576                .cirrus.yml
577                .github/workflows/testsuite.yml
578                .whitesource
579                Call/Makefile.PL
580                Call/ppport.h
581                Call/typemap
582                mytest
583                t/cpp.t
584                t/decrypt.t
585                t/exec.t
586                t/m4.t
587                t/order.t
588                t/sh.t
589                t/tee.t
590                t/z_kwalitee.t
591                t/z_manifest.t
592                t/z_meta.t
593                t/z_perl_minimum_version.t
594                t/z_pod-coverage.t
595                t/z_pod.t
596                ),
597        ],
598        'MAP' => {
599            'Call/'            => 'cpan/Filter-Util-Call/',
600            't/filter-util.pl' => 'cpan/Filter-Util-Call/filter-util.pl',
601            'perlfilter.pod'   => 'pod/perlfilter.pod',
602            ''                 => 'cpan/Filter-Util-Call/',
603        },
604        'CUSTOMIZED'   => [
605            qw(pod/perlfilter.pod)
606        ],
607    },
608
609    'FindBin' => {
610        'DISTRIBUTION' => 'TODDR/FindBin-1.53.tar.gz',
611        'FILES'        => q[dist/FindBin],
612    },
613
614    'Getopt::Long' => {
615        'DISTRIBUTION' => 'JV/Getopt-Long-2.54.tar.gz',
616        'FILES'        => q[cpan/Getopt-Long],
617        'EXCLUDED'     => [
618            qr{^examples/},
619            qw( lib/newgetopt.pl
620                t/gol-compat.t
621                ),
622        ],
623    },
624
625    'HTTP::Tiny' => {
626        'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.086.tar.gz',
627        'FILES'        => q[cpan/HTTP-Tiny],
628        'EXCLUDED'     => [
629            'corpus/snake-oil.crt', # only used by 210_live_ssl.t
630            't/00-report-prereqs.t',
631            't/00-report-prereqs.dd',
632            't/200_live.t',
633            't/200_live_local_ip.t',
634            't/210_live_ssl.t',
635            qr/^eg/,
636            qr/^xt/
637        ],
638    },
639
640    'I18N::Collate' => {
641        'DISTRIBUTION' => 'FLORA/I18N-Collate-1.02.tar.gz',
642        'FILES'        => q[dist/I18N-Collate],
643        'EXCLUDED'     => [qr{^t/release-.*\.t}],
644    },
645
646    'I18N::LangTags' => {
647        'FILES'        => q[dist/I18N-LangTags],
648    },
649
650    'if' => {
651        'DISTRIBUTION' => 'XSAWYERX/if-0.0608.tar.gz',
652        'FILES'        => q[dist/if],
653    },
654
655    'IO' => {
656        'DISTRIBUTION' => 'TODDR/IO-1.51.tar.gz',
657        'FILES'        => q[dist/IO],
658        'EXCLUDED'     => ['t/test.pl'],
659    },
660
661    'IO-Compress' => {
662        'DISTRIBUTION' => 'PMQS/IO-Compress-2.204.tar.gz',
663        'MAIN_MODULE'  => 'IO::Compress::Base',
664        'FILES'        => q[cpan/IO-Compress],
665        'EXCLUDED'     => [
666            qr{^examples/},
667            qr{^t/Test/},
668            qr{^t/999meta-},
669            't/010examples-bzip2.t',
670            't/010examples-zlib.t',
671            't/cz-05examples.t',
672        ],
673    },
674
675    'IO::Socket::IP' => {
676        'DISTRIBUTION' => 'PEVANS/IO-Socket-IP-0.41.tar.gz',
677        'FILES'        => q[cpan/IO-Socket-IP],
678        'EXCLUDED'     => [
679            qr{^examples/},
680        ],
681        'CUSTOMIZED' => [
682            # https://rt.cpan.org/Ticket/Display.html?id=148293
683            'lib/IO/Socket/IP.pm'
684        ],
685    },
686
687    'IO::Zlib' => {
688        'DISTRIBUTION' => 'TOMHUGHES/IO-Zlib-1.14.tar.gz',
689        'FILES'        => q[cpan/IO-Zlib],
690    },
691
692    'IPC::Cmd' => {
693        'DISTRIBUTION' => 'BINGOS/IPC-Cmd-1.04.tar.gz',
694        'FILES'        => q[cpan/IPC-Cmd],
695    },
696
697    'IPC::SysV' => {
698        'DISTRIBUTION' => 'MHX/IPC-SysV-2.09.tar.gz',
699        'FILES'        => q[cpan/IPC-SysV],
700        'EXCLUDED'     => [
701            qw( const-c.inc
702                const-xs.inc
703                ),
704        ],
705    },
706
707    'JSON::PP' => {
708        'DISTRIBUTION' => 'ISHIGAKI/JSON-PP-4.16.tar.gz',
709        'FILES'        => q[cpan/JSON-PP],
710    },
711
712    'lib' => {
713        'DISTRIBUTION' => 'SMUELLER/lib-0.63.tar.gz',
714        'FILES'        => q[dist/lib],
715        'EXCLUDED'     => [
716            qw( forPAUSE/lib.pm
717                t/00pod.t
718                ),
719        ],
720    },
721
722    'libnet' => {
723        'DISTRIBUTION' => 'SHAY/libnet-3.15.tar.gz',
724        'SYNCINFO'     => 'yorton on Mon Mar 20 20:48:38 2023',
725        'MAIN_MODULE'  => 'Net::Cmd',
726        'FILES'        => q[cpan/libnet],
727        'EXCLUDED'     => [
728            qw( Configure
729                t/changes.t
730                t/critic.t
731                t/pod.t
732                t/pod_coverage.t
733                ),
734            qr(^demos/),
735            qr(^t/external/),
736        ],
737    },
738
739    'Locale::Maketext' => {
740        'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.32.tar.gz',
741        'FILES'        => q[dist/Locale-Maketext],
742        'EXCLUDED'     => [
743            qw(
744                perlcriticrc
745                t/00_load.t
746                t/pod.t
747                ),
748        ],
749    },
750
751    'Locale::Maketext::Simple' => {
752        'DISTRIBUTION' => 'JESSE/Locale-Maketext-Simple-0.21.tar.gz',
753        'FILES'        => q[cpan/Locale-Maketext-Simple],
754        'CUSTOMIZED'   => [
755            # CVE-2016-1238
756            qw( lib/Locale/Maketext/Simple.pm )
757        ],
758    },
759
760    'Math::BigInt' => {
761        'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.999837.tar.gz',
762        'FILES'        => q[cpan/Math-BigInt],
763        'EXCLUDED'     => [
764            qr{^xt/},
765            qr{^examples/},
766            qr{^t/author-},
767            qr{^t/release-},
768            qw( t/00sig.t
769                t/01load.t
770                ),
771        ],
772    },
773
774    'Math::BigInt::FastCalc' => {
775        'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.5013.tar.gz',
776        'FILES'        => q[cpan/Math-BigInt-FastCalc],
777        'EXCLUDED'     => [
778            qr{^inc/},
779            qr{^xt/},
780            qr{^t/author-},
781            qr{^t/release-},
782            qr{^t/Math/BigInt/Lib/TestUtil.pm},
783            qw( t/00sig.t
784                t/01load.t
785                ),
786
787            # instead we use the versions of these test
788            # files that come with Math::BigInt:
789            qw( t/bigfltpm.inc
790                t/bigfltpm.t
791                t/bigintpm.inc
792                t/bigintpm.t
793                t/mbimbf.inc
794                t/mbimbf.t
795                ),
796        ],
797    },
798
799    'Math::BigRat' => {
800        'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2624.tar.gz',
801        'FILES'        => q[cpan/Math-BigRat],
802        'EXCLUDED'     => [
803            qr{^xt/},
804            qr{^math-bigrat-pod.diff},
805            qr{^t/author-},
806            qr{^t/release-},
807            qw( t/00sig.t
808                t/01load.t
809                ),
810        ],
811    },
812
813    'Math::Complex' => {
814        'DISTRIBUTION' => 'ZEFRAM/Math-Complex-1.59.tar.gz',
815        'FILES'        => q[dist/Math-Complex],
816        'EXCLUDED'     => [
817            qw( t/pod.t
818                t/pod-coverage.t
819                ),
820        ],
821    },
822
823    'Memoize' => {
824        'DISTRIBUTION' => 'ARISTOTLE/Memoize-1.16.tar.gz',
825        'FILES'        => q[cpan/Memoize],
826        'EXCLUDED'     => [ qr{^inc/} ],
827    },
828
829    'MIME::Base64' => {
830        'DISTRIBUTION' => 'CAPOEIRAB/MIME-Base64-3.16.tar.gz',
831        'FILES'        => q[cpan/MIME-Base64],
832        'EXCLUDED'     => [ qr{^xt/}, 'benchmark', 'benchmark-qp', qr{^t/00-report-prereqs} ],
833        'CUSTOMIZED'   => [
834            # https://github.com/Dual-Life/mime-base64/pull/17
835            'Base64.xs',
836            'lib/MIME/Base64.pm'
837        ],
838    },
839
840    'Module::CoreList' => {
841        'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20230320.tar.gz',
842        'SYNCINFO'     => 'yorton on Tue Mar 21 11:46:02 2023',
843        'FILES'        => q[dist/Module-CoreList],
844    },
845
846    'Module::Load' => {
847        'DISTRIBUTION' => 'BINGOS/Module-Load-0.36.tar.gz',
848        'FILES'        => q[cpan/Module-Load],
849    },
850
851    'Module::Load::Conditional' => {
852        'DISTRIBUTION' => 'BINGOS/Module-Load-Conditional-0.74.tar.gz',
853        'FILES'        => q[cpan/Module-Load-Conditional],
854    },
855
856    'Module::Loaded' => {
857        'DISTRIBUTION' => 'BINGOS/Module-Loaded-0.08.tar.gz',
858        'FILES'        => q[cpan/Module-Loaded],
859    },
860
861    'Module::Metadata' => {
862        'DISTRIBUTION' => 'ETHER/Module-Metadata-1.000037.tar.gz',
863        'FILES'        => q[cpan/Module-Metadata],
864        'EXCLUDED'     => [
865            qw(t/00-report-prereqs.t),
866            qw(t/00-report-prereqs.dd),
867            qr{weaver.ini},
868            qr{^xt},
869        ],
870    },
871
872    'Net::Ping' => {
873        'DISTRIBUTION' => 'RURBAN/Net-Ping-2.75.tar.gz',
874        'FILES'        => q[dist/Net-Ping],
875        'EXCLUDED'     => [
876            qr{^\.[awc]},
877            qw(README.md.PL),
878            qw(t/020_external.t),
879            qw(t/600_pod.t),
880            qw(t/601_pod-coverage.t),
881            qw(t/602_kwalitee.t),
882            qw(t/603_meta.t),
883            qw(t/604_manifest.t),
884            qw(t/appveyor-test.bat),
885
886        ],
887    },
888
889    'NEXT' => {
890        'DISTRIBUTION' => 'NEILB/NEXT-0.69.tar.gz',
891        'FILES'        => q[cpan/NEXT],
892        'EXCLUDED'     => [qr{^demo/}],
893    },
894
895    'Params::Check' => {
896        'DISTRIBUTION' => 'BINGOS/Params-Check-0.38.tar.gz',
897        'FILES'        => q[cpan/Params-Check],
898    },
899
900    'parent' => {
901        'DISTRIBUTION' => 'CORION/parent-0.241.tar.gz',
902        'FILES'        => q[cpan/parent],
903        'EXCLUDED'     => [
904            qr{^xt}
905        ],
906    },
907
908    'PathTools' => {
909        'DISTRIBUTION' => 'XSAWYERX/PathTools-3.75.tar.gz',
910        'MAIN_MODULE'  => 'File::Spec',
911        'FILES'        => q[dist/PathTools],
912        'EXCLUDED'     => [
913            qr{^t/lib/Test/},
914            qw( t/rel2abs_vs_symlink.t),
915        ],
916    },
917
918    'Perl::OSType' => {
919        'DISTRIBUTION' => 'DAGOLDEN/Perl-OSType-1.010.tar.gz',
920        'FILES'        => q[cpan/Perl-OSType],
921        'EXCLUDED'     => [qw(tidyall.ini), qr/^xt/, qr{^t/00-}],
922    },
923
924    'perlfaq' => {
925        'DISTRIBUTION' => 'ETHER/perlfaq-5.20210520.tar.gz',
926        'FILES'        => q[cpan/perlfaq],
927        'EXCLUDED'     => [ qr/^inc/, qr/^xt/, qr{^t/00-} ],
928    },
929
930    'PerlIO::via::QuotedPrint' => {
931        'DISTRIBUTION' => 'SHAY/PerlIO-via-QuotedPrint-0.10.tar.gz',
932        'FILES'        => q[cpan/PerlIO-via-QuotedPrint],
933    },
934
935    'Pod::Checker' => {
936        'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.75.tar.gz',
937        'FILES'        => q[cpan/Pod-Checker],
938    },
939
940    'Pod::Escapes' => {
941        'DISTRIBUTION' => 'NEILB/Pod-Escapes-1.07.tar.gz',
942        'FILES'        => q[cpan/Pod-Escapes],
943    },
944
945    'Pod::Perldoc' => {
946        'DISTRIBUTION' => 'MALLEN/Pod-Perldoc-3.28.tar.gz',
947        'FILES'        => q[cpan/Pod-Perldoc],
948
949        # Note that we use the CPAN-provided Makefile.PL, since it
950        # contains special handling of the installation of perldoc.pod
951
952        'EXCLUDED' => [
953            # In blead, the perldoc executable is generated by perldoc.PL
954            # instead
955            # XXX We can and should fix this, but clean up the DRY-failure in
956            # utils first
957            'perldoc',
958
959            # https://rt.cpan.org/Ticket/Display.html?id=116827
960            't/02_module_pod_output.t'
961        ],
962
963        'CUSTOMIZED'   => [
964	    # [rt.cpan.org #88204], [rt.cpan.org #120229]
965	    'lib/Pod/Perldoc.pm',
966	],
967    },
968
969    'Pod::Simple' => {
970        'DISTRIBUTION' => 'KHW/Pod-Simple-3.43.tar.gz',
971        'FILES'        => q[cpan/Pod-Simple],
972        'EXCLUDED' => [
973            qw{.ChangeLog.swp},
974            qr{^\.github/}
975	],
976    },
977
978    'Pod::Usage' => {
979        'DISTRIBUTION' => 'MAREKR/Pod-Usage-2.03.tar.gz',
980        'FILES'        => q[cpan/Pod-Usage],
981        'EXCLUDED' => [
982            qr{^t/00-},
983            qr{^xt/}
984	],
985    },
986
987    'podlators' => {
988        'DISTRIBUTION' => 'RRA/podlators-5.01.tar.gz',
989        'MAIN_MODULE'  => 'Pod::Man',
990        'FILES'        => q[cpan/podlators pod/perlpodstyle.pod],
991        'EXCLUDED'     => [
992            qr{^\.github/dependabot\.yml},
993            qr{^\.github/workflows/build\.yaml},
994        ],
995
996        'MAP' => {
997            ''                 => 'cpan/podlators/',
998            # this file lives outside the cpan/ directory
999            'pod/perlpodstyle.pod' => 'pod/perlpodstyle.pod',
1000        },
1001    },
1002
1003    'Safe' => {
1004        'DISTRIBUTION' => 'RGARCIA/Safe-2.35.tar.gz',
1005        'FILES'        => q[dist/Safe],
1006    },
1007
1008    'Scalar::Util' => {
1009        'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.63.tar.gz',
1010        'FILES'        => q[cpan/Scalar-List-Utils],
1011    },
1012
1013    'Search::Dict' => {
1014        'DISTRIBUTION' => 'DAGOLDEN/Search-Dict-1.07.tar.gz',
1015        'FILES'        => q[dist/Search-Dict],
1016    },
1017
1018    'SelfLoader' => {
1019        'DISTRIBUTION' => 'SMUELLER/SelfLoader-1.24.tar.gz',
1020        'FILES'        => q[dist/SelfLoader],
1021        'EXCLUDED'     => ['t/00pod.t'],
1022    },
1023
1024    'Socket' => {
1025        'DISTRIBUTION' => 'PEVANS/Socket-2.036.tar.gz',
1026        'FILES'        => q[cpan/Socket],
1027    },
1028
1029    'Storable' => {
1030        'DISTRIBUTION' => 'NWCLARK/Storable-3.25.tar.gz',
1031        'FILES'        => q[dist/Storable],
1032        'EXCLUDED'     => [
1033            qr{^t/compat/},
1034        ],
1035    },
1036
1037    'Sys::Syslog' => {
1038        'DISTRIBUTION' => 'SAPER/Sys-Syslog-0.36.tar.gz',
1039        'FILES'        => q[cpan/Sys-Syslog],
1040        'EXCLUDED'     => [
1041            qr{^eg/},
1042            qw( README.win32
1043                t/data-validation.t
1044                t/distchk.t
1045                t/pod.t
1046                t/podcover.t
1047                t/podspell.t
1048                t/portfs.t
1049                win32/PerlLog.RES
1050                ),
1051        ],
1052    },
1053
1054    'Term::ANSIColor' => {
1055        'DISTRIBUTION' => 'RRA/Term-ANSIColor-5.01.tar.gz',
1056        'FILES'        => q[cpan/Term-ANSIColor],
1057        'EXCLUDED'     => [
1058            qr{^docs/},
1059            qr{^examples/},
1060            qr{^t/data/},
1061            qr{^t/docs/},
1062            qr{^t/style/},
1063            qw( t/module/aliases-env.t ),
1064        ],
1065    },
1066
1067    'Term::Cap' => {
1068        'DISTRIBUTION' => 'JSTOWE/Term-Cap-1.18.tar.gz',
1069        'FILES'        => q[cpan/Term-Cap],
1070    },
1071
1072    'Term::Complete' => {
1073        'DISTRIBUTION' => 'FLORA/Term-Complete-1.402.tar.gz',
1074        'FILES'        => q[dist/Term-Complete],
1075        'EXCLUDED'     => [qr{^t/release-.*\.t}],
1076    },
1077
1078    'Term::ReadLine' => {
1079        'DISTRIBUTION' => 'FLORA/Term-ReadLine-1.14.tar.gz',
1080        'FILES'        => q[dist/Term-ReadLine],
1081        'EXCLUDED'     => [qr{^t/release-.*\.t}],
1082    },
1083
1084    'Test' => {
1085        'DISTRIBUTION' => 'JESSE/Test-1.26.tar.gz',
1086        'FILES'        => q[dist/Test],
1087    },
1088
1089    'Test::Harness' => {
1090        'DISTRIBUTION' => 'LEONT/Test-Harness-3.44.tar.gz',
1091        'FILES'        => q[cpan/Test-Harness],
1092        'EXCLUDED'     => [
1093            qr{^examples/},
1094            qr{^xt/},
1095            qw( Changes-2.64
1096                MANIFEST.CUMMULATIVE
1097                HACKING.pod
1098                perlcriticrc
1099                t/000-load.t
1100                t/lib/if.pm
1101                ),
1102        ],
1103        'CUSTOMIZED' => [
1104            't/harness.t'
1105        ]
1106    },
1107
1108    'Test::Simple' => {
1109        'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302194.tar.gz',
1110        'SYNCINFO'     => 'yorton on Tue Mar 14 13:43:38 2023',
1111        'SYNCINFO'     => 'yorton on Mon Mar  6 19:16:42 2023',
1112        'FILES'        => q[cpan/Test-Simple],
1113        'EXCLUDED'     => [
1114            qr{^examples/},
1115            qr{^xt/},
1116            qw( appveyor.yml
1117                t/00compile.t
1118                t/00-report.t
1119                t/zzz-check-breaks.t
1120                ),
1121        ],
1122    },
1123
1124    'Text::Abbrev' => {
1125        'DISTRIBUTION' => 'FLORA/Text-Abbrev-1.02.tar.gz',
1126        'FILES'        => q[dist/Text-Abbrev],
1127        'EXCLUDED'     => [qr{^t/release-.*\.t}],
1128    },
1129
1130    'Text::Balanced' => {
1131        'DISTRIBUTION' => 'SHAY/Text-Balanced-2.06.tar.gz',
1132        'FILES'        => q[cpan/Text-Balanced],
1133    },
1134
1135    'Text::ParseWords' => {
1136        'DISTRIBUTION' => 'NEILB/Text-ParseWords-3.31.tar.gz',
1137        'FILES'        => q[cpan/Text-ParseWords],
1138    },
1139
1140    'Text-Tabs+Wrap' => {
1141        'DISTRIBUTION' => 'ARISTOTLE/Text-Tabs+Wrap-2021.0814.tar.gz',
1142        'MAIN_MODULE'  => 'Text::Tabs',
1143        'FILES'        => q[cpan/Text-Tabs],
1144        'EXCLUDED'   => [
1145            qr{^xt},
1146
1147        ],
1148        'MAP'          => {
1149            ''                        => 'cpan/Text-Tabs/',
1150            'lib.modern/Text/Tabs.pm' => 'cpan/Text-Tabs/lib/Text/Tabs.pm',
1151            'lib.modern/Text/Wrap.pm' => 'cpan/Text-Tabs/lib/Text/Wrap.pm',
1152        },
1153    },
1154
1155    # Jerry Hedden does take patches that are applied to blead first, even
1156    # though that can be hard to discern from the Git history; so it's
1157    # correct for this (and Thread::Semaphore, threads, and threads::shared)
1158    # to be under dist/ rather than cpan/
1159    'Thread::Queue' => {
1160        'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.13.tar.gz',
1161        'FILES'        => q[dist/Thread-Queue],
1162        'EXCLUDED'     => [
1163            qr{^examples/},
1164            qw( t/00_load.t
1165                t/99_pod.t
1166                t/test.pl
1167                ),
1168        ],
1169    },
1170
1171    'Thread::Semaphore' => {
1172        'DISTRIBUTION' => 'JDHEDDEN/Thread-Semaphore-2.13.tar.gz',
1173        'FILES'        => q[dist/Thread-Semaphore],
1174        'EXCLUDED'     => [
1175            qw( examples/semaphore.pl
1176                t/00_load.t
1177                t/99_pod.t
1178                t/test.pl
1179                ),
1180        ],
1181    },
1182
1183    'threads' => {
1184        'DISTRIBUTION' => 'JDHEDDEN/threads-2.21.tar.gz',
1185        'FILES'        => q[dist/threads],
1186        'EXCLUDED'     => [
1187            qr{^examples/},
1188            qw( t/pod.t
1189                t/test.pl
1190                ),
1191        ],
1192    },
1193
1194    'threads::shared' => {
1195        'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.59.tar.gz',
1196        'FILES'        => q[dist/threads-shared],
1197        'EXCLUDED'     => [
1198            qw( examples/class.pl
1199                t/pod.t
1200                t/test.pl
1201                ),
1202        ],
1203    },
1204
1205    'Tie::File' => {
1206        'DISTRIBUTION' => 'TODDR/Tie-File-1.07.tar.gz',
1207        'FILES'        => q[dist/Tie-File],
1208    },
1209
1210    'Tie::RefHash' => {
1211        'DISTRIBUTION' => 'ETHER/Tie-RefHash-1.40.tar.gz',
1212        'FILES'        => q[cpan/Tie-RefHash],
1213        'EXCLUDED'     => [
1214            qr{^t/00-},
1215            qr{^xt/},
1216        ],
1217    },
1218
1219    'Time::HiRes' => {
1220        'DISTRIBUTION' => 'ATOOMIC/Time-HiRes-1.9764.tar.gz',
1221        'FILES'        => q[dist/Time-HiRes],
1222    },
1223
1224    'Time::Local' => {
1225        'DISTRIBUTION' => 'DROLSKY/Time-Local-1.30.tar.gz',
1226        'FILES'        => q[cpan/Time-Local],
1227        'EXCLUDED'     => [
1228            qr{^xt/},
1229            qw( CODE_OF_CONDUCT.md
1230                azure-pipelines.yml
1231                perlcriticrc
1232                perltidyrc
1233                tidyall.ini
1234                t/00-report-prereqs.t
1235                t/00-report-prereqs.dd
1236                ),
1237        ],
1238    },
1239
1240    'Time::Piece' => {
1241        'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3401.tar.gz',
1242        'FILES'        => q[cpan/Time-Piece],
1243        'EXCLUDED'     => [ qw[reverse_deps.txt] ],
1244        'CUSTOMIZED'   => [
1245            # https://github.com/Dual-Life/Time-Piece/pull/64
1246            'Piece.pm',
1247            'Piece.xs'
1248         ],
1249    },
1250
1251    'Unicode::Collate' => {
1252        'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-1.31.tar.gz',
1253        'FILES'        => q[cpan/Unicode-Collate],
1254        'EXCLUDED'     => [
1255            qr{N$},
1256            qr{^data/},
1257            qr{^gendata/},
1258            qw( disableXS
1259                enableXS
1260                mklocale
1261                ),
1262        ],
1263    },
1264
1265    'Unicode::Normalize' => {
1266        'DISTRIBUTION' => 'KHW/Unicode-Normalize-1.26.tar.gz',
1267        'FILES'        => q[dist/Unicode-Normalize],
1268        'EXCLUDED'     => [
1269            qw( MANIFEST.N
1270                Normalize.pmN
1271                disableXS
1272                enableXS
1273                ),
1274        ],
1275    },
1276
1277    'version' => {
1278        'DISTRIBUTION' => 'LEONT/version-0.9929.tar.gz',
1279        'FILES'        => q[cpan/version vutil.c vutil.h vxs.inc],
1280        'EXCLUDED' => [
1281            qr{^vutil/lib/},
1282            'vutil/Makefile.PL',
1283            'vutil/ppport.h',
1284            'vutil/vxs.xs',
1285            't/00impl-pp.t',
1286            't/survey_locales',
1287            'vperl/vpp.pm',
1288        ],
1289
1290        # When adding the CPAN-distributed files for version.pm, it is necessary
1291        # to delete an entire block out of lib/version.pm, since that code is
1292        # only necessary with the CPAN release.
1293        'CUSTOMIZED'   => [
1294            'lib/version.pm',
1295
1296            't/07locale.t'
1297         ],
1298
1299        'MAP' => {
1300            'vutil/'         => '',
1301            ''               => 'cpan/version/',
1302        },
1303    },
1304
1305    'warnings' => {
1306        'FILES'      => q[
1307                 lib/warnings
1308                 lib/warnings.{pm,t}
1309                 regen/warnings.pl
1310                 t/lib/warnings
1311        ],
1312    },
1313
1314    'Win32' => {
1315        'DISTRIBUTION' => "JDB/Win32-0.59.tar.gz",
1316        'FILES'        => q[cpan/Win32],
1317    },
1318
1319    'Win32API::File' => {
1320        'DISTRIBUTION' => 'CHORNY/Win32API-File-0.1203.tar.gz',
1321        'FILES'        => q[cpan/Win32API-File],
1322        'EXCLUDED'     => [
1323            qr{^ex/},
1324        ],
1325        # https://rt.cpan.org/Ticket/Display.html?id=127837
1326        'CUSTOMIZED'   => [
1327            qw( File.pm
1328                File.xs
1329                ),
1330        ],
1331    },
1332
1333    'XSLoader' => {
1334        'DISTRIBUTION' => 'SAPER/XSLoader-0.24.tar.gz',
1335        'FILES'        => q[dist/XSLoader],
1336        'EXCLUDED'     => [
1337            qr{^eg/},
1338            qw( t/00-load.t
1339                t/01-api.t
1340                t/distchk.t
1341                t/pod.t
1342                t/podcover.t
1343                t/portfs.t
1344                ),
1345            'XSLoader.pm',    # we use XSLoader_pm.PL
1346        ],
1347    },
1348
1349    # this pseudo-module represents all the files under ext/ and lib/
1350    # that aren't otherwise claimed. This means that the following two
1351    # commands will check that every file under ext/ and lib/ is
1352    # accounted for, and that there are no duplicates:
1353    #
1354    #    perl Porting/Maintainers --checkmani lib ext
1355    #    perl Porting/Maintainers --checkmani
1356
1357    '_PERLLIB' => {
1358        'FILES'    => q[
1359                ext/Amiga-ARexx/
1360                ext/Amiga-Exec/
1361                ext/B/
1362                ext/Devel-Peek/
1363                ext/DynaLoader/
1364                ext/Errno/
1365                ext/ExtUtils-Miniperl/
1366                ext/Fcntl/
1367                ext/File-DosGlob/
1368                ext/File-Find/
1369                ext/File-Glob/
1370                ext/FileCache/
1371                ext/GDBM_File/
1372                ext/Hash-Util-FieldHash/
1373                ext/Hash-Util/
1374                ext/I18N-Langinfo/
1375                ext/IPC-Open3/
1376                ext/NDBM_File/
1377                ext/ODBM_File/
1378                ext/Opcode/
1379                ext/POSIX/
1380                ext/PerlIO-encoding/
1381                ext/PerlIO-mmap/
1382                ext/PerlIO-scalar/
1383                ext/PerlIO-via/
1384                ext/Pod-Functions/
1385                ext/Pod-Html/
1386                ext/SDBM_File/
1387                ext/Sys-Hostname/
1388                ext/Tie-Hash-NamedCapture/
1389                ext/Tie-Memoize/
1390                ext/VMS-DCLsym/
1391                ext/VMS-Filespec/
1392                ext/VMS-Stdio/
1393                ext/Win32CORE/
1394                ext/XS-APItest/
1395                ext/XS-Typemap/
1396                ext/attributes/
1397                ext/mro/
1398                ext/re/
1399                lib/AnyDBM_File.{pm,t}
1400                lib/Benchmark.{pm,t}
1401                lib/B/Deparse{.pm,.t,-*.t}
1402                lib/B/Op_private.pm
1403                lib/CORE.pod
1404                lib/Class/Struct.{pm,t}
1405                lib/Config.t
1406                lib/Config/Extensions.{pm,t}
1407                lib/DB.{pm,t}
1408                lib/DBM_Filter.pm
1409                lib/DBM_Filter/
1410                lib/DirHandle.{pm,t}
1411                lib/English.{pm,t}
1412                lib/ExtUtils/Embed.pm
1413                lib/ExtUtils/XSSymSet.pm
1414                lib/ExtUtils/t/Embed.t
1415                lib/ExtUtils/typemap
1416                lib/File/Basename.{pm,t}
1417                lib/File/Compare.{pm,t}
1418                lib/File/Copy.{pm,t}
1419                lib/File/stat{.pm,.t,-7896.t}
1420                lib/FileHandle.{pm,t}
1421                lib/Getopt/Std.{pm,t}
1422                lib/Internals.pod
1423                lib/Internals.t
1424                lib/meta_notation.{pm,t}
1425                lib/Net/hostent.{pm,t}
1426                lib/Net/netent.{pm,t}
1427                lib/Net/protoent.{pm,t}
1428                lib/Net/servent.{pm,t}
1429                lib/PerlIO.pm
1430                lib/Pod/t/Usage.t
1431                lib/SelectSaver.{pm,t}
1432                lib/Symbol.{pm,t}
1433                lib/Thread.{pm,t}
1434                lib/Tie/Array.pm
1435                lib/Tie/Array/
1436                lib/Tie/ExtraHash.t
1437                lib/Tie/Handle.pm
1438                lib/Tie/Handle/
1439                lib/Tie/Hash.{pm,t}
1440                lib/Tie/Scalar.{pm,t}
1441                lib/Tie/StdHandle.pm
1442                lib/Tie/SubstrHash.{pm,t}
1443                lib/Time/gmtime.{pm,t}
1444                lib/Time/localtime.{pm,t}
1445                lib/Time/tm.pm
1446                lib/UNIVERSAL.pm
1447                lib/Unicode/README
1448                lib/Unicode/testnorm.t
1449                lib/Unicode/UCD.{pm,t}
1450                lib/User/grent.{pm,t}
1451                lib/User/pwent.{pm,t}
1452                lib/_charnames.pm
1453                lib/blib.{pm,t}
1454                lib/builtin.{pm,t}
1455                lib/bytes.{pm,t}
1456                lib/bytes_heavy.pl
1457                lib/charnames.{pm,t}
1458                lib/dbm_filter_util.pl
1459                lib/deprecate.pm
1460                lib/diagnostics.{pm,t}
1461                lib/dumpvar.{pl,t}
1462                lib/feature.{pm,t}
1463                lib/feature/
1464                lib/filetest.{pm,t}
1465                lib/h2ph.t
1466                lib/h2xs.t
1467                lib/integer.{pm,t}
1468                lib/less.{pm,t}
1469                lib/locale.{pm,t}
1470                lib/locale_threads.t
1471                lib/open.{pm,t}
1472                lib/overload/numbers.pm
1473                lib/overloading.{pm,t}
1474                lib/overload{.pm,.t,64.t}
1475                lib/perl5db.{pl,t}
1476                lib/perl5db/
1477                lib/perlbug.t
1478                lib/sigtrap.{pm,t}
1479                lib/sort.{pm,t}
1480                lib/strict.{pm,t}
1481                lib/subs.{pm,t}
1482                lib/unicore/
1483                lib/utf8.{pm,t}
1484                lib/vars{.pm,.t,_carp.t}
1485                lib/vmsish.{pm,t}
1486                ],
1487    },
1488    'openbsd' => {
1489        'FILES'      => q[lib/Config_git.pl],
1490    },
1491);
1492
1493
1494# legacy CPAN flag
1495for my $mod_name ( keys %Modules ) {
1496    my $data = $Modules{$mod_name};
1497    $data->{CPAN} = !!$data->{DISTRIBUTION};
1498    my (@files)= split /\s+/, $data->{FILES};
1499    if (@files and $files[0]=~s!^(cpan|dist)/!!) {
1500        $DistName{$files[0]} = $mod_name;
1501        $DistName{"$1/$files[0]"} = $mod_name;
1502    }
1503}
1504
1505# legacy UPSTREAM flag
1506for ( keys %Modules ) {
1507    # Keep any existing UPSTREAM flag so that "overrides" can be applied
1508    next if exists $Modules{$_}{UPSTREAM};
1509
1510    if ($_ eq '_PERLLIB' or $Modules{$_}{FILES} =~ m{^\s*(?:dist|ext|lib)/}) {
1511        $Modules{$_}{UPSTREAM} = 'blead';
1512    }
1513    elsif ($Modules{$_}{FILES} =~ m{^\s*cpan/}) {
1514        $Modules{$_}{UPSTREAM} = 'cpan';
1515    }
1516    else {
1517        warn "Unexpected location of FILES for module $_: $Modules{$_}{FILES}";
1518    }
1519}
1520
1521# legacy MAINTAINER field
1522for ( keys %Modules ) {
1523    # Keep any existing MAINTAINER flag so that "overrides" can be applied
1524    next if exists $Modules{$_}{MAINTAINER};
1525
1526    if ($Modules{$_}{UPSTREAM} eq 'blead') {
1527        $Modules{$_}{MAINTAINER} = 'P5P';
1528        $Maintainers{P5P} = 'perl5-porters <perl5-porters@perl.org>';
1529    }
1530    elsif (exists $Modules{$_}{DISTRIBUTION}) {
1531        (my $pause_id = $Modules{$_}{DISTRIBUTION}) =~ s{/.*$}{};
1532        $Modules{$_}{MAINTAINER} = $pause_id;
1533        $Maintainers{$pause_id} = "<$pause_id\@cpan.org>";
1534    }
1535    else {
1536        warn "No DISTRIBUTION for non-blead module $_";
1537    }
1538}
1539
15401;
1541