We currently have excuses.html saying: x264 (2:0.155.2917+git0a84d98-2 to 2:0.159.2999+git296494a-2) Migration status for x264 (2:0.155.2917+git0a84d98-2 to 2:0.159.2999+git296494a-2): BLOCKED: Cannot migrate due to another item, which is blocked (please check which dependencies are stuck) Issues preventing migration: Implicit dependency: x264 nageru (not considered) Invalidated by implicit-dependency Implicit dependency: x264 ffmpeg Implicit dependency: x264 gst-plugins-ugly1.0 Implicit dependency: x264 handbrake Implicit dependency: x264 libquicktime Implicit dependency: x264 mplayer Implicit dependency: x264 mythtv Implicit dependency: x264 obs-studio Implicit dependency: x264 vlc Implicit dependency: x264 xpra Additional info: 8 days old Apart from `nageru` it's not clear here that some further packages need working on to move this migration forward. In fact, the package `gst-plugins-ugly1.0` is FTBFS Migration status for gst-plugins-ugly1.0 (1.16.2-2build2 to 1.16.2-2build3): BLOCKED: Maybe temporary, maybe blocked but Britney is missing information (check below) as is xpra. The remaining packages are simply those which are part of this SONAME transition, as such they have Migration status for mplayer (2:1.3.0-8build6 to 2:1.3.0-8build7): BLOCKED: Cannot migrate due to another item, which is blocked (please check which dependencies are stuck) All of these excuses are (or should be) "invalid", but only the ones which are not BLOCKED_BY_ANOTHER_ITEM require direct action. We should show this, so that maintainers can see what they need to concentrate on. When outputting depdencency problems, consider the policy verdict of the excuse. If it's one that indicates further work is required for that excuse, indicate this by outputting "(not considered)".
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:
- "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}"
- "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}"
- "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.