Tim Andersson ac6b0c1ba7
fix: don't queue unnecessary tests on i386
Recent investigations indicated that approximately 85% of all of the
i386 tests run at autopkgtest.ubuntu.com are pointless.

These tests are pointless for the following reason:
for end users, the dependencies of an arch: all package on
non-arch: all packages are satisfied by the amd64 binaries, not i386
binaries.

This commit introduces a check in the `tests_for_source` function, which
is the function that generates a list of tests to be requested for a
src package on a specified architecture.

The check itself takes the src package name, gets the list of binaries
for that src package and checks to see if the architecture for all of
the binaries of said src package is "all". If all the binaries are
Architecture: "all", then the function returns an empty list and no
tests will be requested for that src package on i386.

Since it's quite hard to test britney code, the implementation is
wrapped in a try except block as to avoid tracebacks blocking britney
runs.

The try except block should be removed once the change is considered to
be stable.
2024-07-23 17:06:33 +01:00
2020-03-18 21:13:05 +00:00
2020-04-01 18:08:53 +00:00
2018-01-07 12:19:46 +00:00
2021-11-09 13:59:12 -08:00
2011-07-06 18:31:45 +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
  • 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.
Description
britney2-ubuntu fork which runs on ci.lubuntu.me
Readme GPL-2.0 9.4 MiB
Languages
Python 99.6%
Shell 0.3%