726 Commits

Author SHA1 Message Date
Niels Thykier
e0c19b3adb
Inline a call to _compute_groups
The should_upgrade_srcarch method only needs _compute_groups for the
purpose of computing smooth update candidates.  In the concrete case,
it is rather simple to inline that part directly (and fold away
irrelevant code).

This also enables us to rewrite _compute_groups to accept an migration
item as all remaining callers simply unfold the migration item into
the arguments required by _compute_groups.  This change will come in a
future commit.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-18 21:55:09 +00:00
Niels Thykier
82ff8010e2
Rename unused variable/return value to "_"
This makes it more explicit that we are not using the value for
anything (and its name did not match it content due to a mistake
in 5d49a4120488e5beba0e1946613a1e8873bfefdd).

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-17 22:18:47 +00:00
Ivo De Decker
4dc2cf7172
Try to remove old libs during hint run
Attempt the removal of the old libraries from smooth updates during every hint
run. In some cases, the removal needs to happen during the hint run for the
hint to succeed.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-12-17 21:56:35 +00:00
Niels Thykier
70d461ff11
Remove "skip" return value of _compute_groups
The "skip" value was a hack to support keeping cruft out of testing
while not breaking the undo code.  With new the undo code
(a05a249e04926034ea8f915abcd51b62acac41c5), britney can now handle
this cause without the "skip" value and it has therefore out-lived its
purpose.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-17 20:20:16 +00:00
Ivo De Decker
12debfc7c8 Check that version increases when adding packages to testing
When we try to compute_groups for a group which has a source or a binary with
a lower version than testing, throw an exception. In the cases where this can
happen, the exception is caught. In other cases, it is not and it serves as an
assert.

This can only happen when there are multiple candidates (from multiple suites)
changing the same source or binary.

This should fix the ordering issues tested in these tests:
- tpu-unstable-binnmu
- binnmu-tpu
- tpu-with-unstable-binnmu

With this change, it should be possible to accept binNMUs from *pu again.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-12-17 20:08:53 +00:00
Niels Thykier
db885b7184
Drop comment that no longer matches the context
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-17 18:50:48 +00:00
Niels Thykier
814926f5c3
try_migration: Remove implicit rollback
The issue with an implicit rollback is that the caller has no idea
whether it should invoke rollback or not if an exception occurs.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-17 18:30:12 +00:00
Niels Thykier
a05a249e04
Record exactly which binaries are updated in the transaction
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-16 20:03:19 +00:00
Niels Thykier
5d49a41204
Introduce a "Transaction" for changes to testing
This isolates the undo handling in the new transaction object and in
doop_source, which currently generates the undo items.  This commit
will be a stepping stone to rewriting the undo handling.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-16 19:58:02 +00:00
Niels Thykier
68fd0ba4b2
Remove --components/COMPONENTS as it is auto-detected
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-16 19:55:04 +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
7efa865a04
Move Suite/Package loading into a separate class/module
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-15 21:58:37 +00:00
Niels Thykier
deb9482a2f
Move parse_provides to britney2.utils
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-15 21:58:36 +00:00
Niels Thykier
bb9712d7e9
Fix typo in the logging level mapping
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-15 21:58:35 +00:00
Ivo De Decker
a56c9458c8 Disable binNMUs from *pu for now
Support for binNMUs from *pu is currently broken, so disable it for now.
see https://bugs.debian.org/916209 for more info.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-12-11 15:00:19 +00:00
Ivo De Decker
a3b194c13e Don't calculate smoothbins for items from *pu
When building the excuses, don't calculate smoothbins for items not from
unstable.

This improves the change from commit db584d9fdc

Also try to make the code more readable.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-12-11 14:32:53 +00:00
Ivo De Decker
db584d9fdc Don't calculate smoothbins for sources not in unstable
When building the excuses, don't calculate smoothbins if the source is not in
unstable. Doing so would result in a KeyError and a crash. This happens for
sources that are in testing and (testing-)proposed-updates, but not in
unstable.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-12-07 22:59:18 +00:00
Ivo De Decker
111413fb7b Don't remove package if removal is blocked
Support blocking the removal of a package with a removal hint. This is useful
to block an auto-removal.

