This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta: Regex sets are no longer experimental
[perl5.git] / Porting / Maintainers.pl
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
9 package Maintainers;
10
11 use utf8;
12 use 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.34.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     },
176
177     'autouse' => {
178         'DISTRIBUTION' => 'RJBS/autouse-1.11.tar.gz',
179         'FILES'        => q[dist/autouse],
180         'EXCLUDED'     => [qr{^t/release-.*\.t}],
181     },
182
183     'base' => {
184         'DISTRIBUTION' => 'RJBS/base-2.23.tar.gz',
185         'FILES'        => q[dist/base],
186     },
187
188     'bignum' => {
189         'DISTRIBUTION' => 'PJACKLAM/bignum-0.65.tar.gz',
190         'FILES'        => q[cpan/bignum],
191         'EXCLUDED'     => [
192             qr{^xt/},
193             qr{^t/author-},
194             qr{^t/release-},
195             qw( t/00sig.t
196                 t/01load.t
197                 ),
198         ],
199     },
200
201     'Carp' => {
202         'DISTRIBUTION' => 'XSAWYERX/Carp-1.50.tar.gz',
203         'FILES'        => q[dist/Carp],
204     },
205
206     'Compress::Raw::Bzip2' => {
207         'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.103.tar.gz',
208         'FILES'        => q[cpan/Compress-Raw-Bzip2],
209         'EXCLUDED'     => [
210             qr{^t/Test/},
211             qr{^t/meta},
212             'bzip2-src/bzip2-const.patch',
213             'bzip2-src/bzip2-cpp.patch',
214             'bzip2-src/bzip2-unsigned.patch',
215         ],
216     },
217
218     'Compress::Raw::Zlib' => {
219         'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.105.tar.gz',
220         'FILES'    => q[cpan/Compress-Raw-Zlib],
221         'EXCLUDED' => [
222             qr{^examples/},
223             qr{^t/Test/},
224             qr{^t/meta},
225             qw( t/000prereq.t
226                 t/99pod.t
227                 ),
228         ],
229     },
230
231     'Config::Perl::V' => {
232         'DISTRIBUTION' => 'HMBRAND/Config-Perl-V-0.33.tgz',
233         'FILES'        => q[cpan/Config-Perl-V],
234         'EXCLUDED'     => [qw(
235                 examples/show-v.pl
236                 )],
237     },
238
239     'constant' => {
240         'DISTRIBUTION' => 'RJBS/constant-1.33.tar.gz',
241         'FILES'        => q[dist/constant],
242         'EXCLUDED'     => [
243             qw( t/00-load.t
244                 t/more-tests.t
245                 t/pod-coverage.t
246                 t/pod.t
247                 eg/synopsis.pl
248                 ),
249         ],
250     },
251
252     'CPAN' => {
253         'DISTRIBUTION' => 'ANDK/CPAN-2.33-TRIAL.tar.gz',
254         'FILES'        => q[cpan/CPAN],
255         'EXCLUDED'     => [
256             qr{^distroprefs/},
257             qr{^inc/Test/},
258             qr{^t/CPAN/},
259             qr{^t/data/},
260             qr{^t/97-},
261             qw( lib/CPAN/Admin.pm
262                 scripts/cpan-mirrors
263                 PAUSE2015.pub
264                 PAUSE2019.pub
265                 PAUSE2021.pub
266                 SlayMakefile
267                 t/00signature.t
268                 t/04clean_load.t
269                 t/12cpan.t
270                 t/13tarzip.t
271                 t/14forkbomb.t
272                 t/30shell.coverage
273                 t/30shell.t
274                 t/31sessions.t
275                 t/41distribution.t
276                 t/42distroprefs.t
277                 t/43distroprefspref.t
278                 t/44cpanmeta.t
279                 t/50pod.t
280                 t/51pod.t
281                 t/52podcover.t
282                 t/60credentials.t
283                 t/70_critic.t
284                 t/71_minimumversion.t
285                 t/local_utils.pm
286                 t/perlcriticrc
287                 t/yaml_code.yml
288                 ),
289         ],
290     },
291
292     # Note: When updating CPAN-Meta the META.* files will need to be regenerated
293     # perl -Icpan/CPAN-Meta/lib Porting/makemeta
294     'CPAN::Meta' => {
295         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.150010.tar.gz',
296         'FILES'        => q[cpan/CPAN-Meta],
297         'EXCLUDED'     => [
298             qw[t/00-report-prereqs.t
299                t/00-report-prereqs.dd
300               ],
301             qr{^xt},
302             qr{^history},
303         ],
304     },
305
306     'CPAN::Meta::Requirements' => {
307         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-Requirements-2.140.tar.gz',
308         'FILES'        => q[cpan/CPAN-Meta-Requirements],
309         'EXCLUDED'     => [
310             qw(t/00-report-prereqs.t),
311             qw(t/00-report-prereqs.dd),
312             qw(t/version-cleanup.t),
313             qr{^xt},
314         ],
315     },
316
317     'CPAN::Meta::YAML' => {
318         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-YAML-0.018.tar.gz',
319         'FILES'        => q[cpan/CPAN-Meta-YAML],
320         'EXCLUDED'     => [
321             't/00-report-prereqs.t',
322             't/00-report-prereqs.dd',
323             qr{^xt},
324         ],
325     },
326
327     'Data::Dumper' => {
328         'DISTRIBUTION' => 'NWCLARK/Data-Dumper-2.183.tar.gz',
329         'FILES'        => q[dist/Data-Dumper],
330     },
331
332     'DB_File' => {
333         'DISTRIBUTION' => 'PMQS/DB_File-1.857.tar.gz',
334         'FILES'        => q[cpan/DB_File],
335         'EXCLUDED'     => [
336             qr{^patches/},
337             qr{^t/meta},
338             qw( t/pod.t
339                 t/000prereq.t
340                 fallback.h
341                 fallback.xs
342                 ),
343         ],
344     },
345
346     'Devel::PPPort' => {
347         'DISTRIBUTION' => 'ATOOMIC/Devel-PPPort-3.68.tar.gz',
348         'FILES'        => q[dist/Devel-PPPort],
349         'EXCLUDED'     => [
350             'PPPort.pm',    # we use PPPort_pm.PL instead
351         ],
352     },
353
354     'Devel::SelfStubber' => {
355         'DISTRIBUTION' => 'FLORA/Devel-SelfStubber-1.05.tar.gz',
356         'FILES'        => q[dist/Devel-SelfStubber],
357         'EXCLUDED'     => [qr{^t/release-.*\.t}],
358     },
359
360     'Digest' => {
361         'DISTRIBUTION' => 'TODDR/Digest-1.20.tar.gz',
362         'FILES'        => q[cpan/Digest],
363         'EXCLUDED'     => ['digest-bench'],
364     },
365
366     'Digest::MD5' => {
367         'DISTRIBUTION' => 'TODDR/Digest-MD5-2.58.tar.gz',
368         'FILES'        => q[cpan/Digest-MD5],
369         'EXCLUDED'     => [ 'rfc1321.txt', 'bin/md5sum.pl' ],
370     },
371
372     'Digest::SHA' => {
373         'DISTRIBUTION' => 'MSHELOR/Digest-SHA-6.02.tar.gz',
374         'FILES'        => q[cpan/Digest-SHA],
375         'EXCLUDED'     => [
376             qw( t/pod.t
377                 t/podcover.t
378                 examples/dups
379                 ),
380         ],
381     },
382
383     'Dumpvalue' => {
384         'DISTRIBUTION' => 'FLORA/Dumpvalue-1.17.tar.gz',
385         'FILES'        => q[dist/Dumpvalue],
386         'EXCLUDED'     => [qr{^t/release-.*\.t}],
387     },
388
389     'Encode' => {
390         'DISTRIBUTION' => 'DANKOGAI/Encode-3.17.tar.gz',
391         'FILES'        => q[cpan/Encode],
392         'EXCLUDED'     => [
393             qw( t/whatwg-aliases.json
394                 t/whatwg-aliases.t
395                 ),
396         ],
397     },
398
399     'encoding::warnings' => {
400         'DISTRIBUTION' => 'AUDREYT/encoding-warnings-0.11.tar.gz',
401         'FILES'        => q[dist/encoding-warnings],
402         'EXCLUDED'     => [
403             qr{^inc/Module/},
404             qw(t/0-signature.t),
405         ],
406     },
407
408     'Env' => {
409         'DISTRIBUTION' => 'FLORA/Env-1.04.tar.gz',
410         'FILES'        => q[dist/Env],
411         'EXCLUDED'     => [qr{^t/release-.*\.t}],
412     },
413
414     'experimental' => {
415         'DISTRIBUTION' => 'LEONT/experimental-0.027.tar.gz',
416         'FILES'        => q[cpan/experimental],
417         'EXCLUDED'     => [qr{^xt/}],
418     },
419
420     'Exporter' => {
421         'DISTRIBUTION' => 'TODDR/Exporter-5.74.tar.gz',
422         'FILES'        => q[dist/Exporter],
423         'EXCLUDED' => [
424             qw( t/pod.t
425                 t/use.t
426                 ),
427         ],
428     },
429
430     'ExtUtils::CBuilder' => {
431         'DISTRIBUTION' => 'AMBS/ExtUtils-CBuilder-0.280236.tar.gz',
432         'FILES'        => q[dist/ExtUtils-CBuilder],
433         'EXCLUDED'     => [
434             qw(README.mkdn),
435             qr{^xt},
436         ],
437     },
438
439     'ExtUtils::Constant' => {
440
441         'DISTRIBUTION' => 'NWCLARK/ExtUtils-Constant-0.25.tar.gz',
442         'FILES'    => q[cpan/ExtUtils-Constant],
443         'CUSTOMIZED' => [
444              # https://rt.cpan.org/Ticket/Display.html?id=142181
445             'lib/ExtUtils/Constant/Base.pm',
446
447             # https://rt.cpan.org/Public/Bug/Display.html?id=132995
448             # https://rt.cpan.org/Ticket/Display.html?id=142183
449             't/Constant.t',
450         ],
451         'EXCLUDED' => [
452             qw( lib/ExtUtils/Constant/Aaargh56Hash.pm
453                 examples/perl_keyword.pl
454                 examples/perl_regcomp_posix_keyword.pl
455                 ),
456         ],
457     },
458
459     'ExtUtils::Install' => {
460         'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.20.tar.gz',
461         'FILES'        => q[cpan/ExtUtils-Install],
462         'EXCLUDED'     => [
463             qw( t/lib/Test/Builder.pm
464                 t/lib/Test/Builder/Module.pm
465                 t/lib/Test/More.pm
466                 t/lib/Test/Simple.pm
467                 t/pod-coverage.t
468                 t/pod.t
469                 ),
470         ],
471     },
472
473     'ExtUtils::MakeMaker' => {
474         'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.64.tar.gz',
475         'FILES'        => q[cpan/ExtUtils-MakeMaker],
476         'EXCLUDED'     => [
477             qr{^t/lib/Test/},
478             qr{^(bundled|my)/},
479             qr{^t/Liblist_Kid.t},
480             qr{^t/liblist/},
481             qr{^\.perlcriticrc},
482             'PATCHING',
483             'README.packaging',
484             'lib/ExtUtils/MakeMaker/version/vpp.pm',
485         ],
486     },
487
488     'ExtUtils::PL2Bat' => {
489         'DISTRIBUTION' => 'LEONT/ExtUtils-PL2Bat-0.004.tar.gz',
490         'FILES'        => q[cpan/ExtUtils-PL2Bat],
491         'EXCLUDED'     => [
492             't/00-compile.t',
493             'script/pl2bat.pl'
494         ],
495     },
496
497     'ExtUtils::Manifest' => {
498         'DISTRIBUTION' => 'ETHER/ExtUtils-Manifest-1.73.tar.gz',
499         'FILES'        => q[cpan/ExtUtils-Manifest],
500         'EXCLUDED'     => [
501             qr(^t/00-report-prereqs),
502             qr(^xt/)
503         ],
504     },
505
506     'ExtUtils::ParseXS' => {
507         'DISTRIBUTION' => 'XSAWYERX/ExtUtils-ParseXS-3.44.tar.gz',
508         'FILES'        => q[dist/ExtUtils-ParseXS],
509     },
510
511     'File::Fetch' => {
512         'DISTRIBUTION' => 'BINGOS/File-Fetch-1.04.tar.gz',
513         'FILES'        => q[cpan/File-Fetch],
514     },
515
516     'File::Path' => {
517         'DISTRIBUTION' => 'JKEENAN/File-Path-2.18.tar.gz',
518         'FILES'        => q[cpan/File-Path],
519         'EXCLUDED'     => [
520             qw(t/Path-Class.t),
521             qr{^xt/},
522         ],
523     },
524
525     'File::Temp' => {
526         'DISTRIBUTION' => 'ETHER/File-Temp-0.2311.tar.gz',
527         'FILES'        => q[cpan/File-Temp],
528         'EXCLUDED'     => [
529             qw( README.mkdn
530                 misc/benchmark.pl
531                 misc/results.txt
532                 ),
533             qr[^t/00-report-prereqs],
534             qr{^xt},
535         ],
536     },
537
538     'Filter::Simple' => {
539         'DISTRIBUTION' => 'SMUELLER/Filter-Simple-0.94.tar.gz',
540         'FILES'        => q[dist/Filter-Simple],
541         'EXCLUDED'     => [
542             qr{^demo/}
543         ],
544     },
545
546     'Filter::Util::Call' => {
547         'DISTRIBUTION' => 'RURBAN/Filter-1.60.tar.gz',
548         'FILES'        => q[cpan/Filter-Util-Call
549                  pod/perlfilter.pod
550                 ],
551         'EXCLUDED' => [
552             qr{^decrypt/},
553             qr{^examples/},
554             qr{^Exec/},
555             qr{^lib/Filter/},
556             qr{^tee/},
557             qw( .appveyor.yml
558                 .whitesource
559                 Call/Makefile.PL
560                 Call/ppport.h
561                 Call/typemap
562                 mytest
563                 t/cpp.t
564                 t/decrypt.t
565                 t/exec.t
566                 t/m4.t
567                 t/order.t
568                 t/sh.t
569                 t/tee.t
570                 t/z_kwalitee.t
571                 t/z_manifest.t
572                 t/z_meta.t
573                 t/z_perl_minimum_version.t
574                 t/z_pod-coverage.t
575                 t/z_pod.t
576                 ),
577         ],
578         'MAP' => {
579             'Call/'            => 'cpan/Filter-Util-Call/',
580             't/filter-util.pl' => 'cpan/Filter-Util-Call/filter-util.pl',
581             'perlfilter.pod'   => 'pod/perlfilter.pod',
582             ''                 => 'cpan/Filter-Util-Call/',
583         },
584         'CUSTOMIZED'   => [
585             qw(pod/perlfilter.pod)
586         ],
587     },
588
589     'FindBin' => {
590         'DISTRIBUTION' => 'TODDR/FindBin-1.52.tar.gz',
591         'FILES'        => q[dist/FindBin],
592     },
593
594     'Getopt::Long' => {
595         'DISTRIBUTION' => 'JV/Getopt-Long-2.52.tar.gz',
596         'FILES'        => q[cpan/Getopt-Long],
597         'EXCLUDED'     => [
598             qr{^examples/},
599             qw( lib/newgetopt.pl
600                 t/gol-compat.t
601                 ),
602         ],
603     },
604
605     'HTTP::Tiny' => {
606         'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.080.tar.gz',
607         'FILES'        => q[cpan/HTTP-Tiny],
608         'EXCLUDED'     => [
609             't/00-report-prereqs.t',
610             't/00-report-prereqs.dd',
611             't/200_live.t',
612             't/200_live_local_ip.t',
613             't/210_live_ssl.t',
614             qr/^eg/,
615             qr/^xt/
616         ],
617     },
618
619     'I18N::Collate' => {
620         'DISTRIBUTION' => 'FLORA/I18N-Collate-1.02.tar.gz',
621         'FILES'        => q[dist/I18N-Collate],
622         'EXCLUDED'     => [qr{^t/release-.*\.t}],
623     },
624
625     'I18N::LangTags' => {
626         'FILES'        => q[dist/I18N-LangTags],
627     },
628
629     'if' => {
630         'DISTRIBUTION' => 'XSAWYERX/if-0.0608.tar.gz',
631         'FILES'        => q[dist/if],
632     },
633
634     'IO' => {
635         'DISTRIBUTION' => 'TODDR/IO-1.50.tar.gz',
636         'FILES'        => q[dist/IO],
637         'EXCLUDED'     => ['t/test.pl'],
638     },
639
640     'IO-Compress' => {
641         'DISTRIBUTION' => 'PMQS/IO-Compress-2.106.tar.gz',
642         'MAIN_MODULE'  => 'IO::Compress::Base',
643         'FILES'        => q[cpan/IO-Compress],
644         'EXCLUDED'     => [
645             qr{^examples/},
646             qr{^t/Test/},
647             qr{^t/999meta-},
648             't/010examples-bzip2.t',
649             't/010examples-zlib.t',
650             't/cz-05examples.t',
651         ],
652     },
653
654     'IO::Socket::IP' => {
655         'DISTRIBUTION' => 'PEVANS/IO-Socket-IP-0.41.tar.gz',
656         'FILES'        => q[cpan/IO-Socket-IP],
657         'EXCLUDED'     => [
658             qr{^examples/},
659         ],
660     },
661
662     'IO::Zlib' => {
663         'DISTRIBUTION' => 'TOMHUGHES/IO-Zlib-1.11.tar.gz',
664         'FILES'        => q[cpan/IO-Zlib],
665     },
666
667     'IPC::Cmd' => {
668         'DISTRIBUTION' => 'BINGOS/IPC-Cmd-1.04.tar.gz',
669         'FILES'        => q[cpan/IPC-Cmd],
670     },
671
672     'IPC::SysV' => {
673         'DISTRIBUTION' => 'MHX/IPC-SysV-2.09.tar.gz',
674         'FILES'        => q[cpan/IPC-SysV],
675         'EXCLUDED'     => [
676             qw( const-c.inc
677                 const-xs.inc
678                 ),
679         ],
680     },
681
682     'JSON::PP' => {
683         'DISTRIBUTION' => 'ISHIGAKI/JSON-PP-4.07.tar.gz',
684         'FILES'        => q[cpan/JSON-PP],
685     },
686
687     'lib' => {
688         'DISTRIBUTION' => 'SMUELLER/lib-0.63.tar.gz',
689         'FILES'        => q[dist/lib],
690         'EXCLUDED'     => [
691             qw( forPAUSE/lib.pm
692                 t/00pod.t
693                 ),
694         ],
695     },
696
697     'libnet' => {
698         'DISTRIBUTION' => 'SHAY/libnet-3.13.tar.gz',
699         'MAIN_MODULE'  => 'Net::Cmd',
700         'FILES'        => q[cpan/libnet],
701         'EXCLUDED'     => [
702             qw( Configure
703                 t/changes.t
704                 t/critic.t
705                 t/pod.t
706                 t/pod_coverage.t
707                 ),
708             qr(^demos/),
709             qr(^t/external/),
710         ],
711          # https://github.com/steve-m-hay/perl-libnet/pull/45
712         'CUSTOMIZED' => [
713             'lib/Net/Cmd.pm',
714             'lib/Net/Config.pm',
715             'lib/Net/Domain.pm',
716             'lib/Net/FTP.pm',
717             'lib/Net/FTP/A.pm',
718             'lib/Net/FTP/E.pm',
719             'lib/Net/FTP/I.pm',
720             'lib/Net/FTP/L.pm',
721             'lib/Net/FTP/dataconn.pm',
722             'lib/Net/NNTP.pm',
723             'lib/Net/Netrc.pm',
724             'lib/Net/POP3.pm',
725             'lib/Net/SMTP.pm',
726             'lib/Net/Time.pm',
727         ],
728     },
729
730     'Locale::Maketext' => {
731         'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.29.tar.gz',
732         'FILES'        => q[dist/Locale-Maketext],
733         'EXCLUDED'     => [
734             qw(
735                 perlcriticrc
736                 t/00_load.t
737                 t/pod.t
738                 ),
739         ],
740     },
741
742     'Locale::Maketext::Simple' => {
743         'DISTRIBUTION' => 'JESSE/Locale-Maketext-Simple-0.21.tar.gz',
744         'FILES'        => q[cpan/Locale-Maketext-Simple],
745         'CUSTOMIZED'   => [
746             # CVE-2016-1238
747             qw( lib/Locale/Maketext/Simple.pm )
748         ],
749     },
750
751     'Math::BigInt' => {
752         'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.999830.tar.gz',
753         'FILES'        => q[cpan/Math-BigInt],
754         'EXCLUDED'     => [
755             qr{^xt/},
756             qr{^examples/},
757             qr{^t/author-},
758             qr{^t/release-},
759             qw( t/00sig.t
760                 t/01load.t
761                 ),
762         ],
763     },
764
765     'Math::BigInt::FastCalc' => {
766         'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.5012.tar.gz',
767         'FILES'        => q[cpan/Math-BigInt-FastCalc],
768         'EXCLUDED'     => [
769             qr{^inc/},
770             qr{^xt/},
771             qr{^t/author-},
772             qr{^t/release-},
773             qr{^t/Math/BigInt/Lib/TestUtil.pm},
774             qw( t/00sig.t
775                 t/01load.t
776                 ),
777
778             # instead we use the versions of these test
779             # files that come with Math::BigInt:
780             qw( t/bigfltpm.inc
781                 t/bigfltpm.t
782                 t/bigintpm.inc
783                 t/bigintpm.t
784                 t/mbimbf.inc
785                 t/mbimbf.t
786                 ),
787         ],
788     },
789
790     'Math::BigRat' => {
791         'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2621.tar.gz',
792         'FILES'        => q[cpan/Math-BigRat],
793         'EXCLUDED'     => [
794             qr{^xt/},
795             qr{^math-bigrat-pod.diff},
796             qr{^t/author-},
797             qr{^t/release-},
798             qw( t/00sig.t
799                 t/01load.t
800                 ),
801         ],
802     },
803
804     'Math::Complex' => {
805         'DISTRIBUTION' => 'ZEFRAM/Math-Complex-1.59.tar.gz',
806         'FILES'        => q[cpan/Math-Complex],
807         'CUSTOMIZED'   => [
808             'lib/Math/Complex.pm', # CPAN RT 118467
809             't/Complex.t',         # CPAN RT 118467
810             't/Trig.t',            # CPAN RT 118467
811             't/underbar.t',
812         ],
813         'EXCLUDED'     => [
814             qw( t/pod.t
815                 t/pod-coverage.t
816                 ),
817         ],
818     },
819
820     'Memoize' => {
821         'DISTRIBUTION' => 'MJD/Memoize-1.03.tgz',
822         'FILES'        => q[cpan/Memoize],
823         'EXCLUDED'     => ['article.html'],
824         'CUSTOMIZED'   => [
825             # CVE-2016-1238
826             qw( Memoize.pm ),
827
828             # CPAN RT 108382
829             qw( t/expmod_t.t t/speed.t ),
830
831             # CPAN RT 139736
832             qw( t/errors.t t/tie_gdbm.t ),
833         ],
834     },
835
836     'MIME::Base64' => {
837         'DISTRIBUTION' => 'CAPOEIRAB/MIME-Base64-3.16.tar.gz',
838         'FILES'        => q[cpan/MIME-Base64],
839         'EXCLUDED'     => [ qr{^xt/}, 'benchmark', 'benchmark-qp', qr{^t/00-report-prereqs} ],
840     },
841
842     'Module::CoreList' => {
843         'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20220320.tar.gz',
844         'FILES'        => q[dist/Module-CoreList],
845     },
846
847     'Module::Load' => {
848         'DISTRIBUTION' => 'BINGOS/Module-Load-0.36.tar.gz',
849         'FILES'        => q[cpan/Module-Load],
850     },
851
852     'Module::Load::Conditional' => {
853         'DISTRIBUTION' => 'BINGOS/Module-Load-Conditional-0.74.tar.gz',
854         'FILES'        => q[cpan/Module-Load-Conditional],
855     },
856
857     'Module::Loaded' => {
858         'DISTRIBUTION' => 'BINGOS/Module-Loaded-0.08.tar.gz',
859         'FILES'        => q[cpan/Module-Loaded],
860     },
861
862     'Module::Metadata' => {
863         'DISTRIBUTION' => 'ETHER/Module-Metadata-1.000037.tar.gz',
864         'FILES'        => q[cpan/Module-Metadata],
865         'EXCLUDED'     => [
866             qw(t/00-report-prereqs.t),
867             qw(t/00-report-prereqs.dd),
868             qr{weaver.ini},
869             qr{^xt},
870         ],
871     },
872
873     'Net::Ping' => {
874         'DISTRIBUTION' => 'RURBAN/Net-Ping-2.74.tar.gz',
875         'FILES'        => q[dist/Net-Ping],
876         'EXCLUDED'     => [
877             qr{^\.[awc]},
878             qw(README.md.PL),
879             qw(t/020_external.t),
880             qw(t/600_pod.t),
881             qw(t/601_pod-coverage.t),
882             qw(t/602_kwalitee.t),
883             qw(t/603_meta.t),
884             qw(t/604_manifest.t),
885             qw(t/appveyor-test.bat),
886
887         ],
888         'CUSTOMIZED' => [
889             qw{
890                 t/000_load.t
891                 t/001_new.t
892                 t/010_pingecho.t
893                 t/450_service.t
894                 t/500_ping_icmp.t
895                 t/501_ping_icmpv6.t
896             }
897         ],
898     },
899
900     'NEXT' => {
901         'DISTRIBUTION' => 'NEILB/NEXT-0.69.tar.gz',
902         'FILES'        => q[cpan/NEXT],
903         'EXCLUDED'     => [qr{^demo/}],
904     },
905
906     'Params::Check' => {
907         'DISTRIBUTION' => 'BINGOS/Params-Check-0.38.tar.gz',
908         'FILES'        => q[cpan/Params-Check],
909     },
910
911     'parent' => {
912         'DISTRIBUTION' => 'CORION/parent-0.238.tar.gz',
913         'FILES'        => q[cpan/parent],
914         'EXCLUDED'     => [
915             qr{^xt}
916         ],
917     },
918
919     'PathTools' => {
920         'DISTRIBUTION' => 'XSAWYERX/PathTools-3.75.tar.gz',
921         'MAIN_MODULE'  => 'File::Spec',
922         'FILES'        => q[dist/PathTools],
923         'EXCLUDED'     => [
924             qr{^t/lib/Test/},
925             qw( t/rel2abs_vs_symlink.t),
926         ],
927     },
928
929     'Perl::OSType' => {
930         'DISTRIBUTION' => 'DAGOLDEN/Perl-OSType-1.010.tar.gz',
931         'FILES'        => q[cpan/Perl-OSType],
932         'EXCLUDED'     => [qw(tidyall.ini), qr/^xt/, qr{^t/00-}],
933     },
934
935     'perlfaq' => {
936         'DISTRIBUTION' => 'ETHER/perlfaq-5.20210520.tar.gz',
937         'FILES'        => q[cpan/perlfaq],
938         'EXCLUDED'     => [ qr/^inc/, qr/^xt/, qr{^t/00-} ],
939     },
940
941     'PerlIO::via::QuotedPrint' => {
942         'DISTRIBUTION' => 'SHAY/PerlIO-via-QuotedPrint-0.09.tar.gz',
943         'FILES'        => q[cpan/PerlIO-via-QuotedPrint],
944     },
945
946     'Pod::Checker' => {
947         'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.74.tar.gz',
948         'FILES'        => q[cpan/Pod-Checker],
949     },
950
951     'Pod::Escapes' => {
952         'DISTRIBUTION' => 'NEILB/Pod-Escapes-1.07.tar.gz',
953         'FILES'        => q[cpan/Pod-Escapes],
954     },
955
956     'Pod::Perldoc' => {
957         'DISTRIBUTION' => 'MALLEN/Pod-Perldoc-3.28.tar.gz',
958         'FILES'        => q[cpan/Pod-Perldoc],
959
960         # Note that we use the CPAN-provided Makefile.PL, since it
961         # contains special handling of the installation of perldoc.pod
962
963         'EXCLUDED' => [
964             # In blead, the perldoc executable is generated by perldoc.PL
965             # instead
966             # XXX We can and should fix this, but clean up the DRY-failure in
967             # utils first
968             'perldoc',
969
970             # https://rt.cpan.org/Ticket/Display.html?id=116827
971             't/02_module_pod_output.t'
972         ],
973
974         'CUSTOMIZED'   => [
975             # [rt.cpan.org #88204], [rt.cpan.org #120229]
976             'lib/Pod/Perldoc.pm',
977         ],
978     },
979
980     'Pod::Simple' => {
981         'DISTRIBUTION' => 'KHW/Pod-Simple-3.43.tar.gz',
982         'FILES'        => q[cpan/Pod-Simple],
983         'EXCLUDED' => [
984             qw{.ChangeLog.swp},
985             qr{^\.github/}
986         ],
987     },
988
989     'Pod::Usage' => {
990         'DISTRIBUTION' => 'ATOOMIC/Pod-Usage-2.01.tar.gz',
991         'FILES'        => q[cpan/Pod-Usage],
992         'EXCLUDED' => [
993             qr{^t/00-},
994             qr{^xt/}
995         ],
996     },
997
998     'podlators' => {
999         'DISTRIBUTION' => 'RRA/podlators-4.14.tar.gz',
1000         'MAIN_MODULE'  => 'Pod::Man',
1001         'FILES'        => q[cpan/podlators pod/perlpodstyle.pod],
1002         'EXCLUDED'     => [
1003             qr{^docs/metadata/},
1004         ],
1005
1006         # https://github.com/rra/podlators/pull/15
1007         'CUSTOMIZED' => [
1008             't/general/basic.t',
1009             't/man/empty.t',
1010             't/man/no-encode.t',
1011             't/text/invalid.t',
1012         ],
1013
1014         'MAP' => {
1015             ''                 => 'cpan/podlators/',
1016             # this file lives outside the cpan/ directory
1017             'pod/perlpodstyle.pod' => 'pod/perlpodstyle.pod',
1018         },
1019     },
1020
1021     'Safe' => {
1022         'DISTRIBUTION' => 'RGARCIA/Safe-2.35.tar.gz',
1023         'FILES'        => q[dist/Safe],
1024     },
1025
1026     'Scalar::Util' => {
1027         'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.62.tar.gz',
1028         'FILES'        => q[cpan/Scalar-List-Utils],
1029     },
1030
1031     'Search::Dict' => {
1032         'DISTRIBUTION' => 'DAGOLDEN/Search-Dict-1.07.tar.gz',
1033         'FILES'        => q[dist/Search-Dict],
1034     },
1035
1036     'SelfLoader' => {
1037         'DISTRIBUTION' => 'SMUELLER/SelfLoader-1.24.tar.gz',
1038         'FILES'        => q[dist/SelfLoader],
1039         'EXCLUDED'     => ['t/00pod.t'],
1040     },
1041
1042     'Socket' => {
1043         'DISTRIBUTION' => 'PEVANS/Socket-2.032.tar.gz',
1044         'FILES'        => q[cpan/Socket],
1045         # https://rt.cpan.org/Ticket/Display.html?id=142470&results=b81893fab36c7e48a07b4b763c03731a
1046         # maybe others
1047         'CUSTOMIZED' => [
1048             'Socket.pm',
1049             'Socket.xs',
1050         ],
1051     },
1052
1053     'Storable' => {
1054         'DISTRIBUTION' => 'NWCLARK/Storable-3.25.tar.gz',
1055         'FILES'        => q[dist/Storable],
1056         'EXCLUDED'     => [
1057             qr{^t/compat/},
1058         ],
1059     },
1060
1061     'Sys::Syslog' => {
1062         'DISTRIBUTION' => 'SAPER/Sys-Syslog-0.36.tar.gz',
1063         'FILES'        => q[cpan/Sys-Syslog],
1064         'EXCLUDED'     => [
1065             qr{^eg/},
1066             qw( README.win32
1067                 t/data-validation.t
1068                 t/distchk.t
1069                 t/pod.t
1070                 t/podcover.t
1071                 t/podspell.t
1072                 t/portfs.t
1073                 win32/PerlLog.RES
1074                 ),
1075         ],
1076     },
1077
1078     'Term::ANSIColor' => {
1079         'DISTRIBUTION' => 'RRA/Term-ANSIColor-5.01.tar.gz',
1080         'FILES'        => q[cpan/Term-ANSIColor],
1081         'EXCLUDED'     => [
1082             qr{^docs/},
1083             qr{^examples/},
1084             qr{^t/data/},
1085             qr{^t/docs/},
1086             qr{^t/style/},
1087             qw( t/module/aliases-env.t ),
1088         ],
1089     },
1090
1091     'Term::Cap' => {
1092         'DISTRIBUTION' => 'JSTOWE/Term-Cap-1.17.tar.gz',
1093         'FILES'        => q[cpan/Term-Cap],
1094     },
1095
1096     'Term::Complete' => {
1097         'DISTRIBUTION' => 'FLORA/Term-Complete-1.402.tar.gz',
1098         'FILES'        => q[dist/Term-Complete],
1099         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1100     },
1101
1102     'Term::ReadLine' => {
1103         'DISTRIBUTION' => 'FLORA/Term-ReadLine-1.14.tar.gz',
1104         'FILES'        => q[dist/Term-ReadLine],
1105         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1106     },
1107
1108     'Test' => {
1109         'DISTRIBUTION' => 'JESSE/Test-1.26.tar.gz',
1110         'FILES'        => q[dist/Test],
1111     },
1112
1113     'Test::Harness' => {
1114         'DISTRIBUTION' => 'LEONT/Test-Harness-3.44.tar.gz',
1115         'FILES'        => q[cpan/Test-Harness],
1116         'EXCLUDED'     => [
1117             qr{^examples/},
1118             qr{^xt/},
1119             qw( Changes-2.64
1120                 MANIFEST.CUMMULATIVE
1121                 HACKING.pod
1122                 perlcriticrc
1123                 t/000-load.t
1124                 t/lib/if.pm
1125                 ),
1126         ],
1127         'CUSTOMIZED' => [
1128             't/harness.t'
1129         ]
1130     },
1131
1132     'Test::Simple' => {
1133         'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302190.tar.gz',
1134         'FILES'        => q[cpan/Test-Simple],
1135         'EXCLUDED'     => [
1136             qr{^examples/},
1137             qr{^xt/},
1138             qw( appveyor.yml
1139                 t/00compile.t
1140                 t/00-report.t
1141                 t/zzz-check-breaks.t
1142                 ),
1143         ],
1144     },
1145
1146     'Text::Abbrev' => {
1147         'DISTRIBUTION' => 'FLORA/Text-Abbrev-1.02.tar.gz',
1148         'FILES'        => q[dist/Text-Abbrev],
1149         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1150     },
1151
1152     'Text::Balanced' => {
1153         'DISTRIBUTION' => 'SHAY/Text-Balanced-2.04.tar.gz',
1154         'FILES'        => q[cpan/Text-Balanced],
1155         'EXCLUDED'     => [
1156             qw( t/97_meta.t
1157                 t/98_pod.t
1158                 t/99_pmv.t
1159                 ),
1160         ],
1161     },
1162
1163     'Text::ParseWords' => {
1164         'DISTRIBUTION' => 'NEILB/Text-ParseWords-3.31.tar.gz',
1165         'FILES'        => q[cpan/Text-ParseWords],
1166     },
1167
1168     'Text-Tabs+Wrap' => {
1169         'DISTRIBUTION' => 'ARISTOTLE/Text-Tabs+Wrap-2021.0814.tar.gz',
1170         'MAIN_MODULE'  => 'Text::Tabs',
1171         'FILES'        => q[cpan/Text-Tabs],
1172         'EXCLUDED'   => [
1173             qr{^xt},
1174
1175         ],
1176         'MAP'          => {
1177             ''                        => 'cpan/Text-Tabs/',
1178             'lib.modern/Text/Tabs.pm' => 'cpan/Text-Tabs/lib/Text/Tabs.pm',
1179             'lib.modern/Text/Wrap.pm' => 'cpan/Text-Tabs/lib/Text/Wrap.pm',
1180         },
1181     },
1182
1183     # Jerry Hedden does take patches that are applied to blead first, even
1184     # though that can be hard to discern from the Git history; so it's
1185     # correct for this (and Thread::Semaphore, threads, and threads::shared)
1186     # to be under dist/ rather than cpan/
1187     'Thread::Queue' => {
1188         'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.13.tar.gz',
1189         'FILES'        => q[dist/Thread-Queue],
1190         'EXCLUDED'     => [
1191             qr{^examples/},
1192             qw( t/00_load.t
1193                 t/99_pod.t
1194                 t/test.pl
1195                 ),
1196         ],
1197     },
1198
1199     'Thread::Semaphore' => {
1200         'DISTRIBUTION' => 'JDHEDDEN/Thread-Semaphore-2.13.tar.gz',
1201         'FILES'        => q[dist/Thread-Semaphore],
1202         'EXCLUDED'     => [
1203             qw( examples/semaphore.pl
1204                 t/00_load.t
1205                 t/99_pod.t
1206                 t/test.pl
1207                 ),
1208         ],
1209     },
1210
1211     'threads' => {
1212         'DISTRIBUTION' => 'JDHEDDEN/threads-2.21.tar.gz',
1213         'FILES'        => q[dist/threads],
1214         'EXCLUDED'     => [
1215             qr{^examples/},
1216             qw( t/pod.t
1217                 t/test.pl
1218                 threads.h
1219                 ),
1220         ],
1221     },
1222
1223     'threads::shared' => {
1224         'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.59.tar.gz',
1225         'FILES'        => q[dist/threads-shared],
1226         'EXCLUDED'     => [
1227             qw( examples/class.pl
1228                 shared.h
1229                 t/pod.t
1230                 t/test.pl
1231                 ),
1232         ],
1233     },
1234
1235     'Tie::File' => {
1236         'DISTRIBUTION' => 'TODDR/Tie-File-1.05.tar.gz',
1237         'FILES'        => q[dist/Tie-File],
1238     },
1239
1240     'Tie::RefHash' => {
1241         'DISTRIBUTION' => 'ETHER/Tie-RefHash-1.40.tar.gz',
1242         'FILES'        => q[cpan/Tie-RefHash],
1243         'EXCLUDED'     => [
1244             qr{^t/00-},
1245             qr{^xt/},
1246         ],
1247     },
1248
1249     'Time::HiRes' => {
1250         'DISTRIBUTION' => 'ATOOMIC/Time-HiRes-1.9764.tar.gz',
1251         'FILES'        => q[dist/Time-HiRes],
1252     },
1253
1254     'Time::Local' => {
1255         'DISTRIBUTION' => 'DROLSKY/Time-Local-1.30.tar.gz',
1256         'FILES'        => q[cpan/Time-Local],
1257         'EXCLUDED'     => [
1258             qr{^xt/},
1259             qw( CODE_OF_CONDUCT.md
1260                 azure-pipelines.yml
1261                 perlcriticrc
1262                 perltidyrc
1263                 tidyall.ini
1264                 t/00-report-prereqs.t
1265                 t/00-report-prereqs.dd
1266                 ),
1267         ],
1268     },
1269
1270     'Time::Piece' => {
1271         'DISTRIBUTION' => 'ESAYM/Time-Piece-1.3401.tar.gz',
1272         'FILES'        => q[cpan/Time-Piece],
1273         'EXCLUDED'     => [ qw[reverse_deps.txt] ],
1274     },
1275
1276     'Unicode::Collate' => {
1277         'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-1.31.tar.gz',
1278         'FILES'        => q[cpan/Unicode-Collate],
1279         'EXCLUDED'     => [
1280             qr{N$},
1281             qr{^data/},
1282             qr{^gendata/},
1283             qw( disableXS
1284                 enableXS
1285                 mklocale
1286                 ),
1287         ],
1288     },
1289
1290     'Unicode::Normalize' => {
1291         'DISTRIBUTION' => 'KHW/Unicode-Normalize-1.26.tar.gz',
1292         'FILES'        => q[dist/Unicode-Normalize],
1293         'EXCLUDED'     => [
1294             qw( MANIFEST.N
1295                 Normalize.pmN
1296                 disableXS
1297                 enableXS
1298                 ),
1299         ],
1300     },
1301
1302     'version' => {
1303         'DISTRIBUTION' => 'LEONT/version-0.9929.tar.gz',
1304         'FILES'        => q[cpan/version vutil.c vutil.h vxs.inc],
1305         'EXCLUDED' => [
1306             qr{^vutil/lib/},
1307             'vutil/Makefile.PL',
1308             'vutil/ppport.h',
1309             'vutil/vxs.xs',
1310             't/00impl-pp.t',
1311             't/survey_locales',
1312             'vperl/vpp.pm',
1313         ],
1314
1315         # When adding the CPAN-distributed files for version.pm, it is necessary
1316         # to delete an entire block out of lib/version.pm, since that code is
1317         # only necessary with the CPAN release.
1318         'CUSTOMIZED'   => [
1319             'lib/version.pm'
1320          ],
1321
1322         'MAP' => {
1323             'vutil/'         => '',
1324             ''               => 'cpan/version/',
1325         },
1326     },
1327
1328     'warnings' => {
1329         'FILES'      => q[
1330                  lib/warnings
1331                  lib/warnings.{pm,t}
1332                  regen/warnings.pl
1333                  t/lib/warnings
1334         ],
1335     },
1336
1337     'Win32' => {
1338         'DISTRIBUTION' => "JDB/Win32-0.58.tar.gz",
1339         'FILES'        => q[cpan/Win32],
1340     },
1341
1342     'Win32API::File' => {
1343         'DISTRIBUTION' => 'CHORNY/Win32API-File-0.1203.tar.gz',
1344         'FILES'        => q[cpan/Win32API-File],
1345         'EXCLUDED'     => [
1346             qr{^ex/},
1347         ],
1348         # https://rt.cpan.org/Ticket/Display.html?id=127837
1349         'CUSTOMIZED'   => [
1350             qw( File.pm
1351                 File.xs
1352                 ),
1353         ],
1354     },
1355
1356     'XSLoader' => {
1357         'DISTRIBUTION' => 'SAPER/XSLoader-0.24.tar.gz',
1358         'FILES'        => q[dist/XSLoader],
1359         'EXCLUDED'     => [
1360             qr{^eg/},
1361             qw( t/00-load.t
1362                 t/01-api.t
1363                 t/distchk.t
1364                 t/pod.t
1365                 t/podcover.t
1366                 t/portfs.t
1367                 ),
1368             'XSLoader.pm',    # we use XSLoader_pm.PL
1369         ],
1370     },
1371
1372     # this pseudo-module represents all the files under ext/ and lib/
1373     # that aren't otherwise claimed. This means that the following two
1374     # commands will check that every file under ext/ and lib/ is
1375     # accounted for, and that there are no duplicates:
1376     #
1377     #    perl Porting/Maintainers --checkmani lib ext
1378     #    perl Porting/Maintainers --checkmani
1379
1380     '_PERLLIB' => {
1381         'FILES'    => q[
1382                 ext/Amiga-ARexx/
1383                 ext/Amiga-Exec/
1384                 ext/B/
1385                 ext/Devel-Peek/
1386                 ext/DynaLoader/
1387                 ext/Errno/
1388                 ext/ExtUtils-Miniperl/
1389                 ext/Fcntl/
1390                 ext/File-DosGlob/
1391                 ext/File-Find/
1392                 ext/File-Glob/
1393                 ext/FileCache/
1394                 ext/GDBM_File/
1395                 ext/Hash-Util-FieldHash/
1396                 ext/Hash-Util/
1397                 ext/I18N-Langinfo/
1398                 ext/IPC-Open3/
1399                 ext/NDBM_File/
1400                 ext/ODBM_File/
1401                 ext/Opcode/
1402                 ext/POSIX/
1403                 ext/PerlIO-encoding/
1404                 ext/PerlIO-mmap/
1405                 ext/PerlIO-scalar/
1406                 ext/PerlIO-via/
1407                 ext/Pod-Functions/
1408                 ext/Pod-Html/
1409                 ext/SDBM_File/
1410                 ext/Sys-Hostname/
1411                 ext/Tie-Hash-NamedCapture/
1412                 ext/Tie-Memoize/
1413                 ext/VMS-DCLsym/
1414                 ext/VMS-Filespec/
1415                 ext/VMS-Stdio/
1416                 ext/Win32CORE/
1417                 ext/XS-APItest/
1418                 ext/XS-Typemap/
1419                 ext/attributes/
1420                 ext/mro/
1421                 ext/re/
1422                 lib/AnyDBM_File.{pm,t}
1423                 lib/Benchmark.{pm,t}
1424                 lib/B/Deparse{.pm,.t,-*.t}
1425                 lib/B/Op_private.pm
1426                 lib/CORE.pod
1427                 lib/Class/Struct.{pm,t}
1428                 lib/Config.t
1429                 lib/Config/Extensions.{pm,t}
1430                 lib/DB.{pm,t}
1431                 lib/DBM_Filter.pm
1432                 lib/DBM_Filter/
1433                 lib/DirHandle.{pm,t}
1434                 lib/English.{pm,t}
1435                 lib/ExtUtils/Embed.pm
1436                 lib/ExtUtils/XSSymSet.pm
1437                 lib/ExtUtils/t/Embed.t
1438                 lib/ExtUtils/typemap
1439                 lib/File/Basename.{pm,t}
1440                 lib/File/Compare.{pm,t}
1441                 lib/File/Copy.{pm,t}
1442                 lib/File/stat{.pm,.t,-7896.t}
1443                 lib/FileHandle.{pm,t}
1444                 lib/Getopt/Std.{pm,t}
1445                 lib/Internals.pod
1446                 lib/Internals.t
1447                 lib/meta_notation.{pm,t}
1448                 lib/Net/hostent.{pm,t}
1449                 lib/Net/netent.{pm,t}
1450                 lib/Net/protoent.{pm,t}
1451                 lib/Net/servent.{pm,t}
1452                 lib/PerlIO.pm
1453                 lib/Pod/t/Usage.t
1454                 lib/SelectSaver.{pm,t}
1455                 lib/Symbol.{pm,t}
1456                 lib/Thread.{pm,t}
1457                 lib/Tie/Array.pm
1458                 lib/Tie/Array/
1459                 lib/Tie/ExtraHash.t
1460                 lib/Tie/Handle.pm
1461                 lib/Tie/Handle/
1462                 lib/Tie/Hash.{pm,t}
1463                 lib/Tie/Scalar.{pm,t}
1464                 lib/Tie/StdHandle.pm
1465                 lib/Tie/SubstrHash.{pm,t}
1466                 lib/Time/gmtime.{pm,t}
1467                 lib/Time/localtime.{pm,t}
1468                 lib/Time/tm.pm
1469                 lib/UNIVERSAL.pm
1470                 lib/Unicode/README
1471                 lib/Unicode/UCD.{pm,t}
1472                 lib/User/grent.{pm,t}
1473                 lib/User/pwent.{pm,t}
1474                 lib/_charnames.pm
1475                 lib/blib.{pm,t}
1476                 lib/builtin.{pm,t}
1477                 lib/bytes.{pm,t}
1478                 lib/bytes_heavy.pl
1479                 lib/charnames.{pm,t}
1480                 lib/dbm_filter_util.pl
1481                 lib/deprecate.pm
1482                 lib/diagnostics.{pm,t}
1483                 lib/dumpvar.{pl,t}
1484                 lib/feature.{pm,t}
1485                 lib/feature/
1486                 lib/filetest.{pm,t}
1487                 lib/h2ph.t
1488                 lib/h2xs.t
1489                 lib/integer.{pm,t}
1490                 lib/less.{pm,t}
1491                 lib/locale.{pm,t}
1492                 lib/locale_threads.t
1493                 lib/open.{pm,t}
1494                 lib/overload/numbers.pm
1495                 lib/overloading.{pm,t}
1496                 lib/overload{.pm,.t,64.t}
1497                 lib/perl5db.{pl,t}
1498                 lib/perl5db/
1499                 lib/perlbug.t
1500                 lib/sigtrap.{pm,t}
1501                 lib/sort.{pm,t}
1502                 lib/strict.{pm,t}
1503                 lib/subs.{pm,t}
1504                 lib/unicore/
1505                 lib/utf8.{pm,t}
1506                 lib/vars{.pm,.t,_carp.t}
1507                 lib/vmsish.{pm,t}
1508                 ],
1509     },
1510 );
1511
1512 # legacy CPAN flag
1513 for ( values %Modules ) {
1514     $_->{CPAN} = !!$_->{DISTRIBUTION};
1515 }
1516
1517 # legacy UPSTREAM flag
1518 for ( keys %Modules ) {
1519     # Keep any existing UPSTREAM flag so that "overrides" can be applied
1520     next if exists $Modules{$_}{UPSTREAM};
1521
1522     if ($_ eq '_PERLLIB' or $Modules{$_}{FILES} =~ m{^\s*(?:dist|ext|lib)/}) {
1523         $Modules{$_}{UPSTREAM} = 'blead';
1524     }
1525     elsif ($Modules{$_}{FILES} =~ m{^\s*cpan/}) {
1526         $Modules{$_}{UPSTREAM} = 'cpan';
1527     }
1528     else {
1529         warn "Unexpected location of FILES for module $_: $Modules{$_}{FILES}";
1530     }
1531 }
1532
1533 # legacy MAINTAINER field
1534 for ( keys %Modules ) {
1535     # Keep any existing MAINTAINER flag so that "overrides" can be applied
1536     next if exists $Modules{$_}{MAINTAINER};
1537
1538     if ($Modules{$_}{UPSTREAM} eq 'blead') {
1539         $Modules{$_}{MAINTAINER} = 'P5P';
1540         $Maintainers{P5P} = 'perl5-porters <perl5-porters@perl.org>';
1541     }
1542     elsif (exists $Modules{$_}{DISTRIBUTION}) {
1543         (my $pause_id = $Modules{$_}{DISTRIBUTION}) =~ s{/.*$}{};
1544         $Modules{$_}{MAINTAINER} = $pause_id;
1545         $Maintainers{$pause_id} = "<$pause_id\@cpan.org>";
1546     }
1547     else {
1548         warn "No DISTRIBUTION for non-blead module $_";
1549     }
1550 }
1551
1552 1;