776 Commits

Author SHA1 Message Date
Martin Pitt
8f1a646453 autopkgtest: Add "huge" AMQP queues
Add new "huge" AMQP queues

Whenever a package like glibc or perl gets uploaded, these trigger thousands of
tests that fill the queues for several days. This can't (solely) be addressed
by adding more capacity due to the sheer size. The main annoyance of this is
that this blocks propagation of every other package in -proposed during that
time.

AMQP has no concept of priorities within a queue (they are strictly FIFO), so
for packages that trigger a huge number of tests, send these to the new
debci-$release-huge-$arch queues instead.

LP: #1647948
2016-12-09 16:05:40 +01:00
Iain Lane
2221872e7a sourceppa: return when recursing 2016-12-09 12:59:24 +00:00
Iain Lane
81d522ff29 sourceppa: Retry on timeouts
We're still seeing britney runs failing due to this exception. The
timeout has already been raised to 30 seconds - maybe retrying the
requests a few times will work better.
2016-12-09 10:45:14 +00:00
Robert Bruce Park
5c74268d75 Better debug logging for sourceppa problems. 2016-12-05 07:03:36 -07:00
Iain Lane
cc50e3a37e hint-tester: Don't lowercase the input
Doing this means that you can't use the hint tester for packages with
uppercase characters in the version, e.g.

  Version mismatch, dreamchess 0.2.1-rc2-2build1 != 0.2.1-RC2-2build1
2016-11-28 16:10:00 +00:00
Robert Bruce Park
b0dc9079db Stop grouping debian syncs 2016-11-17 18:46:09 +01:00
Martin Pitt
18fd57e383 policies/sourceppa.py: Cache "no PPA" results as well
This accidentally got broken by 11705f4a7.
2016-11-17 18:39:38 +01:00
Martin Pitt
efd8794804 policies/sourceppa.py: Bump Launchpad timeout
Let's see if that helps with the timeouts we get during britney runs.
2016-11-17 18:01:00 +01:00
Martin Pitt
11705f4a7b Some PPA landing fixes
The original commit had an unreliable policy info (the peer PPA group), as
correct updating of friends' excuses depends on the processing order.

 - Also add the currently investigated package to the policy info.
 - Add a HTML excuse too, so that excuses.html actually shows the reason for
   blocking.
 - Don't invalidate other excuses multiple times.
 - Change the policy_info to always carry the friend information with it, as
   that's useful to know for accepted packages too. Adjust test_approve_ppa()
   accordingly.
 - Verify "reason" field in test_sourceppa_policy()
 - Add another integration test to ensure that this also applies to unbuilt
   packages, not just to rejection from other Policies.
 - Avoid FileNotFoundError, this does not yet exist in Python 3.2.
2016-11-17 17:37:49 +01:00
Robert Bruce Park
47f5f0da72 Reject packages if entire source ppa won't migrate 2016-11-17 11:56:12 +01:00
Martin Pitt
7abcf481da Python 3.2 workaround: Drop usage of clear()
The clear() collection method is not yet available in Python 3.2, but as long
as snakefruit still runs Ubuntu 12.04 we need to get along without it.
2016-11-17 11:29:27 +01:00
Martin Pitt
4f534526ca Python 3.2 workaround: Drop usage of enum module
enum is not yet available in Python 3.2, but as long as snakefruit still runs
Ubuntu 12.04 we need to get along without it.
2016-11-17 11:29:23 +01:00
Martin Pitt
d7139521a8 Add "run-autopkgtest" tool to re-run tests 2016-11-17 11:28:53 +01:00
Martin Pitt
089ec5c27c Add autopkgtest policy
Add new autopkgtest policy: it determines the autopkgtests for a
source package (its own, direct reverse binary dependencies, and
Testsuite-Triggers), requests tests via AMQP, fetches results from swift, and
keeps track of pending tests between run. This also caches the downloaded
results from swift, as re-dowloading them all is very expensive.

