britney2-ubuntu fork which runs on ci.lubuntu.me
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
Go to file
Niels Thykier 641df09570
Fix typo in a comment
7 years ago
britney2 Fix typo in a comment 7 years ago
ci codecov: try alternative approach to get codecov data out of the docker container 7 years ago
doc Merge branch 'master' into autopkgtest 7 years ago
tests Revert "autopkgtest: Drop retry_url from the excuses as this works different in Debian" 7 years ago
.coveragerc Add simple RC bugs unit test 8 years ago
.dockerignore travis: Build Debian stable docker image and use it for testing 7 years ago
.gitignore Update .gitignore 7 years ago
.travis.yml travis: clone autopkgtest branch of test data 7 years ago
BUGS At this point, we could schedule a periodic diff between the original excuses and the new ones; everything seems to be the same (excluding the usual bugs in the 17 years ago
Dockerfile travis: Build Debian stable docker image and use it for testing 7 years ago
INSTALL Update INSTALL with python3-amqplib as that is needed for autopkgtest 7 years ago
LICENSE Initial import, excuses generation almost working. 19 years ago
Makefile Add Makefile to generate documentation 7 years ago
README.md Document new files required by PiupartsPolicy 8 years ago
TODO TODO: fix typoes; thanks, Julien Cristau 14 years ago
britney.conf Make retry URL configurable (two flavors) 7 years ago
britney.conf.template Make the huge queue in autopkgtest optional 7 years ago
britney.py Make retry URL configurable (two flavors) 7 years ago
britney_nobreakall.conf Revert "Implement a mandatory 10 day migration delay" 8 years ago

README.md

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).

Quick setup guide

This is a very brief intro to the steps required to setup a Britney instance.

  • Copy "britney.conf.template" and edit it to suit your purpose
    • If you want Britney to bootstrap your target suite, you probably want to add all architectures to "NEW_ARCHES" and "BREAK_ARCHES" for a few runs
  • Create the following files (they can be empty):
    • $STATE_DIR/age-policy-dates
    • $STATE_DIR/age-policy-urgencies
    • $STATE_DIR/rc-bugs-unstable
    • $STATE_DIR/rc-bugs-testing
    • $STATE_DIR/piuparts-summary-testing.json
    • $STATE_DIR/piuparts-summary-unstable.json
  • Run ./britney.py -c $BRITNEY_CONF -v [--dry-run] to test the run
  • Use the resulting $HEIDI_OUTPUT (or $HEIDI_DELTA_OUTPUT) to update your target suite.
    • With dak, cut -d" " -f1-3 < ${HEIDI_OUTPUT} | dak control-suite --set ${TARGET_SUITE} [--britney]
  • Setup a cron-/batch-job that:
    • (Optionally) Updates the rc-bugs files
    • (Optionally) Updates the $STATE_DIR/age-policy-urgencies
    • Runs Britney
    • Imports the result into your target suite

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.