Making Releases

Old information from maliit.org Needs to be updated.

Before you start, make sure you have access to the infrastructure. This is needed to be able to make releases

  • 0. Check that the Buildbot is green, indicating that we are ready for release
  • 1. Update the NEWS file
    • NEWS template:
x.y.z
=====

CHANGES SINCE $last_release
* List changes

BUG FIXES
* Fixes: MALIIT#11 …
* Fixes: BMC#12345 …
* Fixes: NB#54321 …

To list all commits since the last release you can do:

git log $last_release..HEAD

For the list of fixes you can use something like:

git log $last_release..HEAD --pretty=format:"* %s" --grep=Fixes

See man git-log for more options.

  • 2. For framework and plugins, bump version numbers in VERSION file
    • git commit message:
Changes: Bump version to y.x

For normal releases, just bump the package version

$ echo y.x > VERSION

For major releases/interface breaks, the following would need to be updated. These are very rare.

  • MALIIT_INTERFACE_VERSION: libmaliit (application) interface version
  • MALIIT_PLUGINS_INTERFACE_VERSION: C++ plugins interface version
  • MALIIT_PLUGINS_QUICK_INTERFACE_VERSION: Qt Quick/QML plugins interface version

  • 3. Create the tarballs
$ qmake && make dist
  • 4. No-op
  • 5. Upload tarballs and .md5 files to http://maliit.org/releases/maliit-framework/ and http://maliit.org/releases/maliit-plugins/
  • 6. Upload documentation to http://maliit.org/doc/framework/latest and http://maliit.org/doc/plugins/latest
  • 7. Update packages in M17N:Maliit OBS
python obs-update-version M17N:Maliit maliit-framework x.y.z \
maliit-framework-x.y.z.tar.bz2 "Jon Nordby <jonn@openismus.com>"    
python obs-update-version M17N:Maliit maliit-plugins z.y.z \
maliit-plugins-x.y.z.tar.bz2 "Jon Nordby <jonn@openismus.com>"

This script is found in the maliit-buildbot-configuration repository, and requires osc.

To do the steps manually use either the web interface or the “osc” commandline client.

  • Upload new source tarballs
  • Update version number in package-name.spec
  • Reset release version number to 0 in package-name.spec
  • Add changelog entry to package-name.spec: Updated to upstream version x.y.z See http://en.opensuse.org/Portal:Packaging for documentation on OBS.

  • 8. Create (signed) git tag
$ git tag -s -m "Released version x.y.z - ${insertWittyReleaseNameHere}" x.y.z

Witty release names are only requires for bigger version jumps (x or y changes), not for minor releases (z or smaller changes).

  • 9. Push the tag to master. Warning: Make sure the tag is correct first!
$ git push origin HEAD:master # The commits
$ git push origin x.y.z # The tag
  • Keep in mind that a git tag is tied to a specific commit id. If you rebase your branch, then the commit id’s will most likely change, meaning that your git tag will point to an old commit id. You will have to delete the tag and create a new one, in that case.

  • 10. Update the ‘latest’ branches to point to the new tags.

$ git push origin master:latest
  • 11. Update the Maliit recipes in Launchpad
python lp-update-version.py maliit maliit-plugins z.y.x
python lp-update-version.py maliit maliit-framework z.y.x

This script is found in the maliit-buildbot-configuration repository, and requires launchpadlib.

To do the same manually, go through every single recipe and, update the upstream version number in the “Recipe Contents” (bottom of page).

  • 12. Write the release notes (see template below) and send them to the appropriate mailing lists.

Always send the announcement to maliit-discuss and maliit-announce. Include non-Maliit lists only if there is a significant change relevant for the subscribers of that list.

  • 13. Update the list of releases.

Release notes template

Use the template below to write release notes.

What's new?
===========

Write about an interesting aspect for this release. Also give hints if
changes might affect packaging, and give packaging advice if appropriate.

Where can I get it?
===================

* framework:
  http://maliit.org/releases/maliit-framework/maliit-framework-x.y.z.tar.bz2
* plugins:
  http://maliit.org/releases/maliit-plugins/maliit-plugins-x.y.z.tar.bz2

What is it?
===========

Maliit provides a flexible and cross-platform input method framework. It has a
plugin-based client-server architecture where applications act as clients and
communicate with the Maliit server via input context plugins. Maliit is an open
source framework (LGPL 2) with open source plugins (BSD).

Visit http://maliit.org for more informattion about the project.

Who contributed to this release?
================================

* List authors of this release
  $ git log $last_release..HEAD 0.80.5.. --pretty="format:* %aN" | sort | uniq

What changed in detail?
=======================

CHANGES IN FRAMEWORK SINCE x.y
* List the details from the framework's NEWS file.

CHANGES IN PLUGINS SINCE x.y
* List the details from the plugins' NEWS file.

BUG FIXES
* List all bug fixes of framework and plugins.