This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
tgamma infinity limit for IEEE quad prec.
[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
2722144b
MH
127=head2 F<deparse-skips.txt>
128
129List of test files to ignore/skip for deparse tests.
130
7ad311ab
JK
131=head2 F<epigraphs.pod>
132
133List of Perl release epigraphs.
134
135=head2 F<exec-bit.txt>
136
137This file contains a list of files that F<makerel> will ensure get an
138executable bit.
139
140=head2 F<exercise_makedef.pl>
141
142Brute force testing for F<makedef.pl>.
143
144=head2 F<expand-macro.pl>
145
146Expand C macros using the C preprocessor.
147
148=head2 F<findrfuncs>
149
150This script finds reentrant variants of functions used in an executable and
151shared objects.
152
7ad311ab
JK
153=head2 F<git-deltatool>
154
155This script, a rough draft, aids in generating a perldelta file
156from a series of git commits.
157
158=head2 F<git-find-p4-change>
159
160This script, given a Perforce change number, outputs the equivalent git commit
161id.
162
163=head2 F<git-make-p4-refs>
164
165This script creates a tag for every p4raw-id.
166
9bd30288
BG
167=head2 F<GitUtils.pm>
168
169This script contains the subroutine to generate a F<.patch file> for a
170committish (the SHA1 checksum of a commit, a number made of 40 hexadecimal
171digits which acts the internal unique identifier for this commit
172(lilypond.org). Related file: F<make_dot_patch.pl>
173
7ad311ab
JK
174=head2 F<Glossary>
175
176This file is built by F<metaconfig>. This file contains a description of all
177the shell variables whose value is determined by the Configure script.
3b2d1478 178It later gets incorporated into the pod for F<Config.pm>.
7ad311ab
JK
179
180=head2 F<how_to_write_a_perldelta.pod>
181
182This file contains a specification as to how to write a perldelta pod.
183Related file: F<perldelta_template.pod>
184
185=head2 F<leakfinder.pl>
186
187This script executes every line in every file in the build directory and its
188subdirectories to determine if the number of SVs goes up and reports it as a
189leak to STDOUT. WARNING! some harm could be done if a line contains something
190similar to C<`rm *`>.
191
192=head2 F<Maintainers>
193
194This script shows information about the maintainers of core files/modules.
195
196Related files: F<Maintainers.pl>, F<Maintainers.pm>
197
198=head2 F<Maintainers.pl>
199
200A package associating core files/modules with maintainers. Related files:
201F<Maintainers>, F<Maintainers.pm>
202
203=head2 F<Maintainers.pm>
204
205A package to search and show information about which core files/modules are
206associated with maintainers. Related files: F<Maintainers>, F<Maintainers.pl>
207
7ad311ab
JK
208=head2 F<make_dot_patch.pl>
209
210Generate a F<.patch> file to STDOUT for a commit ID specified on the
211command-line.
212
9bd30288
BG
213=head2 F<makemeta>
214
215This script creates F<META.yml> and F<META.json> files.
216
7ad311ab
JK
217=head2 F<make_modlib_cpan.pl>
218
219This script generates the list of registered CPAN sites in F<perlmodlib.PL>.
220
9bd30288 221=head2 F<makerel>
7ad311ab 222
9bd30288 223This script builds a Perl release tarball.
7ad311ab 224
9bd30288 225=head2 F<make-rmg-checklist>
7ad311ab 226
9bd30288 227This script creates a release checklist as a simple HTML document.
7ad311ab 228
9bd30288 229=head2 F<make_snapshot.pl>
7ad311ab 230
9bd30288
BG
231This script is a quick and dirty snapshot generator for the perl5.git.perl.org
232web page to use to generate the snapshot files.
7ad311ab
JK
233
234=head2 F<manicheck>
235
236This script outputs a list of files in F<MANIFEST> which don't exist and a
237list of files that exist and aren't in F<MANIFEST>.
238
239=head2 F<manisort>
240
241This script sorts the files in F<MANIFEST>.
242
243=head2 F<new-perldelta.pl>
244
245This script automates the process for creating perldelta.pl.
246
247=head2 F<newtests-perldelta.pl>
248
249This script outputs the added tests between the two versions of Perl.
250
251=head2 F<perldelta_template.pod>
252
253Template for F<perldelta>.
254
255=head2 F<perlhist_calculate.pl>
256
257Generates info for F<perlhist> from this perl tree.
258
259=head2 F<pod_lib.pl>
260
261When C<require>d into other programs in the Perl 5 core
262distribution, provides functions useful during testing.
263
264=head2 F<pod_rules.pl>
265
266Generate the sections of files listed in C<%Targets> from F<pod/perl.pod>.
267Mostly these are rules in Makefiles.
268
269 --verbose gives slightly more output
270 --build-all tries to build everything
271 --build-foo updates foo as follows
272 --showfiles shows the files to be changed
273 --test exit if perl.pod, MANIFEST are consistent, and regenerated
274 files are up to date, die otherwise.
275
276=head2 F<podtidy>
277
278Applies F<podtidy> to a file.
279
280=head2 F<pumpkin.pod>
281
282Pumpkin - Notes on handling the Perl Patch Pumpkin And Porting Perl.
20a5039a 283Many of these are out of date or superseded by other documents in
3b2d1478 284this directory.
7ad311ab 285
9bd30288
BG
286=head2 F<README.pod>
287
288This file. An exhaustive list of the contents of the F<Porting/>
289directory along with a description of each file.
290The test F<t/porting/readme.t> ensures that this lists every file
291and that every file is listed.
292
7ad311ab
JK
293=head2 F<README.y2038>
294
295The y2038 implementation for perl. This is an implementation of POSIX time.h
296which solves the year 2038 bug on systems where time_t is only 32 bits. It is
297implemented in bog-standard ANSI C. The latest version can be found at
298L<http://y2038.googlecode.com/>.
299
300=head2 F<release_announcement_template.txt>
301
c5fb089a 302Release announcement for minor releasements of the 5.19 development series.
7ad311ab
JK
303
304=head2 F<release_managers_guide.pod>
305
306Releasing a new version of perl 5.x. Note that things change at each release,
307so there may be new things not covered here, or tools may need updating.
308
309=head2 F<release_schedule.pod>
310
311This schedule lists the projected or historical development and release
312schedules for the next, current and previous stable versions of Perl. Dates
313with all question marks will only be releases if deemed necessary by the
314Pumpking.
315
316=head2 F<rt_list_patches>
317
318Shell script to list patches in RT.
319
320=head2 F<sort_perldiag.pl>
321
322This is a script for sorting the warning and error messages in
323F<perldiag.pod>. POD formatting, printf-style escapes, non-letter characters,
324and case are ignored, as explained in L<perldiag>.
325
9bd30288
BG
326=head2 F<sync-with-cpan>
327
328Script to help out with syncing cpan distros.
329
7ad311ab
JK
330=head2 F<timecheck2.c>
331
332A little program to test the limits of your system's time functions. See
333F<Porting/README.y2038> for details.
334
335=head2 F<timecheck.c>
336
337A helper tool for perl's 2038 support See F<Porting/README.y2038> for details.
338
339=head2 F<todo.pod>
340
341This is a list of wishes for Perl. The most up-to-date version of this file is
342at L<http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/Porting/todo.pod>.
343The tasks we think are smaller or easier are listed first. Anyone is welcome
344to work on any of these, but it's a good idea to first contact
9bd30288 345I<perl5-porters@perl.org> to avoid duplication of effort, and to learn from
7ad311ab
JK
346any previous attempts.
347
348=head2 F<valgrindpp.pl>
349
350A post-processor for C<make test.valgrind>. F<valgrindpp.pl> is a
351post-processor for F<.valgrind> files created during C<make test.valgrind>. It
352collects all these files, extracts most of the information and produces a
353significantly shorter summary of all detected memory access errors and memory
354leaks.
355
356=cut
357