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;
