2016-05-21 15:32:25 +00:00
# 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
2016-05-29 07:32:37 +00:00
* Ubuntu uses it to update their latest development suite using a "hidden" -proposed-updates suite as source
2016-05-21 15:32:25 +00:00
Britney's primary goal is too keep packages in the target suite installable
2016-05-29 07:32:37 +00:00
(e.g. Debian testing) while keeping it up to date with its primary source
2016-05-21 15:32:25 +00:00
suite (e.g. Debian unstable).
2018-05-01 04:22:41 +00:00
## Installing, configuring and using Britney
Please see [doc/setting-up-britney.rst].
2016-05-21 15:32:25 +00:00
## 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).
2016-05-29 07:32:37 +00:00
* Can contain binaries built from earlier source version depending on the setting of "IGNORE_CRUFT"
* Britney refers to these as "${SOURCE_NAME}"
2016-05-21 15:32:25 +00:00
1. "binary migration": An update of binary packages on a given architecture to an existing source package in the target suite.
2016-05-29 07:32:37 +00:00
* 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}"
2016-05-21 15:32:25 +00:00
1. "removal item": A removal of a source or binary package.
2016-05-29 07:32:37 +00:00
* 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.
2016-05-21 15:32:25 +00:00
## 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.