From 13c34ef8e1bbfedbda34ac8b7a8abb54e58b08ec Mon Sep 17 00:00:00 2001 From: Samir Benmendil Date: Sun, 13 Jan 2013 11:27:31 +0100 Subject: [PATCH] limit graph generation --- bin/graph.py | 32 +++++++++++++++++++++++++++----- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/bin/graph.py b/bin/graph.py index 4521a5c..ccf997f 100755 --- a/bin/graph.py +++ b/bin/graph.py @@ -12,7 +12,7 @@ import re from time import sleep import pygraphviz as pgv -pkgs = os.popen("""LANGUAGE=C pacman -Ssq "^libpng$" """).read().strip().split("\n") +pkgs = os.popen("""LANGUAGE=C pacman -Ssq "^x264" """).read().strip().split("\n") print(pkgs) pkglist = os.popen("LANGUAGE=C pacman -Si").read().strip().split("\n\n") G = pgv.AGraph(directed=True) @@ -27,14 +27,36 @@ for pkg in pkglist: dep = p.sub("",dep) G.add_edge(dep,name) +max_d = 200 + print(succs) all_n = set(G.nodes()) -n = set(pkgs) +n = set() for pkg in pkgs: - n |= set(G.successors(pkg)) - n |= set(G.predecessors(pkg)) + n.add(pkg) + succs = set(G.successors(pkg)) + cnt = 0; + while (cnt < max_d and len(succs) > 0): + cnt += 1 + p = succs.pop() + try: + n.add(p) + succs |= set(G.successors(p)) + except KeyError: + pass + + preds = set(G.predecessors(pkg)) + cnt = 0; + while (cnt < max_d and len(preds) > 0): + cnt += 1 + p = preds.pop() + try: + n.add(p) + preds |= set(G.predecessors(p)) + except KeyError: + pass G.remove_nodes_from(all_n - n) G.write("graph.dot") -#G.draw("graph.svg",prog='dot') +G.draw("graph.svg",prog='dot') -- 2.48.1