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 mod_perl-2.0.0-RC5.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) 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 d) 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, upload a release candidate to people.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 - temp: change VERSION in Makefile.PL to RC6 (while doing RC series) b. check ./README and ./Makefile.PL - make sure supported httpd versions (dso & static) are current c. rerun: % perl Makefile.PL MP_INST_APACHE2=1 make sure tag looks right % make -n tag d. commit Changes README Makefile.PL % svn ci Changes README Makefile.PL e. tag % make tag f. create the final package % make dist g. test the final package again at least once 4. Release the package and update links (e.g. mod_perl-2.0.0-RC6.tar.gz) a. upload to www.apache.org:/www/perl.apache.org/dist/ % scp mod_perl-2.0.0-RC6.tar.gz perl.apache.org:/www/perl.apache.org/dist/ b. ssh to perl.apache.org, unpack the package, update symlinks to the tar ball and unpacked distro: % ssh perl.apache.org % cd /www/perl.apache.org/dist/ % ln -sf mod_perl-2.0.0-RC6.tar.gz mod_perl-2.0-current.tar.gz % tar -xzvf mod_perl-2.0.0-RC6.tar.gz % rm /www/perl.apache.org/dist/mod_perl-2.0-current % ln -sf mod_perl-2.0.0-RC6 mod_perl-2.0-current c. archive older releases (keep current + one prior release) % mv /www/perl.apache.org/dist/mod_perl-2.0.0-RC4.tar.gz \ /www/perl.apache.org/dist/old % mv /www/perl.apache.org/dist/mod_perl-2.0.0-RC4.tar.gz.asc \ /www/perl.apache.org/dist/old % rm -rf /www/perl.apache.org/dist/mod_perl-2.0.0-RC4 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-2.0.0-RC6.tar.gz % pgps -b --armor mod_perl-2.0.0-RC6.tar.gz b. upload the generated sig file to www.apache.org: % scp mod_perl-2.0.0-RC6.tar.gz.asc perl.apache.org:/www/perl.apache.org/dist/ % perl www.apache.org % cd /www/perl.apache.org/dist/ % chmod 0664 mod_perl-2.0.0-RC6.tar.gz.asc % ln -sf mod_perl-2.0.0-RC6.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: http://perl.apache.org/dist/mod_perl-2.0.0-RC6.tar.gz.asc http://perl.apache.org/dist/mod_perl-2.0.0-RC6.tar.gz % gpg --verify mod_perl-2.0.0-RC6.tar.gz.asc % pgpv mod_perl-2.0.0-RC6.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/ a. unpack the package, update symlinks to the tarball and unpacked distro: % cd /www/www.apache.org/dist/perl/ % cp /www/perl.apache.org/dist/mod_perl-2.0.0-RC6.tar.gz* . % tar -xzvf mod_perl-2.0.0-RC6.tar.gz % mv mod_perl-2.0.0-RC4.tar.gz* /www/archive.apache.org/dist/perl/ % rm -rf mod_perl-2.0.0-RC4 b. make sure that the files you just created are group rw so all the dist admins can make changes: % find /www/www.apache.org/dist/ -user $USER -type f -exec chmod 0664 {} \; % find /www/www.apache.org/dist/ -user $USER -type d -exec chmod 0775 {} \; 8. Announce the package a. post ... to the modperl, announce lists Subject: [ANNOUNCE] mod_perl 2.0.0-RC6 include - link at perl.apache.org: http://apache.org/dist/perl/mod_perl-2.0.0-RC6.tar.gz http://apache.org/dist/perl/mod_perl-2.0.0-RC6.tar.gz.asc (pgp sig) - MD5 sig (as it comes from CPAN upload announce). - the latest Changes 9. Prepare for the next cycle a. increment version in lib/mod_perl2.pm b. edit ./Changes: - start a new item with incremented version + '-dev' =item 1.99_24-dev c. add a release entry in STATUS d. update this file versions to make it easy to copy-n-paste things on the next release: perl -pi -e 's/_24/_25/g' RELEASE perl -pi -e 's/RC6/RC7/g' RELEASE perl -pi -e 's/RC5/RC6/g' RELEASE perl -pi -e 's/RC4/RC5/g' RELEASE perl -pi -e 's/RC3/RC4/g' RELEASE now reload this file and bump up the last number of the first two commands. e. commit the changed files % svn ci Changes lib/mod_perl2.pm STATUS RELEASE