====== 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:
make check
* 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: ini_set('memory_limit','256M');
- Now run offline-doku like this: cd offline-doku-0.1.1; php make.php --verbose /path/to/wikisrc /path/to/htmloutput
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: cp -f wikiold/design.css wiki
- Run: cp -f wikiold/.gitignore wiki
- Run: cp -f wikiold/Makefile.am
- 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: diff -r -q wikiold wiki
Fix anything is incorrect.
- Go through all the html files and remove the contents of the line (but don't delete the empty line): start
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:
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]] removing the release information.
* Done!