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-1.99_14.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 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_14.tar.gz)

  a. upload to www.apache.org:/www/perl.apache.org/dist/

    % scp mod_perl-1.99_14.tar.gz 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_14.tar.gz mod_perl-2.0-current.tar.gz
    % tar -xzvf mod_perl-1.99_14.tar.gz
    % rm /www/perl.apache.org/dist/mod_perl-2.0-current
    % ln -sf mod_perl-1.99_14 mod_perl-2.0-current

  c. archive older releases (keep current + one prior release)

    % mv /www/perl.apache.org/dist/mod_perl-1.99_12.tar.gz \
         /www/perl.apache.org/dist/old
    % mv /www/perl.apache.org/dist/mod_perl-1.99_12.tar.gz.asc \
         /www/perl.apache.org/dist/old
    % rm -rf /www/perl.apache.org/dist/mod_perl-1.99_12

  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_14.tar.gz

    % pgps -b --armor mod_perl-1.99_14.tar.gz

  b. upload the generated sig file to www.apache.org:

    % scp mod_perl-1.99_14.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_14.tar.gz.asc
    % ln -sf mod_perl-1.99_14.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_14.tar.gz.asc

    % pgpv mod_perl-1.99_14.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_14.tar.gz* .
   % tar -xzvf mod_perl-1.99_14.tar.gz
   % mv mod_perl-1.99_12.tar.gz* /www/archive.apache.org/dist/perl/
   % rm -rf mod_perl-1.99_13

8. Announce the package

  a. post ... to the modperl, announce lists
  Subject: [ANNOUNCE] mod_perl 1.99_14 
     include 
  - link at perl.apache.org:
    http://apache.org/dist/perl/mod_perl-1.99_14.tar.gz
    http://apache.org/dist/perl/mod_perl-1.99_14.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_perl.pm

  b. edit ./Changes:
     - start a new item with incremented version + '-dev'

  =item 1.99_15-dev

  c. add a release entry in STATUS and commit
     % cvs ci STATUS

  d. update this file versions to make it easy to copy-n-paste things
     on the next release:

   perl -pi -e 's/_15/_16/g' 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

     now bump up the last number of the first command.

  e. commit the changed files

     % cvs ci Changes lib/mod_perl.pm STATUS RELEASE

