1428 Commits

Author SHA1 Message Date
Niels Thykier
37608071e9 britney.py: Refactor doop_source
Rename local variables and avoid repeated chained lookups.  In
particular, avoid confusing cases like:

   [...]
         version = binaries[parch][0][binary][VERSION]

   [...]
   binaries[parch][0][binary] = self.binaries[item.suite][parch][0][binary]
   version = binaries[parch][0][binary][VERSION]

Where "version" here will refer to two different versions.  The former
the version from testing of a hijacked binary and the latter the
version from the source suite (despite the look up using the "testing"
table, due to the testing copy being updated).

Notable renamings:
 * binaries => packages_t (a.k.a. self.binaries['testing'])
 * binaries[parch][0] => binaries_t_a
 * binaries[parch][1] => provides_t_a
 * Similar naming used for "item.suite" instead of "testing"

The naming is based on the following logic:
 * self.binaries from "packages" files
   (by this logic, it ought to be "self.packages", but that is
   for later)
 * The "_X_a" is short for "[<suite>][<parch>]" look ups.
 * binaries_X_a and provides_X_a are the specialised parts of
   packages_X_a that deal with (real) binary packages and
   provides (i.e. virtual packages) respectively.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:20:16 +02:00
Niels Thykier
2576366dd0 inst-tester: Attempt to avoid needing to backtrack
When trying to break a choice, try the candidate out and see if we can
pick it without any consequences.  Basically, if the candidate causes
no new conflicts or choices, we can safely pick it.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:20:16 +02:00
Niels Thykier
4babb75f8f inst-tester: Exploit eqv. table in compute_testing_installability
Use the equvilence table to skip some calls to _check_inst.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:20:16 +02:00
Niels Thykier
72daebd67c installability: Exploit equvialency to reduce choices
For some cases, like aspell-dictionary, a number of packages can
satisfy the dependency (e.g. all aspell-*).  In the particular
example, most (all?) of the aspell-* look so similar to the extent
that reverse dependencies cannot tell two aspell-* packages apart (IRT
to installability and co-installability).

This patch attempts to help the installability tester by detecting
such cases and reducing the number of candidates for a given choice.

Reported-In: <20140716134823.GA11795@x230-buxy.home.ouaza.com>
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:20:03 +02:00
Niels Thykier
e9a7a07856 doop_source: Remove unncessary table loop up
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:20:02 +02:00
Niels Thykier
baa9eebc5c doop_source: Remove redundant part of the return value
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:20:02 +02:00
Niels Thykier
a46dd88709 britney.py: Split iter_packages into two
Extract a specialised iter_packages_hint from iter_packages that only
deals with applying hints.  This simplifies iter_packages AND avoids
having to re-compute the uninstallability counters after each single
item in the hint.

This means that a hint can now avoid triggering expontential runtime
provided only that the "post-hint" stage does not trigger expontential
runtime.  Previously the hint had to be ordered such that none of the
items in the hint caused such behaviour (if at all possible).

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:20:02 +02:00
Niels Thykier
c25e7f9cd7 britney.py: Handle version-ranged dependencies a bit smarter
Avoid creating two dependency clauses for dependencies emulating a
"version range" a la:

  Depends: pkg-a (>= 2), pkg-a (<< 3~)

Previously this would create two clauses a la:

 - (pkg-a, 2, arch), (pkg-a, 3, arch)
 - (pkg-a, 1, arch), (pkg-a, 2, arch)

However, it is plain to see that only (pkg-a, 2, arch) is a valid
solution and the other options are just noise.  This patch makes
Britney merge these two claues into a single clause containing exactly
(pkg-a, 2, arch).

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-08-04 20:19:49 +02:00
Niels Thykier
4009d1b244 inst/builder.py: Move a comment and write doc for method
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-07-19 09:51:36 +02:00
Niels Thykier
e45f2fe84e britney.py: _compute_groups returns sets of tuples, not str
Fix a call site to use a tuple instead of a str when testing if a
package has been smooth-updated.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-07-13 10:01:14 +02:00
Niels Thykier
d63b5a95d8 britney.py: dict does not have a .add (in _compute_groups)
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-07-13 10:01:14 +02:00
Niels Thykier
8251b56e66 britney.py: Fix use of undefined variable
A currently dead branch in _compute_group uses an undefined local
variable.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-06-15 21:57:24 +02:00
Adam D. Barratt
791b71d441 Remove an obsolete comment
The C library is no longer used so stop suggesting changing it when
there are issues.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2014-06-15 17:18:25 +00:00
Niels Thykier
72e67fee7a Solver: Add more (optional) debugging output
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-06-15 18:20:23 +02:00
Niels Thykier
1306eb664d Britney: Fix malformed removal hints from auto hinter
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-06-15 18:20:22 +02:00
Niels Thykier
afa9a543b1 britney.py: Fix bug with hinting removals
Fix a bug in the auto hinter that could make think that sources had
already been removed.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-06-15 16:56:17 +02:00
Niels Thykier
2079b1fb5e Add auto hinter on top of the new installability tester
The "new" auto hinter relies on partial ordering to determine, when
what can migrate (and what needs to migrate at the same time).  At the
same time, it leverages on "_compute_groups" to allow it to include
"removals" in its hints.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-06-08 17:51:50 +02:00
Niels Thykier
d90681eca2 Handle smooth updates better in "easy"-hints
Avoid smooth-updating libraries in hints, when all of their reverse
dependencies will certainly disappear in the same hint.

