GStreamer on TI DaVinci and OMAP

CreatingARelease

Steps for Creating a Stable Release

The following steps document how to create a stable release. Some example commands are given in some places, all of which assume the release version being created is "1.00.00". This number should be replaced with the release version you are creating.

Step 0: Including Tracker Patches

Review all the open trackers that have attached patches that haven't been applied. Determine in the reviewed change is of general interest and should be part of this release. If so, apply the patch to the trunk. Note any extra test cases that need to be run to verify the patch works as expected and didn't introduce any instability or regressions. It is helpful to write down the largest tracker number so you can keep distinguish which trackers were added after the release process was started.

Step 1: Choosing the Release Number

Version numbers are chosen using a simple .. scheme. For example, release "1.02.03" would indicate that "1" is the major version, "02" is the minor version and "03" is the patch version. Minor and patch numbers should always be two digits (i.e. 01, 02, 03). Major numbers use as many digits as needed.

When creating a new release, we typically increment the minor version number. That is, the release after 1.00.00 would be 1.01.00, then 1.02.00, etc. There are a couple of exceptions to this:

1) When there is a massive rewrite to the code or significant compatibility breaks to its interfaces, the major number will be incremented and the minor and patch numbers will be reset to "00". That is, if we completely rewrote the software after version 1.05.02, the next release would be 2.00.00.

2) If the need arises to do a bug fix in isolation of other development that has occurred on the trunk since the last release, just the required bug fixes will be made and the next release version will increment the patch version. That is, if we release 1.00.00 and then introduce a bug fixes without pulling in any new trunk development, the next release would be 1.00.01.

For this project, we do not ever expect to need to make a patch release. The normal mode for picking up bug fixes is to pull what you need from the current trunk or wait for the next trunk release.

Step 2: Freezing the Trunk

Once the release number is chosen, tag the trunk to mark the point in time that we froze for the release. The name of this tag should be "TAG_FREEZE__". For the 1.00.00 release, this would be "TAG_FREEZE_1_00".

Here is the svn command that would freeze the trunk for the 1.00.00 release:

Next, create a release branch from the tag you just created. All bug fixes found during testing will be committed to this development branch, and once testing is done, releases will be tagged from this branch.

Here is the svn command that would create the release branch for the 1.00.00 release:

The testing/gstreamer_release_testing.xls test matrix should also be updated during the test process to reflect what steps passed and failed, and unresolved failures should be entered into tracker and the spreadsheet should indicate the tracker number in the failure box.

Step 4: Update README.TXT

Verify the README.TXT documents any changes in functionality based on the patches that have been checked into the trunk since the last release.

Step 5: Update RELEASE_NOTES.TXT

Review all the tracks. For each tracker that was resolved with a patch to the trunk, document tracker as either bug fixes or new feature. For each tracker documenting a known defect that has not been resolved in this release, document appropriately.

Step 6: Update gstreamer_release_testing.xls

Always as more tests to the test matrix to cover new functionality introduced in this release. Do a regression run of all the existing tests to verify nothing got broken.

The release is now ready to be tagged.

Step 7: Tagging the Release

Tag the tested branch for a release. The name of the tag should be "TAG_RELEASE___". For the 1.00.00 release, this would be "TAG_RELEASE_1_00_00".

Here is the svn command that would create the release tag for the 1.00.00 release: