modgraph.py 868 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #!/usr/bin/env python3
  2. """
  3. display the kernel module dependencies
  4. author: Michael Hohn <[email protected]>
  5. based on: modgraph.tcl by John Ellson <[email protected]>
  6. """
  7. import gv # pylint: disable=import-error
  8. with open("/proc/modules", "rt", encoding="utf-8") as mod:
  9. modules = mod.readlines()
  10. G = gv.digraph("G")
  11. N = gv.protonode(G)
  12. E = gv.protoedge(G)
  13. gv.setv(G, "rankdir", "LR")
  14. gv.setv(G, "nodesep", "0.05")
  15. gv.setv(N, "shape", "box")
  16. gv.setv(N, "width", "0")
  17. gv.setv(N, "height", "0")
  18. gv.setv(N, "margin", ".03")
  19. gv.setv(N, "fontsize", "8")
  20. gv.setv(N, "fontname", "helvetica")
  21. gv.setv(E, "arrowsize", ".4")
  22. for rec in modules:
  23. fields = rec.split(" ")
  24. n = gv.node(G, fields[0])
  25. for usedby in fields[3].split(","):
  26. if usedby not in ("-", ""):
  27. gv.edge(n, gv.node(G, usedby))
  28. gv.layout(G, "dot")
  29. gv.render(G, "xlib")