summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Pitt <martin.pitt@ubuntu.com>2016-10-12 14:33:47 (GMT)
committerMartin Pitt <martin.pitt@ubuntu.com>2016-10-12 14:33:47 (GMT)
commiteac1bf30a9615af37f11a13c9863433c8195d4de (patch)
tree80da65acadad7e4a175dd504997f550fc6536636
parent2e3a6c2cdb4af91237718184782389c2ff801c32 (diff)
Re-fix merging of source packagespre-rebase-2016-10-25
We need complete copies of the SourcePackage objects, as we might later find some binaries which are only in unstable. Traceback (most recent call last): File "/home/ubuntu-archive/proposed-migration/code/b2/britney.py", line 3290, in <module> Britney().main() File "/home/ubuntu-archive/proposed-migration/code/b2/britney.py", line 3261, in main self.write_excuses() File "/home/ubuntu-archive/proposed-migration/code/b2/britney.py", line 1963, in write_excuses if should_upgrade_srcarch(pkg, arch, 'unstable'): File "/home/ubuntu-archive/proposed-migration/code/b2/britney.py", line 1534, in should_upgrade_srcarch False) File "/home/ubuntu-archive/proposed-migration/code/b2/britney.py", line 2294, in _compute_groups if binaries_t[parch][0][binary].source != source_name: KeyError: 'kicad'
-rwxr-xr-xbritney.py5
-rwxr-xr-xtests/test_autopkgtest.py15
2 files changed, 19 insertions, 1 deletions
diff --git a/britney.py b/britney.py
index af8af0f..9d42876 100755
--- a/britney.py
+++ b/britney.py
@@ -188,6 +188,7 @@ import os
import sys
import time
import optparse
+import copy
import apt_pkg
@@ -1040,9 +1041,11 @@ class Britney(object):
"""Merge sources from `source' into partial suite `target'."""
source_sources = self.sources[source]
target_sources = self.sources[target]
+ # we need complete copies here, as we might later find some binaries
+ # which are only in unstable
for pkg, value in source_sources.items():
if pkg not in target_sources:
- target_sources[pkg] = value
+ target_sources[pkg] = copy.deepcopy(value)
def merge_binaries(self, source, target, arch):
"""Merge `arch' binaries from `source' into partial suite `target'."""
diff --git a/tests/test_autopkgtest.py b/tests/test_autopkgtest.py
index e563689..00af277 100755
--- a/tests/test_autopkgtest.py
+++ b/tests/test_autopkgtest.py
@@ -873,6 +873,21 @@ class T(TestBase):
self.assertEqual(self.pending_requests, {})
self.assertEqual(self.amqp_requests, set())
+ def test_same_version_binary_in_unstable(self):
+ '''binary from new architecture in unstable with testing version'''
+
+ # i386 is in testing already, but amd64 just recently built and is in unstable
+ self.data.add_src('brown', False, {'Testsuite': 'autopkgtest'})
+ self.data.add('brown', False, {'Architecture': 'i386'}, add_src=False)
+ self.data.add('brown', True, {'Architecture': 'amd64'}, add_src=False)
+
+ exc = self.do_test(
+ # we need some other package to create unstable Sources
+ [('lightgreen', {'Version': '2'}, 'autopkgtest')],
+ {'brown': (True, {})}
+ )[1]
+ self.assertEqual(exc['brown']['item-name'], 'brown/amd64')
+
def test_package_pair_running(self):
'''Two packages in unstable that need to go in together (running)'''