This introduces two new hints:

 * force-badtest pkg/ver[/arch]: Failing results for that package will be
   ignored. This is useful to deal with broken tests that get imported from
   Debian or are from under-maintained packages, or broke due to some
   infrastructure changes. These are long-lived usually.

 * force-skiptest pkg/ver: Test results *triggered by* that package (i. e.
   reverse dependencies) will be ignored. This is mostly useful for landing
   packages that trigger a huge amount of tests (glibc, perl) where some tests
   are just too flaky to get them all passing, and one just wants to land it
   after the remaining failures have been checked. This should be used rarely
   and the hints should be removed immediately again.

Add integration tests that call britney in various scenarios on constructed
fake archives, with mocked AMQP and Swift results.
2016-11-17 11:28:53 +01:00
Martin Pitt
01bc09e618 Make linux* wait on corresponding -meta package
We want to treat linux-$flavor and linux-meta-$flavor as one set in britney
which goes in together or not at all. We never want to promote linux-$flavor
without the accompanying linux-meta-$flavor.

Introduce a synthetic linux* → linux-meta* dependency to enforce this grouping.
2016-11-17 11:28:53 +01:00
Dimitri John Ledkov
f8a1c5eb60 Teach excuse_unsat_deps() about components ogre model 2016-11-17 11:28:53 +01:00
Colin Watson
c6066d74d3 Change date format to seconds-since-epoch 2016-11-17 11:28:53 +01:00
Colin Watson
97fc6cb356 Allow blocking uploads by way of bugs with the block-proposed tag set 2016-11-17 11:28:53 +01:00
Colin Watson
bbac603666 Link to wiki documentation 2016-11-17 11:28:53 +01:00
Colin Watson
e64f4e2e74 Update contact information for Ubuntu 2016-11-17 11:28:53 +01:00
Colin Watson
e475fb7ec3 Show links to Launchpad package pages in excuses 2016-11-17 11:28:53 +01:00
Colin Watson
9c68362ff5 buildd.debian.org -> launchpad.net 2016-11-17 11:28:53 +01:00
Colin Watson
eea0ad8d3c britney.conf: add Ubuntu hinters
Delegate "block" and "unblock" hints to members of ~ubuntu-touch-release.

Add active members of the SRU team to hint permissions.
2016-11-17 11:28:53 +01:00
Colin Watson
70575d33c7 britney.conf: Ubuntu configuration
- use relative paths
 - set Ubuntu architectures
 - make all output files series specific
 - mark -proposed as a partial suite
 - set mindays to 0 for all urgencies
 - drop tpu and pu
 - disable smooth updates
 - disable removals of obsolete source packages
 - disable components, using old merged package lists for now
2016-11-17 11:28:51 +01:00
Martin Pitt
dac3bb3044 Store Testsuite-Triggers: list in sources
Compute an inverse trigger → sources map, as that's usually the direction that
britney is interested in.
2016-11-17 11:28:14 +01:00
Martin Pitt
26df12182f Store Testsuite: list in sources
Extend read_sources to store the components of Testsuite: as a list.
2016-11-17 11:28:14 +01:00
Colin Watson
a023e6ad31 Add a --distribution option 2016-11-17 11:28:14 +01:00
Colin Watson
21c48308ca Add new --series option
Replace %(SERIES) macro in config files with given value.
2016-11-17 11:28:14 +01:00
Colin Watson
57457c019c Only issue "From wrong source" for binaries not at the same version in testing
Same-version could happen for merged binaries in partial-unstable mode.
2016-11-17 11:28:14 +01:00
Colin Watson
c48eb4cbc1 Optionally merge packages from testing to unstable
To cope with a partial unstable suite like Ubuntu's -proposed pocket.
2016-11-17 11:28:14 +01:00
Colin Watson
7877a8500d Make sure that containing directories exist before writing output files
We don't use os.makedirs(dir, exist_ok=True) as that is too strict: it fails if
the directory already exists with different permissions (e. g. with 775). Thus
introduce a helper function ensuredir().
2016-11-17 11:28:14 +01:00
Robert Bruce Park
027b18f931 Make Heidi optional
Setting HEIDI_OUTPUT to an empty value will skip the heidi generation, to speed
up britney in scenarios where heidi is not needed.
2016-11-17 11:28:14 +01:00
Martin Pitt
69ab5f6c32 Skip second-stage upgrade testing if UPGRADE_OUTPUT option is absent or empty
This is useful to speed up britney in dry run mode, if we are only interested
in builds and package tests.
2016-11-17 11:28:14 +01:00
Martin Pitt
2f1acffae1 Save policy state before upgrade tester
We might not (want to) run the upgrade tester for some use cases, but we still
need to save the policy state.
2016-11-17 11:28:14 +01:00
Colin Watson
848a4645d8 Skip bug-based processing if BugsV is missing 2016-11-17 11:28:14 +01:00
Colin Watson
55dd22fe9b Use default urgency for all packages if Urgencies is missing 2016-11-17 11:28:14 +01:00
Martin Pitt
1dd23e3af1 Always reject packages with unsatisfiable dependencies
Partially revert commit ac66e311 which caused packages with unsatisfiable
dependencies to only get rejected if they were not in testing. In Ubuntu we
always want to block those.
2016-11-17 11:28:14 +01:00
Martin Pitt
d1ef31ce3a Consider packages with M-A qualifiers for reverse dependencies
Strip of Multi-Arch qualifiers ":any" and ":native" when building the
dependency fields, as they are not part of the package name.

