This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Update McUpdate
[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 .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.
69
70 # EXCLUDED is a list of files to be excluded from a CPAN tarball before
71 # comparing the remaining contents with core. Each item can either be a
72 # full pathname (eg 't/foo.t') or a pattern (e.g. qr{^t/}).
73 # It defaults to the empty list.
74
75 # CUSTOMIZED is a list of files that have been customized within the
76 # Perl core.  Use this whenever patching a cpan upstream distribution
77 # or whenever we expect to have a file that differs from the tarball.
78 # If the file in blead matches the file in the tarball from CPAN,
79 # Porting/core-cpan-diff will warn about it, as it indicates an expected
80 # customization might have been lost when updating from upstream.  The
81 # path should be relative to the distribution directory.  If the upstream
82 # distribution should be modified to incorporate the change then be sure
83 # to raise a ticket for it on rt.cpan.org and add a comment alongside the
84 # list of CUSTOMIZED files noting the ticket number.
85
86 # DEPRECATED contains the *first* version of Perl in which the module
87 # was considered deprecated.  It should only be present if the module is
88 # actually deprecated.  Such modules should use deprecated.pm to
89 # issue a warning if used.  E.g.:
90 #
91 #     use if $] >= 5.011, 'deprecate';
92 #
93
94 # MAP is a hash that maps CPAN paths to their core equivalents.
95 # Each key represents a string prefix, with longest prefixes checked
96 # first. The first match causes that prefix to be replaced with the
97 # corresponding key. For example, with the following MAP:
98 #   {
99 #     'lib/'     => 'lib/',
100 #     ''     => 'lib/Foo/',
101 #   },
102 #
103 # these files are mapped as shown:
104 #
105 #    README     becomes lib/Foo/README
106 #    lib/Foo.pm becomes lib/Foo.pm
107 #
108 # The default is dependent on the type of module.
109 # For distributions which appear to be stored under ext/, it defaults to:
110 #
111 #   { '' => 'ext/Foo-Bar/' }
112 #
113 # otherwise, it's
114 #
115 #   {
116 #     'lib/'     => 'lib/',
117 #     ''     => 'lib/Foo/Bar/',
118 #   }
119
120 %Modules = (
121
122     'Archive::Tar' => {
123         'DISTRIBUTION' => 'BINGOS/Archive-Tar-2.24.tar.gz',
124         'FILES'        => q[cpan/Archive-Tar],
125         'BUGS'         => 'bug-archive-tar@rt.cpan.org',
126         'EXCLUDED'     => [
127             qw(t/07_ptardiff.t),
128         ],
129     },
130
131     'Attribute::Handlers' => {
132         'DISTRIBUTION' => 'RJBS/Attribute-Handlers-0.99.tar.gz',
133         'FILES'        => q[dist/Attribute-Handlers],
134     },
135
136     'autodie' => {
137         'DISTRIBUTION' => 'PJF/autodie-2.29.tar.gz',
138         'FILES'        => q[cpan/autodie],
139         'EXCLUDED'     => [
140             qr{benchmarks},
141             qr{README\.md},
142             # All these tests depend upon external
143             # modules that don't exist when we're
144             # building the core.  Hence, they can
145             # never run, and should not be merged.
146             qw( t/author-critic.t
147                 t/critic.t
148                 t/fork.t
149                 t/kwalitee.t
150                 t/lex58.t
151                 t/pod-coverage.t
152                 t/pod.t
153                 t/release-pod-coverage.t
154                 t/release-pod-syntax.t
155                 t/socket.t
156                 t/system.t
157                 )
158         ],
159         # CPAN RT 105344
160         'CUSTOMIZED'   => [ qw[ t/mkdir.t ] ],
161     },
162
163     'AutoLoader' => {
164         'DISTRIBUTION' => 'SMUELLER/AutoLoader-5.74.tar.gz',
165         'FILES'        => q[cpan/AutoLoader],
166         'EXCLUDED'     => ['t/00pod.t'],
167     },
168
169     'autouse' => {
170         'DISTRIBUTION' => 'RJBS/autouse-1.11.tar.gz',
171         'FILES'        => q[dist/autouse],
172         'EXCLUDED'     => [qr{^t/release-.*\.t}],
173     },
174
175     'B::Debug' => {
176         'DISTRIBUTION' => 'RURBAN/B-Debug-1.24.tar.gz',
177         'FILES'        => q[cpan/B-Debug],
178         'EXCLUDED'     => ['t/pod.t'],
179     },
180
181     'base' => {
182         'DISTRIBUTION' => 'RJBS/base-2.23.tar.gz',
183         'FILES'        => q[dist/base],
184         'CUSTOMIZED'   => [
185             # https://rt.perl.org/Ticket/Display.html?id=127834
186             qw( lib/base.pm )
187         ],
188     },
189
190     'bignum' => {
191         'DISTRIBUTION' => 'PJACKLAM/bignum-0.47.tar.gz',
192         'FILES'        => q[cpan/bignum],
193         'EXCLUDED'     => [
194             qr{^t/author-},
195             qw( t/00sig.t
196                 t/01load.t
197                 t/02pod.t
198                 t/03podcov.t
199                 ),
200         ],
201     },
202
203     'Carp' => {
204         'DISTRIBUTION' => 'RJBS/Carp-1.38.tar.gz',
205         'FILES'        => q[dist/Carp],
206     },
207
208     'Compress::Raw::Bzip2' => {
209         'DISTRIBUTION' => 'PMQS/Compress-Raw-Bzip2-2.070.tar.gz',
210         'FILES'        => q[cpan/Compress-Raw-Bzip2],
211         'EXCLUDED'     => [
212             qr{^t/Test/},
213             'bzip2-src/bzip2-const.patch',
214             'bzip2-src/bzip2-cpp.patch',
215             'bzip2-src/bzip2-unsigned.patch',
216         ],
217     },
218
219     'Compress::Raw::Zlib' => {
220         'DISTRIBUTION' => 'PMQS/Compress-Raw-Zlib-2.070.tar.gz',
221
222         'FILES'    => q[cpan/Compress-Raw-Zlib],
223         'EXCLUDED' => [
224             qr{^examples/},
225             qr{^t/Test/},
226             qw( t/000prereq.t
227                 t/99pod.t
228                 ),
229         ],
230     },
231
232     'Config::Perl::V' => {
233         'DISTRIBUTION' => 'HMBRAND/Config-Perl-V-0.27.tgz',
234         'FILES'        => q[cpan/Config-Perl-V],
235         'EXCLUDED'     => [qw(
236                 examples/show-v.pl
237                 )],
238     },
239
240     'constant' => {
241         'DISTRIBUTION' => 'RJBS/constant-1.33.tar.gz',
242         'FILES'        => q[dist/constant],
243         'EXCLUDED'     => [
244             qw( t/00-load.t
245                 t/more-tests.t
246                 t/pod-coverage.t
247                 t/pod.t
248                 eg/synopsis.pl
249                 ),
250         ],
251     },
252
253     'CPAN' => {
254         'DISTRIBUTION' => 'ANDK/CPAN-2.16-TRIAL2.tar.gz',
255         'FILES'        => q[cpan/CPAN],
256         'EXCLUDED'     => [
257             qr{^distroprefs/},
258             qr{^inc/Test/},
259             qr{^t/CPAN/},
260             qr{^t/data/},
261             qr{^t/97-},
262             qw( lib/CPAN/Admin.pm
263                 scripts/cpan-mirrors
264                 PAUSE2015.pub
265                 SlayMakefile
266                 t/00signature.t
267                 t/04clean_load.t
268                 t/12cpan.t
269                 t/13tarzip.t
270                 t/14forkbomb.t
271                 t/30shell.coverage
272                 t/30shell.t
273                 t/31sessions.t
274                 t/41distribution.t
275                 t/42distroprefs.t
276                 t/43distroprefspref.t
277                 t/44cpanmeta.t
278                 t/50pod.t
279                 t/51pod.t
280                 t/52podcover.t
281                 t/60credentials.t
282                 t/70_critic.t
283                 t/71_minimumversion.t
284                 t/local_utils.pm
285                 t/perlcriticrc
286                 t/yaml_code.yml
287                 ),
288         ],
289     },
290
291     # Note: When updating CPAN-Meta the META.* files will need to be regenerated
292     # perl -Icpan/CPAN-Meta/lib Porting/makemeta
293     'CPAN::Meta' => {
294         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-2.150010.tar.gz',
295         'FILES'        => q[cpan/CPAN-Meta],
296         'EXCLUDED'     => [
297             qw[t/00-report-prereqs.t
298                t/00-report-prereqs.dd
299               ],
300             qr{^xt},
301             qr{^history},
302         ],
303     },
304
305     'CPAN::Meta::Requirements' => {
306         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-Requirements-2.140.tar.gz',
307         'FILES'        => q[cpan/CPAN-Meta-Requirements],
308         'EXCLUDED'     => [
309             qw(t/00-report-prereqs.t),
310             qw(t/00-report-prereqs.dd),
311             qw(t/version-cleanup.t),
312             qr{^xt},
313         ],
314     },
315
316     'CPAN::Meta::YAML' => {
317         'DISTRIBUTION' => 'DAGOLDEN/CPAN-Meta-YAML-0.018.tar.gz',
318         'FILES'        => q[cpan/CPAN-Meta-YAML],
319         'EXCLUDED'     => [
320             't/00-report-prereqs.t',
321             't/00-report-prereqs.dd',
322             qr{^xt},
323         ],
324     },
325
326     'Data::Dumper' => {
327         'DISTRIBUTION' => 'SMUELLER/Data-Dumper-2.161.tar.gz',
328         'FILES'        => q[dist/Data-Dumper],
329     },
330
331     'DB_File' => {
332         'DISTRIBUTION' => 'PMQS/DB_File-1.840.tar.gz',
333         'FILES'        => q[cpan/DB_File],
334         'EXCLUDED'     => [
335             qr{^patches/},
336             qw( t/pod.t
337                 fallback.h
338                 fallback.xs
339                 ),
340         ],
341     },
342
343     'Devel::PPPort' => {
344         'DISTRIBUTION' => 'WOLFSAGE/Devel-PPPort-3.35.tar.gz',
345         # RJBS has asked MHX to have UPSTREAM be 'blead'
346         # (i.e. move this from cpan/ to dist/)
347         'FILES'        => q[cpan/Devel-PPPort],
348         'EXCLUDED'     => [
349             'PPPort.pm',    # we use PPPort_pm.PL instead
350         ]
351     },
352
353     'Devel::SelfStubber' => {
354         'DISTRIBUTION' => 'FLORA/Devel-SelfStubber-1.05.tar.gz',
355         'FILES'        => q[dist/Devel-SelfStubber],
356         'EXCLUDED'     => [qr{^t/release-.*\.t}],
357     },
358
359     'Digest' => {
360         'DISTRIBUTION' => 'GAAS/Digest-1.17.tar.gz',
361         'FILES'        => q[cpan/Digest],
362         'EXCLUDED'     => ['digest-bench'],
363         'CUSTOMIZED'   => [
364             # CVE-2016-1238
365             qw( Digest.pm )
366         ],
367     },
368
369     'Digest::MD5' => {
370         'DISTRIBUTION' => 'GAAS/Digest-MD5-2.55.tar.gz',
371         'FILES'        => q[cpan/Digest-MD5],
372         'EXCLUDED'     => ['rfc1321.txt'],
373     },
374
375     'Digest::SHA' => {
376         'DISTRIBUTION' => 'MSHELOR/Digest-SHA-5.96.tar.gz',
377         'FILES'        => q[cpan/Digest-SHA],
378         'EXCLUDED'     => [
379             qw( t/pod.t
380                 t/podcover.t
381                 examples/dups
382                 ),
383         ],
384     },
385
386     'Dumpvalue' => {
387         'DISTRIBUTION' => 'FLORA/Dumpvalue-1.17.tar.gz',
388         'FILES'        => q[dist/Dumpvalue],
389         'EXCLUDED'     => [qr{^t/release-.*\.t}],
390     },
391
392     'Encode' => {
393         'DISTRIBUTION' => 'DANKOGAI/Encode-2.88.tar.gz',
394         'FILES'        => q[cpan/Encode],
395         'CUSTOMIZED'   => [ qw(Unicode/Unicode.pm) ],
396     },
397
398     'encoding::warnings' => {
399         'DISTRIBUTION' => 'AUDREYT/encoding-warnings-0.11.tar.gz',
400         'FILES'        => q[dist/encoding-warnings],
401         'EXCLUDED'     => [
402             qr{^inc/Module/},
403             qw(t/0-signature.t),
404         ],
405     },
406
407     'Env' => {
408         'DISTRIBUTION' => 'FLORA/Env-1.04.tar.gz',
409         'FILES'        => q[dist/Env],
410         'EXCLUDED'     => [qr{^t/release-.*\.t}],
411     },
412
413     'experimental' => {
414         'DISTRIBUTION' => 'LEONT/experimental-0.016.tar.gz',
415         'FILES'        => q[cpan/experimental],
416         'EXCLUDED'     => [qr{^xt/}],
417     },
418
419     'Exporter' => {
420         'DISTRIBUTION' => 'TODDR/Exporter-5.72.tar.gz',
421         'FILES'        => q[dist/Exporter],
422         'EXCLUDED' => [
423             qw( t/pod.t
424                 t/use.t
425                 ),
426         ],
427     },
428
429     'ExtUtils::CBuilder' => {
430         'DISTRIBUTION' => 'AMBS/ExtUtils-CBuilder-0.280224.tar.gz',
431         'FILES'        => q[dist/ExtUtils-CBuilder],
432         'EXCLUDED'     => [
433             qw(README.mkdn),
434             qr{^xt},
435         ],
436     },
437
438     'ExtUtils::Constant' => {
439
440         'DISTRIBUTION' => 'NWCLARK/ExtUtils-Constant-0.23.tar.gz',
441         'FILES'    => q[cpan/ExtUtils-Constant],
442         'EXCLUDED' => [
443             qw( lib/ExtUtils/Constant/Aaargh56Hash.pm
444                 examples/perl_keyword.pl
445                 examples/perl_regcomp_posix_keyword.pl
446                 ),
447         ],
448         # cc37ebcee3 to fix VMS failure
449         'CUSTOMIZED'   => [ qw(t/Constant.t) ],
450     },
451
452     'ExtUtils::Install' => {
453         'DISTRIBUTION' => 'BINGOS/ExtUtils-Install-2.04.tar.gz',
454         'FILES'        => q[cpan/ExtUtils-Install],
455         'EXCLUDED'     => [
456             qw( t/lib/Test/Builder.pm
457                 t/lib/Test/Builder/Module.pm
458                 t/lib/Test/More.pm
459                 t/lib/Test/Simple.pm
460                 t/pod-coverage.t
461                 t/pod.t
462                 ),
463         ],
464     },
465
466     'ExtUtils::MakeMaker' => {
467         'DISTRIBUTION' => 'BINGOS/ExtUtils-MakeMaker-7.24.tar.gz',
468         'FILES'        => q[cpan/ExtUtils-MakeMaker],
469         'EXCLUDED'     => [
470             qr{^t/lib/Test/},
471             qr{^(bundled|my)/},
472             qr{^t/Liblist_Kid.t},
473             qr{^t/liblist/},
474             qr{^\.perlcriticrc},
475             'PATCHING',
476             'README.packaging',
477             'lib/ExtUtils/MakeMaker/version/vpp.pm',
478         ],
479     },
480
481     'ExtUtils::Manifest' => {
482         'DISTRIBUTION' => 'ETHER/ExtUtils-Manifest-1.70.tar.gz',
483         'FILES'        => q[cpan/ExtUtils-Manifest],
484         'EXCLUDED'     => [
485             qr(^t/00-report-prereqs),
486             qr(^xt/)
487         ],
488     },
489
490     'ExtUtils::ParseXS' => {
491         'DISTRIBUTION' => 'SMUELLER/ExtUtils-ParseXS-3.30.tar.gz',
492         'FILES'        => q[dist/ExtUtils-ParseXS],
493     },
494
495     'File::Fetch' => {
496         'DISTRIBUTION' => 'BINGOS/File-Fetch-0.52.tar.gz',
497         'FILES'        => q[cpan/File-Fetch],
498     },
499
500     'File::Path' => {
501         'DISTRIBUTION' => 'RICHE/File-Path-2.12.tar.gz',
502         'FILES'        => q[cpan/File-Path],
503         'EXCLUDED'     => [
504             qw(t/Path-Class.t),
505             qr{^xt/},
506         ],
507         # https://github.com/rpcme/File-Path/pull/34
508         'CUSTOMIZED' => [ qw( lib/File/Path.pm t/Path_win32.t ) ],
509     },
510
511     'File::Temp' => {
512         'DISTRIBUTION' => 'DAGOLDEN/File-Temp-0.2304.tar.gz',
513         'FILES'        => q[cpan/File-Temp],
514         'EXCLUDED'     => [
515             qw( misc/benchmark.pl
516                 misc/results.txt
517                 ),
518             qw[t/00-report-prereqs.t],
519             qr{^xt},
520         ],
521     },
522
523     'Filter::Simple' => {
524         'DISTRIBUTION' => 'SMUELLER/Filter-Simple-0.91.tar.gz',
525         'FILES'        => q[dist/Filter-Simple],
526         'EXCLUDED'     => [
527             qr{^demo/}
528         ],
529     },
530
531     'Filter::Util::Call' => {
532         'DISTRIBUTION' => 'RURBAN/Filter-1.55.tar.gz',
533         'FILES'        => q[cpan/Filter-Util-Call
534                  pod/perlfilter.pod
535                 ],
536         'EXCLUDED' => [
537             qr{^decrypt/},
538             qr{^examples/},
539             qr{^Exec/},
540             qr{^lib/Filter/},
541             qr{^tee/},
542             qw( Call/Makefile.PL
543                 Call/ppport.h
544                 Call/typemap
545                 mytest
546                 t/cpp.t
547                 t/decrypt.t
548                 t/exec.t
549                 t/order.t
550                 t/sh.t
551                 t/tee.t
552                 t/z_kwalitee.t
553                 t/z_meta.t
554                 t/z_perl_minimum_version.t
555                 t/z_pod-coverage.t
556                 t/z_pod.t
557                 ),
558         ],
559         'MAP' => {
560             'Call/'          => 'cpan/Filter-Util-Call/',
561             'filter-util.pl' => 'cpan/Filter-Util-Call/filter-util.pl',
562             'perlfilter.pod' => 'pod/perlfilter.pod',
563             ''               => 'cpan/Filter-Util-Call/',
564         },
565     },
566
567     'Getopt::Long' => {
568         'DISTRIBUTION' => 'JV/Getopt-Long-2.49.1.tar.gz',
569         'FILES'        => q[cpan/Getopt-Long],
570         'EXCLUDED'     => [
571             qr{^examples/},
572             qw( perl-Getopt-Long.spec
573                 lib/newgetopt.pl
574                 t/gol-compat.t
575                 ),
576         ],
577     },
578
579     'HTTP::Tiny' => {
580         'DISTRIBUTION' => 'DAGOLDEN/HTTP-Tiny-0.070.tar.gz',
581         'FILES'        => q[cpan/HTTP-Tiny],
582         'EXCLUDED'     => [
583             't/00-report-prereqs.t',
584             't/00-report-prereqs.dd',
585             't/200_live.t',
586             't/200_live_local_ip.t',
587             't/210_live_ssl.t',
588             qr/^eg/,
589             qr/^xt/
590         ],
591     },
592
593     'I18N::Collate' => {
594         'DISTRIBUTION' => 'FLORA/I18N-Collate-1.02.tar.gz',
595         'FILES'        => q[dist/I18N-Collate],
596         'EXCLUDED'     => [qr{^t/release-.*\.t}],
597     },
598
599     'I18N::LangTags' => {
600         'FILES'        => q[dist/I18N-LangTags],
601     },
602
603     'if' => {
604         'DISTRIBUTION' => 'RJBS/if-0.0606.tar.gz',
605         'FILES'        => q[dist/if],
606     },
607
608     'IO' => {
609         'DISTRIBUTION' => 'GBARR/IO-1.25.tar.gz',
610         'FILES'        => q[dist/IO/],
611         'EXCLUDED'     => ['t/test.pl'],
612     },
613
614     'IO-Compress' => {
615         'DISTRIBUTION' => 'PMQS/IO-Compress-2.069.tar.gz',
616         'FILES'        => q[cpan/IO-Compress],
617         'EXCLUDED'     => [
618             qr{^examples/},
619             qr{^t/Test/},
620             't/010examples-bzip2.t',
621             't/010examples-zlib.t',
622             't/cz-05examples.t',
623         ],
624         'CUSTOMIZED'   => [
625             # CVE-2016-1238
626             qw(
627                bin/zipdetails lib/Compress/Zlib.pm
628                lib/IO/Compress/Adapter/Bzip2.pm
629                lib/IO/Compress/Adapter/Deflate.pm
630                lib/IO/Compress/Adapter/Identity.pm
631                lib/IO/Compress/Base.pm
632                lib/IO/Compress/Base/Common.pm
633                lib/IO/Compress/Bzip2.pm
634                lib/IO/Compress/Deflate.pm
635                lib/IO/Compress/Gzip.pm
636                lib/IO/Compress/Gzip/Constants.pm
637                lib/IO/Compress/RawDeflate.pm
638                lib/IO/Compress/Zip.pm
639                lib/IO/Compress/Zip/Constants.pm
640                lib/IO/Compress/Zlib/Constants.pm
641                lib/IO/Compress/Zlib/Extra.pm
642                lib/IO/Uncompress/Adapter/Bunzip2.pm
643                lib/IO/Uncompress/Adapter/Identity.pm
644                lib/IO/Uncompress/Adapter/Inflate.pm
645                lib/IO/Uncompress/AnyInflate.pm
646                lib/IO/Uncompress/AnyUncompress.pm
647                lib/IO/Uncompress/Base.pm
648                lib/IO/Uncompress/Bunzip2.pm
649                lib/IO/Uncompress/Gunzip.pm
650                lib/IO/Uncompress/Inflate.pm
651                lib/IO/Uncompress/RawInflate.pm
652                lib/IO/Uncompress/Unzip.pm
653             )
654         ],
655     },
656
657     'IO::Socket::IP' => {
658         'DISTRIBUTION' => 'PEVANS/IO-Socket-IP-0.38.tar.gz',
659         'FILES'        => q[cpan/IO-Socket-IP],
660         'EXCLUDED'     => [
661             qr{^examples/},
662         ],
663     },
664
665     'IO::Zlib' => {
666         'DISTRIBUTION' => 'TOMHUGHES/IO-Zlib-1.10.tar.gz',
667         'FILES'        => q[cpan/IO-Zlib],
668     },
669
670     'IPC::Cmd' => {
671         'DISTRIBUTION' => 'BINGOS/IPC-Cmd-0.96.tar.gz',
672         'FILES'        => q[cpan/IPC-Cmd],
673     },
674
675     'IPC::SysV' => {
676         'DISTRIBUTION' => 'MHX/IPC-SysV-2.07.tar.gz',
677         'FILES'        => q[cpan/IPC-SysV],
678         'EXCLUDED'     => [
679             qw( const-c.inc
680                 const-xs.inc
681                 ),
682         ],
683     },
684
685     'JSON::PP' => {
686         'DISTRIBUTION' => 'MAKAMAKA/JSON-PP-2.27400.tar.gz',
687         'FILES'        => q[cpan/JSON-PP],
688         'CUSTOMIZED'   => [
689             'bin/json_pp',    # CVE-2016-1238
690             'lib/JSON/PP.pm', # CVE-2016-1238, CPAN RT 118469
691             't/011_pc_expo.t',      # CPAN RT 118469
692             't/018_json_checker.t', # CPAN RT 118469
693         ],
694     },
695
696     'lib' => {
697         'DISTRIBUTION' => 'SMUELLER/lib-0.63.tar.gz',
698         'FILES'        => q[dist/lib/],
699         'EXCLUDED'     => [
700             qw( forPAUSE/lib.pm
701                 t/00pod.t
702                 ),
703         ],
704     },
705
706     'libnet' => {
707         'DISTRIBUTION' => 'SHAY/libnet-3.10.tar.gz',
708         'FILES'        => q[cpan/libnet],
709         'EXCLUDED'     => [
710             qw( Configure
711                 t/changes.t
712                 t/critic.t
713                 t/pod.t
714                 t/pod_coverage.t
715                 ),
716             qr(^demos/),
717             qr(^t/external/),
718         ],
719     },
720
721     'Locale-Codes' => {
722         'DISTRIBUTION' => 'SBECK/Locale-Codes-3.42.tar.gz',
723         'FILES'        => q[cpan/Locale-Codes],
724         'EXCLUDED'     => [
725             qw( README.first
726                 t/pod_coverage.ign
727                 t/pod_coverage.t
728                 t/pod.t),
729             qr{^t/runtests},
730             qr{^t/runtests\.bat},
731             qr{^internal/},
732             qr{^examples/},
733         ],
734     },
735
736     'Locale::Maketext' => {
737         'DISTRIBUTION' => 'TODDR/Locale-Maketext-1.28.tar.gz',
738         'FILES'        => q[dist/Locale-Maketext],
739         'EXCLUDED'     => [
740             qw(
741                 perlcriticrc
742                 t/00_load.t
743                 t/pod.t
744                 ),
745         ],
746     },
747
748     'Locale::Maketext::Simple' => {
749         'DISTRIBUTION' => 'JESSE/Locale-Maketext-Simple-0.21.tar.gz',
750         'FILES'        => q[cpan/Locale-Maketext-Simple],
751         'CUSTOMIZED'   => [
752             # CVE-2016-1238
753             qw( lib/Locale/Maketext/Simple.pm )
754         ],
755     },
756
757     'Math::BigInt' => {
758         'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-1.999806.tar.gz',
759         'FILES'        => q[cpan/Math-BigInt],
760         'EXCLUDED'     => [
761             qr{^examples/},
762             qr{^t/author-},
763             qw( t/00sig.t
764                 t/01load.t
765                 t/02pod.t
766                 t/03podcov.t
767                 ),
768         ],
769     },
770
771     'Math::BigInt::FastCalc' => {
772         'DISTRIBUTION' => 'PJACKLAM/Math-BigInt-FastCalc-0.5005.tar.gz',
773         'FILES'        => q[cpan/Math-BigInt-FastCalc],
774         'EXCLUDED'     => [
775             qr{^t/author-},
776             qr{^t/Math/BigInt/Lib/TestUtil.pm},
777             qw( t/00sig.t
778                 t/01load.t
779                 t/02pod.t
780                 t/03podcov.t
781                 ),
782
783             # instead we use the versions of these test
784             # files that come with Math::BigInt:
785             qw( t/bigfltpm.inc
786                 t/bigfltpm.t
787                 t/bigintpm.inc
788                 t/bigintpm.t
789                 t/mbimbf.inc
790                 t/mbimbf.t
791                 ),
792         ],
793     },
794
795     'Math::BigRat' => {
796         'DISTRIBUTION' => 'PJACKLAM/Math-BigRat-0.2611.tar.gz',
797         'FILES'        => q[cpan/Math-BigRat],
798         'EXCLUDED'     => [
799             qr{^t/author-},
800             qw( t/00sig.t
801                 t/01load.t
802                 t/02pod.t
803                 t/03podcov.t
804                 ),
805         ],
806     },
807
808     'Math::Complex' => {
809         'DISTRIBUTION' => 'ZEFRAM/Math-Complex-1.59.tar.gz',
810         'FILES'        => q[cpan/Math-Complex],
811         'CUSTOMIZED'   => [
812             'lib/Math/Complex.pm', # CPAN RT 118467
813             't/Complex.t',         # CPAN RT 118467
814             't/Trig.t',            # CPAN RT 118467
815         ],
816         'EXCLUDED'     => [
817             qw( t/pod.t
818                 t/pod-coverage.t
819                 ),
820         ],
821     },
822
823     'Memoize' => {
824         'DISTRIBUTION' => 'MJD/Memoize-1.03.tgz',
825         'FILES'        => q[cpan/Memoize],
826         'EXCLUDED'     => ['article.html'],
827         'CUSTOMIZED'   => [
828             # CVE-2016-1238
829             qw( Memoize.pm )
830         ],
831     },
832
833     'MIME::Base64' => {
834         'DISTRIBUTION' => 'GAAS/MIME-Base64-3.15.tar.gz',
835         'FILES'        => q[cpan/MIME-Base64],
836         'EXCLUDED'     => ['t/bad-sv.t'],
837     },
838
839     'Module::CoreList' => {
840         'DISTRIBUTION' => 'BINGOS/Module-CoreList-5.20170120.tar.gz',
841         'FILES'        => q[dist/Module-CoreList],
842     },
843
844     'Module::Load' => {
845         'DISTRIBUTION' => 'BINGOS/Module-Load-0.32.tar.gz',
846         'FILES'        => q[cpan/Module-Load],
847     },
848
849     'Module::Load::Conditional' => {
850         'DISTRIBUTION' => 'BINGOS/Module-Load-Conditional-0.68.tar.gz',
851         'FILES'        => q[cpan/Module-Load-Conditional],
852     },
853
854     'Module::Loaded' => {
855         'DISTRIBUTION' => 'BINGOS/Module-Loaded-0.08.tar.gz',
856         'FILES'        => q[cpan/Module-Loaded],
857     },
858
859     'Module::Metadata' => {
860         'DISTRIBUTION' => 'ETHER/Module-Metadata-1.000033.tar.gz',
861         'FILES'        => q[cpan/Module-Metadata],
862         'EXCLUDED'     => [
863             qw(t/00-report-prereqs.t),
864             qw(t/00-report-prereqs.dd),
865             qr{weaver.ini},
866             qr{^xt},
867         ],
868     },
869
870     'Net::Ping' => {
871         'DISTRIBUTION' => 'RURBAN/Net-Ping-2.55.tar.gz',
872         'FILES'        => q[dist/Net-Ping],
873         'EXCLUDED'     => [
874             qw(README.md.PL),
875             qw(t/020_external.t),
876             qw(t/600_pod.t),
877             qw(t/601_pod-coverage.t),
878         ],
879         'CUSTOMIZED'   => [
880             qw( t/000_load.t t/001_new.t t/010_pingecho.t t/500_ping_icmp.t),
881         ],
882
883     },
884
885     'NEXT' => {
886         'DISTRIBUTION' => 'NEILB/NEXT-0.67.tar.gz',
887         'FILES'        => q[cpan/NEXT],
888         'EXCLUDED'     => [qr{^demo/}],
889     },
890
891     'Params::Check' => {
892         'DISTRIBUTION' => 'BINGOS/Params-Check-0.38.tar.gz',
893         'FILES'        => q[cpan/Params-Check],
894     },
895
896     'parent' => {
897         'DISTRIBUTION' => 'CORION/parent-0.236.tar.gz',
898         'FILES'        => q[cpan/parent],
899         'EXCLUDED'     => [
900             qr{^xt}
901         ],
902     },
903
904     'PathTools' => {
905         'DISTRIBUTION' => 'RJBS/PathTools-3.62.tar.gz',
906         'FILES'        => q[dist/PathTools],
907         'EXCLUDED'     => [
908             qr{^t/lib/Test/},
909             qw( t/rel2abs_vs_symlink.t),
910         ],
911     },
912
913     'Perl::OSType' => {
914         'DISTRIBUTION' => 'DAGOLDEN/Perl-OSType-1.010.tar.gz',
915         'FILES'        => q[cpan/Perl-OSType],
916         'EXCLUDED'     => [qw(tidyall.ini), qr/^xt/, qr{^t/00-}],
917     },
918
919     'perlfaq' => {
920         'DISTRIBUTION' => 'LLAP/perlfaq-5.021011.tar.gz',
921         'FILES'        => q[cpan/perlfaq],
922         'EXCLUDED'     => [
923             qw( inc/CreateQuestionList.pm
924                 inc/perlfaq.tt
925                 t/00-compile.t),
926             qr{^xt/},
927         ],
928     },
929
930     'PerlIO::via::QuotedPrint' => {
931         'DISTRIBUTION' => 'SHAY/PerlIO-via-QuotedPrint-0.08.tar.gz',
932         'FILES'        => q[cpan/PerlIO-via-QuotedPrint],
933     },
934
935     'Pod::Checker' => {
936         'DISTRIBUTION' => 'MAREKR/Pod-Checker-1.73.tar.gz',
937         'FILES'        => q[cpan/Pod-Checker],
938         'CUSTOMIZED'   => [ qw[
939             t/pod/contains_bad_pod.xr
940             t/pod/selfcheck.t
941             t/pod/testcmp.pl
942             t/pod/testpchk.pl
943         ] ],
944     },
945
946     'Pod::Escapes' => {
947         'DISTRIBUTION' => 'NEILB/Pod-Escapes-1.07.tar.gz',
948         'FILES'        => q[cpan/Pod-Escapes],
949     },
950
951     'Pod::Parser' => {
952         'DISTRIBUTION' => 'MAREKR/Pod-Parser-1.63.tar.gz',
953         'FILES'        => q[cpan/Pod-Parser],
954     },
955
956     'Pod::Perldoc' => {
957         'DISTRIBUTION' => 'MALLEN/Pod-Perldoc-3.27.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
975     'Pod::Simple' => {
976         'DISTRIBUTION' => 'MARCGREEN/Pod-Simple-3.35.tar.gz',
977         'FILES'        => q[cpan/Pod-Simple],
978     },
979
980     'Pod::Usage' => {
981         'DISTRIBUTION' => 'MAREKR/Pod-Usage-1.69.tar.gz',
982         'FILES'        => q[cpan/Pod-Usage],
983     },
984
985     'podlators' => {
986         'DISTRIBUTION' => 'RRA/podlators-4.09.tar.gz',
987         'FILES'        => q[cpan/podlators pod/perlpodstyle.pod],
988         'EXCLUDED'     => [
989             qr{^docs/metadata/},
990         ],
991
992         'MAP' => {
993             ''                 => 'cpan/podlators/',
994             # this file lives outside the cpan/ directory
995             'pod/perlpodstyle.pod' => 'pod/perlpodstyle.pod',
996         },
997     },
998
999     'Safe' => {
1000         'DISTRIBUTION' => 'RGARCIA/Safe-2.35.tar.gz',
1001         'FILES'        => q[dist/Safe],
1002     },
1003
1004     'Scalar-List-Utils' => {
1005         'DISTRIBUTION' => 'PEVANS/Scalar-List-Utils-1.46.tar.gz',
1006         'FILES'        => q[cpan/Scalar-List-Utils],
1007         'CUSTOMIZED'   => [
1008             'lib/List/Util.pm',    # CPAN RT 118470
1009             'lib/List/Util/XS.pm', # CPAN RT 118470
1010             'lib/Scalar/Util.pm',  # CPAN RT 118470
1011             'lib/Sub/Util.pm',     # CPAN RT 118470
1012             't/lln.t',             # CPAN RT 118470
1013             't/uniq.t',            # CPAN RT 118470
1014             't/tainted.t',         # CPAN RT 119169
1015         ],
1016     },
1017
1018     'Search::Dict' => {
1019         'DISTRIBUTION' => 'DAGOLDEN/Search-Dict-1.07.tar.gz',
1020         'FILES'        => q[dist/Search-Dict],
1021     },
1022
1023     'SelfLoader' => {
1024         'DISTRIBUTION' => 'SMUELLER/SelfLoader-1.20.tar.gz',
1025         'FILES'        => q[dist/SelfLoader],
1026         'EXCLUDED'     => ['t/00pod.t'],
1027     },
1028
1029     'Socket' => {
1030         'DISTRIBUTION' => 'PEVANS/Socket-2.020.tar.gz',
1031         'FILES'        => q[cpan/Socket],
1032
1033         # https://rt.cpan.org/Ticket/Display.html?id=106797
1034         # https://rt.cpan.org/Ticket/Display.html?id=107058
1035         # https://rt.cpan.org/Ticket/Display.html?id=111707
1036         'CUSTOMIZED'   => [ qw[ Socket.pm Socket.xs ] ],
1037     },
1038
1039     'Storable' => {
1040         'DISTRIBUTION' => 'AMS/Storable-2.51.tar.gz',
1041         'FILES'        => q[dist/Storable],
1042         'EXCLUDED'     => [
1043             qr{^t/compat/},
1044         ],
1045     },
1046
1047     'Sys::Syslog' => {
1048         'DISTRIBUTION' => 'SAPER/Sys-Syslog-0.35.tar.gz',
1049         'FILES'        => q[cpan/Sys-Syslog],
1050         'EXCLUDED'     => [
1051             qr{^eg/},
1052             qw( README.win32
1053                 t/data-validation.t
1054                 t/distchk.t
1055                 t/pod.t
1056                 t/podcover.t
1057                 t/podspell.t
1058                 t/portfs.t
1059                 win32/PerlLog.RES
1060                 ),
1061         ],
1062     },
1063
1064     'Term::ANSIColor' => {
1065         'DISTRIBUTION' => 'RRA/Term-ANSIColor-4.06.tar.gz',
1066         'FILES'        => q[cpan/Term-ANSIColor],
1067         'EXCLUDED'     => [
1068             qr{^docs/},
1069             qr{^examples/},
1070             qr{^t/data/},
1071             qr{^t/docs/},
1072             qr{^t/style/},
1073             qw( t/module/aliases-env.t ),
1074         ],
1075     },
1076
1077     'Term::Cap' => {
1078         'DISTRIBUTION' => 'JSTOWE/Term-Cap-1.17.tar.gz',
1079         'FILES'        => q[cpan/Term-Cap],
1080     },
1081
1082     'Term::Complete' => {
1083         'DISTRIBUTION' => 'FLORA/Term-Complete-1.402.tar.gz',
1084         'FILES'        => q[dist/Term-Complete],
1085         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1086     },
1087
1088     'Term::ReadLine' => {
1089         'DISTRIBUTION' => 'FLORA/Term-ReadLine-1.14.tar.gz',
1090         'FILES'        => q[dist/Term-ReadLine],
1091         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1092     },
1093
1094     'Test' => {
1095         'DISTRIBUTION' => 'JESSE/Test-1.26.tar.gz',
1096         'FILES'        => q[dist/Test],
1097     },
1098
1099     'Test::Harness' => {
1100         'DISTRIBUTION' => 'LEONT/Test-Harness-3.36.tar.gz',
1101         'FILES'        => q[cpan/Test-Harness],
1102         'EXCLUDED'     => [
1103             qr{^examples/},
1104             qr{^xt/},
1105             qw( Changes-2.64
1106                 MANIFEST.CUMMULATIVE
1107                 HACKING.pod
1108                 perlcriticrc
1109                 t/000-load.t
1110                 t/lib/if.pm
1111                 ),
1112         ],
1113         'CUSTOMIZED'   => [
1114             # CVE-2016-1238
1115             qw(
1116                bin/prove lib/App/Prove.pm lib/App/Prove/State.pm
1117                lib/App/Prove/State/Result.pm
1118                lib/App/Prove/State/Result/Test.pm
1119                lib/TAP/Base.pm lib/TAP/Formatter/Base.pm
1120                lib/TAP/Formatter/Color.pm
1121                lib/TAP/Formatter/Console.pm
1122                lib/TAP/Formatter/Console/ParallelSession.pm
1123                lib/TAP/Formatter/Console/Session.pm
1124                lib/TAP/Formatter/File.pm
1125                lib/TAP/Formatter/File/Session.pm
1126                lib/TAP/Formatter/Session.pm lib/TAP/Harness.pm
1127                lib/TAP/Harness/Env.pm lib/TAP/Object.pm
1128                lib/TAP/Parser.pm lib/TAP/Parser/Aggregator.pm
1129                lib/TAP/Parser/Grammar.pm
1130                lib/TAP/Parser/Iterator.pm
1131                lib/TAP/Parser/Iterator/Array.pm
1132                lib/TAP/Parser/Iterator/Process.pm
1133                lib/TAP/Parser/Iterator/Stream.pm
1134                lib/TAP/Parser/IteratorFactory.pm
1135                lib/TAP/Parser/Multiplexer.pm
1136                lib/TAP/Parser/Result.pm
1137                lib/TAP/Parser/Result/Bailout.pm
1138                lib/TAP/Parser/Result/Comment.pm
1139                lib/TAP/Parser/Result/Plan.pm
1140                lib/TAP/Parser/Result/Pragma.pm
1141                lib/TAP/Parser/Result/Test.pm
1142                lib/TAP/Parser/Result/Unknown.pm
1143                lib/TAP/Parser/Result/Version.pm
1144                lib/TAP/Parser/Result/YAML.pm
1145                lib/TAP/Parser/ResultFactory.pm
1146                lib/TAP/Parser/Scheduler.pm
1147                lib/TAP/Parser/Scheduler/Job.pm
1148                lib/TAP/Parser/Scheduler/Spinner.pm
1149                lib/TAP/Parser/Source.pm
1150                lib/TAP/Parser/SourceHandler.pm
1151                lib/TAP/Parser/SourceHandler/Executable.pm
1152                lib/TAP/Parser/SourceHandler/File.pm
1153                lib/TAP/Parser/SourceHandler/Handle.pm
1154                lib/TAP/Parser/SourceHandler/Perl.pm
1155                lib/TAP/Parser/SourceHandler/RawTAP.pm
1156                lib/TAP/Parser/YAMLish/Reader.pm
1157                lib/TAP/Parser/YAMLish/Writer.pm
1158                lib/Test/Harness.pm
1159             )
1160         ],
1161     },
1162
1163     'Test::Simple' => {
1164         'DISTRIBUTION' => 'EXODIST/Test-Simple-1.302073.tar.gz',
1165         'FILES'        => q[cpan/Test-Simple],
1166         'EXCLUDED'     => [
1167             qr{^examples/},
1168             qr{^xt/},
1169             qw( appveyor.yml
1170                 perltidyrc
1171                 t/00compile.t
1172                 t/00-report.t
1173                 t/zzz-check-breaks.t
1174                 ),
1175         ],
1176         'CUSTOMIZED'   => [
1177             #
1178             qw( t/Test2/modules/IPC/Driver/Files.t )
1179         ],
1180     },
1181
1182     'Text::Abbrev' => {
1183         'DISTRIBUTION' => 'FLORA/Text-Abbrev-1.02.tar.gz',
1184         'FILES'        => q[dist/Text-Abbrev],
1185         'EXCLUDED'     => [qr{^t/release-.*\.t}],
1186     },
1187
1188     'Text::Balanced' => {
1189         'DISTRIBUTION' => 'SHAY/Text-Balanced-2.03.tar.gz',
1190         'FILES'        => q[cpan/Text-Balanced],
1191         'EXCLUDED'     => [
1192             qw( t/97_meta.t
1193                 t/98_pod.t
1194                 t/99_pmv.t
1195                 ),
1196         ],
1197     },
1198
1199     'Text::ParseWords' => {
1200         'DISTRIBUTION' => 'CHORNY/Text-ParseWords-3.30.tar.gz',
1201         'FILES'        => q[cpan/Text-ParseWords],
1202     },
1203
1204     'Text-Tabs+Wrap' => {
1205         'DISTRIBUTION' => 'MUIR/modules/Text-Tabs+Wrap-2013.0523.tar.gz',
1206         'FILES'        => q[cpan/Text-Tabs],
1207         'EXCLUDED'   => [
1208             qr/^lib\.old/,
1209             't/dnsparks.t',    # see af6492bf9e
1210         ],
1211         'MAP'          => {
1212             ''                        => 'cpan/Text-Tabs/',
1213             'lib.modern/Text/Tabs.pm' => 'cpan/Text-Tabs/lib/Text/Tabs.pm',
1214             'lib.modern/Text/Wrap.pm' => 'cpan/Text-Tabs/lib/Text/Wrap.pm',
1215         },
1216     },
1217
1218     # Jerry Hedden does take patches that are applied to blead first, even
1219     # though that can be hard to discern from the Git history; so it's
1220     # correct for this (and Thread::Semaphore, threads, and threads::shared)
1221     # to be under dist/ rather than cpan/
1222     'Thread::Queue' => {
1223         'DISTRIBUTION' => 'JDHEDDEN/Thread-Queue-3.11.tar.gz',
1224         'FILES'        => q[dist/Thread-Queue],
1225         'EXCLUDED'     => [
1226             qr{^examples/},
1227             qw( t/00_load.t
1228                 t/99_pod.t
1229                 t/test.pl
1230                 ),
1231         ],
1232     },
1233
1234     'Thread::Semaphore' => {
1235         'DISTRIBUTION' => 'JDHEDDEN/Thread-Semaphore-2.13.tar.gz',
1236         'FILES'        => q[dist/Thread-Semaphore],
1237         'EXCLUDED'     => [
1238             qw( examples/semaphore.pl
1239                 t/00_load.t
1240                 t/99_pod.t
1241                 t/test.pl
1242                 ),
1243         ],
1244     },
1245
1246     'threads' => {
1247         'DISTRIBUTION' => 'JDHEDDEN/threads-2.12.tar.gz',
1248         'FILES'        => q[dist/threads],
1249         'EXCLUDED'     => [
1250             qr{^examples/},
1251             qw( t/pod.t
1252                 t/test.pl
1253                 threads.h
1254                 ),
1255         ],
1256     },
1257
1258     'threads::shared' => {
1259         'DISTRIBUTION' => 'JDHEDDEN/threads-shared-1.54.tar.gz',
1260         'FILES'        => q[dist/threads-shared],
1261         'EXCLUDED'     => [
1262             qw( examples/class.pl
1263                 shared.h
1264                 t/pod.t
1265                 t/test.pl
1266                 ),
1267         ],
1268     },
1269
1270     'Tie::File' => {
1271         'DISTRIBUTION' => 'TODDR/Tie-File-1.00.tar.gz',
1272         'FILES'        => q[dist/Tie-File],
1273     },
1274
1275     'Tie::RefHash' => {
1276         'DISTRIBUTION' => 'FLORA/Tie-RefHash-1.39.tar.gz',
1277         'FILES'        => q[cpan/Tie-RefHash],
1278     },
1279
1280     'Time::HiRes' => {
1281         'DISTRIBUTION' => 'JHI/Time-HiRes-1.9741.tar.gz',
1282         'FILES'        => q[dist/Time-HiRes],
1283     },
1284
1285     'Time::Local' => {
1286         'DISTRIBUTION' => 'DROLSKY/Time-Local-1.25.tar.gz',
1287         'FILES'        => q[cpan/Time-Local],
1288         'EXCLUDED'     => [
1289             qr{^xt/},
1290             qw( perlcriticrc
1291                 perltidyrc
1292                 tidyall.ini
1293                 t/00-report-prereqs.t
1294                 t/00-report-prereqs.dd
1295                 ),
1296         ],
1297     },
1298
1299     'Time::Piece' => {
1300         'DISTRIBUTION' => 'ESAYM/Time-Piece-1.31.tar.gz',
1301         'FILES'        => q[cpan/Time-Piece],
1302     },
1303
1304     'Unicode::Collate' => {
1305         'DISTRIBUTION' => 'SADAHIRO/Unicode-Collate-1.19.tar.gz',
1306         'FILES'        => q[cpan/Unicode-Collate],
1307         'EXCLUDED'     => [
1308             qr{N$},
1309             qr{^data/},
1310             qr{^gendata/},
1311             qw( disableXS
1312                 enableXS
1313                 mklocale
1314                 ),
1315         ],
1316     },
1317
1318     'Unicode::Normalize' => {
1319         'DISTRIBUTION' => 'KHW/Unicode-Normalize-1.25.tar.gz',
1320         'FILES'        => q[dist/Unicode-Normalize],
1321         'EXCLUDED'     => [
1322             qw( MANIFEST.N
1323                 Normalize.pmN
1324                 disableXS
1325                 enableXS
1326                 ),
1327         ],
1328     },
1329
1330     'version' => {
1331         'DISTRIBUTION' => 'JPEACOCK/version-0.9917.tar.gz',
1332         'FILES'        => q[cpan/version vutil.c vutil.h vxs.inc],
1333         'EXCLUDED' => [
1334             qr{^vutil/lib/},
1335             'vutil/Makefile.PL',
1336             'vutil/ppport.h',
1337             'vutil/vxs.xs',
1338             't/00impl-pp.t',
1339             't/survey_locales',
1340             'vperl/vpp.pm',
1341         ],
1342
1343         # When adding the CPAN-distributed files for version.pm, it is necessary
1344         # to delete an entire block out of lib/version.pm, since that code is
1345         # only necessary with the CPAN release.
1346         'CUSTOMIZED'   => [
1347             qw( lib/version.pm
1348                 ),
1349         ],
1350
1351         'MAP' => {
1352             'vutil/'         => '',
1353             ''               => 'cpan/version/',
1354         },
1355     },
1356
1357     'warnings' => {
1358         'FILES'      => q[
1359                  lib/warnings
1360                  lib/warnings.{pm,t}
1361                  regen/warnings.pl
1362                  t/lib/warnings
1363         ],
1364     },
1365
1366     'Win32' => {
1367         'DISTRIBUTION' => "JDB/Win32-0.52.tar.gz",
1368         'FILES'        => q[cpan/Win32],
1369     },
1370
1371     'Win32API::File' => {
1372         'DISTRIBUTION' => 'CHORNY/Win32API-File-0.1203.tar.gz',
1373         'FILES'        => q[cpan/Win32API-File],
1374         'EXCLUDED'     => [
1375             qr{^ex/},
1376         ],
1377     },
1378
1379     'XSLoader' => {
1380         'DISTRIBUTION' => 'SAPER/XSLoader-0.24.tar.gz',
1381         'FILES'        => q[dist/XSLoader],
1382         'EXCLUDED'     => [
1383             qr{^eg/},
1384             qw( t/00-load.t
1385                 t/01-api.t
1386                 t/distchk.t
1387                 t/pod.t
1388                 t/podcover.t
1389                 t/portfs.t
1390                 ),
1391             'XSLoader.pm',    # we use XSLoader_pm.PL
1392         ],
1393     },
1394
1395     # this pseudo-module represents all the files under ext/ and lib/
1396     # that aren't otherwise claimed. This means that the following two
1397     # commands will check that every file under ext/ and lib/ is
1398     # accounted for, and that there are no duplicates:
1399     #
1400     #    perl Porting/Maintainers --checkmani lib ext
1401     #    perl Porting/Maintainers --checkmani
1402
1403     '_PERLLIB' => {
1404         'FILES'    => q[
1405                 ext/Amiga-ARexx/
1406                 ext/Amiga-Exec/
1407                 ext/B/
1408                 ext/Devel-Peek/
1409                 ext/DynaLoader/
1410                 ext/Errno/
1411                 ext/ExtUtils-Miniperl/
1412                 ext/Fcntl/
1413                 ext/File-DosGlob/
1414                 ext/File-Find/
1415                 ext/File-Glob/
1416                 ext/FileCache/
1417                 ext/GDBM_File/
1418                 ext/Hash-Util-FieldHash/
1419                 ext/Hash-Util/
1420                 ext/I18N-Langinfo/
1421                 ext/IPC-Open3/
1422                 ext/NDBM_File/
1423                 ext/ODBM_File/
1424                 ext/Opcode/
1425                 ext/POSIX/
1426                 ext/PerlIO-encoding/
1427                 ext/PerlIO-mmap/
1428                 ext/PerlIO-scalar/
1429                 ext/PerlIO-via/
1430                 ext/Pod-Functions/
1431                 ext/Pod-Html/
1432                 ext/SDBM_File/
1433                 ext/Sys-Hostname/
1434                 ext/Tie-Hash-NamedCapture/
1435                 ext/Tie-Memoize/
1436                 ext/VMS-DCLsym/
1437                 ext/VMS-Filespec/
1438                 ext/VMS-Stdio/
1439                 ext/Win32CORE/
1440                 ext/XS-APItest/
1441                 ext/XS-Typemap/
1442                 ext/arybase/
1443                 ext/attributes/
1444                 ext/mro/
1445                 ext/re/
1446                 lib/AnyDBM_File.{pm,t}
1447                 lib/Benchmark.{pm,t}
1448                 lib/B/Deparse{.pm,.t,-*.t}
1449                 lib/B/Op_private.pm
1450                 lib/CORE.pod
1451                 lib/Class/Struct.{pm,t}
1452                 lib/Config.t
1453                 lib/Config/Extensions.{pm,t}
1454                 lib/DB.{pm,t}
1455                 lib/DBM_Filter.pm
1456                 lib/DBM_Filter/
1457                 lib/DirHandle.{pm,t}
1458                 lib/English.{pm,t}
1459                 lib/ExtUtils/Embed.pm
1460                 lib/ExtUtils/XSSymSet.pm
1461                 lib/ExtUtils/t/Embed.t
1462                 lib/ExtUtils/typemap
1463                 lib/File/Basename.{pm,t}
1464                 lib/File/Compare.{pm,t}
1465                 lib/File/Copy.{pm,t}
1466                 lib/File/stat{.pm,.t,-7896.t}
1467                 lib/FileHandle.{pm,t}
1468                 lib/FindBin.{pm,t}
1469                 lib/Getopt/Std.{pm,t}
1470                 lib/Internals.pod
1471                 lib/Internals.t
1472                 lib/meta_notation.{pm,t}
1473                 lib/Net/hostent.{pm,t}
1474                 lib/Net/netent.{pm,t}
1475                 lib/Net/protoent.{pm,t}
1476                 lib/Net/servent.{pm,t}
1477                 lib/PerlIO.pm
1478                 lib/Pod/t/InputObjects.t
1479                 lib/Pod/t/Select.t
1480                 lib/Pod/t/Usage.t
1481                 lib/Pod/t/utils.t
1482                 lib/SelectSaver.{pm,t}
1483                 lib/Symbol.{pm,t}
1484                 lib/Thread.{pm,t}
1485                 lib/Tie/Array.pm
1486                 lib/Tie/Array/
1487                 lib/Tie/ExtraHash.t
1488                 lib/Tie/Handle.pm
1489                 lib/Tie/Handle/
1490                 lib/Tie/Hash.{pm,t}
1491                 lib/Tie/Scalar.{pm,t}
1492                 lib/Tie/StdHandle.pm
1493                 lib/Tie/SubstrHash.{pm,t}
1494                 lib/Time/gmtime.{pm,t}
1495                 lib/Time/localtime.{pm,t}
1496                 lib/Time/tm.pm
1497                 lib/UNIVERSAL.pm
1498                 lib/Unicode/README
1499                 lib/Unicode/UCD.{pm,t}
1500                 lib/User/grent.{pm,t}
1501                 lib/User/pwent.{pm,t}
1502                 lib/_charnames.pm
1503                 lib/blib.{pm,t}
1504                 lib/bytes.{pm,t}
1505                 lib/bytes_heavy.pl
1506                 lib/charnames.{pm,t}
1507                 lib/dbm_filter_util.pl
1508                 lib/deprecate.pm
1509                 lib/diagnostics.{pm,t}
1510                 lib/dumpvar.{pl,t}
1511                 lib/feature.{pm,t}
1512                 lib/feature/
1513                 lib/filetest.{pm,t}
1514                 lib/h2ph.t
1515                 lib/h2xs.t
1516                 lib/integer.{pm,t}
1517                 lib/less.{pm,t}
1518                 lib/locale.{pm,t}
1519                 lib/locale_threads.t
1520                 lib/open.{pm,t}
1521                 lib/overload/numbers.pm
1522                 lib/overloading.{pm,t}
1523                 lib/overload{.pm,.t,64.t}
1524                 lib/perl5db.{pl,t}
1525                 lib/perl5db/
1526                 lib/perlbug.t
1527                 lib/sigtrap.{pm,t}
1528                 lib/sort.{pm,t}
1529                 lib/strict.{pm,t}
1530                 lib/subs.{pm,t}
1531                 lib/unicore/
1532                 lib/utf8.{pm,t}
1533                 lib/utf8_heavy.pl
1534                 lib/vars{.pm,.t,_carp.t}
1535                 lib/vmsish.{pm,t}
1536                 ],
1537     },
1538 );
1539
1540 # legacy CPAN flag
1541 for ( values %Modules ) {
1542     $_->{CPAN} = !!$_->{DISTRIBUTION};
1543 }
1544
1545 # legacy UPSTREAM flag
1546 for ( keys %Modules ) {
1547     # Keep any existing UPSTREAM flag so that "overrides" can be applied
1548     next if exists $Modules{$_}{UPSTREAM};
1549
1550     if ($_ eq '_PERLLIB' or $Modules{$_}{FILES} =~ m{^\s*(?:dist|ext|lib)/}) {
1551         $Modules{$_}{UPSTREAM} = 'blead';
1552     }
1553     elsif ($Modules{$_}{FILES} =~ m{^\s*cpan/}) {
1554         $Modules{$_}{UPSTREAM} = 'cpan';
1555     }
1556     else {
1557         warn "Unexpected location of FILES for module $_: $Modules{$_}{FILES}";
1558     }
1559 }
1560
1561 # legacy MAINTAINER field
1562 for ( keys %Modules ) {
1563     # Keep any existing MAINTAINER flag so that "overrides" can be applied
1564     next if exists $Modules{$_}{MAINTAINER};
1565
1566     if ($Modules{$_}{UPSTREAM} eq 'blead') {
1567         $Modules{$_}{MAINTAINER} = 'P5P';
1568         $Maintainers{P5P} = 'perl5-porters <perl5-porters@perl.org>';
1569     }
1570     elsif (exists $Modules{$_}{DISTRIBUTION}) {
1571         (my $pause_id = $Modules{$_}{DISTRIBUTION}) =~ s{/.*$}{};
1572         $Modules{$_}{MAINTAINER} = $pause_id;
1573         $Maintainers{$pause_id} = "<$pause_id\@cpan.org>";
1574     }
1575     else {
1576         warn "No DISTRIBUTION for non-blead module $_";
1577     }
1578 }
1579
1580 1;