This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
bisect-runner.pl always needs to pass paths gleaned from gcc to Configure.
[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
8818c98f 19=head2 F<bisect-example.sh>, F<bisect-runner.pl> and F<bisect.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
33=head2 F<checkAUTHORS.pl>
34
35Used by F<t/porting/authors.t> to ensure the F<AUTHORS> list is up to date.
36
37=head2 F<checkURL.pl>
38
39Checks that all the URLs in the Perl source are valid.
40
41=head2 F<checkVERSION.pl>
42
43Used by F<t/porting/cmp_version.t> to ensure changed modules have had their
44versions updated.
45
46=head2 F<checkansi.pl>
47
48Check source code for ANSI-C violations.
49
50=head2 F<checkcfgvar.pl>
51
52Check that the various F<config.sh>-clones have (at least) all the same
53symbols as the top-level F<config_h.SH> so that the (potentially) needed
54symbols are not lagging after how F<Configure> thinks the world is laid out.
55VMS is probably not handled properly here, due to their own rather elaborate
56DCL scripting.
57
58=head2 F<check-cpan-pollution>
59
60Scans the commit logs for commits that are potentially, illegitimately
61touching modules that are primarily maintained outside of the perl core. Also
62checks for commits that span multiple distributions in F<cpan/> or F<dist/>.
63Makes sure that updated CPAN distributions also update
64F<Porting/Maintainers.pl>, but otherwise ignores changes to that file (and
65F<MANIFEST>).
66
67=head2 F<checkpodencoding.pl>
68
69Check if POD files contain non-ASCII without specifying
70encoding. Run it as: C<perl Porting/checkpodencoding.pl>.
71
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
117=head2 F<corelist.pl>
118
119Generates info for Module::CoreList from this perl tree.
120
121=head2 F<corelist-perldelta.pl>
122
123Generates a list of the module changes for the Perl you are currently
124building. Also generates a diff between the corelist sections of two
125F<perldelta*> files.
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
149=head2 F<GitUtils.pm>
150
151This script contains the subroutine to generate a F<.patch file> for a
152committish (the SHA1 checksum of a commit, a number made of 40 hexadecimal
153digits which acts the internal unique identifier for this commit
154(lilypond.org). Related file: F<make_dot_patch.pl>
155
156=head2 F<git-deltatool>
157
158This script, a rough draft, aids in generating a perldelta file
159from a series of git commits.
160
161=head2 F<git-find-p4-change>
162
163This script, given a Perforce change number, outputs the equivalent git commit
164id.
165
166=head2 F<git-make-p4-refs>
167
168This script creates a tag for every p4raw-id.
169
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
204=head2 F<make-rmg-checklist>
205
206This script creates a release checklist as a simple HTML document.
207
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
213=head2 F<make_modlib_cpan.pl>
214
215This script generates the list of registered CPAN sites in F<perlmodlib.PL>.
216
217=head2 F<make_snapshot.pl>
218
219This script is a quick and dirty snapshot generator for the perl5.git.perl.org
220web page to use to generate the snapshot files.
221
222=head2 F<makemeta>
223
224This script creates F<META.yml> and F<META.json> files.
225
226=head2 F<makerel>
227
228This script builds a Perl release tarball.
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
JK
281
282=head2 F<README.y2038>
283
284The y2038 implementation for perl. This is an implementation of POSIX time.h
285which solves the year 2038 bug on systems where time_t is only 32 bits. It is
286implemented in bog-standard ANSI C. The latest version can be found at
287L<http://y2038.googlecode.com/>.
288
289=head2 F<release_announcement_template.txt>
290
c5fb089a 291Release announcement for minor releasements of the 5.19 development series.
7ad311ab
JK
292
293=head2 F<release_managers_guide.pod>
294
295Releasing a new version of perl 5.x. Note that things change at each release,
296so there may be new things not covered here, or tools may need updating.
297
298=head2 F<release_schedule.pod>
299
300This schedule lists the projected or historical development and release
301schedules for the next, current and previous stable versions of Perl. Dates
302with all question marks will only be releases if deemed necessary by the
303Pumpking.
304
305=head2 F<rt_list_patches>
306
307Shell script to list patches in RT.
308
309=head2 F<sort_perldiag.pl>
310
311This is a script for sorting the warning and error messages in
312F<perldiag.pod>. POD formatting, printf-style escapes, non-letter characters,
313and case are ignored, as explained in L<perldiag>.
314
315=head2 F<testall.atom>
316
317Test suite profiling on Tru 64.
318
319=head2 F<thirdclean>
320
321Script for cleaning out the "known noise" from Third Degree reports: either
322noise caused by F<libc> itself, or F<Perl_yyparse> leaks.
323
324=head2 F<time>
325
326A helper tool for perl's 2038 support. See F<Porting/README.y2038> for details.
327
328=head2 F<timecheck2.c>
329
330A little program to test the limits of your system's time functions. See
331F<Porting/README.y2038> for details.
332
333=head2 F<timecheck.c>
334
335A helper tool for perl's 2038 support See F<Porting/README.y2038> for details.
336
337=head2 F<todo.pod>
338
339This is a list of wishes for Perl. The most up-to-date version of this file is
340at L<http://perl5.git.perl.org/perl.git/blob_plain/HEAD:/Porting/todo.pod>.
341The tasks we think are smaller or easier are listed first. Anyone is welcome
342to work on any of these, but it's a good idea to first contact
343F<perl5-porters@perl.org> to avoid duplication of effort, and to learn from
344any previous attempts.
345
346=head2 F<valgrindpp.pl>
347
348A post-processor for C<make test.valgrind>. F<valgrindpp.pl> is a
349post-processor for F<.valgrind> files created during C<make test.valgrind>. It
350collects all these files, extracts most of the information and produces a
351significantly shorter summary of all detected memory access errors and memory
352leaks.
353
354=cut
355