def removeRelation(self, node, next, quiet=False): """Drop the "RpmPackage node requires RpmPackage next" arc.""" if not quiet: txt = "Removing" if self[node].pre[next]: txt = "Zapping" log.debug4("%s requires for %s from %s", txt, next.getNEVRA(), node.getNEVRA()) del self[node].pre[next] del self[next].post[node]
def processLeafNodes(self, order, leaflist=None): """Move topologically sorted "trailing" packages from orderer.RpmRelations relations to start of list.""" if leaflist is None: leaflist = self # loop over all pkgs # do a bucket sort leafs = {} # len(post) -> [leaf pkgs] for pkg in leaflist: if not self[pkg].pre: post = len(self[pkg].post) leafs.setdefault(post, []).append(pkg) if leafs: max_post = max(leafs) while leafs: # remove leaf node leaf = leafs[max_post].pop() rels = self[leaf] log.debug4("%s", leaf.getNEVRA()) self.collect(leaf, order) # check post nodes if they got a leaf now new_max = max_post for pkg in rels.post: if not self[pkg].pre: post = len(self[pkg].post) leafs.setdefault(post, []).append(pkg) if post > new_max: new_max = post # select new (highest) bucket if not leafs[max_post]: del leafs[max_post] if leafs: max_post = max(leafs) else: max_post = new_max
def printRel(self): """Print relations.""" if not log.isDebugLoggingHere(log.DEBUG4): return log.debug4("\t==== relations (%d) " "==== #pre-relations #post-relations " "package pre-relation-packages, '*' marks prereq's", len(self)) for pkg in self: rel = self[pkg] pre = "" if len(rel.pre) > 0: pre = ": " for p in rel.pre: if len(pre) > 2: pre += ", " if rel.pre[p]: pre += "*" # prereq pre += p.getNEVRA() log.debug4("\t%d %d %s%s", len(rel.pre), len(rel.post), pkg.getNEVRA(), pre) log.debug4("\t==== relations ====")
def printRel(self): """Print relations.""" if not log.isDebugLoggingHere(log.DEBUG4): return log.debug4( "\t==== relations (%d) " "==== #pre-relations #post-relations " "package pre-relation-packages, '*' marks prereq's", len(self)) for pkg in self: rel = self[pkg] pre = "" if len(rel.pre) > 0: pre = ": " for p in rel.pre: if len(pre) > 2: pre += ", " if rel.pre[p]: pre += "*" # prereq pre += p.getNEVRA() log.debug4("\t%d %d %s%s", len(rel.pre), len(rel.post), pkg.getNEVRA(), pre) log.debug4("\t==== relations ====")