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

      http://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.10.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. nuke any preinstalled mod_perl libs and run 'make test'

  c. test that you can 'make install' and then run 'make test' again

  d. test whether we still 100% OK on systems with no LWP:

     % APACHE_TEST_PRETEND_NO_LWP=1 make test

  e. 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

   Subject: [RELEASE CANDIDATE]: mod_perl-2.0.10 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 "Releasing 2.0.10" Changes README Makefile.PL

  e. tag
     % make tag

  XXXX: See BRANCHING for the steps to include the proper tagged externals
  XXXX: This needs to be fixed, and updated, developer beware its outdated and possibly wrong
  f. Update the svn:externals in the new tag
     (you can't propedit remotely yet in svn)
     % svn co https://svn.apache.org/repos/asf/perl/modperl/tags/2_0_10
     % svn propedit svn:externals 2_0_10
     Update the Apache-Test line to current revision
     % svn info https://svn.apache.org/repos/asf/perl/Apache-Test/trunk | grep "Last Changed Rev"
     Update the docs line to the current tag.
     It should look like:
     % svn propget svn:externals 2_0_10
       Apache-Test -r 608229 https://svn.apache.org/repos/asf/perl/Apache-Test/trunk
       docs https://svn.apache.org/repos/asf/perl/modperl/docs/tags/2_0_10/src/docs/2.0

     % svn ci -m "Releasing 2.0.10"

  g. create the final package
     % make dist

  h. test the final package again at least once

4. Release the package and update links (e.g. mod_perl-2.0.10.tar.gz)

  a. upload to people.apache.org:/www/perl.apache.org/dist/ - ask the PMC
     chair to give you the needed permissions if you do not have them.

    %  scp mod_perl-2.0.10.tar.gz people.apache.org:/www/perl.apache.org/dist/

  b. ssh to people.apache.org, unpack the package, update symlinks to the
     tar ball and unpacked distro:

    % ssh people.apache.org
    % cd /www/perl.apache.org/dist/
    % ln -sf mod_perl-2.0.10.tar.gz mod_perl-2.0-current.tar.gz
    % tar -xzvf mod_perl-2.0.10.tar.gz
    % rm /www/perl.apache.org/dist/mod_perl-2.0-current
    % ln -sf  mod_perl-2.0.10 mod_perl-2.0-current

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

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

  d. 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 "Releasing 2.0.10" \
          modperl-docs/src/download/index_top.html \
          modperl-docs/doap_Perl.rdf
     
     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

     You may need to sudo -H -u perlwww to cleanup any svn locks.

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

    % pgps -b --armor mod_perl-2.0.10.tar.gz

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

    % scp mod_perl-2.0.10.tar.gz.asc people.apache.org:/www/perl.apache.org/dist/
    % ssh people.apache.org
    % cd /www/perl.apache.org/dist/
    % chmod 0664 mod_perl-2.0.10.tar.gz.asc
    % ln -sf mod_perl-2.0.10.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.10.tar.gz.asc
    http://perl.apache.org/dist/mod_perl-2.0.10.tar.gz

    % gpg --verify mod_perl-2.0.10.tar.gz.asc

    % pgpv mod_perl-2.0.10.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 -print0 | xargs -0 chmod 0664 
    % find /www/perl.apache.org/dist/ -user $USER -type d -print0 | xargs -0 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.10.tar.gz* .
   % tar -xzvf mod_perl-2.0.10.tar.gz
   % mv mod_perl-2.0.9.tar.gz* /www/archive.apache.org/dist/perl/
   % rm -rf mod_perl-2.0.9

  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/perl/ -user $USER -type f -print0 | xargs -0 chmod 0664
    % find /www/www.apache.org/dist/perl/ -user $USER -type d -print0 | xargs -0 chmod 0775 

8. Announce the package

  a. post ... to the modperl, announce lists
  Note, to post to announce@, you must be sending from an apache.org address.
  Subject: [ANNOUNCE] mod_perl 2.0.10 
     include 
  - link at perl.apache.org:
    http://apache.org/dist/perl/mod_perl-2.0.10.tar.gz
    http://apache.org/dist/perl/mod_perl-2.0.10.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. increment version in META.yml

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

  =item 2.0.11-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 -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.10-dev cycle" Changes META.yml lib/mod_perl2.pm \
       STATUS RELEASE

10. Old Versions
 
    Remind other Developers to delete versions older then the prior release
    from CPAN.  Old releases can always be found on BACKPAN. 
