====== gEDA's Release Engineering ======








===== gEDA/gaf Release Creation Checklist =====

Here is a list of steps that are taken every time when creating a new gEDA/gaf release:

  * In the toplevel configure.ac file update the package version in the AC_INIT macro, the date in the AX_GIT_VERSION macro, and update shared library versions of the package libraries, currently //libgeda// (AX_LIBGEDA)  and //libgedacairo// (AX_LIBGEDACAIRO) (their ''.so'' versions should follow what is described in [[http://sourceware.org/autobook/autobook/autobook_91.html | Autobook's library versioning]] chapter).
  * Update the toplevel NEWS file with a summary of all the changes in the new release.  The NEWS file forms the basis for the release notes.
  * Manually run all tests.  gnetlist has a nice set of regression tests in gnetlist/tests.  gsymcheck also has a nice set of regression tests in gsymcheck/tests.  Open up all schematics in gschem/examples and gschem/tests.  You can do this by running the following in the toplevel directory:
<code>
        make check
</code>
  * Run make update-po in all po directories.  Commit these changes before continuing.
  * Update all the versions and dates in the man pages (gschem.1, gnetlist.1, gsymcheck.1, grenum.1)
  * Go into the wiki pages and update the "gEDA/gaf File Format Document" and add the release date to the version field.
  * Update the wiki documentation snapshot (which is shipped with the release) by doing the following steps:
    - Get the wiki source files.  (For now you have to ask Ales to get them from the SEUL.org server; eventually this should be changed so they are available without asking anybody).  Put these files in some directory called "wikisrc".  Also make an output directory called "htmloutput"
    - Download a handy php-based package called "offline-doku".  Latest version seems to be v0.1.1 and it was last seen at: [[ http://sourceforge.net/projects/limb/files/ | offline-doku ]].
    - You might need to tweak/add the following line in offline-doku/make.php to make sure it has enough memory to operate: <code> ini_set('memory_limit','256M');</code>
    - Now run offline-doku like this: <code> cd offline-doku-0.1.1; php make.php --verbose /path/to/wikisrc /path/to/htmloutput</code> This should processes all the dokuwiki source files and convert them into html files.
    - Tar/copy the htmloutput directory into the gaf git directory docs/
    - Move aside (do not delete yet) the current wiki directory to something like "wikiold".  Rename the new htmloutput directory to "wiki"
    - Run: <code> cp -f wikiold/design.css wiki </code>
    - Run: <code> cp -f wikiold/.gitignore wiki </code>
    - Run: <code> cp -f wikiold/Makefile.am </code>
    - Check to see what has changed using git status and git diff.  Go through and add any new files to git using git add.
    - Check to see what has changed between wikiold and wiki using: <code> diff -r -q wikiold wiki </code>  Fix anything is incorrect.
    - Go through all the html files and remove the contents of the line (but don't delete the empty line): <code> <a href=.>start</a></br></code>  Eventually this should be automated or somehow fixed.  Removing this start link will make the html pages look better and reduce the number of unnecessary file changes (in git).
    - Finally commit all the changes/files.

  * Commit all of the above changes (preferably in between each step)
  * To build the distribution tarball (and verify all tests on the contained files) run:

<code>
        make distcheck
</code>

and make sure it completes without any errors.  After this is complete you will find the distribution tarball in the toplevel directory (named geda-gaf-VERSION.tar.gz).
  * Copy the distribution tarball some place else along with the toplevel README (which should be renamed to gEDA-gaf-VERSION-README.txt).
  * Create a file the md5sum for the toplevel tarball.
<code>
        md5sum -b geda-gaf-1.5.3.tar.gz > geda-gaf-1.5.3.md5sum
</code>
  * Untar the tarballs and compare what is inside to what is in the repository.  You should only find additional dist files inside the tarballs and no missing required files.
  * Build and test the distribution tarball one last time.
  * Make sure everything is committed and pushed and then put down the correctly formatted tag:
<code>
        git tag -a 1.5.3-20090829
</code>
  * Push all the commits to the main repository.  If you are on a branch the command should be:
<code>
        git push origin remote_branch_name
</code>
  * Push the tag to the main repository:
<code>
        git push --tags
</code>
  * Upload distribution tarball, README, and md5sum file to the correct place
  * Write release announcement and send to mailing lists
  * Write up release notes and send pointer to mailing lists (named: geda-gaf-VERSION-releasenotes.html)
  * Update news update the sources download pages on the website with links to the new version
  * Update the [[geda:todos]] removing the release information.
  * Done!
