Instructions for mod_perl 2.0 Release Manager 0. make sure your public key is in the KEYS file in the mod_perl docs. you should only need to do this if this is your first time playing Release Manager $ cd mod_perl-docs $ grep $USER src/dist/KEYS note that the KEYS file itself contains all the instructions you need on how to add your key. if you need further help on gpg (like how to create a key in the first place) you can look here https://people.apache.org/~geoff/gpghowto.html Copy the KEYS file into place: % scp KEYS people.apache.org:/www/www.apache.org/dist/perl/KEYS If this is your first release, ask someone with APML karma on PAUSE to verify you have the appropriate permissions. Likely someone on the PMC can do this. a. login into https://pause.perl.org b. menu click: Select Mailinglist/Action c. choose APML and Change Permissions and click go d. click 3.1 Make somebody else co-maintainer e. choose the modules to give the perms to type the username of the new co-maintainer f. if you happen to know that packages were added this release, make sure you give the correct permissions to them. 1. 'make mydist' - to make sure nothing is missing from the manifest, etc. Now test this generated package mod_perl-2.0.12.tar.gz (not the current build) with as many configurations as possible on as many platforms as possible, unpacking the package each time afresh. a. edit ./Changes - change -dev to -rc\d+ starting with -rc1 - edit META.yml to the rc\d version above in the version key b. commit Changes % svn ci -m "2.0.12 rc1" Changes c. nuke any preinstalled mod_perl libs and run 'make test' d. test that you can 'make install' and then run 'make test' again e. test whether we are still 100% OK on systems with no LWP: % APACHE_TEST_PRETEND_NO_LWP=1 make test f. build and test as root. double check that you have started from a fresh source, without having any stale dirs from the previous build laying around. 2. once confident that the package is good, commit the release candidate to https://dist.apache.org/repos/dist/dev/perl and post 24 hour-ish candidate alert to the modperl/dev list (may be longer to give most people a chance to catch up). no need to tag this package Subject: [RELEASE CANDIDATE]: mod_perl-2.0.12 RC\d+ 2a. if problems are detected during stage 2, repeat stages 1 and 2. 3. when the package has been reported to be good, prepare a new package to be released a. edit ./Changes: - remove -rc\d+ - add release date - edit META.yml to remove the -rc\d+ from the version key b. check ./README and ./Makefile.PL - make sure supported httpd versions (dso & static) are current c. rerun: % perl Makefile.PL make sure tag looks right % make -n tag d. commit Changes README Makefile.PL % svn ci -m "2.0.12 release" Changes README Makefile.PL e. tag % make tag f. Update the svn:externals in the new tag to refer to the new docs tag that was created by the previous step: % svn co https://svn.apache.org/repos/asf/perl/modperl/tags/2_0_12 % svn propedit svn:externals 2_0_12 Update the docs line from: ^/perl/modperl/docs/trunk/src/docs/2.0 to: ^/perl/modperl/docs/tags/2_0_12/src/docs/2.0 The complete svn:externals should now look like: % svn propget svn:externals 2_0_12 Apache-Test ^/perl/Apache-Test/tags/ Apache-Reload ^/perl/Apache-Reload/tags/ Apache-SizeLimit ^/perl/Apache-SizeLimit/tags/ docs ^/perl/modperl/docs/tags/2_0_12/src/docs/2.0 where , and are the tags of the releases of Apache-Test, Apache-Reload and Apache-SizeLimit included in this release of mod_perl. % svn ci -m "2.0.12 release" g. create the final package % make dist h. test the final package again at least once 4. Tarball signing (depending on whether you use GPG or PGP, pick the first or the second set of the commands): a. sign your local copy of the tarball: % gpg --detach-sign --armor mod_perl-2.0.12.tar.gz % pgps -b --armor mod_perl-2.0.12.tar.gz b. create SHA256 and SHA512 checksums of the tarball: % sha256sum mod_perl-2.0.12.tar.gz >mod_perl-2.0.12.tar.gz.sha256 % sha512sum mod_perl-2.0.12.tar.gz >mod_perl-2.0.12.tar.gz.sha512 5. Release the package and update links a. commit the tarball, the signature file and the checksum files to https://dist.apache.org/repos/dist/release/perl - ask the PMC chair to give you the needed permissions if you do not have them. b. delete the previous release's files from the same location (they will already have been archived at https://archive.apache.org/dist/perl/) c. update the example command-lines in README.html in the same location d. ask one of the other developers to double check the signature file and tarball: download both files and verify the signature: https://www.apache.org/dist/perl/mod_perl-2.0.12.tar.gz.asc https://www.apache.org/dist/perl/mod_perl-2.0.12.tar.gz % gpg --verify mod_perl-2.0.12.tar.gz.asc % pgpv mod_perl-2.0.12.tar.gz.asc e. respond to the automated email that will arrive requesting that release data be filled in at https://reporter.apache.org/addrelease.html?perl f. update the version and release date in the docs: % vi modperl-docs/src/download/index_top.html % vi modperl-docs/doap_Perl.rdf and commit. % svn ci -m "2.0.12 release" \ modperl-docs/src/download/index_top.html \ modperl-docs/doap_Perl.rdf Now run modperl-docs/bin/site_build to generate a local copy of the website, and commit that to https://svn.apache.org/repos/asf/perl/site (Alternatively, if running modperl-docs/bin/site_build is too difficult on your local machine, you can just directly edit download/index.html with the changes that were made to modperl-docs/download/index_top.html) The change to the website will appear at https://perl.apache.org/ sometime later (but maybe not until the next day). 6. Upload the package to CPAN 7. Announce the package a. post to the following lists: o dev/perl.apache.org o modperl/perl.apache.org o announce/apache.org Note, to post to announce@, you must be sending from an apache.org address. Subject: [ANNOUNCE] mod_perl 2.0.12 include: - link at perl.apache.org: https://perl.apache.org/download/index.html - SHA256 and SHA512 sigs - the latest Changes 8. Prepare for the next cycle a. increment version in lib/mod_perl2.pm b. increment version in META.yml c. edit ./Changes: - start a new item with incremented version + '-dev' =item 2.0.13-dev d. add a release entry in STATUS e. update this file versions to make it easy to copy-n-paste things on the next release: % perl -pi.bak -e 's/(\d+)([._])(\d+)(\2)(\d+)/join($2, $1, $3, $5+1)/eg' RELEASE f. commit the changed files % svn ci -m "start 2.0.12-dev cycle" Changes META.yml lib/mod_perl2.pm \ STATUS RELEASE 9. Old Versions Remind other developers to delete versions older then the prior release from CPAN. Old releases can always be found on BACKPAN.