mirror of
				https://git.launchpad.net/~ubuntu-release/britney/+git/britney2-ubuntu
				synced 2025-11-04 10:34:05 +00:00 
			
		
		
		
	Add udeb blocking/unblocking support for b2.
Signed-off-by: Jurij Smakov <jurij@debian.org>
This commit is contained in:
		
							parent
							
								
									cf2bc3cbfb
								
							
						
					
					
						commit
						cda3145d95
					
				@ -50,7 +50,7 @@ HINTS_ZOBEL       = STANDARD force
 | 
			
		||||
HINTS_PKERN       = STANDARD
 | 
			
		||||
HINTS_MADCODER    = STANDARD
 | 
			
		||||
HINTS_NEILM       = STANDARD
 | 
			
		||||
HINTS_FREEZE      = block block-all
 | 
			
		||||
HINTS_FREEZE      = block block-all block-udeb
 | 
			
		||||
HINTS_FTPTEAM     = block
 | 
			
		||||
 | 
			
		||||
# support for old libraries in testing (smooth update)
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										40
									
								
								britney.py
									
									
									
									
									
								
							
							
						
						
									
										40
									
								
								britney.py
									
									
									
									
									
								
							@ -128,6 +128,10 @@ does for the generation of the update excuses.
 | 
			
		||||
    5. If there is a `block' hint for the source package without an
 | 
			
		||||
       `unblock` hint or a `block-all source`, the package is ignored.
 | 
			
		||||
 | 
			
		||||
    6. If there is a `block-udeb' hint for the source package, it will
 | 
			
		||||
       have the same effect as `block', but may only be cancelled by
 | 
			
		||||
       a subsequent `unblock-udeb' hint.
 | 
			
		||||
 | 
			
		||||
    7. If the suite is unstable, the update can go ahead only if the
 | 
			
		||||
       upload happend more then the minimum days specified by the
 | 
			
		||||
       urgency of the upload; if this is not true, the package is
 | 
			
		||||
@ -220,7 +224,7 @@ class Britney:
 | 
			
		||||
    For more documentation on this script, please read the Developers Reference.
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    HINTS_HELPERS = ("easy", "hint", "remove", "block", "unblock", "approve")
 | 
			
		||||
    HINTS_HELPERS = ("easy", "hint", "remove", "block", "block-udeb", "unblock", "unblock-udeb", "approve")
 | 
			
		||||
    HINTS_STANDARD = ("urgent", "age-days") + HINTS_HELPERS
 | 
			
		||||
    HINTS_ALL = ("force", "force-hint", "block-all") + HINTS_STANDARD
 | 
			
		||||
 | 
			
		||||
@ -737,16 +741,16 @@ class Britney:
 | 
			
		||||
                    hints[l[0]].append((who, [k.rsplit("/", 1) for k in l if "/" in k]))
 | 
			
		||||
                elif l[0] in ["block-all"]:
 | 
			
		||||
                    hints[l[0]].extend([(y, who) for y in l[1:]])
 | 
			
		||||
                elif l[0] in ["block"]:
 | 
			
		||||
                elif l[0] in ["block", "block-udeb"]:
 | 
			
		||||
                    hints[l[0]].extend([(y, who) for y in l[1:]])
 | 
			
		||||
                elif l[0] in ["age-days"] and len(l) >= 3 and l[1].isdigit():
 | 
			
		||||
                    days = l[1]
 | 
			
		||||
                    tmp = [tuple([who] + k.rsplit("/", 1)) for k in l[2:] if "/" in k]
 | 
			
		||||
                    hints[l[0]].extend([(p, (v, h, days)) for h, p, v in tmp])
 | 
			
		||||
                elif l[0] in ["remove", "approve", "unblock", "force", "urgent"]:
 | 
			
		||||
                elif l[0] in ["remove", "approve", "unblock", "unblock-udeb", "force", "urgent"]:
 | 
			
		||||
                    hints[l[0]].extend([(k.rsplit("/", 1)[0], (k.rsplit("/", 1)[1], who)) for k in l if "/" in k])
 | 
			
		||||
 | 
			
		||||
        for x in ["approve", "block", "block-all", "unblock", "force", "urgent", "remove", "age-days"]:
 | 
			
		||||
        for x in ["approve", "block", "block-all", "block-udeb", "unblock", "unblock-udeb", "force", "urgent", "remove", "age-days"]:
 | 
			
		||||
            z = {}
 | 
			
		||||
            for a, b in hints[x]:
 | 
			
		||||
                if z.has_key(a) and z[a] != b:
 | 
			
		||||
