Creating a release - darktable-org/darktable GitHub Wiki

Finalizing the release notes

This will be the message copied/pasted into GitHub, sent to dt-dev and dt-user mailing-list and also the content of the dtorg new.

For counting commits (since release 4.0.1):

$ ./tools/release/devel-stats.sh release-4.0.1

For counting PR:

is:pr is:closed milestone:4.2

For counting issues:

is:issue is:closed milestone:4.2

The new camera supported (copy/paste to end of RELEASE_NOTES.md):

$ tools/check_camera_support --compare release-4.0.1 HEAD

Generate the AUTHORS file

$ ./tools/release/generate-authors.sh release-4.0.1 HEAD > AUTHORS

For new releases

Skip this section for corrective releases.

Create the release branch

$ git branch darktable-4.2.x

Create the tag of the base branch for darktable-4.2.x

$ git tag -s -a release-4.3.0 -m "the beginning of 4.3 dev cycle"

Move to release branch and clean-up unfinished translations

$ git checkout darktable-4.2.x

$ ./tools/release/generate-translation.sh

Check that the output seems ok based on the last committed translations. If ok, actualy do removed them:

$ ./tools/release/generate-translation.sh DO

$ git commit -a -m "remove uncomplete translations for 4.2 release."

Generate again the script to get a clean list of the translation for the release and cut&paste them into RELEASE_NOTES.md.

$ ./tools/release/generate-translation.sh

$ git commit -a -m "update translation section for 4.2 release."

Update appdata / README.md for the new release

An entry into : data/org.darktable.darktable.appdata.xml.in

Edit version in : README.md

$ git commit -a -m "Add entry for 4.2 release."

Create the release tarball

The tag must be signed.

$ git tag -s -a release-4.2.0 -m "darktable 4.2.0 release"

$ ./tools/release/create_release.sh

There is instructions on how to install & run the release. Make sure you install and start it. Ensure that you can load an image and that the release number (top-left) is properly displayed.

To start it into a sandbox without touching your current installation the best is to use a memory db and send cache directory to /tmp:

$ /tmp/darktable-XXXXXX/darktable/bin/darktable --cachedir /tmp --configdir /tmp --library :memory:

Sign the release tarball

$ gpg -ab --sign-with <YOUR-KEYID> darktable-4.2.0.tar.xz

You can verify the signature with:

$ gpg --verify darktable-4.2.0.tar.xz.asc darktable-4.2.0.tar.xz

Upload this tarball into GitHub

Create the release page as Draft and upload the artifacts (.tar.xz and .tar.xz.asc).

The MacOS and Windows binaries will be uploaded at the same location when ready.

Announce it to the OS maintainers

A message must be sent to the MacOS and Windows maintainers in charge of creating the binary release.

A message must be sent to the GNU/Linux maintainer of the OBS packages.

⚠️ **GitHub.com Fallback** ⚠️