# $Id: /mirror/trunk/RELEASE_INSTRUCTIONS 15663 2006-11-14T21:04:07.871205Z chip  $

To prepare a release:

    0.  Announce to parrot-porters and #parrot at least a couple days in
        advance, asking if there are any showstopping bugs.

    1.  Make sure you're up to date:

          $ svn update

        You may want to ask the developer base to stop committing big
        changes; it will avoid complications.  Or you could create a release
        branch before releasing, rather than after.  Then you could fold the
        release-oriented changes into the trunk once the release is done.
        {{ TODO: explain how to do this }}

    2.  Update files with version-specific information:

        a.  Increment the version number in:
            - VERSION
            - parrot.spec,
            - MANIFEST.generated
            - META.yml

        b.  Change the information in DEVELOPING to reflect this release's
            version number and date.

        c.  Update README.

        d.  Update ChangeLog, NEWS, docs/ROADMAP.pod, and docs/BROKEN.pod.

        e.  Make sure RESPONSIBLE_PARTIES is still accurate.

        f.  Run "perl t/harness t/distro/*.t", and either fix what those tests
            complain about, or fix them so they don't complain.
   
        g.  Update PBC_COMPAT, perhaps by collapsing intra-release entries
            into a single entry naming the release.

        h.  Run C<perl tools/dev/pbc_header.pl --upd t/native_pbc/*.pbc>
            to update version and fingerprint in the native tests.

        i.  Make sure everything works:

              $ make realclean
              $ perl Configure.pl ...
              $ make -s all world fulltest

    3.  svn commit

    4.  Make the release tarball:

          $ make release VERSION=a.b.c

        ... where a.b.c is the version number.  This will create the tarball,
        named parrot-a.b.c.tar.gz.

    5.  Untar parrot-a.b.c.tar.gz into another area

    6.  Make sure everything works:

          $ perl Configure.pl 
          $ make world
          $ make fulltest

    7.  Tag the release as "RELEASE_a_b_c", where a.b.c is the version
        number.

          $ export SVNPARROT=https://svn.perl.org/parrot
          $ svn copy -m"tagged release a.b.c \
            "$SVNPARROT/trunk $SVNPARROT/tags/RELEASE_a_b_c

        See also below [1]

    8.  Upload to CPAN.

    9.  Compose and send out the announcements -- parrot-porters,
        perl6-language, perl6-announce, perl5-porters, use Perl, PerlMonks,
        comp.lang.perl.misc, etc.

    9a. Submit the use Perl announcement story to Slashdot, Newsforge, etc.

        Don't forget to set a Reply-To: or Followup-To: header.

    10. You're done!  Help yourself to a beer, cola or other celebratory
        drink.

ABOUT THIS DOCUMENT:

This document was written after a couple of subtly incorrectly assembled
releases--usually when someone forgot to delete DEVELOPING, but at least
once where the MANIFEST check failed.  The intent of this file is to
document what must be done to release so that such mistakes don't happen
again.

--------------

Appendix [1] parrot repository layout as of end of Apr 2005:

$ svn ls $SVNPARROT
branches/
tags/
trunk/

$ svn ls $SVNPARROT/tags
PRE_REL_0_0_8/
RELEASE_0_0_10/
RELEASE_0_0_11/
RELEASE_0_0_13/
RELEASE_0_0_6/
RELEASE_0_0_8/
RELEASE_0_0_9/
RELEASE_0_1_0/
RELEASE_0_1_1/
RELEASE_0_1_2/
REL_0_0_5/
V1/
file_move_031023/
help/
ponie-PRE-P5_592/