This will fix cases like

  Package: ipython3
  Depends: python3:any (>= 3)

and include ipython3 in python3's reverse dependencies.

Closes: #794194
2016-11-17 11:28:14 +01:00
Robert Bruce Park
4bde6d48cd Invalidate excuse after each policy run
This fixes commit 497edc to really allow policies to see if the excuse has
already been invalidated by previous policies.
2016-11-17 11:20:53 +01:00
Martin Pitt
497edc6d6c Use Excuse.is_valid when iterating through checks and Policies
This gives Policies the opportunity to see if a previous check
(build/installability) or earlier policies already invalidated the update. This
allows writing policies that work on groups of packages, or skipping expensive
checks (such as triggering autopkgtests while the package is not built or
installable yet).
2016-11-17 11:12:35 +01:00
Niels Thykier
df38b9e687 britney: Remove redundant if and obsolete comment
The RC bugs part is now handled by the RCBugs policy.

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-11-17 11:12:35 +01:00
Martin Pitt
b3ea41d057 Move updating of excuses into policies
It is unwieldy to have one half of output data generation in the policy but not
the other half of updating the excuse. Now that apply_policy() gets the excuse
object as argument we can move everything there.
2016-11-17 11:12:35 +01:00
Martin Pitt
1e9a16499a Pass excuse to BasePolicy.apply_policy()
This allows tests to check whether there are any missing builds or old
binaries, so that expensive actions such as "trigger an autopkgtest" are not
done too early/in vain.
2016-11-17 11:12:35 +01:00
Martin Pitt
a401a463bf Move build checks before running policies
For future policies such as running autopkgtests it is important to know
whether a package has built, so that expensive actions such as "trigger an
autopkgtest" are not done too early/in vain.

This requires dropping the "age != 0" check for adding the out-of-date-ness to
the Excuse, as the policies now run later. But this check only applied to an
infinitesimal age, and even with age == 0 it is still a valid excuse that there
are missing binaries.
2016-11-17 11:12:35 +01:00
Jonathan Wiltshire
9cfe9d1072 Remove powerpc from release architectures
https://lists.debian.org/debian-devel-announce/2016/10/msg00008.html

Signed-off-by: Jonathan Wiltshire <jmw@debian.org>
2016-11-04 18:41:28 +00:00
Emilio Pozuelo Monfort
250c9314a6 Also do it from britney_nobreakall.conf
Signed-off-by: Emilio Pozuelo Monfort <pochu@debian.org>
2016-10-10 01:32:25 +02:00
Emilio Pozuelo Monfort
e7eb6603fe Remove mips64el from break/outofsync arches
Signed-off-by: Emilio Pozuelo Monfort <pochu@debian.org>
2016-10-10 00:59:58 +02:00
Colin Watson
e5e6d7e5b7 Make removal of obsolete source packages configurable
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-10-03 18:29:09 +00:00
Colin Watson
fe7cc466e1 Rename fucked_arches to outofsync_arches
To avoid getting in trouble when bringing up new commercially-supported
architectures.

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-10-03 18:29:09 +00:00
Niels Thykier
0664c580b0 Prefer s.x to s[X] for SourcePackage objects
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-10-03 18:29:09 +00:00