755 Commits

Author SHA1 Message Date
Niels Thykier
b5db57715b Move two installability testing functions to britney_util
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
05de911090 Make excuses a dict rather than a list
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
9b9d44db3a Move some of the hint parsing into hints.py
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
5083311ec2 britney.py: Rename __log to log
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
7b0d4023d0 britney.py: Remove redundant open before TagFile
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
5bbca73391 Make components and --control-files mutually exclusive
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Anthony Towns
496e48c9a7 britney.py: Add support for multiple components
Adds a --components command line argument (and corresponding config file
option). If specified, package info is expected to be in the usual Debian
mirror layout, ie:

   testing/source/Sources
   testing/binary-${ARCH}/Packages

(nthykier: Squashed, rebased and did some porting to Python3)
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
e2b98872cf Refactor some local expressions
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
7e475cd9f9 britney.py: assert provides table is up to date
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
3ff01b5ec9 britney.py: Avoid creating empty lists for provides
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Emilio Pozuelo Monfort
203466bb51 Fix migration for sources with old cruft that isn't in testing
A package can have old cruft no longer in testing, which can't
migrate because it depends on old libraries or packages that
aren't in testing anymore, preventing migration.

There's no point in trying to migrate old cruft that has already
been removed in testing anyway, so don't do that.

Signed-off-by: Emilio Pozuelo Monfort <pochu@debian.org>
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:27 +00:00
Niels Thykier
efd3359aba britney.py: Remove unused named parameter
The "include_hijacked" parameter of "_compute_groups" was always
false, so there was little point in having it.

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
22cef671a5 Refactor some code to avoid unnecessary table lookups/checks
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
12d9ae8fa3 Use pkg_id instead pkg/arch in BINARIES
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
aa34a47f8a Remove all calls to "same_source" - they were overkill
The same_source is supposed to compare two versions and (if needed)
"massage" a binNMU version into a source version.  This extra feature
of same_source happens to be unused (and not generally applicable):

 1) We always compare two source versions, so there is never a
    binNMU version in the first place.
 2) binary versions are *not* always equal to their source version
    (even with the binNMU suffix stripped).  This happens when
    packages use "dpkg-gencontrol -v<version>".

Note this causes results from some live-data tests to change, because
there has been a sourceful upload with a binNMU version.  It was
intended as a binNMU, but was uploaded with the source as well.  As
Britney no longer works around this issue, it makes her remove the
affected packages in the end (as their source version does not match
the version in testing).

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
179ced304d britney: Work around bug 815995
This bug involves a corner case that involves:

 * source orig providing liborig1 and orig-doc in testing
 * source orig providing liborig2 and orig-doc in unstable
 * source hijack providing liborig2 and orig-doc in both testing and unstable,
   where the versions of hijack's binaries has a higher version than those of
   "orig".

The arch:all packages are needed to trigger this, because Britney
flags an arch:any package as "out of date" and stops the migration
there.  However, she is more lenient with arch:all packages.

What happens is that Britney realises that src:orig need to be updated
in testing (to remove liborig1).  This leaves src:orig with no
binaries left in testing (as the orig-doc from hijack is used) and it
is therefore removed as an obsolete source.  The obsolete removal then
exploded because Britney was also trying to remove the liborig1
package, which is no longer there.

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
6965dda5f7 Support versioned provides (without multi-arch)
Closes: #786803

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
7fcb6e3354 Partially support versioned provides
With this patch, Britney will correctly parse (and deparse) a
versioned Provides.  Furthermore, she will allow it to satisfy any
unversioned dependency on the provided package.

This is the easy half of #786803.

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
176fe04c98 Use sets in the provides-table
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
19e54380c3 Store the pkg_id in undo instead of the package info
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
f5a52fcec4 britney.py: Add all_binaries to store binaries by pkg_id
It can be used to A) to make the mismatch check more efficient and B)
share identical binaries between suites.

