PART 0: BEFORE RELEASE

(1) Notify Tim Douglas that a release is planned and ask him to do an OSX
  binary build.

PART I: PREPARE FOR RELEASE

* INSTALL is up-to-date
* BUGS is up-to-date (use whatever is currently in the SourceForge bugs list)
* ChangeLog is up-to-date (if you use emacs, C-x v a)
* NEWS is up-to-date with differences since last version (note which
  differences work with saved games and which require a restart). This should
  be a summary of user-visible changes like features added and major bugs
  fixed.
* AUTHORS is up-to-date with _ALL_ contributions (legal reasons)
* Version number is correct in configure.ac
* The SUBDIRS of Makefile.am and worlds/Makefile.am are correct for this 
  release
* USERS_GUIDE is up-to-date

PART II: BUILD AND TEST SOURCE DIST

(1) Check that scripts/ghul-test-install will cd to the correct haxima-1.00x
    dir for this release
(2) Do a test build from the nazghul top-level directory:

        $ ./scripts/ghul-test-install <version>

  If all goes well the game should startup. The tarballs will all be built and
  sitting in the top-level directory.

(3) Make any changes necessary, and go back to PART II step (1)
(4) At this point checkin any changes made so far.

PART III: BUILD AND TEST WINDOWS BINARY

Once you've installed the environment as per the nazghul/win32/readme...

(1) Checking out from cvs

Assuming you are using wincvs as your cvs client, replace your own username for
gmcnutt and your own local directories where appropriate:

Log in: Admin->Login
  CVSROOT: :ssh:gmcnutt@nazghul.cvs.sourceforge.net:/cvsroot/nazghul

Checkout fresh repository: Remote->Checkout module
  Module name and path on the server: nazghul
  Local folder to checkout to: C:/Haxima Dev/trunk
  CVSROOT: :ssh:gmcnutt@nazghul.cvs.sourceforge.net:/cvsroot/nazghul


(2) Building nazghul.exe

Compile:
  Start->MingGW->msys
  cd /c/home/gmcnutt/Haxima Dev/trunk/nazghul/win32
  ./configure
  cd ../src
  make
  
(3) Making the Inno installer

Update the version info in nazghul/scripts/nazghul.iss

Make a directory under nazghul called dlls with the following in it:
  SDL.dll  
  SDL_image.dll
  SDL_mixer.dll
  jpeg.dll
  libpng13.dll
  zlib1.dll

Build the installer:
  Double-click on nazghul/scripts/nazghul.iss (runs the InnoIDE compiler)
  Click Compile
  F9 to test
  The results is nazghul/scripts/nazghul-<ver>-setup

PART IV: LABEL THE SOURCE

(1) Once everything has been tested and you know that you have what you want,
    label the source code with the release. On linux cd to the nazghul top dir
    under CVS and...

    $ cvs -q tag release_x_y_z

    See Appendix B for post-release maintenance.


PART V: UPLOAD TO SOURCEFORGE

(1) upload the distro tarballs to the sourceforge site:

        $ ncftp -u anonymous upload.sourceforge.net
        > bin
        > cd /incoming
        > put nazghul-x.y.z.tar.gz
        > put nazghul-x.y.z-win32.tar.gz
        > bye  

(2) On sourceforge at http://sourceforge.net/projects/nazghul/ goto the
    admin->File Releases page and scroll to the bottom. Click "Add Release"
    next to "nazghul-devel" (or "nazghul" for stable releases).

    (Or go directly to this URL:
    https://sourceforge.net/project/admin/editpackages.php?group_id=82028)

    (a) Fill out the form:
        ...For "New release name" put something like "nazghul-x.y.z"
        ...For "Of which package" use "nazghul" (nazghul-devel is obsolescent)
        ...Click on "Create this release"

    (b) Fill out the "Step 1:   Edit Existing Release" form:
        ...For "Upload Release Notes" browse to the file NEWS
        ...For "Upload Change Log" do nothing (our ChangeLog is too big and
           will be rejected)
        ...Press "Submit/Refresh"

    (c)  Fill out the "Step 2:   Add Files To This Release" form and hit
         Submit/Refresh

    (d) Fill out the "Step 3:   Edit Files In This Release" form
        ...Processor=Platform-Independent
        ...File Type Update=Source.gz
        ...hit Update/Refresh

PART VI: PUBLICIZE

Use the ANNOUNCE template in this directory to create the release announcement.

(1) From the main Nazghul project page on SourceForge submit a news item for
    the file release. (https://sourceforge.net/news/admin/?group_id=82028)

(2) Go to the freshmeat account and announce there, too

    freshmeat: http://www.freshmeat.net
        uname: gmcnutt

(3) Send an announcement to the nazghul-devel and nazghul-user lists. The
    distro maintainers monitor nazghul-devel. You might email them individually
    to check if they are still committed to managing their releases.

(4) On the nazghul home page add a news item

(5) On the haxima.com homepage add a news item (or ask Sam to do this)



APPENDIX A: Instructions for Release Maintainers

(1) sftp to frs.sourceforge.net and login using your SourceForge user name and
    password. Put the file in the uploads directory.

(2) Login to sourceforge via your browser

(3) Go to https://sourceforge.net/project/admin/editpackages.php?group_id=82028

(4) Scroll to the bottom and click on "Edit Releases" for the "nazghul"
    package

(5) On the next page click on "Edit This Release" next to nazghul-0.5.5

(6) On the next page scroll down to "Step 2: Add Files to This Release"

(7) Your file should be on the list, so click next to it's box

(8) Click on "Add Files and/or Refresh View"

(9) Scroll down to "Step 3: Edit Files In This Release". Your file should be
    listed there. Select the "Processor" and "File Type" from the drop-down
    boxes and click "Update/Refresh".



APPENDIX B: Post-Release Maintenance

Post-release bugfixes should be done on a branch rooted at the release
label. To make the branch, check out the repository and do this:

   $ cvs update -r release_0_4_0
   $ cvs -q tag -b release_0_4_0_maint
   $ cvs update -r release_0_4_0_maint

Fixes should be merged back to the main trunk. Check out the repository on the
main trunk and merge from the maintenance branch like this:

   $ cvs update -d -j release_0_4_0_maint

