68 Commits

Author SHA1 Message Date
Ivo De Decker
93b46dde0d Allow new uninstallables from allow-uninst hint
When an allow-uninst hint is added for an unversioned binary package, items
are allowed to migrate, even if they make that binary package uninstallable
(on the architecture specified in the hint, if one was specified, or on all
architectures otherwise).

Using this hint should avoid using force-hint to allow specific breakage.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2019-09-14 11:52:19 +00:00
Ivo De Decker
90cb743410 switch rdep invalidation to detailed excuse info 2019-09-04 11:44:12 +00:00
Ivo De Decker
b70d1d09d7 keep track of verdict when invalidating deps 2019-09-04 11:44:10 +00:00
Niels Thykier
c741b03aaf
Make PolicyVerdict ordered/comparable
This shortens the annyoing "a.value < b.value" to "a < b".

Signed-off-by: Niels Thykier <niels@thykier.net>
2019-03-06 19:07:17 +00:00
Niels Thykier
533288fa3e
utils: Remove obsolete imports
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-03-05 19:40:39 +00:00
Niels Thykier
915b4a012d
Since dpkg/1.19.1, "foo:native" is also valid for arch:all pkgs
We allow this already now even though dpkg/1.19.1 is not in stable as
it will not cause issues with upgrades (only dpkg-checkbuilddeps
needed change, so it will not cause issues on the buildds as we can
rely on dpkg from buster being present there).

Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-29 19:15:15 +00:00
Niels Thykier
e0b46e5196
Make the source pkg consistency checks a TargetSuite method
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 16:47:40 +00:00
Niels Thykier
b200c15062
Add a missing "no cover"
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 13:06:19 +00:00
Ivo De Decker
4fcb90b775
Read Built-Using info for binary packages
Signed-off-by: Ivo De Decker <ivodd@debian.org>
2019-01-19 12:45:06 +00:00
Niels Thykier
bb699f7416
Make britney2/utils.py PEP-8 clean
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 12:03:36 +00:00
Niels Thykier
5a38e00996
Fix pep8 issues in check_target_suite_source_pkg_consistency
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-19 12:03:35 +00:00
Niels Thykier
82fa58df20 Extract a compute_item_name method
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-16 22:37:23 +00:00
Niels Thykier
f928c7ed3d Make SourcePackage.binaries a set
The recent code changes made use remove from the "binaries" field in
SourcePackages.  Lists are not particularly optimized for this kind
of removal and we have a few source packages with a lot of binary
packages (e.g. libreoffice, gcc-X-cross{,-ports}) that might trip
poor performance.

Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-14 13:19:05 +00:00
Ivo De Decker
046bdc60c6 Add consistency checks for target suite.
This test checks if every binary in the target suite is listed as a binary for
its source package and vice-versa.

This adds a config option check_consistency_level:

0: no checks
1: only check at the end
2: also check for every hint run (default)
3: check for every transaction (slow - only useful for the testsuite)

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2019-01-14 13:13:45 +00:00
Niels Thykier
2fea931da3
Remove --control-files; It is not used any where
Signed-off-by: Niels Thykier <niels@thykier.net>
2019-01-07 20:25:48 +00:00
Niels Thykier
b16ae8046a
Add some '# pragma: no cover' for error cases, abstract methods, etc.
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-31 18:07:29 +00:00
Niels Thykier
5bcbed499e
Fix the doc string for compile_nuninst
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-31 12:16:09 +00:00
Niels Thykier
6174d2c3f9
Create a MigrationItemFactory and migrate most code to use it
This is a step towards making migration unit-testable.  This step
reduces the need for global state (in the MigrationItem class as class
fields) and with another step we can remove the global state entirely
and enable unit tests to create migration items without having to
worry about other unit tests.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-31 12:00:50 +00:00
Ivo De Decker
18d951be25 Handle dependencies between excuses in a generic way
All types of dependencies between excuses (Depends, Build-Depends,
Build-Depends-Indep, ...) are handled by the same code. The DependencyType is
used to distinguish between the types where needed.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-12-31 11:46:10 +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
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
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
deb9482a2f
Move parse_provides to britney2.utils
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-12-15 21:58:36 +00:00
Ivo De Decker
3828a76053 Filter out cruft in find_smooth_updateable_binaries
When calculating smooth updateable binaries, filter out cruft binaries from
unstable, because they will not be part of the set of packages that britney
will try to migrate to testing.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2018-12-11 16:18:53 +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
0a669461ca
Separate inst_tester from universe
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-11-11 09:38:12 +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
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
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
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
0d5c4a24c4 Handle Build-Depends-Indep in excuses
Admittedly, no policy adds them yet so this is currently no-op code.
However, future commits can start to rely on this infrastructure code.

Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-08 16:18:02 +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
206d5ac5df Fix typo in parameter
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-08-04 20:08:16 +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
63c867995b write_heidi: Accept a target suite instead of sources+packages
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
609bb9e960 Make migration and undo code suite agnotisc
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
382ced2a68 Make write_excuses suite agnostic
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
9a5c0c3fa8 Rewrite old_libraries to be suite agnostic
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
d1350606bb Use a proper Suite object for MigrationItem.suite
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-07-29 09:23:12 +00:00
Niels Thykier
a344a9b375 Rewrite handling of logging old libraries
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-05-02 18:41:30 +00:00
Niels Thykier
3d05b834ad Refactor logging of uninst
Signed-off-by: Niels Thykier <niels@thykier.net>
2018-05-02 18:41:25 +00:00
Paul Gevers
fd03083ea5
Merge branch 'master' into autopkgtest 2017-11-28 20:19:48 +01:00
Niels Thykier
5c3229467a write_heidi: Include cruft arch:all packages in the output
Signed-off-by: Niels Thykier <niels@thykier.net>
2017-11-19 21:47:38 +00:00
Niels Thykier
7217c22b42 get_dependency_solvers: The "foo:any" modifier can also appear in B-D relations
Signed-off-by: Niels Thykier <niels@thykier.net>
2017-11-12 11:46:17 +00:00
Niels Thykier
bda39f8ca0 Support :native in build-dependency relations
Signed-off-by: Niels Thykier <niels@thykier.net>
2017-11-12 07:50:49 +00:00
Niels Thykier
ee27d7a67c Add BuildDependsPolicy to check Build-Depends(-Arch) availability
Add a new "BuildDependsPolicy" that will check the satisfiability of
the build-dependencies listed in the Build-Depends and
Build-Depends-Arch fields.  This enables gating of packages based on
missing / broken build-dependencies.

There are some limitations:

 * Build-Depends-Indep is ignored for now.  Missing or broken packages
   listed in Build-Depends-Indep will be continue to be silently
   ignored.

 * Being a policy check, it does not enforce "self-containedness" as
   a package can still migrate before a build-dependency.  However,
   this can only happen if the build-dependency is ready to migrate
   itself.  If the build-dependency is not ready (e.g. new RC bugs),
   then packages build-depending on it cannot migrate either (unless
   the version in testing satisfies there requirements).

Signed-off-by: Niels Thykier <niels@thykier.net>
2017-11-11 15:49:48 +00:00
Niels Thykier
c537f0554f Move PolicyVerdict to britney2.policies 2017-11-02 19:31:11 +00:00
Niels Thykier
784d80ab4c Replace a few lists with sets
We basically use them as sets and do not need to rely on the ordering,
so we might as well just turn them into proper sets.

Signed-off-by: Niels Thykier <niels@thykier.net>
2017-11-02 19:30:40 +00:00