X-Git-Url: http://git.annexia.org/?p=libguestfs.git;a=blobdiff_plain;f=contrib%2Fdependency-diagram%2Fdiagram.dot;fp=contrib%2Fdependency-diagram%2Fdiagram.dot;h=83da3fed383cbc3660a458007a7a8da4c46a8acd;hp=0000000000000000000000000000000000000000;hb=90b4e24df6f27c02d3b11d8021b27a197cf18b75;hpb=2f9f3375028a02fdaec62f30e11bacd6524a342c diff --git a/contrib/dependency-diagram/diagram.dot b/contrib/dependency-diagram/diagram.dot new file mode 100644 index 0000000..83da3fe --- /dev/null +++ b/contrib/dependency-diagram/diagram.dot @@ -0,0 +1,100 @@ +/* -*- C -*- */ +/* libguestfs ecosystem dependency diagram + * Copyright (C) 2010 Red Hat Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +/* LAST UPDATE: 2010-04-30. + * + * If the current date is significantly later than the date above, + * then beware this diagram may be out of date. + */ + +/* Note this diagram is greatly simplified. + * + * Some direct dependencies are omitted, if they are implied by + * indirect dependencies. eg. All the tools need perl & + * Sys::Guestfs, but if they have a dependency on Sys::Guestfs::Lib we + * only show that. + * + * Perl libraries which are not part of base perl are not shown (eg. + * XML::Writer). + */ + +digraph G { + /* Top-level libguestfs tools and what they immediately depend on. */ + "virt-cat" -> "Sys::Guestfs::Lib"; + "virt-df" -> "Sys::Guestfs::Lib"; + "virt-edit" -> "Sys::Guestfs::Lib"; + "virt-list-filesystem" -> "Sys::Guestfs::Lib"; + "virt-list-partitions" -> "Sys::Guestfs::Lib"; + "virt-ls" -> "Sys::Guestfs::Lib"; + "virt-make-fs" -> "Sys::Guestfs::Lib"; + "virt-rescue" -> "Sys::Guestfs::Lib"; + "virt-resize" -> "Sys::Guestfs::Lib"; + "virt-tar" -> "Sys::Guestfs::Lib"; + "virt-win-reg" -> "Sys::Guestfs::Lib"; + "virt-win-reg" -> "Win::Hivex"; + "virt-win-reg" -> "Win::Hivex::Regedit"; + + "virt-inspector" -> "Sys::Guestfs::Lib"; + + guestfish -> libguestfs; + guestfish -> "virt-inspector"; /* to implement -i option */ + + guestmount -> libguestfs; + guestmount -> libfuse; + + /* virt-v2v (greatly simplified) */ + "virt-v2v" -> "Sys::Guestfs"; + "virt-v2v" -> "Sys::Guestfs::Lib"; + "virt-v2v" -> "Sys::VirtV2V"; + "Sys::VirtV2V" [label="Sys::VirtV2V\nMany dependencies\nnot shown"]; + + /* Perl bindings and libraries for libguestfs. */ + "Sys::Guestfs" -> libguestfs; + "Sys::Guestfs" -> perl; + "Sys::Guestfs" [label="Sys::Guestfs\nPerl bindings for libguestfs"]; + "Sys::Guestfs::Lib" -> "Sys::Guestfs"; + "Sys::Guestfs::Lib" -> "Sys::Virt"; + "Sys::Guestfs::Lib" -> "Win::Hivex"; + "Sys::Guestfs::Lib" [label="Sys::Guestfs::Lib\nImage inspection and\nother useful functions"]; + + /* Libguestfs C library. */ + libguestfs -> appliance -> "qemu or KVM"; + libguestfs [label="libguestfs\nThe C library"]; + + /* Top-level hivex tools. */ + hivexregedit -> "Win::Hivex"; + hivexregedit -> "Win::Hivex::Regedit"; + hivexsh -> libhivex; + hivexml -> libhivex; + hivexget -> hivexsh; /* This tool is obsolete now. */ + + /* Perl bindings and libraries for hivex. */ + "Win::Hivex" -> libhivex; + "Win::Hivex" -> perl; + "Win::Hivex" [label="Win::Hivex\nPerl bindings for hivex"]; + "Win::Hivex::Regedit" [label="Win::Hivex::Regedit\nregedit import/export"]; + + /* Hivex C library. */ + libhivex [label="hivex\nThe C library"]; + + /* libvirt. */ + "Sys::Virt" -> libvirt; + "Sys::Virt" -> perl; + "Sys::Virt" [label="Sys::Virt\nPerl bindings for libvirt"]; +}