# 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:

- 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:

            make check

- Run make update-po in all po directories. Commit these changes before continuing.
- 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 libgeda’s shared library version (libgeda’s so version should follow what is described in Autobook's library versioning chapter).
- 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 (this is far far far too manual)

            cd docs
            mkdir wip
            cd wip
            ../scripts/wikifetch.sh
            rm -f *.txt
            mv geda.seul.org/wiki/* .
            rmdir geda.seul.org/wiki
            rmdir geda.seul.org
            ../scripts/postproc.sh
            find . -name *.orig -exec rm -f {} \; -print
            cd ..
            scripts/copygitignores.sh
            cd wip
            ../scripts/populatemkfiles.sh
            vi `find . -name Makefile.am`   (Make sure all files have correct install path)
            cd ..
            diff -r -q wiki wip  | grep -v Only | sed "s/Files /tkdiff /" | sed "s/ and//" | sed "s/differ//" > diffs
            sh diffs  (and examine all changes; you need to have tkdiff installer or use just plain diff above)
            mv wiki wiki.original
            mv wip wiki
            git status
            git add <any new files>
            git commit -a

- 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:

            make distcheck

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.

            md5sum -b geda-gaf-1.5.3.tar.gz > geda-gaf-1.5.3.md5sum

- 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:

            git tag -a 1.5.3-20090829

- Push all the commits to the main repository. If you are on a branch the command should be:

            git push origin remote_branch_name

- Push the tag to the main repository:

            git push --tags

- 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 page moving the release into the historical todos page.
- Done!