mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-11-04 02:24:24 +00:00 
			
		
		
		
	Iterate over binary packages from a source package before iterating over hints
The existing code attempts to "short circuit" processing of binaries in unstable by first checking if the package is subject to a removal hint. This is invalid in Ubuntu for two reasons: - we do not use removal hints for removing packages from the release pocket - there are 11,000 hints in Ubuntu (due to force-reset-test) - searching all hints is time-consuming and not a short-circuit at all. Reorder the code so we only scan the hints if there's otherwise an indication of something to do.
This commit is contained in:
		
							parent
							
								
									32c3f288b0
								
							
						
					
					
						commit
						1f520269de
					
				@ -97,18 +97,6 @@ class ExcuseFinder(object):
 | 
			
		||||
        source_u.section and excuse.set_section(source_u.section)
 | 
			
		||||
        excuse.set_distribution(self.options.distribution)
 | 
			
		||||
 | 
			
		||||
        # if there is a `remove' hint and the requested version is the same as the
 | 
			
		||||
        # version in testing, then stop here and return False
 | 
			
		||||
        # (as a side effect, a removal may generate such excuses for both the source
 | 
			
		||||
        # package and its binary packages on each architecture)
 | 
			
		||||
        for hint in self.hints.search('remove', package=src, version=source_t.version):
 | 
			
		||||
            excuse.add_hint(hint)
 | 
			
		||||
            excuse.policy_verdict = PolicyVerdict.REJECTED_PERMANENTLY
 | 
			
		||||
            excuse.add_verdict_info(excuse.policy_verdict, "Removal request by %s" % (hint.user))
 | 
			
		||||
            excuse.add_verdict_info(excuse.policy_verdict, "Trying to remove package, not update it")
 | 
			
		||||
            self.excuses[excuse.name] = excuse
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        # the starting point is that there is nothing wrong and nothing worth doing
 | 
			
		||||
        anywrongver = False
 | 
			
		||||
        anyworthdoing = False
 | 
			
		||||
@ -249,6 +237,19 @@ class ExcuseFinder(object):
 | 
			
		||||
            # nothing worth doing, we don't add an excuse to the list, we just return false
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        # if there is a `remove' hint and the requested version is the same as the
 | 
			
		||||
        # version in testing, then stop here and return False
 | 
			
		||||
        # (as a side effect, a removal may generate such excuses for both the source
 | 
			
		||||
        # package and its binary packages on each architecture)
 | 
			
		||||
        for hint in self.hints.search('remove', package=src, version=source_t.version):
 | 
			
		||||
            excuse = Excuse(item)
 | 
			
		||||
            excuse.add_hint(hint)
 | 
			
		||||
            excuse.policy_verdict = PolicyVerdict.REJECTED_PERMANENTLY
 | 
			
		||||
            excuse.add_verdict_info(excuse.policy_verdict, "Removal request by %s" % (hint.user))
 | 
			
		||||
            excuse.add_verdict_info(excuse.policy_verdict, "Trying to remove package, not update it")
 | 
			
		||||
            self.excuses[excuse.name] = excuse
 | 
			
		||||
            return False
 | 
			
		||||
 | 
			
		||||
        # there is something worth doing
 | 
			
		||||
        # we assume that this package will be ok, if not invalidated below
 | 
			
		||||
        excuse.policy_verdict = PolicyVerdict.PASS
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user