# Build release archive

1. Update NEWS (use Markdown syntax)
2. Verify that all manpages are up to date
3. Verify that supported platforms and version numbers are correct in the README
4. Bump the version number in:
  a. lcm/lcm_version.h
  b. lcm-lua/rock/lcm-<version>-0.rockspec
5. Commit the above changes and create the vX.Y.Z git tag.
  $ git commit -a -m "Release X.Y.Z"
  $ git tag vX.Y.Z
6. Create the release artifact
  $ git archive --format zip -o lcm-X.Y.Z.zip --prefix lcm-X.Y.Z/ vX.Y.Z
7. Take the resulting artifact, extract it, build it, install it, make sure
  the basic executables run
  $ unzip lcm-X.Y.Z.zip
  $ cd lcm-X.Y.Z
  $ mkdir build
  $ cd build
  $ cmake ..
  $ make
  $ make install

# Test

1. Build and run all unit tests.  Verify that they all pass.
  $ make test
2. Repeat unit tests on:
  * GNU/Linux
  * OS X
3. Test C/C++ library on Windows.  Run lcm-source.exe and lcm-sink.exe
4. Test on other available platforms
5. Fix any errors that appear, and repeat as necessary.

# Upload release artifact

1. Push the changes and release tag to GitHub.
  $ git push origin master
  $ git push origin vX.Y.Z
2. Draft a new release on GitHub
  a. Associate the release with tag vX.Y.Z
  b. Name the release title "vX.Y.Z"
  c. Add release notes from the NEWS file

# Notify the mailing list

1. Send e-mail to lcm-users@googlegroups.com