Note that in "hint"-hint, reverse dependencies removed in the
following "full run" will not cause the smooth-updated library to be
removed.  Instead these will still be removed in the end as usual, but
in some cases that is too late.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-06-08 17:44:44 +02:00
Niels Thykier
643b1098d1 Rewrite, rename and extend find_upgraded_binaries
Rename find_upgraded_binaries into _compute_groups.  The new method
will also compute what binaries will be updated in or added to testing
after migration.

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-06-08 17:05:23 +02:00
Julien Cristau
66c9fb6efa Add pochu
Signed-off-by: Julien Cristau <jcristau@debian.org>
2014-05-24 16:59:17 +02:00
Philipp Kern
9f0e09e416 britney{,_nobreakall.conf}: Drop sparc from testing.
Signed-off-by: Philipp Kern <pkern@debian.org>
2014-04-26 14:59:48 +00:00
Niels Thykier
d359759e9d Move "old_libraries" to britney_util
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-03-10 18:48:04 +01:00
Niels Thykier
5ddd9ebc36 Move write_controlfiles to britney_util
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-03-10 18:48:04 +01:00
Niels Thykier
b429d4871e Factor write_sources into its own function
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-03-10 18:48:04 +01:00
Adam D. Barratt
4f48872102 Fix a crash during installability testing
Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2014-02-27 18:12:54 +00:00
Niels Thykier
03d15c2ae5 Sync britney_nobreakall.conf with recent changes
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-01-31 21:48:17 +01:00
Niels Thykier
c89dc58e73 britney.conf: Remove ia64 from testing
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-01-31 21:38:44 +01:00
Niels Thykier
cf4405375a britney.conf: Add sparc to {BREAK,FUCKED}_ARCHES
Signed-off-by: Niels Thykier <niels@thykier.net>
2014-01-29 23:04:28 +01:00
Niels Thykier
691bda4bd8 Write "HeidiResultDelta" file containing the changes of the run
Based on Colin Watson's code to do the same from the "britney2-ubuntu"
repository[1] revision 306, 308 and 309.

Notable differences include:
 * output include version of source package being removed
 * output prefix removals with a "-" (otherwise it would be identical to
   a upgrade/new source with the change above).

[1] http://bazaar.launchpad.net/~ubuntu-release/britney/britney2-ubuntu/revision/306

Signed-off-by: Niels Thykier <niels@thykier.net>
2014-01-11 09:03:16 +01:00
Julien Cristau
3c8f72607e Avoid exploding when reading broken hints
If hint.check() fails, just ignore the hint instead of killing britney.

Signed-off-by: Julien Cristau <jcristau@debian.org>
2013-12-16 23:05:09 +01:00
Niels Thykier
7f471eca25 britney.py: Remove obsolete comment about AIEEE
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-15 05:13:12 +01:00
Ivo De Decker
9345e9f6fe Add note when a pkg is being removed because it is not in sid
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:56:51 +01:00
Niels Thykier
f978d2c69a britney.conf: Add EXCUSES_YAML_OUTPUT
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:49:17 +01:00
Niels Thykier
90f1e91c74 excuse: Rename "generated" to "generated-date"
"generated-date" suggests the value as a date, whereas "generated"
suggests a boolean value.

Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:21:15 +01:00
Niels Thykier
a378bb6060 util: Add new "write_excuses" function
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:21:15 +01:00
Niels Thykier
4b690fac00 INSTALL: Mention the need for python-yaml
Also prune the "2.7" in the package names under the assumption
that people are running Jessie.

Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:21:15 +01:00
Niels Thykier
f05145c3f7 excuse.py: Add "is-candidate" to the excuse
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:21:15 +01:00
Niels Thykier
b0d876093a excuse.py: Rename keys to include "-" between words
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:21:15 +01:00
Niels Thykier
24db50994e excuse.py: Use a set for storing bugs
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-11 21:21:15 +01:00
Ivo De Decker
87813401bf handle export for excuse with 'force' 2013-12-11 21:21:15 +01:00
Ivo De Decker
a037c189e9 add remove reason when package not in unstable 2013-12-11 21:21:13 +01:00
Ivo De Decker
68d2d54663 first attempt at adding reason 2013-12-10 22:27:32 +01:00
Ivo De Decker
6a7aeac400 add bug list to yaml 2013-12-10 22:27:32 +01:00
Ivo De Decker
ab4de3b93c first attempt at yaml logging 2013-12-10 22:26:26 +01:00
Ivo De Decker
4fb5b6d313 fix maintainer regex to get rid of excess space
Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-06 22:45:06 +01:00
Ivo De Decker
9d79ce7297 if hintsdir is defined, read hints from there
This introduces a new variable HINTSDIR, which overrides the location of the
Hints dir (normally it is read from the UNSTABLE dir).

Please note that this is the location of the dir that contains the Hints dir.

Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-06 22:45:01 +01:00
Ivo De Decker
cd242ff453 read hints earlier
This allow to do quicker test of the code that reads the hints.

Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-06 22:44:56 +01:00
Ivo De Decker
581204696c if outputdir is defined, write dates file there
This introduces a new variable OUTPUTDIR, which overrides the location where
the new dates file is written. This allow to run britney against a read-only
copy of the data.

Signed-off-by: Niels Thykier <niels@thykier.net>
2013-12-06 22:44:50 +01:00
Julien Cristau
7eef861a15 Fix urgency reading to obey 'low'
Set the default to maxint until we've read something.

Reported-by: Ivo De Decker <ivo.dedecker@ugent.be>
Signed-off-by: Julien Cristau <jcristau@debian.org>
2013-12-02 20:48:06 +01:00
Adam D. Barratt
2f753eab70 Only output arch:all packages which correspond to the testing source
If an architecture is marked as fucked, britney's package list for that
architecture may include arch:all packages for an older version. When
outputting the result file, we should not include those packages as
they will lead to import failures.

Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
2013-12-02 09:15:32 +00:00