Revision as of 04:12, 18 May 2016 by Valoriez (talk | contribs) (→‎Freezing: > quickgit)


Releasing Extragear Software

This page documents the steps to release KDE extragear software packages.


Before you create a release, branch it off of master. The name should be "$MAJOR.$MINOR" or similar, i.e. "1.2". This branch will be called "stable branch" in the text below. Push the branch to the remote repository.

git branch -b 1.2
git push --set-upstream origin 1.2


To prevent regressions early before a release, it is suggested to announce and enforce a "feature-freeze". From this point on, no new features should be introduced to the stable branch.

Before a release, you'll need to give translators a notification about the upcoming new version. On the settings page on of your repository, set the "stable i18n branch" to the stable branch. Then write an email about one month before the release or so to the translators at on KDE i18n-doc <[email protected]> . At this point, do not do any changes to translated strings, i.e. consider your branch to be "string-frozen". If you do need a string changed, ask the translators for a string-freeze exception.

Note: The master branch and other feature branches will always be unfrozen, and any kind of strings or features can be changed/added.

Versioning in source code and libraries

When you are ready to do a release, make sure the current HEAD in the stable branch has the correct version string set in its source code as well as the SOVERSION etc., to reflect what you want to release.

A good suggestion is to have something like this in your top-level CMakeLists.txt:

configure_file (config-kgraphviewer.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kgraphviewer.h )

#usage somewhere in cmake for a library:

The config-kgraphviewer.h looks like this:

/* config-kgraphviewer.h.  Generated by cmake from config.-kgraphviewer.h.cmake */


#include <kdeversion.h>

#define KGRAPHVIEWER_MAJOR_VERSION @[email protected]
#define KGRAPHVIEWER_MINOR_VERSION @[email protected]
#define KGRAPHVIEWER_PATCH_VERSION @[email protected]

#define KGRAPHVIEWER_VERSION_STR "@[email protected]@[email protected]@[email protected]"

#define KGRAPHVIEWER_VERSION KDE_MAKE_VERSION(@[email protected], @[email protected], @[email protected])


Then you can include the generated config-kgraphviewer.h in e.g. your main.cpp and use the KGRAPHVIEWER_VERSION_STR define and similar. You can also install this file (useful for libraries to do feature-detection based on the version number).

NOTE: Don't forget to also increase the version number in master, after you branched off. I.e. as soon as you created a "1.2" branch, ensure master's source code uses a version string such as "1.2.80" which is analogous to 1.3 Alpha 1. "1.2.90" would be 1.3 Beta 1.


Directly before the release, your create a git tag of the version you want to release out to the open. Use something like the following where the tag name includes the full version (including major, minor and patch level). Don't forget to push that tag!

git tag -m "Tag release of version 1.2.0" v1.2.0
git push --tags

Creating a Tarball

The kde:releaseme scripts help with that. See the config files and scripts in there for how to do that. If you create a new config for a not-yet-supported extragear software package, do commit it upstream. Creating the tarball is then done using e.g.:

./yourproject.rb --src ~/path/to/your/project/ --git-branch v1.2.0 -b stable -m 75 -p ssh -v 1.2.0

Uploading the Tarball

Push the tarball to some publically accessible server and create a sysadmin ticket, asking for the tarball to be moved to the KDE FTP mirrors. Do include a sha256 sum of the created tarball.

Announcing the Release

Once the sysadmins moved the tarball, you can announce the release. First, write a detailed blog post on a site that is aggregated on Then send a mail to [email protected], [email protected] and your project's mailing list(s). The mail can be short and link to the longer announcement blog post.

This page was last edited on 24 February 2021, at 15:09. Content is available under Creative Commons License SA 4.0 unless otherwise noted.