[libvirt] [PATCH: 0/MANY] Re-arrange files in the source tree
Matthias Bolte
matthias.bolte at googlemail.com
Wed Sep 16 21:04:12 UTC 2009
2009/9/16 Daniel P. Berrange <berrange at redhat.com>:
> This is a followup to
>
> http://www.redhat.com/archives/libvir-list/2009-September/msg00477.html
>
> I am not actually going to spam the list with all the patches, since
> it'd generate a HUGE series of mails.
>
> Instead I have published a branch containing all the patches which you
> can directly pull into your GIT checkout. I recommend you do the
> following set of steps.
>
> - make maintainer-clean
> - git checkout master
> - git pull
> - git remote add -f danb git://gitorious.org/~berrange/libvirt/staging.git
> - git checkout -b rearrange danb/rearrange
>
> You will now have a checkout on a branch called 'rearrange' containing
> all my patches applied.
>
> If you want to go straight into building it, the normal build process
> still applies eg ./autogen && make
I tested this and it compiles without problems.
> I've committed the changes in a large series of steps to make it easier
> to see what's going on at each point. To see the list of changes run
> the following
>
> git log -b berrange/rearrange master..
>
> The changes basically follow everything we discussed in the previous
> thread
>
> I've added a src/README file which describes the split of sub-directories.
> I'll reproduce the content here for convenience
>
> libvirt library code README
> ===========================
>
> The directory provides the bulk of the libvirt codebase. Everything
> except for the libvirtd daemon and client tools. The build uses a
> large number of libtool convenience libraries - one for each child
> directory, and then links them together for the final libvirt.so,
> although some bits get linked directly to libvirtd daemon instead.
>
> The files directly in this directory are supporting the public API
> entry points & data structures.
>
> There are two core shared modules to be aware of:
>
> * util/ - a collection of shared APIs that can be used by any
> code. This directory is always in the include path
> for all things built
>
> * conf/ - APIs for parsing / manipulating all the official XML
> files used by the public API. This directory is only
> in the include path for driver implementation modules
>
>
> Then there are the hypervisor implementations:
>
> * esx/ - VMWare ESX and GSX support using XMLRPC
s/VMWare/VMware/ and s/XMLRPC/SOAP/ or more verbose s/XMLRPC/vSphere
API over SOAP/
> * lxc/ - Linux Native Containers
> * opennebula/ - Open Nebula using XMLRPC
> * openvz/ - OpenVZ containers using cli tools
> * phyp/ - IBM Power Hypervisor using CLI tools over SSH
> * qemu/ - QEMU / KVM using qemu CLI/monitor
> * remote/ - Generic libvirt native RPC client
> * test/ - A "mock" driver for testing
> * uml/ - User Mode Linux
> * vbox/ - Virtual Box using native API
> * xen/ - Xen using hypercalls, XenD SEXPR & XenStore
>
>
> Finally some secondary drivers that are shared for several HVs.
> Currently these are used by LXC, OpenVZ, QEMU, UML and Xen drivers.
> The ESX, OpenNebula, Power Hypervisor, Remote, Test & VirtualBox
> drivers all implement the secondary drivers directly
>
> * interface/ - Host network interface management
> * network/ - Virtual NAT networking
> * node_device/ - Host device enumeration
> * secret/ - Secret management
> * security/ - Mandatory access control drivers
> * storage/ - Storage management drivers
>
>
> Since both the hypervisor and secondary drivers can be built as
> dlopen()able modules, it is *FORBIDDEN* to have build dependancies
s/dependancies/dependencies/
> between these directories. Drivers are only allowed to depend on
> the public API, and the internal APIs in the util/ and conf/
> directories
>
>
>
> For the docs directory, I left the docs/libvirt-{api,refs}.xml files
> in GIT as Daniel requested. I have removed the *.html, devhelp/*.html
> and html/*.html files though. These are all re-generated when doing
> make in the docs directory, and the generated HTML is included in
> the tar.gz when doing make dist. So end users won't have to rebuild
> them, only libvirt developers
>
> The example programs & XML is now all under examples/ with various
> sub-directories.
>
> The qemud/ directory is renamed to daemon/
>
> The python/ directory has its file nameing changed and the genrator
> tweaked so that its more obvious which are generated files and which
> are manually written.
You might want to add the generated libvirt.c and libvirt.h to the
.gitignore file in the python directory.
> virsh has moved to the tools/ directory, and the docs/pki_check.sh
> file has been turned into a real installed tool, tools/virt-pki-validate
> along with man page.
>
> A few minor bugs were fixed along the way (eg bogus include files
> discovered when files were moved) & unused png/gif images in docs/
>
> There should be no FUNCTIONAL change in any of this work though. It
> is a pure re-arrangement of files.
>
> Please try out a build using this 'rearrange' branch from gitorious.
> Since this is a huge change I'd like to apply this to the master repo
> as soon as people can verify its doing the right thing for them.
>
> FWIW, I checked an RPM build and 'make distcheck' too with no issues.
>
> Regards,
> Daniel
Clean and useful rearrangement.
Matthias
More information about the libvir-list
mailing list