]> git.rmz.io Git - dotfiles.git/commitdiff
limit graph generation
authorSamir Benmendil <samir.benmendil@gmail.com>
Sun, 13 Jan 2013 10:27:31 +0000 (11:27 +0100)
committerSamir Benmendil <samir.benmendil@gmail.com>
Sun, 13 Jan 2013 10:27:31 +0000 (11:27 +0100)
bin/graph.py

index 4521a5cb9ce357bee0f28f7ea00bc7cc34c37b8d..ccf997f36996bdb8d53f60c6b0af61a67b7d9c14 100755 (executable)
@@ -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')