Before this patch, only removals for packages not in unstable could be
blocked.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-11-25 12:40:30 +00:00
Ivo De Decker
d074142d35 Fix architecture check for binnmu removals
Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-11-22 22:11:22 +00:00
Niels Thykier
65b67e763c
Replace the use of inst_tester with new suite functionality
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:20 +00:00
Niels Thykier
03df891b7e
Expand the Suite interface and create a TargetSuite sub-class
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:19 +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
0a669461ca
Separate inst_tester from universe
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:12 +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
b37575f000
Stop creating some throw-away data-structures for a method call
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-01 21:30:24 +00:00
Ivo De Decker
b839e1a459
Ignore dependencies of cruft when building excuses.
Don't make dependencies of cruft a blocker for being a candidate. In most
cases, the cruft won't migrate to testing, so it shouldn't be a blocker. If
the cruft would be considered for migration to testing, the installability
check will catch missing deps.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-10-30 19:40:37 +00:00
Niels Thykier
7cdf10bc77
Inline get_nuninst into its remaining callees
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-10-28 21:37:41 +00:00
Niels Thykier
05aaf1cc12
Refactor nuninst initialization to avoid reading the cache from disk
At the moment, britney will always read the nuncache from disk
(possibly regenerating it before reading it).  However, we can save
the "read from disk" by moving the initialization of nuninst into the
constructor of Britney and relying on clone_nuninst.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-10-28 21:35:18 +00:00
Niels Thykier
7bcbcb6282
Make clone_nuninst able to fully deep clone nuninst
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-10-28 21:26:48 +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
Ivo De Decker
9c606ef533 Don't add smooth-updatable cruft to migration items
Based on patch by Niels Thykier.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-10-24 22:15:27 +00:00
Niels Thykier
7fd15eab4f
britney: Use chain rather then duplicate statement
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 16:31:21 +00:00
Niels Thykier
e279eabf0a
britney.py: Remove duplicated variable
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 16:03:02 +00:00
Niels Thykier
f561de89d0
britney.py: Remove an unnecessary level of indentation
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:57:07 +00:00
Niels Thykier
880a614b2b
britney: Extract a find_smooth_updateable_binaries function
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:57:06 +00:00
Niels Thykier
7d7a42153d
britney.py: Simply a loop in should_upgrade_src
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-09-30 12:19:39 +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
208c3c2e90 britney: Use direct and indirect affected packages for nuninst checks
Previously, we split affected into a "reverse relations with a
dependency on the migrated/change package" set and a set of "the
rest".  With this commit we change the sets into a set of packages
with a direct relation on the migrated/changed package and the full
set of all affected.

The change has no effect on Britney's results as the first set is only
used as an optimization to reject some items faster.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-09 17:46:31 +00:00
Niels Thykier
1623828a48 SourcePackage: Add field for Build-Depends-Indep
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-08 16:18:02 +00:00
Niels Thykier
70947f4c21 Use excuses_suffix instead of name for items
At the moment, the two are identical, but they are not intended to
remain identical (i.e. the name should eventually become the full
suite name).

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-07 20:43:48 +00:00
Niels Thykier
1d45b2a3b2 Move autopkgtest specific field to Autopkgtest policy
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-07 19:28:25 +00:00
Mathieu Trudel-Lapierre
8d2cabd914 Add 'unsatisifiable dependencies' to YAML excuses
Cherry-Pick: 80bf9060de6b7a7fe21f10da90f0dcc15b96ac1c
Cherry-Pick: f32907aceab7bdf37856ceef3122149c046f0ee1
Cherry-Pick: 9ef496177f86b18d9f910da1360dd773b82f1fb7
Cherry-Pick: b16530a37df93851fda35db016775056a6b0c218
Signed-off-by: Niels Thykier <niels@thykier.net>

Flatten the defaultdict(set) for unsat_deps into a standard dict for output
2018-08-07 18:55:57 +00:00
Niels Thykier
94dc17c0d7 britney: Remove {sources,binaries} from Britney 2018-07-29 09:27:20 +00:00
Niels Thykier
4a2fe3420a Rewrite write_controlfiles to take a single suite as argument
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:27:20 +00:00
Niels Thykier
97d707e5c0 britney: Avoid some references to britney.{sources,binaries}
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:27:20 +00:00
Niels Thykier
dfbff18b5c Remove some references to "unstable"
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
54e5eb0e74 policies: Use suite class instead of suite name
When determining whether a policy applies to a given item, use the
suite class rather than the suite name.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
e7b5339eae britney.py: Replace an instance of 'pu'/'tpu' hardcoding
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
7ed3568eca britney.py: Remove two more references to "testing"
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00