Instructions for the apreq Release Manager (RM)

FreeBSD/Solaris note: use gmake!

1. Create a realease branch:

    svn cp https://svn.apache.org/repos/asf/httpd/apreq/trunk \
           https://svn.apache.org/repos/asf/httpd/apreq/branches/v2_09


2. On the BRANCH
    Edit STATUS, marking the release date

       /** @page STATUS

       2.09 released on <today's date>.

   Also add the release date to the top @section in CHANGES:

       /** @page CHANGES

       @section v2_09 Changes with libapreq2-2.09 (released ...).

   And #undef the APREQ_VERSION_IS_DEV macro definition
   in include/apreq_version.h:

       *  This symbol will be #undef'd for releases. 
       */
       #undef APREQ_IS_DEV_VERSION

       % svn commit -m "2.09 release started" STATUS CHANGES include/apreq_version.h

    NOTE the revision that you committed.
    Call it $rS.

    If you make any ADDITIONAL  changes to this branch you'll need to merge them back to the trunk
    Either now, or when the release cycle is complete (See step 15)

3. On TRUNK:
    Update CHANGES and STATUS to reflect the start of a new develoment cycle,
    and run this to update the package version numbers throughout the tree:

    % build/update_version.pl 2.10

    % svn commit -m "2.10 cycle" STATUS CHANGES include/apreq_version.h

4. Prep the package for CPAN by running:

        % make release

   This will generate a libapreq2-2.09.tar.gz candidate in the 
   current directory.   You should keep this source tree
   intact to tag the final release.


5. Test the generated file with

        % make release_test

   Make sure all perl tests pass.

6. Sign it via gpg:

        % gpg --detach-sign --armor libapreq2-2.09.tar.gz

   or pgp:

        % pgp -sba libapreq2-2.09.tar.gz

7. Upload the release candidate to people.apache.org/~username
   and post a candidate announcement to apreq-dev@. Also, it is 
   strongly recommended that the RM crosspost the candidate 
   announcement to the modperl@ list, to solicit feedback
   from a much larger audience.


8. Give the mailing list participants 48-72 hours to comment and
   vote on the candidate.  If there is a "majority consensus" 
   (three +1 and more +1s than -1s) among the httpd pmc members, the RM 
   may proceed with the release.


9. Tag the Release -- from the BRANCH

    svn cp https://svn.apache.org/repos/asf/httpd/apreq/branches/v2_09 \
           https://svn.apache.org/repos/asf/httpd/apreq/tags/v2_09

    NOTE the Revision that is copied.  Call it $rE.
    It will be in the commit e-mail.

10. Upload (scp) the package and signature to www.apache.org
   for distribution:

        % scp libapreq2-2.09.tar.gz* \
          <username>@people.apache.org:/www/www.apache.org/dist/httpd/libapreq/

   Ask another developer to confirm the uploaded signature is ok.

        % gpg --verify libapreq2-2.09.tar.gz.asc
        % pgp libapreq2-2.09.tar.gz.asc

   Check that your public key is among those listed in the
   /www/www.apache.org/dist/httpd/KEYS file.   If not, you
   need to commit the necessary change to KEYS the httpd-dist repos.
   Then update the website's copy using "cvs co KEYS" in the 
   /www/www.apache.org/dist/httpd/ directory.

11. Verify or get soeone to Verify that you have CPAN karma.
    Note, discuss getting a group kind of like AMPL in mod_perl land.
    (Currently, joes@ and pgollucci@ are active and have karma)

12. Upload the package to CPAN. Doublecheck that the md5 checksum
   received from PAUSE is correct.

13. Wait ~12-24 hours for the ASF mirrors to pick up the new package, then
   update the apreq homepage to list the new release in the News section
   Be sure to update the libapreq2 documentation. For instructions on updating 
   the httpd website, see build/WEBSITE.  IMPORTANT: YOU MUST UPDATE
   download.html TO POINT AT THE NEW RELEASE PACKAGE!

14. Mail the announcement from your people.apache.org account by piping the 
    "CPAN Upload" email acknowledgement (from PAUSE) through build/announcement.pl:

    % build/announcement.pl $USER@apache.org < CPAN_ack | ssh $USER@people.apache.org "sendmail -oi -t -odq"

15. Once you are SURE, you've merged any ADDITIONAL changes on the BRANCH back to TRUNK,
    delete the branch:

    [NOTE, $rS and $rE are the values you noted above]

    % svn help merge | head -4
      merge: Apply the differences between two sources to a working copy path.
      usage: 1. merge sourceURL1[@N] sourceURL2[@M] [WCPATH]
             2. merge sourceWCPATH1@N sourceWCPATH2@M [WCPATH]
             3. merge -r N:M SOURCE[@REV] [WCPATH]

    svn co https://svn.apache.org/repos/asf/httpd/apreq/trunk 
    cd trunk

    svn merge https://svn.apache.org/repos/asf/httpd/apreq/branches/v2_09@$rS \
              https://svn.apache.org/repos/asf/httpd/apreq/branches/v2_09@$rE
  
    svn del https://svn.apache.org/repos/asf/httpd/apreq/branches/v2_09

16. Drink Beer!

