vizdeps: Add a script to help visualize our package dependencies

Change-Id: Ia8206ddecddb01a8344c63825b1974fe555bd204
diff --git a/vizdeps.py b/vizdeps.py
new file mode 100755
index 0000000..c4d8247
--- /dev/null
+++ b/vizdeps.py
@@ -0,0 +1,34 @@
+#!/usr/bin/python
+
+import deb822
+
+import os
+import sys
+
+NODE_TEMPLATE = """"{0}" [shape=box, label="{0}"];"""
+EDGE_TEMPLATE = """"{0}" -> "{1}";"""
+
+if __name__ == '__main__':
+    rootdir = os.getenv("ROOTDIR")
+    if rootdir is None:
+        print("ROOTDIR is not defined. Did you source build/setup.sh?")
+        sys.exit(1)
+
+    print("""digraph package_dependencies {""")
+
+    packagerootdir = rootdir + '/packages'
+    for packagedir in os.listdir(packagerootdir):
+        with open(packagerootdir + '/' + packagedir + '/debian/control') as fp:
+            for paragraph in deb822.Deb822.iter_paragraphs(fp):
+                if paragraph.has_key('Package'):
+                    package_name = paragraph['Package']
+                    print(NODE_TEMPLATE.format(package_name))
+                    if paragraph.has_key('Depends'):
+                        for depended_package in paragraph['Depends'].split(','):
+                            depended_package = depended_package.rstrip('\n')
+                            depended_package = depended_package.strip('\n')
+                            depended_package = depended_package.strip(' ')
+                            depended_package = depended_package.rstrip(' ')
+                            print(EDGE_TEMPLATE.format(package_name, depended_package))
+
+    print("""}""")