@ -1189,23 +1193,31 @@ class Britney:
 | 
			
		||||
                excuse.addhtml("Trying to remove package, not update it")
 | 
			
		||||
                update_candidate = False
 | 
			
		||||
 | 
			
		||||
        # check if there is a `block' hint for this package or a `block-all source' hint
 | 
			
		||||
        blocked = None
 | 
			
		||||
        # check if there is a `block' or `block-udeb' hint for this package, or a `block-all source' hint
 | 
			
		||||
        blocked = {}
 | 
			
		||||
        if src in self.hints["block"]:
 | 
			
		||||
            blocked = self.hints["block"][src]
 | 
			
		||||
            blocked["block"] = self.hints["block"][src]
 | 
			
		||||
        elif 'source' in self.hints["block-all"]:
 | 
			
		||||
            blocked = self.hints["block-all"]["source"]
 | 
			
		||||
            blocked["block"] = self.hints["block-all"]["source"]
 | 
			
		||||
 | 
			
		||||
        if src in hints["block-udeb"]:
 | 
			
		||||
            blocked["block-udeb"] = hints["block-udeb"][src]
 | 
			
		||||
 | 
			
		||||
        # if the source is blocked, then look for an `unblock' hint; the unblock request
 | 
			
		||||
        # is processed only if the specified version is correct
 | 
			
		||||
        if blocked:
 | 
			
		||||
            unblock = self.hints["unblock"].get(src,(None,None))
 | 
			
		||||
        # is processed only if the specified version is correct. If a package is blocked
 | 
			
		||||
        # by `block-udeb', then `unblock-udeb' must be present to cancel it.
 | 
			
		||||
        for block_cmd in blocked:
 | 
			
		||||
            unblock_cmd = "un" + block_cmd
 | 
			
		||||
            unblock = self.hints[unblock_cmd].get(src,(None,None))
 | 
			
		||||
            if unblock[0] != None and self.same_source(unblock[0], source_u[VERSION]):
 | 
			
		||||
                    excuse.addhtml("Ignoring request to block package by %s, due to unblock request by %s" % (blocked, unblock[1]))
 | 
			
		||||
                excuse.addhtml("Ignoring %s request by %s, due to %s request by %s" %
 | 
			
		||||
                               (block_cmd, blocked[block_cmd], unblock_cmd, hints[unblock_cmd][src][1]))
 | 
			
		||||
            else:
 | 
			
		||||
                if unblock[0] != None:
 | 
			
		||||
                    excuse.addhtml("Unblock request by %s ignored due to version mismatch: %s" % (unblock[1], unblock[0]))
 | 
			
		||||
                excuse.addhtml("Not touching package, as requested by %s (contact debian-release if update is needed)" % (blocked))
 | 
			
		||||
                    excuse.addhtml("%s request by %s ignored due to version mismatch: %s" %
 | 
			
		||||
                                   (unblock_cmd.capitalize(), hints[unblock_cmd][src][1], hints[unblock_cmd][src][0]))
 | 
			
		||||
                excuse.addhtml("Not touching package due to %s request by %s (contact debian-release if update is needed)" %
 | 
			
		||||
                               (block_cmd, blocked[block_cmd]))
 | 
			
		||||
                update_candidate = False
 | 
			
		||||
 | 
			
		||||
        # if the suite is unstable, then we have to check the urgency and the minimum days of
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user