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