Making a release This chapter describes the steps necessary to create a software release of LCDproc. It is intended to guide the release manager when creating a new release. Creating a source code release Steps to create a new software release of LCDproc Update year of release in HEAD. The following files need to be updated: server/main.c clients/lcdproc/main.c docs/lcdproc-user/bookinfo.docbook docs/lcdproc-dev/bookinfo.docbook Make a backup of the CVS repository to the local disk. This is needed if something goes wrong. Run: rsync -av 'lcdproc.cvs.sourceforge.net::cvsroot/lcdproc/*' . Check out the CVS stable release branch. Run: cvs -d:ext:<your_sf_userid>@lcdproc.cvs.sourceforge.net:/cvsroot/lcdproc checkout -r stable-0-5-x -d lcdproc-0-5-x lcdproc and change into the stable-0-5-x directory. Merge HEAD to stable. This step is only required if the release will be done from HEAD. Run: cvs -q update -j stable-0-5-x -j HEAD Revert files that need to retain their version number after merge. Due to some wired import of external files, some files always get their $Id$ tag updated, even if there has been no change. The following files should be reverted to their previous version (given that there has really no change happened): clients/examples/lcdident.pl clients/metar/lcdmetar.pl contrib/interface-demo2/interface.c contrib/interface-demo2/nstrcmp.c Run cvs update -C on these files. Update version numbers for stable branch. See for the list of affected files. Commit everything. Run: cvs commit -m "Sync with HEAD" Tag the stable tree to indicate the file revision where the branch was made. This eases later diffs againt that point. Run: cvs tag LCDPROC_0_5_A_BP (where A is the version number of the next release and _BP means branch point). Tag names are all uppercase with underscores to separate elements! Create a release branch in CVS. Run: cvs tag -b lcdproc-0-5-A Release branch names are all lowercase with hypens to separate elements! Now you have created a branch from which the new release will done. Before continuing either checkout this new branch to a new workding directory or update the current one by running: cvs update -r lcdproc-0-5-A Update version numbers for release and commit the changes. See for the list of affected files. Set a CVS tag for the release. Run: cvs tag LCDPROC_0_5_A_RELEASE where A is the version number of the next release. Export the release source tree as anonymous. This step is intended to check if all files are correctly tagged with the new release in the source tree. Run: cvs -d :pserver:anonymous@lcdproc.cvs.sourceforge.net:/cvsroot/lcdproc -z3 export -r LCDPROC_0_5_A_RELEASE lcdproc Create the release tarball by running: sh autogen.sh ./configure make distcheck Test the newly created release tarball at least once. Try to build and install it with all drivers enabled. Better: Try to build and install with several library options turned on and off. Create the release notes. The release notes should be an easy to read summary of changes in this release. The ChangeLog file is not very good as release notes as it is just a chronological list of things that happen. The release notes should talk about: Fingerprint (SHA-1) of the release tarball Known bugs New drivers Other important changes within drivers, the server core and clients Everything else the user has to now for upgrading his installed version grouped by topics of interest. Upload the new release and release notes to Sourceforge. Announce the new release. Send notice about the new release to the LCDproc mailing list (lcdproc@lists.omnipotent.net) and the lcdproc-announce mailing list on Sourceforge (lcdproc-announce@lists.sourceforge.net). Also mention the new release on the LCDproc website download and front page. Files that need version numbers updated BUGS ChangeLog configure.in server/menuscreens.c docs/lcdproc-dev/bookinfo.docbook docs/lcdproc-dev/driver-api.docbook docs/lcdproc-dev/introduction.docbook docs/lcdproc-user/bookinfo.docbook docs/lcdproc-user/how-to-obtain.docbook Creating a documentation release Any release of LCDproc is accompanied the the user guide and developer guide. Here is how to create these documentation packages. Steps to create the documentation package Get the release tarball and extract it (or change to the CVS directory exported in and change to docs/lcdproc-user. Create the documentation package by running: xmlto -o lcdproc-0-5-A-user-html xhtml lcdproc-user.docbook Create a tarfile of the documentation package: tar -czf lcdproc-0-5-A-user-html.tar.gz lcdproc-0-5-A-user-html Repeat the above steps for the developers guide, replacing -user with -dev where appropriate. Upload the files to the Sourceforge file release system. The online documenation consists of the user and developer guide, each converted to a single file for viewing online. Steps to create the online documentation Get the release tarball and extract it (or change to the CVS directory exported exported in and change to docs/lcdproc-user. Create the documentation file by running: xmlto xhtml-nochunks lcdproc-user.docbook Rename the file: mv lcdproc-user.html lcdproc-0-5-A-user.html Repeat the above steps for the developers guide, replacing -user with -dev where appropriate. Upload the files to our Sourceforge web site (not the file release system!) and change htdocs/docs/index.html to point to the new files.