Signed-off-by: Niels Thykier <niels@thykier.net>
2016-04-11 16:27:26 +00:00
Niels Thykier
92deb4d1b9 britney.py: Avoid some throw-away creation of collections
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-01-17 20:42:53 +00:00
Niels Thykier
dc8ae9e1ce britney.py: Fix typo
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-01-17 20:39:05 +00:00
Niels Thykier
52a1dd6ffa britney.py: Remove some redundant if-statements
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-01-17 20:39:05 +00:00
Niels Thykier
31377a7c39 Move loop invariant out of the loop
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-01-17 20:37:45 +00:00
Niels Thykier
da5e797fc9 Remove unused variables/assignments
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-01-17 20:37:45 +00:00
Paul Wise
cd66fc82d8 Do not hard-code codenames in the URL to the freeze policy
Closes: #808031
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-01-17 20:37:44 +00:00
Niels Thykier
505e31b106 britney.py: Remove unused import
Signed-off-by: Niels Thykier <niels@thykier.net>
2016-01-16 09:46:58 +00:00
Emilio Pozuelo Monfort
f6c974fdb7 Point to the Stretch freeze policy
Signed-off-by: Emilio Pozuelo Monfort <pochu@debian.org>
2015-11-19 21:09:01 +01:00
Emilio Pozuelo Monfort
3bd5380afc britney.py: Fix migration of binNMUs for sources that have cruft
If we are ignoring cruft, new sources with cruft are migrating, but
binNMUs aren't. Fix that.
2015-11-01 10:09:30 +01:00
Adam D. Barratt
8480e1859c Always output excuses for packages with "wrong source" issues
Previously whether such packages received excuses, and the specific
content of such excuses, was dependent on the order in which their
binary packages were considered.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2015-10-20 18:39:28 +00:00
Niels Thykier
1e99c780da britney.py: Fix the hint tester
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-20 17:17:57 +02:00
Niels Thykier
3b610160ad britney.py: Update nuninst after writing the "accepted" stats
Otherwise "pre" and "now" will always show exactly the same numbers.

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-20 14:56:27 +02:00
Niels Thykier
9c3d0afaf5 britney.py: Remove sort_actions, we no longer need it
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:07 +02:00
Niels Thykier
bbc6c34ca5 britney.py: Make iter_packages repeat until no more actions work
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:07 +02:00
Niels Thykier
326cc0d98b Rewrite the main run to use the solver and allow combined migrations
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:06 +02:00
Niels Thykier
65f74c226d Make try_migration support multiple actions
This made iter_packages_hint a thin wrapper around try_migration, so
it was inlined into its only caller "do_all".

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:06 +02:00
Niels Thykier
13d4d4801b britney: Factor out a try_migration method
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:06 +02:00
Niels Thykier
6db0ed5ac8 britney: Move table lookup out of get_dependency_solvers
The callers of get_dependency_solvers need to do those table lookups
anyway.  By moving it out, it is now possible to reuse the results.

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:06 +02:00
Niels Thykier
681a7b8cd7 Log when compiling Installability tester
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:06 +02:00
Niels Thykier
a9ee64470e Always use pkg ids in the InstallabilityTester API
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:33:06 +02:00
Niels Thykier
2914a8a51b britney.py: Verify nuninst before updating control files
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 20:32:49 +02:00
Niels Thykier
7736b53c60 Drop now unused register_reverses and RDEPENDS
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 19:33:22 +02:00
Niels Thykier
3d5d328738 Use inst_tester to compute smooth updatable binaries
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-13 19:33:22 +02:00
Niels Thykier
5123bc2317 Remove the now unused RCONFLICTS field
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-09 21:06:06 +02:00
Niels Thykier
289807463e Rewrite computation and testing of "affected" packages
Rely on the Installability tester to locate all of the affected
packages plus their transitive reverse dependencies.  As the
InstallabilityTester is suite agnostic, the set of affected packages
now includes (versions of) packages not in testing, which is filtered
out during the check.

Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-09 21:06:06 +02:00
Niels Thykier
58edb64c99 Update nuninst correctly for arch:any -> arch:all migrations
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-08 08:07:43 +02:00
Niels Thykier
f3a8181bda britney.py: Fix statement without an effect
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-06 22:39:39 +02:00
Niels Thykier
7c5fdc8aca britney.py: Use "is" rather than "==" for None comparisons
Signed-off-by: Niels Thykier <niels@thykier.net>
2015-09-06 21:41:45 +02:00
Ivo De Decker
606dbcb470 ignore arch all when looking for up-to-date bins
If we have an up-to-date arch all package available for this architecture,
that doesn't mean this architecture has an up-to-date build. We need an
architecture specific up-to-date package for that.

Signed-off-by: Ivo De Decker <ivodd@debian.org>
2015-09-06 19:30:47 +00:00