[[!meta title="Releasing tails-iuk"]]

[[!toc levels=1]]

Pre-requisites
=============

* a Jessie system
* Tails' `devel` APT suite enabled
* the right version of the `tails-perl5lib` package installed
* a user that has sudo credentials

Install build and test dependencies
===================================

    git checkout debian && \
    sudo apt install devscripts && \
    mk-build-deps -i -r --root-cmd sudo && \
    sudo apt install \
       libdist-zilla-perl \
       libdist-zilla-plugin-changelogfromgit-perl \
       libdist-zilla-plugins-cjm-perl \
       libdist-zilla-plugin-installguide-perl \
       libdist-zilla-plugin-localemsgfmt-perl \
       libdist-zilla-plugin-test-perl-critic-perl \
       libdist-zilla-plugin-test-notabs-perl \
       libdist-zilla-plugin-git-perl \
       dh-make-perl

Update POT and PO files
=======================

    git checkout master && \
        ( cd po && make pot && make update-po ) && \
        git commit po -m 'Update POT and PO files.'

Make an upstream release
========================

    git checkout master

Enable new translations in `po/PACKAGE` and commit.

Export new upstream version number:

    export VERSION=XXX

Export location of a checkout of the branch of the main Tails Git
repository used to prepare the release (typically `stable` or `testing`):

    export TAILS_GIT_CHECKOUT=XXX

Update version number in `bin/tails-create-iuk`, commit all files that
need to be.

    perl -pi -E 's,^Version [0-9.]+,Version $ENV{VERSION},' bin/tails-create-iuk && \
       perl -pi -E \
          "s,^our \\\$VERSION = '[0-9.]+';\$,our \\\$VERSION = '$VERSION';," \
          bin/tails-create-iuk && \
       git commit bin/tails-create-iuk -m "tails-iuk $VERSION"

Run the upstream test suite:

    # get an authentication token, needed by the test suite
    sudo true
    # run the tests in closer to real conditions
    umask 077
    
    # Run the test suite
    RELEASE_TESTING=1 LC_ALL=C dzil test

Build an upstream tarball, tag the release, move the tarball out of
the build repository and cleanup:

    dzil build && \
       git tag -s $VERSION -m "tails-iuk $VERSION" && \
       mv Tails-IUK*.tar.gz .. && git clean -fdx

Update the Debian package
=========================

Checkout the branch with Debian package specifics and import the new
upstream tarball, update `debian/changelog`:

    git checkout debian && \
       gbp import-orig --upstream-vcs-tag=$VERSION \
          ../Tails-IUK-$VERSION.tar.gz && \
       gbp dch --auto && \
       dch -e

(Do not forget to set the appropriate release.)

Update the packaging (e.g. look at changes in `dist.ini`),
and then update `debian/changelog` again if needed.

Commit `debian/changelog`:

    git commit debian/changelog -m "$(head -n 1 debian/changelog | sed -e 's,).*,),')

Git-Dch: Ignore
"

Build a Debian package (use a Jessie chroot with the right version of
`tails-perl5lib` installed), add a signed tag to the repository and
push the changes:

    gbp buildpackage && \
    gbp buildpackage --git-tag-only --git-sign-tags && \
    git push origin master:master \
                    debian:debian \
                    pristine-tar:pristine-tar \
                    upstream:upstream && \
    git push --tags

Add the Debian package to Tails
===============================

Sign the package:

    debsign $CHANGES_FILE

Upload:

    dupload --to tails $CHANGES_FILE
