mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-11-04 10:34:05 +00:00 
			
		
		
		
	suiteloader: Handle NBS
If we have this situation - Binary in target taken over by new source - Not cleaned up yet - New source updated in source suite We can have *three* copies of a source package visible to britney at once. Handle this case by recording the source package a pkgid was seen in before, and trying to remove from that and the current source.
This commit is contained in:
		
							parent
							
								
									67b9f56741
								
							
						
					
					
						commit
						fe748849e0
					
				@ -304,6 +304,8 @@ class DebMirrorLikeSuiteContentLoader(SuiteContentLoader):
 | 
			
		||||
        if packages is None:
 | 
			
		||||
            packages = {}
 | 
			
		||||
 | 
			
		||||
        added_old_binaries = {}
 | 
			
		||||
 | 
			
		||||
        all_binaries = self._all_binaries
 | 
			
		||||
 | 
			
		||||
        tag_file = apt_pkg.TagFile(filename)
 | 
			
		||||
@ -329,7 +331,21 @@ class DebMirrorLikeSuiteContentLoader(SuiteContentLoader):
 | 
			
		||||
                    continue
 | 
			
		||||
                old_pkg_id = old_pkg_data.pkg_id
 | 
			
		||||
                old_src_binaries = srcdist[old_pkg_data.source].binaries
 | 
			
		||||
                old_src_binaries.remove(old_pkg_id)
 | 
			
		||||
 | 
			
		||||
                prev_src = added_old_binaries.get(old_pkg_id, old_pkg_data.source)
 | 
			
		||||
                ps = srcdist[prev_src]
 | 
			
		||||
                ps.binaries.remove(old_pkg_id)
 | 
			
		||||
                try:
 | 
			
		||||
                    del added_old_binaries[old_pkg_id]
 | 
			
		||||
                except KeyError:
 | 
			
		||||
                    pass
 | 
			
		||||
 | 
			
		||||
                # Is this a take-over, i.e. is old_pkg_data pointing to the wrong source now?
 | 
			
		||||
                cursrc_binaries = srcdist[source].binaries
 | 
			
		||||
                if old_pkg_id in cursrc_binaries:
 | 
			
		||||
                    self.logger.info("Removing %s from %s, taken over & NBS?", old_pkg_id, source)
 | 
			
		||||
                    cursrc_binaries.remove(old_pkg_id)
 | 
			
		||||
 | 
			
		||||
                # This may seem weird at first glance, but the current code rely
 | 
			
		||||
                # on this behaviour to avoid issues like #709460.  Admittedly it
 | 
			
		||||
                # is a special case, but Britney will attempt to remove the
 | 
			
		||||
@ -338,6 +354,7 @@ class DebMirrorLikeSuiteContentLoader(SuiteContentLoader):
 | 
			
		||||
                # and the version, so it is not particularly resilient.
 | 
			
		||||
                if pkg_id not in old_src_binaries:
 | 
			
		||||
                    old_src_binaries.add(pkg_id)
 | 
			
		||||
                    added_old_binaries[pkg_id] = old_pkg_data.source
 | 
			
		||||
 | 
			
		||||
            # Merge Pre-Depends with Depends and Conflicts with
 | 
			
		||||
            # Breaks. Britney is not interested in the "finer
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user