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