mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-11-04 10:34:05 +00:00 
			
		
		
		
	When auto-hinting, also try a "minimal" package set
The minimal set is comprised of only the first level of (reverse) dependencies, before any further iterations of packages are added to the set. In some cases, the result of the full iteration will contain packages which cause problems when migrated but the minimal set, although possibly a less optimal solution, may be able to migrate successfully. It is assumed that migrating the larger set of packages will be preferred if possible, so minimal sets are tried later. Signed-off-by: Adam D. Barratt <adam@adam-barratt.org.uk>
This commit is contained in:
		
							parent
							
								
									4235b92460
								
							
						
					
					
						commit
						b9ac7af03b
					
				
							
								
								
									
										36
									
								
								britney.py
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								britney.py
									
									
									
									
									
								
							@ -2593,6 +2593,7 @@ class Britney:
 | 
			
		||||
 | 
			
		||||
        # loop on them
 | 
			
		||||
        candidates = []
 | 
			
		||||
        mincands = []
 | 
			
		||||
        for e in excuses:
 | 
			
		||||
            excuse = excuses[e]
 | 
			
		||||
            if e in self.sources['testing'] and self.sources['testing'][e][VERSION] == excuse.ver[1]:
 | 
			
		||||
@ -2603,29 +2604,34 @@ class Britney:
 | 
			
		||||
                    candidates.append(hint.items())
 | 
			
		||||
            else:
 | 
			
		||||
                items = [ (e, excuse.ver[1]) ]
 | 
			
		||||
                looped = False
 | 
			
		||||
                for item, ver in items:
 | 
			
		||||
                    # excuses which depend on "item" or are depended on by it
 | 
			
		||||
                    items.extend( [ (x, excuses[x].ver[1]) for x in excuses if \
 | 
			
		||||
                       (item in excuses[x].deps or x in excuses[item].deps) \
 | 
			
		||||
                       and (x, excuses[x].ver[1]) not in items ] )
 | 
			
		||||
                    if not looped and len(items) > 1:
 | 
			
		||||
                        mincands.append(items[:])
 | 
			
		||||
                    looped = True
 | 
			
		||||
                if len(items) > 1:
 | 
			
		||||
                    candidates.append(items)
 | 
			
		||||
 | 
			
		||||
        to_skip = []
 | 
			
		||||
        for i in range(len(candidates)):
 | 
			
		||||
            for j in range(i+1, len(candidates)):
 | 
			
		||||
                if i in to_skip or j in to_skip:
 | 
			
		||||
                    # we already know this list isn't interesting
 | 
			
		||||
                    continue
 | 
			
		||||
                elif frozenset(candidates[i]) >= frozenset(candidates[j]):
 | 
			
		||||
                    # j is a subset of i; ignore it
 | 
			
		||||
                    to_skip.append(j)
 | 
			
		||||
                elif frozenset(candidates[i]) <= frozenset(candidates[j]):
 | 
			
		||||
                    # i is a subset of j; ignore it
 | 
			
		||||
                    to_skip.append(i)
 | 
			
		||||
        for i in range(len(candidates)):
 | 
			
		||||
            if i not in to_skip:
 | 
			
		||||
                self.do_hint("easy", "autohinter", candidates[i])
 | 
			
		||||
        for l in [ candidates, mincands ]:
 | 
			
		||||
            to_skip = []
 | 
			
		||||
            for i in range(len(l)):
 | 
			
		||||
                for j in range(i+1, len(l)):
 | 
			
		||||
                    if i in to_skip or j in to_skip:
 | 
			
		||||
                        # we already know this list isn't interesting
 | 
			
		||||
                        continue
 | 
			
		||||
                    elif frozenset(l[i]) >= frozenset(l[j]):
 | 
			
		||||
                        # j is a subset of i; ignore it
 | 
			
		||||
                        to_skip.append(j)
 | 
			
		||||
                    elif frozenset(l[i]) <= frozenset(l[j]):
 | 
			
		||||
                        # i is a subset of j; ignore it
 | 
			
		||||
                        to_skip.append(i)
 | 
			
		||||
            for i in range(len(l)):
 | 
			
		||||
                if i not in to_skip:
 | 
			
		||||
                    self.do_hint("easy", "autohinter", l[i])
 | 
			
		||||
 | 
			
		||||
    def old_libraries(self):
 | 
			
		||||
        """Detect old libraries left in testing for smooth transitions
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user