No description, website, or topics provided.
Clone or download
nthykier tests: Comment out test requiring "do_test" function
It does not exist in the Debian version (yet?).

Signed-off-by: Niels Thykier <>
Latest commit 712b618 Oct 1, 2018
Failed to load latest commit information.
britney2 Update previous commit to match recent changes Oct 1, 2018
ci .gitlab-ci.yml: Run tests with coverage on gitlab Jun 5, 2018
doc doc/short-intro: Use literal style for package names etc. May 11, 2018
tests tests: Comment out test requiring "do_test" function Oct 1, 2018
.codeclimate.yml .codeclimate.yml: Update thresholds for maintainability Sep 30, 2018
.coveragerc Update coveragerc to exclude Jun 5, 2018
.dockerignore travis: Build Debian stable docker image and use it for testing Mar 15, 2018
.gitignore Update .gitignore Jan 7, 2018
.gitlab-ci.yml .gitlab-ci: Only publish on commits to master Jun 5, 2018
.travis.yml .travis.yml: Use master branch for brtiney2-tests Apr 30, 2018
Dockerfile travis: Build Debian stable docker image and use it for testing Mar 15, 2018
INSTALL Update INSTALL with python3-amqplib as that is needed for autopkgtest Oct 11, 2017
LICENSE Initial import, excuses generation almost working. Jun 17, 2006
Makefile Add Makefile to generate documentation Dec 3, 2017 Move install+config docs from README to doc/setting-up-britney.rst May 1, 2018
TODO TODO: fix typoes; thanks, Julien Cristau Jul 6, 2011
britney.conf britney.conf: Bump autopkgtest regression deadline by 2 days Sep 30, 2018
britney.conf.template Put autopkgtest state files in their own namespace Apr 16, 2018 britney: Use chain rather then duplicate statement Sep 30, 2018
britney_nobreakall.conf britney.conf: Bump autopkgtest regression deadline by 2 days Sep 30, 2018

Britney - Keeps suites installable and up to date

Britney is a program to compute an update of a Debian-based package suite by feeding it updates from (one or more) source-suite(s). A few known use cases:

  • Debian uses it to update testing based on unstable
  • Ubuntu uses it to update their latest development suite using a "hidden" -proposed-updates suite as source

Britney's primary goal is too keep packages in the target suite installable (e.g. Debian testing) while keeping it up to date with its primary source suite (e.g. Debian unstable).

Installing, configuring and using Britney

Please see [doc/setting-up-britney.rst].

Migration items

Britney generally works with a "migration item", which is a group of binary packages (and possibly a source package). Packages are bundled into these migration items under the following rules:

  1. "source migration": An update of the source package. This will include all the binary packages built from that source version (regardless of architecture).
    • Can contain binaries built from earlier source version depending on the setting of "IGNORE_CRUFT"
    • Britney refers to these as "${SOURCE_NAME}"
  2. "binary migration": An update of binary packages on a given architecture to an existing source package in the target suite.
    • Two common cases: Built for the first time on a new architecture and binNMUs
    • Britney refers to all cases of these as "${SOURCE_NAME}/${ARCHITECTURE}"
  3. "removal item": A removal of a source or binary package.
    • Note that it is only possible to trigger "source" removals via hints. Binary removals are items generated by Britney to clean up the target suite.
    • Britney refers to these as "-${SOURCE_NAME}" or "-${BINARY_NAME}/${ARCHITECTURE}" depending on the case.

Migration rules (excuses/policies)

Britney applies a number of policies to migration items before attempting to migrate them to the target suite. These policies can "reject" a package and prevent it from migrating. Some policies/built-in rules:

  • Age policy: Lets source migrations age a bit before they are allowed to migrate
    • Supports variable length based on package urgency
  • RC Bug policy: Rejects packages with regressions in RC bugs
    • Requires an external tool to keep the bug lists up to date
  • Keeps architectures in sync: Source migrations updating existing packages only occur if architectures are up to date
    • Can be configured to ignore certain architectures.