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