57 Commits

Author SHA1 Message Date
Niels Thykier
0d5ea5eb8c
Improve cache invalidation of (pseudo-)essential set
If a new pseudo-essential package was added to testing *and* it is
mutually-exclusive with an existing member, britney would incorrectly
flag it as uninstallable (unless another change triggered a cache
invalidation of the pseudo-essential set).

With this commit, the cache invalidation is now done based on whether
we add something that *might* be in the (effective) pseudo-essential
set.  It is an overapproximation as there are cases where the
invalidation is unnecessary, but at the moment it is not a performance
concern.

Closes: https://bugs.debian.org/944190
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-11-10 23:08:47 +00:00
Niels Thykier
fce1fe5c27
autopkgtests: Move some common code into a function
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-02-11 21:00:13 +00:00
Niels Thykier
69d42ffb36
solver: improve apply_order to simplify more code
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:09 +00:00
Niels Thykier
b306700376
solver: Extract a function from _comute_group_order_adds
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:08 +00:00
Niels Thykier
259fecf6cf
solver: Rename a variable to avoid confusion
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:07 +00:00
Niels Thykier
cdcfe85bfa
solver: Replace dict with a proper object
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:06 +00:00
Niels Thykier
93f101bee2
solver: Extract some common code into a function
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:05 +00:00
Niels Thykier
2ed6161b49
solver: Refactor out a function to avoid duplicated code
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:04 +00:00
Niels Thykier
af20634b12
solver: Merge some loops to reduce nesting level
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:03 +00:00
Niels Thykier
b61e1086bd
solver: Invert an if-statement to reduce max indentation level
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:02 +00:00
Niels Thykier
68407c53c0
Remove an unnecessary if-statement
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:01 +00:00
Niels Thykier
9971714e27
solver: Merge two loops by using chain
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:13:00 +00:00
Niels Thykier
16dc303190
solver: Reduce two small loops into a comprehension
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:12:59 +00:00
Niels Thykier
d3e06fc45f
solver: Split _compute_group_order into three methods
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:12:58 +00:00
Niels Thykier
c65b377c5d
solver: Split solve_groups into 3 smaller methods
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 22:12:56 +00:00
Niels Thykier
7124313aa6
Make InstallabilityTester suite agnostic
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-16 11:00:02 +00:00
Niels Thykier
ced7b7b413
Refactor britney.py to use InstallabilityTester less
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-16 11:00:01 +00:00
Niels Thykier
0b4f58315f
Rename a method and reduce a table to a set
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:18 +00:00
Niels Thykier
0eb8b5a201
BinaryPackageUniverse: Provde equivalent_packages
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:17 +00:00
Niels Thykier
ef813bf0d8
Let the BinaryPackageUnvierse track broken packages
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:16 +00:00
Niels Thykier
8867ef0cf9
Let the BinaryPackageUniverse track essential packages
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:15 +00:00
Niels Thykier
07a407e810
Partly separate the solver from the inst_tester
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:14 +00:00
Niels Thykier
c0ecdd82fb
Remove now redundant APIs from the InstallabilityTester
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:13 +00:00
Niels Thykier
35b06ee007
tests: Separate inst_tester from universe
This commit updates the test suite to use the BinaryPackageUniverse
instead of the InstallabilityTester where that makes sense.  The rest
of Britney has yet to be updated except where absolutely necessary (as
that will come in a later commit).

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:11 +00:00
Niels Thykier
d557610c6f
BinaryPackageUniverse: Implement packages_equivalent_to()
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:10 +00:00
Niels Thykier
530db5d3f7
Extract a BinaryPackageUniverse from the InstallabilityTester
The InstallabilityTester is suffering from a lack of clear purpose
because it serves multiple.  This commit extracts most of one of these
purposes into the BinaryPackageUniverse class while retaining the
original API of the InstallabilityTester.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:09 +00:00
Niels Thykier
32def47991
Fix typo in doc string
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-01 21:30:25 +00:00
Niels Thykier
f86cda97da
inst_tester: Improve doc string/argument name
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-01 21:30:23 +00:00
Niels Thykier
6c5300d873
Unfold the suite.binaries tuple into two members
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-10-25 18:34:41 +00:00
Niels Thykier
c4931fb1b2
solver: Move a common variable out of an if
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:19:38 +00:00
Niels Thykier
1e46965924
inst/builder.py: Split function in three to reduce indentation levels
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:19:37 +00:00
Niels Thykier
dd5211d55a
inst-tester: Add missing element to a set
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:19:36 +00:00
Niels Thykier
55dd190fa6
inst-tester: Make "check" a list
Should be slightly cheaper (O(1)) than using a set.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:19:35 +00:00
Niels Thykier
cd1f384012
inst-tester: Remove obsolete "safe-set" optimization
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:19:34 +00:00
Niels Thykier
95b945d2b3
inst-tester: Remove obsolete optimization
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:19:34 +00:00
Paul Gevers
713b98ad6b
inst_tester: add is_pkg_in_testing 2018-09-05 21:27:41 +02:00
Niels Thykier
b6888c2716 test-builder: Avoid allocating empty throw-away lists on empty relations
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 14:38:36 +00:00
Niels Thykier
373f7f51f3 inst-builder: Avoid some hash-look ups by doing them early
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 14:02:29 +00:00
Niels Thykier
35add7cb26 Move loop-invariant out of loop
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 13:50:22 +00:00
Niels Thykier
02001d4d4f inst-builder: Loop over values instead of keys + hash-lookup
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 13:18:43 +00:00
Niels Thykier
0446ead9e8 inst-builder: Replace RelationBuilder with a set_relations method
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 13:06:48 +00:00
Niels Thykier
ab6b2ef953 inst-builder: Refactor to bulk adding dependency clauses
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 12:47:11 +00:00
Niels Thykier
bc1d3afa38 inst-builder: Make add_breaks a bulk call
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 12:33:09 +00:00
Niels Thykier
6f97e36477 inst-builder: Split relation loop and optimize conflicts
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 12:25:20 +00:00
Niels Thykier
6a3d100b92 Fix error format string error in AssertionError
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 12:23:35 +00:00
Niels Thykier
fc834624fc Avoid some unnecessary hash look ups
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-12 08:37:07 +00:00
Niels Thykier
64d2bc4203 builder.py: Make the code suite agnostic
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
41978869ce Migrate solver's ad-hoc debug logging
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-03-31 07:04:35 +00:00
Niels Thykier
69473eefca solver: Extract compute_scc into a function
Signed-off-by: Niels Thykier <niels@thykier.net>
2017-07-29 07:54:48 +00:00
Niels Thykier
bd375fdd85 solver: Make _compute_scc iterative
Rewrite _compute_scc to be iterative to avoid call recursion limit for
graphs with long dependency chains.

Signed-off-by: Niels Thykier <niels@thykier.net>
2017-07-29 07:40:15 +00:00