release_managers_guide.pod (perl-5.28.2.tar.xz) | : | release_managers_guide.pod (perl-5.28.3.tar.xz) | ||
---|---|---|---|---|
skipping to change at line 143 | skipping to change at line 143 | |||
https://pause.perl.org/pause/query?ACTION=request_id | https://pause.perl.org/pause/query?ACTION=request_id | |||
Check that your account is allowed to upload perl distros: go to | Check that your account is allowed to upload perl distros: go to | |||
L<https://pause.perl.org/pause/authenquery?ACTION=who_pumpkin> and check that | L<https://pause.perl.org/pause/authenquery?ACTION=who_pumpkin> and check that | |||
your PAUSE ID is listed there. If not, ask Andreas KE<0xf6>nig to add your ID | your PAUSE ID is listed there. If not, ask Andreas KE<0xf6>nig to add your ID | |||
to the list of people allowed to upload something called perl. You can find | to the list of people allowed to upload something called perl. You can find | |||
Andreas' email address at: | Andreas' email address at: | |||
https://pause.perl.org/pause/query?ACTION=pause_04imprint | https://pause.perl.org/pause/query?ACTION=pause_04imprint | |||
=head3 rt.perl.org update access | =head3 GitHub issue management access | |||
Make sure you have permission to close tickets on L<http://rt.perl.org/> | Make sure you have permission to close tickets on L<https://github.com/Perl/perl 5/issues> | |||
so you can respond to bug reports as necessary during your stint. If you | so you can respond to bug reports as necessary during your stint. If you | |||
don't, make an account (if you don't have one) and contact the pumpking | don't, make a GitHub account (if you don't have one) and contact the pumpking | |||
with your username to get ticket-closing permission. | with your username to get ticket-closing permission. | |||
=head3 git checkout and commit bit | =head3 git checkout and commit bit | |||
You will need a working C<git> installation, checkout of the perl | You will need a working C<git> installation, checkout of the perl | |||
git repository and perl commit bit. For information about working | git repository and perl commit bit. For information about working | |||
with perl and git, see F<pod/perlgit.pod>. | with perl and git, see F<pod/perlgit.pod>. | |||
If you are not yet a perl committer, you won't be able to make a | If you are not yet a perl committer, you won't be able to make a | |||
release. Have a chat with whichever evil perl porter tried to talk | release. Have a chat with whichever evil perl porter tried to talk | |||
skipping to change at line 248 | skipping to change at line 248 | |||
have some extra changes. | have some extra changes. | |||
In any case, any cpan-first distribution that is listed as having files | In any case, any cpan-first distribution that is listed as having files | |||
"Customized for blead" in the output of cpan-core-diff should have requests | "Customized for blead" in the output of cpan-core-diff should have requests | |||
submitted to the maintainer(s) to make a cpan release to catch up with blead. | submitted to the maintainer(s) to make a cpan release to catch up with blead. | |||
Additionally, all files listed as "modified" but not "customized for blead" | Additionally, all files listed as "modified" but not "customized for blead" | |||
should have entries added under the C<CUSTOMIZED> key in | should have entries added under the C<CUSTOMIZED> key in | |||
F<Porting/Maintainers.pl>, as well as checksums updated via: | F<Porting/Maintainers.pl>, as well as checksums updated via: | |||
cd t; ./perl -I../lib porting/customized.t --regen | cd t; ../perl -I../lib porting/customized.t --regen | |||
=head4 Sync CPAN modules with the corresponding cpanE<sol> distro | =head4 Sync CPAN modules with the corresponding cpanE<sol> distro | |||
In most cases, once a new version of a distribution shipped with core has been | In most cases, once a new version of a distribution shipped with core has been | |||
uploaded to CPAN, the core version thereof can be synchronized automatically | uploaded to CPAN, the core version thereof can be synchronized automatically | |||
with the program F<Porting/sync-with-cpan>. (But see the comments at the | with the program F<Porting/sync-with-cpan>. (But see the comments at the | |||
beginning of that program. In particular, it has not yet been exercised on | beginning of that program. In particular, it has not yet been exercised on | |||
Windows as much as it has on Unix-like platforms.) | Windows as much as it has on Unix-like platforms.) | |||
If, however, F<Porting/sync-with-cpan> does not provide good results, follow | If, however, F<Porting/sync-with-cpan> does not provide good results, follow | |||
skipping to change at line 368 | skipping to change at line 368 | |||
else | else | |||
(presumably) it's relying on something un-or-under-documented | (presumably) it's relying on something un-or-under-documented | |||
should the existing behaviour stay? | should the existing behaviour stay? | |||
yes - goto "regression" | yes - goto "regression" | |||
no - note it in perldelta as a significant bugfix | no - note it in perldelta as a significant bugfix | |||
(also, try to inform the module's author) | (also, try to inform the module's author) | |||
=head3 monitor smoke tests for failures | =head3 monitor smoke tests for failures | |||
Similarly, monitor the smoking of core tests, and try to fix. See | Similarly, monitor the smoking of core tests, and try to fix. See | |||
L<https://tux.nl/perl5/smoke/index.html>, L<http://perl5.test-smoke.org/> | L<https://tux.nl/perl5/smoke/index.html>, L<https://perl5.test-smoke.org/> | |||
and L<http://perl.develop-help.com> for a summary. See also | and L<http://perl.develop-help.com> for a summary. See also | |||
L<http://www.nntp.perl.org/group/perl.daily-build.reports/> which has | L<https://www.nntp.perl.org/group/perl.daily-build.reports/> which has | |||
the raw reports. | the raw reports. | |||
Similarly, monitor the smoking of perl for compiler warnings, and try to | Similarly, monitor the smoking of perl for compiler warnings, and try to | |||
fix. | fix. | |||
=for checklist skip BLEAD-POINT | =for checklist skip BLEAD-POINT | |||
=head3 monitor CPAN testers for failures | =head3 monitor CPAN testers for failures | |||
For any release except a BLEAD-POINT: Examine the relevant analysis report(s) | For any release except a BLEAD-POINT: Examine the relevant analysis report(s) | |||
at L<http://analysis.cpantesters.org/beforemaintrelease> to see how the | at L<http://analysis.cpantesters.org/beforemaintrelease> to see how the | |||
impending release is performing compared to previous releases with | impending release is performing compared to previous releases with | |||
regard to building and testing CPAN modules. | regard to building and testing CPAN modules. | |||
That page accepts a query parameter, C<pair> that takes a pair of | That page accepts a query parameter, C<pair> that takes a pair of | |||
colon-delimited versions to use for comparison. For example: | colon-delimited versions to use for comparison. For example: | |||
L<http://analysis.cpantesters.org/beforemaintrelease?pair=5.20.2:5.22.0%20RC1> | L<http://analysis.cpantesters.org/beforemaintrelease?pair=5.20.2:5.22.0%20RC1> | |||
=head3 Monitor Continuous Integration smokers | ||||
Currently both "Travis CI" and "GitHub Actions" smokers are setup. | ||||
Their current status is available at: | ||||
L<https://github.com/Perl/perl5/actions> | ||||
L<https://travis-ci.org/Perl/perl5> | ||||
=head3 update perldelta | =head3 update perldelta | |||
Get perldelta in a mostly finished state. | Get perldelta in a mostly finished state. | |||
Read F<Porting/how_to_write_a_perldelta.pod>, and try to make sure that | Read F<Porting/how_to_write_a_perldelta.pod>, and try to make sure that | |||
every section it lists is, if necessary, populated and complete. Copy | every section it lists is, if necessary, populated and complete. Copy | |||
edit the whole document. | edit the whole document. | |||
You won't be able to automatically fill in the "Updated Modules" section until | You won't be able to automatically fill in the "Updated Modules" section until | |||
after Module::CoreList is updated (as described below in | after Module::CoreList is updated (as described below in | |||
skipping to change at line 438 | skipping to change at line 446 | |||
See below in L<"update INSTALL"> for more details. | See below in L<"update INSTALL"> for more details. | |||
For the first RC release leading up to a BLEAD-FINAL release, update the | For the first RC release leading up to a BLEAD-FINAL release, update the | |||
description of which releases are now "officially" supported in | description of which releases are now "officially" supported in | |||
F<pod/perlpolicy.pod>. | F<pod/perlpolicy.pod>. | |||
When doing a BLEAD-POINT or BLEAD-FINAL release, also make sure the | When doing a BLEAD-POINT or BLEAD-FINAL release, also make sure the | |||
C<PERL_API_*> constants in F<patchlevel.h> are in sync with the version | C<PERL_API_*> constants in F<patchlevel.h> are in sync with the version | |||
you're releasing, unless you're absolutely sure the release you're about to | you're releasing, unless you're absolutely sure the release you're about to | |||
make is 100% binary compatible to an earlier release. Note: for BLEAD-POINT | make is 100% binary compatible to an earlier release. Note: for BLEAD-POINT | |||
releases the bump should have already occured at the end of the previous release | releases the bump should have already occurred at the end of the previous | |||
and this is somethig you would have to do at the very end. | release and this is something you would have to do at the very end. | |||
When releasing a MAINT perl version, the C<PERL_API_*> constants C<MUST NOT> | When releasing a MAINT perl version, the C<PERL_API_*> constants C<MUST NOT> | |||
be changed as we aim to guarantee binary compatibility in maint branches. | be changed as we aim to guarantee binary compatibility in maint branches. | |||
After editing, regenerate uconfig.h (this must be run on a system with a | After editing, regenerate uconfig.h (this must be run on a system with a | |||
/bin/sh available): | /bin/sh available): | |||
$ perl regen/uconfig_h.pl | $ perl regen/uconfig_h.pl | |||
This might not cause any new changes. | This might not cause any new changes. | |||
skipping to change at line 506 | skipping to change at line 514 | |||
For BLEAD-POINT releases, it needs to refer to the previous BLEAD-POINT | For BLEAD-POINT releases, it needs to refer to the previous BLEAD-POINT | |||
release (so for 5.15.3 this would be 5.15.2). If the last release manager | release (so for 5.15.3 this would be 5.15.2). If the last release manager | |||
followed instructions, this should have already been done after the last | followed instructions, this should have already been done after the last | |||
blead release, so you may find nothing to do here. | blead release, so you may find nothing to do here. | |||
=head3 Check copyright years | =head3 Check copyright years | |||
Check that the copyright years are up to date by running: | Check that the copyright years are up to date by running: | |||
$ pushd t; ./perl -I../lib porting/copyright.t --now | $ pushd t; ../perl -I../lib porting/copyright.t --now | |||
Remedy any test failures by editing README or perl.c accordingly (search for | Remedy any test failures by editing README or perl.c accordingly (search for | |||
the "Copyright"). If updating perl.c, check if the file's own copyright date in | the "Copyright"). If updating perl.c, check if the file's own copyright date in | |||
the C comment at the top needs updating, as well as the one printed by C<-v>. | the C comment at the top needs updating, as well as the one printed by C<-v>. | |||
=head3 Check more build configurations | =head3 Check more build configurations | |||
Try running the full test suite against multiple Perl configurations. Here are | Try running the full test suite against multiple Perl configurations. Here are | |||
some sets of Configure flags you can try: | some sets of Configure flags you can try: | |||
skipping to change at line 547 | skipping to change at line 555 | |||
which would smoke different flavors of Perl for you. | which would smoke different flavors of Perl for you. | |||
=head3 update perlport | =head3 update perlport | |||
L<perlport> has a section currently named I<Supported Platforms> that | L<perlport> has a section currently named I<Supported Platforms> that | |||
indicates which platforms are known to build in the current release. | indicates which platforms are known to build in the current release. | |||
If necessary update the list and the indicated version number. | If necessary update the list and the indicated version number. | |||
=head3 check a readonly build | =head3 check a readonly build | |||
Even before other prep work, follow the steps in L<build the tarball> and test | Even before other prep work, follow the steps in L</build the tarball> and test | |||
it locally. Because a perl source tarballs sets many files read-only, it could | it locally. Because a perl source tarballs sets many files read-only, it could | |||
test differently than tests run from the repository. After you're sure | test differently than tests run from the repository. After you're sure | |||
permissions aren't a problem, delete the generated directory and tarballs. | permissions aren't a problem, delete the generated directory and tarballs. | |||
=head2 Building a release - on the day | =head2 Building a release - on the day | |||
This section describes the actions required to make a release | This section describes the actions required to make a release | |||
that are performed near to, or on the actual release day. | that are performed near to, or on the actual release day. | |||
=head3 re-check earlier actions | =head3 re-check earlier actions | |||
skipping to change at line 653 | skipping to change at line 661 | |||
If you can devise a workable system, feel free to try it out, and to | If you can devise a workable system, feel free to try it out, and to | |||
update the RMG accordingly! | update the RMG accordingly! | |||
DAPM May 2013 ] | DAPM May 2013 ] | |||
F<corelist.pl> uses ftp.funet.fi to verify information about dual-lived | F<corelist.pl> uses ftp.funet.fi to verify information about dual-lived | |||
modules on CPAN. It can use a full, local CPAN mirror and/or fall back | modules on CPAN. It can use a full, local CPAN mirror and/or fall back | |||
on HTTP::Tiny to fetch package metadata remotely. | on HTTP::Tiny to fetch package metadata remotely. | |||
(If you'd prefer to have a full CPAN mirror, see | (If you'd prefer to have a full CPAN mirror, see | |||
L<http://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN>) | L<https://www.cpan.org/misc/cpan-faq.html#How_mirror_CPAN>) | |||
Change to your perl checkout, and if necessary, | Change to your perl checkout, and if necessary, | |||
$ make | $ make | |||
Then, If you have a local CPAN mirror, run: | Then, If you have a local CPAN mirror, run: | |||
$ ./perl -Ilib Porting/corelist.pl ~/my-cpan-mirror | $ ./perl -Ilib Porting/corelist.pl ~/my-cpan-mirror | |||
Otherwise, run: | Otherwise, run: | |||
skipping to change at line 690 | skipping to change at line 698 | |||
Also edit Module::CoreList's new version number in its F<Changes> file. | Also edit Module::CoreList's new version number in its F<Changes> file. | |||
This file is F<dist/Module-CoreList/Changes>. | This file is F<dist/Module-CoreList/Changes>. | |||
(BLEAD-POINT releases should have had this done already as a post-release | (BLEAD-POINT releases should have had this done already as a post-release | |||
action from the last commit.) | action from the last commit.) | |||
=head4 Add Module::CoreList version bump to perldelta | =head4 Add Module::CoreList version bump to perldelta | |||
Add a perldelta entry for the new Module::CoreList version. You only | Add a perldelta entry for the new Module::CoreList version. You only | |||
need to do this if you want to add notes about the changes included | need to do this if you want to add notes about the changes included | |||
with this version of Module::CoreList. Otherwise, its version bump | with this version of Module::CoreList. Otherwise, its version bump | |||
will be automatically filled in below in L<finalize perldelta>. | will be automatically filled in below in L</finalize perldelta>. | |||
=for checklist skip RC | =for checklist skip RC | |||
=head4 Update C<%Module::CoreList::released> | =head4 Update C<%Module::CoreList::released> | |||
For any release except an RC: Update this version's entry in the C<%released> | For any release except an RC: Update this version's entry in the C<%released> | |||
hash with today's date. | hash with today's date. | |||
=head4 Commit Module::CoreList changes | =head4 Commit Module::CoreList changes | |||
skipping to change at line 751 | skipping to change at line 759 | |||
$ podchecker -warnings -warnings pod/perldelta.pod | $ podchecker -warnings -warnings pod/perldelta.pod | |||
$ spell pod/perldelta.pod | $ spell pod/perldelta.pod | |||
$ aspell list < pod/perldelta.pod | sort -u | $ aspell list < pod/perldelta.pod | sort -u | |||
Also, you may want to generate and view an HTML version of it to check | Also, you may want to generate and view an HTML version of it to check | |||
formatting, e.g. | formatting, e.g. | |||
$ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > \ | $ ./perl -Ilib ext/Pod-Html/bin/pod2html pod/perldelta.pod > \ | |||
~/perldelta.html | ~/perldelta.html | |||
You should add pod links for GitHub issue references thusly: | ||||
$ perl -p -i -e'BEGIN{undef $/}; s{(GH\s+#)(\d+)}{L<$1$2|https://github.com/ | ||||
Perl/perl5/issues/$2>}mg' pod/perldelta.pod | ||||
If you make changes, be sure to commit them. | If you make changes, be sure to commit them. | |||
=for checklist skip BLEAD-POINT MAINT RC | =for checklist skip BLEAD-POINT MAINT RC | |||
=head3 remove stale perldeltas | =head3 remove stale perldeltas | |||
For the first RC release that is ONLY for a BLEAD-FINAL, the perldeltas | For the first RC release that is ONLY for a BLEAD-FINAL, the perldeltas | |||
from the BLEAD-POINT releases since the previous BLEAD-FINAL should have | from the BLEAD-POINT releases since the previous BLEAD-FINAL should have | |||
now been consolidated into the current perldelta, and hence are now just | now been consolidated into the current perldelta, and hence are now just | |||
useless clutter. They can be removed using: | useless clutter. They can be removed using: | |||
skipping to change at line 915 | skipping to change at line 927 | |||
where 5.X.Z is the latest tag, NNN the number of commits since this tag, | where 5.X.Z is the latest tag, NNN the number of commits since this tag, | |||
and C<< deadbeef >> commit of that tag. | and C<< deadbeef >> commit of that tag. | |||
Then delete the temporary installation. | Then delete the temporary installation. | |||
=head3 create the release tag | =head3 create the release tag | |||
Create the tag identifying this release (e.g.): | Create the tag identifying this release (e.g.): | |||
$ git tag v5.11.0 -m "First release of the v5.11 series!" | $ git tag v5.11.0 -m 'First release of the v5.11 series!' | |||
It is B<VERY> important that from this point forward, you not push | It is B<VERY> important that from this point forward, you not push | |||
your git changes to the Perl master repository. If anything goes | your git changes to the Perl master repository. If anything goes | |||
wrong before you publish your newly-created tag, you can delete | wrong before you publish your newly-created tag, you can delete | |||
and recreate it. Once you push your tag, we're stuck with it | and recreate it. Once you push your tag, we're stuck with it | |||
and you'll need to use a new version number for your release. | and you'll need to use a new version number for your release. | |||
=head3 build the tarball | =head3 build the tarball | |||
Before you run the following, you might want to install 7-Zip (the | Before you run the following, you might want to install 7-Zip (the | |||
skipping to change at line 938 | skipping to change at line 950 | |||
or the C<advancecomp> port on macports - 7-Zip on Windows is the | or the C<advancecomp> port on macports - 7-Zip on Windows is the | |||
same code as AdvanceCOMP, so Windows users get the smallest files | same code as AdvanceCOMP, so Windows users get the smallest files | |||
first time). These compress about 5% smaller than gzip and bzip2. | first time). These compress about 5% smaller than gzip and bzip2. | |||
Over the lifetime of your distribution this will save a lot of | Over the lifetime of your distribution this will save a lot of | |||
people a small amount of download time and disk space, which adds | people a small amount of download time and disk space, which adds | |||
up. | up. | |||
In order to produce the C<xz> tarball, XZ Utils are required. The C<xz> | In order to produce the C<xz> tarball, XZ Utils are required. The C<xz> | |||
utility is included with most modern UNIX-type operating systems and | utility is included with most modern UNIX-type operating systems and | |||
is available for Cygwin. A Windows port is available from | is available for Cygwin. A Windows port is available from | |||
L<http://tukaani.org/xz/>. | L<https://tukaani.org/xz/>. | |||
B<IMPORTANT>: if you are on OS X, you must export C<COPYFILE_DISABLE=1> | B<IMPORTANT>: if you are on OS X, you must export C<COPYFILE_DISABLE=1> | |||
to prevent OS X resource files from being included in your tarball. After | to prevent OS X resource files from being included in your tarball. After | |||
creating the tarball following the instructions below, inspect it to ensure | creating the tarball following the instructions below, inspect it to ensure | |||
you don't have files like F<._foobar>. | you don't have files like F<._foobar>. | |||
Create a tarball. Use the C<-s> option to specify a suitable suffix for | Create a tarball. Use the C<-s> option to specify a suitable suffix for | |||
the tarball and directory name: | the tarball and directory name: | |||
$ cd root/of/perl/tree | $ cd root/of/perl/tree | |||
skipping to change at line 1010 | skipping to change at line 1022 | |||
$ ./Configure -des && make all minitest test | $ ./Configure -des && make all minitest test | |||
# Or for a development release: | # Or for a development release: | |||
$ ./Configure -Dusedevel -des && make all minitest test | $ ./Configure -Dusedevel -des && make all minitest test | |||
=head4 Run the test harness and install | =head4 Run the test harness and install | |||
Check that the test harness and install work on each test machine: | Check that the test harness and install work on each test machine: | |||
$ make distclean | $ make distclean | |||
$ ./Configure -des -Dprefix=/install/path && make all test_harness install | $ ./Configure -des -Dprefix=/install/path && \ | |||
$ cd /install/path | make all test_harness install | |||
$ cd /install/path | ||||
(Remember C<-Dusedevel> above, for a development release.) | ||||
=head4 Check C<perl -v> and C<perl -V> | =head4 Check C<perl -v> and C<perl -V> | |||
Check that the output of C<perl -v> and C<perl -V> are as expected, | Check that the output of C<perl -v> and C<perl -V> are as expected, | |||
especially as regards version numbers, patch and/or RC levels, and @INC | especially as regards version numbers, patch and/or RC levels, and @INC | |||
paths. | paths. | |||
Note that the results may be different without a F<.git/> directory, | Note that the results may be different without a F<.git/> directory, | |||
which is why you should test from the tarball. | which is why you should test from the tarball. | |||
=head4 Run the Installation Verification Procedure utility | =head4 Run the Installation Verification Procedure utility | |||
$ ./perl ./perlivp | $ ./perl -Ilib ./utils/perlivp | |||
# Or, perhaps: | # Or, perhaps: | |||
$ ./perl5.x.y ./perlivp5.x.y | $ ./perl5.x.y ./utils/perlivp5.x.y | |||
... | ... | |||
All tests successful. | All tests successful. | |||
$ | $ | |||
=head4 Compare the installed paths to the last release | =head4 Compare the installed paths to the last release | |||
Compare the pathnames of all installed files with those of the previous | Compare the pathnames of all installed files with those of the previous | |||
release (i.e. against the last installed tarball on this branch which you | release (i.e. against the last installed tarball on this branch which you | |||
have previously verified using this same procedure). In particular, look | have previously verified using this same procedure). In particular, look | |||
for files in the wrong place, or files no longer included which should be. | for files in the wrong place, or files no longer included which should be. | |||
For example, suppose the about-to-be-released version is 5.10.1 and the | For example, suppose the about-to-be-released version is 5.10.1 and the | |||
previous is 5.10.0: | previous is 5.10.0: | |||
cd installdir-5.10.0/ | cd installdir-5.10.0/ | |||
find . -type f | perl -pe's/5\.10\.0/5.10.1/g' | sort > /tmp/f1 | find . -type f | perl -pe's/5\.10\.0/5.10.1/g' | sort > /tmp/f1 | |||
cd installdir-5.10.1/ | cd installdir-5.10.1/ | |||
find . -type f | sort > /tmp/f2 | find . -type f | sort > /tmp/f2 | |||
diff -u /tmp/f[12] | diff -u /tmp/f[12] | |||
=head4 Disable C<local::lib> if it's turned on | ||||
If you're using C<local::lib>, you should reset your environment before | ||||
performing these actions: | ||||
$ unset PERL5LIB PERL_MB_OPT PERL_LOCAL_LIB_ROOT PERL_MM_OPT | ||||
=head4 Bootstrap the CPAN client | =head4 Bootstrap the CPAN client | |||
Bootstrap the CPAN client on the clean install: | Bootstrap the CPAN client on the clean install: | |||
$ bin/cpan | $ bin/cpan | |||
# Or, perhaps: | # Or, perhaps: | |||
$ bin/cpan5.xx.x | $ bin/cpan5.xx.x | |||
=head4 Install the Inline module with CPAN and test it | =head4 Install the Inline module with CPAN and test it | |||
If you're using C<local::lib>, you should reset your environment before | ||||
performing these actions: | ||||
$ unset PERL5LIB PERL_MB_OPT PERL_LOCAL_LIB_ROOT PERL_MM_OPT | ||||
Try installing a popular CPAN module that's reasonably complex and that | Try installing a popular CPAN module that's reasonably complex and that | |||
has dependencies; for example: | has dependencies; for example: | |||
CPAN> install Inline::C | CPAN> install Inline::C | |||
CPAN> quit | CPAN> quit | |||
Check that your perl can run this: | Check that your perl can run this: | |||
$ bin/perl -lwe "use Inline C => q[int f() { return 42;}]; print f" | $ bin/perl -Ilib -lwe "use Inline C => q[int f() { return 42;}]; print f" | |||
42 | 42 | |||
$ | $ | |||
=head4 Make sure that perlbug works | =head4 Make sure that perlbug works | |||
Test L<perlbug> with the following: | Test L<perlbug> with the following: | |||
$ bin/perlbug | $ bin/perlbug | |||
... | ... | |||
Subject: test bug report | Subject: test bug report | |||
skipping to change at line 1093 | skipping to change at line 1110 | |||
Editor [vi]: | Editor [vi]: | |||
Module: | Module: | |||
Category [core]: | Category [core]: | |||
Severity [low]: | Severity [low]: | |||
(edit report) | (edit report) | |||
Action (Send/Display/Edit/Subject/Save to File): f | Action (Send/Display/Edit/Subject/Save to File): f | |||
Name of file to save message in [perlbug.rep]: | Name of file to save message in [perlbug.rep]: | |||
Action (Send/Display/Edit/Subject/Save to File): Q | Action (Send/Display/Edit/Subject/Save to File): Q | |||
and carefully examine the output (in F<perlbug.rep]>), especially | and carefully examine the output (in F<perlbug.rep]>), especially | |||
the "Locally applied patches" section. If everything appears okay, then | the "Locally applied patches" section. | |||
delete the file, and try it again, this time actually submitting the bug | ||||
report. Check that it shows up, then remember to close it! | ||||
=for checklist skip BLEAD-POINT | =for checklist skip BLEAD-POINT | |||
=head3 monitor smokes | =head3 monitor smokes | |||
XXX This is probably irrelevant if working on a release branch, though | XXX This is probably irrelevant if working on a release branch, though | |||
MAINT or RC might want to push a smoke branch and wait. | MAINT or RC might want to push a smoke branch and wait. | |||
Wait for the smoke tests to catch up with the commit which this release is | Wait for the smoke tests to catch up with the commit which this release is | |||
based on (or at least the last commit of any consequence). | based on (or at least the last commit of any consequence). | |||
skipping to change at line 1232 | skipping to change at line 1247 | |||
Add your quote to F<Porting/epigraphs.pod> and commit it. | Add your quote to F<Porting/epigraphs.pod> and commit it. | |||
You can include the customary link to the release announcement even before your | You can include the customary link to the release announcement even before your | |||
message reaches the web-visible archives by looking for the X-List-Archive | message reaches the web-visible archives by looking for the X-List-Archive | |||
header in your message after receiving it back via perl5-porters. | header in your message after receiving it back via perl5-porters. | |||
=head3 blog about your epigraph | =head3 blog about your epigraph | |||
If you have a blog, please consider writing an entry in your blog explaining | If you have a blog, please consider writing an entry in your blog explaining | |||
why you chose that particular quote for your epigraph. | why you chose that particular quote for your epigraph. | |||
=head3 update the link to the latest perl on perlweb | ||||
Submit a pull request to L<https://github.com/perlorg/perlweb> to update the | ||||
link in F<docs/dev/perl5/index.html> to point to your release. | ||||
=for checklist skip RC | =for checklist skip RC | |||
=head3 Release schedule | =head3 Release schedule | |||
I<You MUST SKIP this step for RC> | I<You MUST SKIP this step for RC> | |||
Tick the entry for your release in F<Porting/release_schedule.pod>. | Tick the entry for your release in F<Porting/release_schedule.pod>. | |||
=for checklist skip RC | =for checklist skip RC | |||
skipping to change at line 1337 | skipping to change at line 1357 | |||
calls itself 5.20.2 then much time can be wasted in figuring out why there | calls itself 5.20.2 then much time can be wasted in figuring out why there | |||
is a failure from something that "should have been fixed". If the bump is | is a failure from something that "should have been fixed". If the bump is | |||
late then there is a much smaller window of time for such confusing bug | late then there is a much smaller window of time for such confusing bug | |||
reports to arise. (The opposite problem -- trying to figure out why there | reports to arise. (The opposite problem -- trying to figure out why there | |||
*is* a bug in something calling itself 5.20.1 when in fact the bug was | *is* a bug in something calling itself 5.20.1 when in fact the bug was | |||
introduced later -- shouldn't arise for MAINT releases since they should, | introduced later -- shouldn't arise for MAINT releases since they should, | |||
in theory, only contain bug fixes but never regressions.)) | in theory, only contain bug fixes but never regressions.)) | |||
=head3 clean build and test | =head3 clean build and test | |||
Run a clean build and test to make sure nothing obvious is broken. | Run a clean build and test to make sure nothing obvious is broken. This is | |||
very important, as commands run after this point must be run using the perl | ||||
executable built with the bumped version number. | ||||
$ git clean -xdf | ||||
$ ./Configure -des -Dusedevel | ||||
$ make | ||||
$ make test | ||||
In particular, F<Porting/perldelta_template.pod> is intentionally exempted | In particular, F<Porting/perldelta_template.pod> is intentionally exempted | |||
from podchecker tests, to avoid false positives about placeholder text. | from podchecker tests, to avoid false positives about placeholder text. | |||
However, once it's copied to F<pod/perldelta.pod> the contents can now | However, once it's copied to F<pod/perldelta.pod> the contents can now | |||
cause test failures. Problems should be resolved by doing one of the | cause test failures. Problems should be resolved by doing one of the | |||
following: | following: | |||
=over | =over | |||
=item 1 | =item 1 | |||
skipping to change at line 1490 | skipping to change at line 1517 | |||
F<dist/Module-CoreList/lib/Module/CoreList/Utils.pm> as it did before, | F<dist/Module-CoreList/lib/Module/CoreList/Utils.pm> as it did before, | |||
but this time adding new sections for the next BLEAD-POINT release. | but this time adding new sections for the next BLEAD-POINT release. | |||
=item * | =item * | |||
Add the new $Module::CoreList::VERSION to | Add the new $Module::CoreList::VERSION to | |||
F<dist/Module-CoreList/Changes>. | F<dist/Module-CoreList/Changes>. | |||
=item * | =item * | |||
Update F<pod/perldelta.pod> to mention the upgrade to Module::CoreList. | ||||
=item * | ||||
Remake perl to get your changed .pm files propagated into F<lib/> and | Remake perl to get your changed .pm files propagated into F<lib/> and | |||
then run at least the F<dist/Module-CoreList/t/*.t> tests and the | then run at least the F<dist/Module-CoreList/t/*.t> tests and the | |||
test_porting makefile target to check that they're ok. | test_porting makefile target to check that they're ok. | |||
=item * | =item * | |||
Run | Run | |||
$ ./perl -Ilib -MModule::CoreList \ | $ ./perl -Ilib -MModule::CoreList \ | |||
-le 'print Module::CoreList->find_version($]) ? "ok" : "not ok"' | -le 'print Module::CoreList->find_version($]) ? "ok" : "not ok"' | |||
skipping to change at line 1523 | skipping to change at line 1546 | |||
=head3 check tarball availability | =head3 check tarball availability | |||
Check various website entries to make sure the that tarball has appeared | Check various website entries to make sure the that tarball has appeared | |||
and is properly indexed: | and is properly indexed: | |||
=over 4 | =over 4 | |||
=item * | =item * | |||
Check your author directory under L<http://www.cpan.org/authors/id/> | Check your author directory under L<https://www.cpan.org/authors/id/> | |||
to ensure that the tarballs are available on the website. | to ensure that the tarballs are available on the website. | |||
=item * | =item * | |||
Check F</src> on CPAN (on a fast mirror) to ensure that links to | Check F</src> on CPAN (on a fast mirror) to ensure that links to | |||
the new tarballs have appeared: There should be links in F</src/5.0> | the new tarballs have appeared: There should be links in F</src/5.0> | |||
(which is accumulating all new versions), and (for BLEAD-FINAL and | (which is accumulating all new versions), and (for BLEAD-FINAL and | |||
MAINT only) an appropriate mention in F</src/README.html> (which describes | MAINT only) an appropriate mention in F</src/README.html> (which describes | |||
the latest versions in each stable branch, with links). | the latest versions in each stable branch, with links). | |||
The F</src/5.0> links should appear automatically, some hours after upload. | The F</src/5.0> links should appear automatically, some hours after upload. | |||
If they don't, or the F</src> description is inadequate, | If they don't, or the F</src> description is inadequate, | |||
ask Ask <ask@perl.org>. | ask Ask <ask@perl.org>. | |||
=item * | =item * | |||
Check L<http://www.cpan.org/src/> to ensure that the F</src> updates | Check L<https://www.cpan.org/src/> to ensure that the F</src> updates | |||
have been correctly mirrored to the website. | have been correctly mirrored to the website. | |||
If they haven't, ask Ask <ask@perl.org>. | If they haven't, ask Ask <ask@perl.org>. | |||
=item * | =item * | |||
Check L<http://search.cpan.org> to see if it has indexed the distribution. | Check L<https://metacpan.org> to see if it has indexed the distribution. | |||
It should be visible at a URL like C<http://search.cpan.org/dist/perl-5.10.1/>. | It should be visible at a URL like C<https://metacpan.org/release/DAPM/perl-5.10 | |||
.1>. | ||||
=back | =back | |||
=head3 update release manager's guide | =head3 update release manager's guide | |||
Go over your notes from the release (you did take some, right?) and update | Go over your notes from the release (you did take some, right?) and update | |||
F<Porting/release_managers_guide.pod> with any fixes or information that | F<Porting/release_managers_guide.pod> with any fixes or information that | |||
will make life easier for the next release manager. | will make life easier for the next release manager. | |||
=for checklist end | =for checklist end | |||
End of changes. 28 change blocks. | ||||
37 lines changed or deleted | 62 lines changed or added |