Instructions for mod_perl 2.0 Release Manager 1. 'make dist' - to make sure nothing is missing from the manifest, etc. Now test this generated package (not cvs) with as many configurations as possible on as many platforms as possible. a) nuke any preinstalled mod_perl libs and run 'make test' b) test that you can 'make install' and then run 'make test' again c) test whether we still 100% OK on systems with no LWP: % APACHE_TEST_PRETEND_NO_LWP=1 make test 2. once confident that the package is good, upload a release candidate to perl.apache.org/~username 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 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 '-dev' - add release date b. rerun: % perl Makefile.PL MP_INST_APACHE2=1 make sure tag looks right % make -n cvs_tag c. commit Changes % cvs ci Changes d. tag % make cvs_tag e. create the final package % make dist f. test the final package again at least once 4. Release the package and update links (e.g. mod_perl-1.99_13.tar.gz) a. upload to www.apache.org:/www/perl.apache.org/dist/ b. ssh to www.apache.org, unpack the package, update symlinks to the tar ball and unpacked distro: % ssh www.apache.org % cd /www/perl.apache.org/dist/ % ln -sf mod_perl-1.99_13.tar.gz mod_perl-2.0-current.tar.gz % tar -xzvf mod_perl-1.99_13.tar.gz % rm /www/perl.apache.org/dist/mod_perl-2.0-current % ln -sf mod_perl-1.99_13 mod_perl-2.0-current c. archive older releases (keep current + one prior release) % mv /www/perl.apache.org/dist/mod_perl-1.99_11.tar.gz \ /www/perl.apache.org/dist/old % mv /www/perl.apache.org/dist/mod_perl-1.99_11.tar.gz.asc \ /www/perl.apache.org/dist/old % rm -rf /www/perl.apache.org/dist/mod_perl-1.99_11 d. update the version and release date modperl-docs/src/download/index_top.html and commit. It'll be automatically updated within 6 hours. Alternatively you can do a manual update by logging into www.apache.org and running: % /home/perlwww/apache.org/modperl-docs/bin/site_build 5. Upload the package to CPAN 6. 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-1.99_13.tar.gz % pgps -b --armor mod_perl-1.99_13.tar.gz b. upload the generated sig file to www.apache.org: % scp mod_perl-1.99_13.tar.gz.asc www.apache.org:/www/perl.apache.org/dist/ % ssh www.apache.org % cd /www/perl.apache.org/dist/ % chmod 0664 mod_perl-1.99_13.tar.gz.asc % ln -sf mod_perl-1.99_13.tar.gz.asc mod_perl-2.0-current.tar.gz.asc c. ask one of the other developers to double check the signature file and tarball: download both files and verify the signature: % gpg --verify mod_perl-1.99_13.tar.gz.asc % pgpv mod_perl-1.99_13.tar.gz.asc d. make sure that the files you just created are group rw so all the dist admins can make changes: % find /www/perl.apache.org/dist/ -user $USER -type f -exec chmod 0664 {} \; % find /www/perl.apache.org/dist/ -user $USER -type d -exec chmod 0775 {} \; 7. Distribute to www.apache.org/dist/perl and archive the old package under /www/archive.apache.org/dist/perl/ % cd /www/www.apache.org/dist/perl/ % cp /www/perl.apache.org/dist/mod_perl-1.99_13.tar.gz* . % tar -xzvf mod_perl-1.99_13.tar.gz % mv mod_perl-1.99_11.tar.gz* /www/archive.apache.org/dist/perl/ % rm -rf mod_perl-1.99_12 8. Announce the package a. post ... to the modperl, announce lists Subject: [ANNOUNCE] mod_perl 1.99_13 include - MD5 sig (as it comes from CPAN upload announce). - the latest Changes 9. Prepare for the next cycle a. increment version in lib/mod_perl.pm b. edit ./Changes: - start a new item with incremented version + '-dev' =item 1.99_14-dev c. commit Changes % cvs ci Changes lib/mod_perl.pm d. add a release entry in STATUS and commit % cvs ci STATUS e. update this file versions to make it easy to copy-n-paste things on the next release: perl -pi -e 's/_14/_15/g' RELEASE perl -pi -e 's/_13/_14/g' RELEASE perl -pi -e 's/_12/_13/g' RELEASE perl -pi -e 's/_11/_12/g' RELEASE;