This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Commit b776cec188 missed these RMG steps when preparing Module::CoreList for 5.19.11
[perl5.git] / Porting / README.pod
CommitLineData
7ad311ab
JK
1=head1 NAME
2
3README.pod - README for the F<Porting/> directory in the Perl 5 core distribution.
4
5=head1 FILES
6
7=head2 F<acknowledgements.pl>
8
9Generates the text which goes in the Acknowledgements section in
10a perldelta. You pass in the previous version and it guesses the next
11version, fetches information from the repository and outputs the
12text.
13
14=head2 F<add-package.pl>
15
16Program to prepare dual-life distributions for insertion into the Perl 5
17F<lib/> and F<t/> directories. Now thought to be largely superseded.
18
9bd30288 19=head2 F<bisect-example.sh>, F<bisect.pl> and F<bisect-runner.pl>
7ad311ab
JK
20
21Use C<git bisect> to pinpoint changes.
22
23=head2 F<bump-perl-version>
24
25A utility to find, and optionally bump, references to the perl version
26number in various files within the perl source.
27
28=head2 F<check83.pl>
29
30Performs pathname portability checks, including whether there are naming
31conflicts when names are truncated to the DOSish, case-ignoring 8.3 format.
32
7ad311ab
JK
33=head2 F<checkansi.pl>
34
35Check source code for ANSI-C violations.
36
9bd30288
BG
37=head2 F<checkAUTHORS.pl>
38
39Used by F<t/porting/authors.t> to ensure the F<AUTHORS> list is up to date.
40
7ad311ab
JK
41=head2 F<checkcfgvar.pl>
42
43Check that the various F<config.sh>-clones have (at least) all the same
44symbols as the top-level F<config_h.SH> so that the (potentially) needed
45symbols are not lagging after how F<Configure> thinks the world is laid out.
46VMS is probably not handled properly here, due to their own rather elaborate
47DCL scripting.
48
49=head2 F<check-cpan-pollution>
50
51Scans the commit logs for commits that are potentially, illegitimately
52touching modules that are primarily maintained outside of the perl core. Also
53checks for commits that span multiple distributions in F<cpan/> or F<dist/>.
54Makes sure that updated CPAN distributions also update
55F<Porting/Maintainers.pl>, but otherwise ignores changes to that file (and
56F<MANIFEST>).
57
58=head2 F<checkpodencoding.pl>
59
60Check if POD files contain non-ASCII without specifying
61encoding. Run it as: C<perl Porting/checkpodencoding.pl>.
62
9bd30288
BG
63=head2 F<checkURL.pl>
64
65Checks that all the URLs in the Perl source are valid.
66
67=head2 F<checkVERSION.pl>
68
69Used by F<t/porting/cmp_version.t> to ensure changed modules have had their
70versions updated.
71
7ad311ab
JK
72=head2 F<cherrymaint>
73
74Command line tool to update cherrymaint; a tool for selecting commits from
75blead to cherry-pick into stable perl versions.
76
77=head2 F<cmpVERSION.pl>
78
79Compare the current Perl source tree and a given tag for modules that have
80identical version numbers but different contents.
81
82=head2 F<config_H>
83
84This file is a sample F<config.h> file. If you are unable to successfully run
85F<Configure>, copy this file to F<config.h> and edit it to suit your system.
86
87=head2 F<config_h.pl>
88
89Used when importing changes from F<metaconfig>. This script reorders
90F<config_h.SH> after metaconfig.
91
92=head2 F<config.sh>
93
3b2d1478
AD
94This file is a sample F<config.sh> file. F<config.sh> is normally
95produced by running the F<Configure> script. It holds all the definitions
96figured out by F<Configure>. If you are unable to successfully run
97F<Configure> on your system, copy this sample file to F<config.sh>
98at the top of the perl source tree and edit it to suit your system.
99Then propagate those values by running C<Configure -S>. This sample
100file is normally updated each time F<Configure> is updated.
7ad311ab
JK
101
102=head2 F<core-cpan-diff>
103
104Compare CPAN modules with their equivalent in core.
105Originally based on App::DualLivedDiff by Steffen Mueller.
106
107=head2 F<corecpan.pl>
108
109Reports, in a perl source tree, which dual-lived core modules have not the
110same version than the corresponding module on CPAN.
111
112=head2 F<corelist-diff>
113
114Prints a table of differences between two Perl versions with respect to
115modules included in the distribution.
116
7ad311ab
JK
117=head2 F<corelist-perldelta.pl>
118
119Generates a list of the module changes for the Perl you are currently
120building. Also generates a diff between the corelist sections of two
121F<perldelta*> files.
122
9bd30288
BG
123=head2 F<corelist.pl>
124
125Generates info for Module::CoreList from this perl tree.
126
7ad311ab
JK
127=head2 F<epigraphs.pod>
128
129List of Perl release epigraphs.
130
131=head2 F<exec-bit.txt>
132
133This file contains a list of files that F<makerel> will ensure get an
134executable bit.
135
136=head2 F<exercise_makedef.pl>
137
138Brute force testing for F<makedef.pl>.
139
140=head2 F<expand-macro.pl>
141
142Expand C macros using the C preprocessor.
143
144=head2 F<findrfuncs>
145
146This script finds reentrant variants of functions used in an executable and
147shared objects.
148
7ad311ab
JK
149=head2 F<git-deltatool>
150
151This script, a rough draft, aids in generating a perldelta file
152from a series of git commits.
153
154=head2 F<git-find-p4-change>
155
156This script, given a Perforce change number, outputs the equivalent git commit
157id.
158
159=head2 F<git-make-p4-refs>
160
161This script creates a tag for every p4raw-id.
162
9bd30288
BG
163=head2 F<GitUtils.pm>
164
165This script contains the subroutine to generate a F<.patch file> for a
166committish (the SHA1 checksum of a commit, a number made of 40 hexadecimal
167digits which acts the internal unique identifier for this commit
168(lilypond.org). Related file: F<make_dot_patch.pl>
169
7ad311ab
JK
170=head2 F<Glossary>
171
172This file is built by F<metaconfig>. This file contains a description of all
173the shell variables whose value is determined by the Configure script.
3b2d1478 174It later gets incorporated into the pod for F<Config.pm>.
7ad311ab
JK
175
176=head2 F<how_to_write_a_perldelta.pod>
177
178This file contains a specification as to how to write a perldelta pod.
179Related file: F<perldelta_template.pod>
180
181=head2 F<leakfinder.pl>
182
183This script executes every line in every file in the build directory and its
184subdirectories to determine if the number of SVs goes up and reports it as a
185leak to STDOUT. WARNING! some harm could be done if a line contains something
186similar to C<`rm *`>.
187
188=head2 F<Maintainers>
189
190This script shows information about the maintainers of core files/modules.
191
192Related files: F<Maintainers.pl>, F<Maintainers.pm>
193
194=head2 F<Maintainers.pl>
195
196A package associating core files/modules with maintainers. Related files:
197F<Maintainers>, F<Maintainers.pm>
198
199=head2 F<Maintainers.pm>
200
201A package to search and show information about which core files/modules are
202associated with maintainers. Related files: F<Maintainers>, F<Maintainers.pl>
203
7ad311ab
JK
204=head2 F<make_dot_patch.pl>
205
206Generate a F<.patch> file to STDOUT for a commit ID specified on the
207command-line.
208
9bd30288
BG
209=head2 F<makemeta>
210
211This script creates F<META.yml> and F<META.json> files.
212
7ad311ab
JK
213=head2 F<make_modlib_cpan.pl>
214
215This script generates the list of registered CPAN sites in F<perlmodlib.PL>.
216
9bd30288 217=head2 F<makerel>
7ad311ab 218
9bd30288 219This script builds a Perl release tarball.
7ad311ab 220
9bd30288 221=head2 F<make-rmg-checklist>
7ad311ab 222
9bd30288 223This script creates a release checklist as a simple HTML document.
7ad311ab 224
9bd30288 225=head2 F<make_snapshot.pl>
7ad311ab 226
9bd30288
BG
227This script is a quick and dirty snapshot generator for the perl5.git.perl.org
228web page to use to generate the snapshot files.
7ad311ab
JK
229
230=head2 F<manicheck>
231
232This script outputs a list of files in F<MANIFEST> which don't exist and a
233list of files that exist and aren't in F<MANIFEST>.
234
235=head2 F<manisort>
236
237This script sorts the files in F<MANIFEST>.
238
239=head2 F<new-perldelta.pl>
240
241This script automates the process for creating perldelta.pl.
242
243=head2 F<newtests-perldelta.pl>
244
245This script outputs the added tests between the two versions of Perl.
246
247=head2 F<perldelta_template.pod>
248
249Template for F<perldelta>.
250
251=head2 F<perlhist_calculate.pl>
252
253Generates info for F<perlhist> from this perl tree.
254
255=head2 F<pod_lib.pl>
256
257When C<require>d into other programs in the Perl 5 core
258distribution, provides functions useful during testing.
259
260=head2 F<pod_rules.pl>
261
262Generate the sections of files listed in C<%Targets> from F<pod/perl.pod>.
263Mostly these are rules in Makefiles.
264
265 --verbose gives slightly more output
266 --build-all tries to build everything
267 --build-foo updates foo as follows
268 --showfiles shows the files to be changed
269 --test exit if perl.pod, MANIFEST are consistent, and regenerated
270 files are up to date, die otherwise.
271
272=head2 F<podtidy>
273
274Applies F<podtidy> to a file.
275
276=head2 F<pumpkin.pod>
277
278Pumpkin - Notes on handling the Perl Patch Pumpkin And Porting Perl.
20a5039a 279Many of these are out of date or superseded by other documents in
3b2d1478 280this directory.
7ad311ab 281
9bd30288
BG
282=head2 F<README.pod>
283
284This file. An exhaustive list of the contents of the F<Porting/>
285directory along with a description of each file.
286The test F<t/porting/readme.t> ensures that this lists every file
287and that every file is listed.
288
7ad311ab
JK
289=head2 F<README.y2038>
290
291The y2038 implementation for perl. This is an implementation of POSIX time.h
292which solves the year 2038 bug on systems where time_t is only 32 bits. It is
293implemented in bog-standard ANSI C. The latest version can be found at
294L<http://y2038.googlecode.com/>.
295
296=head2 F<release_announcement_template.txt>
297
c5fb089a 298Release announcement for minor releasements of the 5.19 development series.
7ad311ab
JK
299
300=head2 F<release_managers_guide.pod>
301
302Releasing a new version of perl 5.x. Note that things change at each release,
303so there may be new things not covered here, or tools may need updating.
304
305=head2 F<release_schedule.pod>
306
307This schedule lists the projected or historical development and release
308schedules for the next, current and previous stable versions of Perl. Dates
309with all question marks will only be releases if deemed necessary by the
310Pumpking.
311
312=head2 F<rt_list_patches>
313
314Shell script to list patches in RT.
315
316=head2 F<sort_perldiag.pl>
317
318This is a script for sorting the warning and error messages in
319F<perldiag.pod>. POD formatting, printf-style escapes, non-letter characters,
320and case are ignored, as explained in L<perldiag>.
321
9bd30288
BG
322=head2 F<sync-with-cpan>
323
324Script to help out with syncing cpan distros.
325
7ad311ab
JK
326=head2 F<timecheck2.c>
327
328A little program to test the limits of your system's time functions. See
329F<Porting/README.y2038> for details.
330
331=head2 F<timecheck.c>
332
333A helper tool for perl's 2038 support See F<Porting/README.y2038> for details.
334
335=head2 F<todo.pod>
336
337This is a list of wishes for Perl. The most up-to-date version of this file is
338at L<http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/Porting/todo.pod>.
339The tasks we think are smaller or easier are listed first. Anyone is welcome
340to work on any of these, but it's a good idea to first contact
9bd30288 341I<perl5-porters@perl.org> to avoid duplication of effort, and to learn from
7ad311ab
JK
342any previous attempts.
343
344=head2 F<valgrindpp.pl>
345
346A post-processor for C<make test.valgrind>. F<valgrindpp.pl> is a
347post-processor for F<.valgrind> files created during C<make test.valgrind>. It
348collects all these files, extracts most of the information and produces a
349significantly shorter summary of all detected memory access errors and memory
350leaks.
351
352=cut
353