Package: release.debian.org
Followup-For: Bug #859566
User: release.debian....@packages.debian.org
Usertags: britney

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Because this bug is hampering migration of fpc with every new upstream release
and lazarus with every minor upstream update, I spent some time on
investigating the issue in britney. As always with nicely written code, the fix
needs minimal changes.

Travis¹ already ran on my push to github², but it seems that the test-suite is
out-of-date (pun intended) on the current state of britney. I'll fix the
test-suite ASAP. I manually tested the runtests framework and I had no
regressions there and as expected the current two "expected failure" test cases
for this bug now pass.

Please consider my patch to enable migration of fpc and lazarus without human
interaction.

Paul

¹ https://travis-ci.org/Debian/britney2/
² 
https://github.com/Debian/britney2/commit/0b58a313cbc8db17befbff36907af4fbd6f663d5

- -- System Information:
Debian Release: buster/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing'), (200, 'testing'), (50, 
'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.13.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US:en (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEWLZtSHNr6TsFLeZynFyZ6wW9dQoFAloPLYsACgkQnFyZ6wW9
dQqnPAf/QmXhbNQN8Dz/e/HUb1G3zaWrRJMEQXM1vU6I/d9W/PiiUL8+PGXGP+pm
3Jk62YwKeRD5Mg8rIQETcP7k0fgfz420dHSTGN7oxrx9srtdo4mGcPFdqaGvUUAk
Oi82lx+V/gylHndbOi0J0BYS6ZOdevvxSqGmidbQd2cVvNjqpDidfw+a526kGdJg
Pikc/G1B4qlCTmg7Hdyt7Pxk2mT+gwa25h87LXLeWG0uqCm1zVxAiY+9G5cKSe0H
4cXIudEukqHytQX3XfQIirYSrHmpFjXrLBfvENR6vCB6O/b8SjMUFAZ14jb+/AD8
jXHh4xnx8+Go6vCJCW5YzWY9dd/bVQ==
=QNEr
-----END PGP SIGNATURE-----
>From 0b58a313cbc8db17befbff36907af4fbd6f663d5 Mon Sep 17 00:00:00 2001
From: Paul Gevers <elb...@debian.org>
Date: Fri, 17 Nov 2017 18:20:43 +0100
Subject: [PATCH] Treat arch:all nearly as regular arch when determining
 out-of-dateness

Closes #859566
---
 britney.py | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/britney.py b/britney.py
index 4573e5b..e5f6424 100755
--- a/britney.py
+++ b/britney.py
@@ -1370,21 +1370,28 @@ class Britney(object):
 
         # at this point, we check the status of the builds on all the 
supported architectures
         # to catch the out-of-date ones
-        pkgs = {src: ["source"]}
         all_binaries = self.all_binaries
-        for arch in self.options.architectures:
+        archs_to_consider = list(self.options.architectures)
+        archs_to_consider.append('all')
+        for arch in archs_to_consider:
             oodbins = {}
             uptodatebins = False
             # for every binary package produced by this source in the suite 
for this architecture
-            for pkg_id in sorted(x for x in source_u.binaries if 
x.architecture == arch):
+            if arch == 'all':
+                consider_binaries = source_u.binaries
+            else:
+                consider_binaries = sorted(x for x in source_u.binaries if 
x.architecture == arch)
+            for pkg_id in consider_binaries:
                 pkg = pkg_id.package_name
-                if pkg not in pkgs: pkgs[pkg] = []
-                pkgs[pkg].append(arch)
 
                 # retrieve the binary package and its source version
                 binary_u = all_binaries[pkg_id]
                 pkgsv = binary_u.source_version
 
+                # arch:all packages are treated separately from arch:arch
+                if binary_u.architecture != arch:
+                    continue
+
                 # if it wasn't built by the same source, it is out-of-date
                 # if there is at least one binary on this arch which is
                 # up-to-date, there is a build on this arch
@@ -1395,10 +1402,7 @@ class Britney(object):
                     excuse.add_old_binary(pkg, pkgsv)
                     continue
                 else:
-                    # if the binary is arch all, it doesn't count as
-                    # up-to-date for this arch
-                    if binary_u.architecture == arch:
-                        uptodatebins = True
+                    uptodatebins = True
 
                 # if the package is architecture-dependent or the current arch 
is `nobreakall'
                 # find unsatisfied dependencies for the binary package
-- 
2.15.0

Reply via email to