=head1 NAME

virt-v2v-hacking - 

=head1 DESCRIPTION

First a little history.  Virt-v2v has been through at least two
complete rewrites, so this is probably about the third version (but we
don't intend to rewrite it again).  The previous version was written
in Perl and can be found here:
L<https://git.fedorahosted.org/git/virt-v2v.git>

The current version started out as almost a line-for-line rewrite of
the Perl code in OCaml + C, and it still has a fairly similar
structure.  Therefore if there are details of this code that you don't
understand (especially in the details of guest conversion), checking
the Perl code may help.

The files to start with when reading this code are:

=over 4

=item *

F<types.mli>

=item *

F<v2v.ml>

=back

F<types.mli> defines all the structures used and passed around when
communicating between different bits of the program.  F<v2v.ml>
controls how the program runs in stages.

After studying those files, you may want to branch out into the input
modules (F<input_*>), the output modules (F<output_*>) or the
conversion modules (F<convert_*>).  The input and output modules
define I<-i> and I<-o> options (see the manual).  The conversion
modules define what guest types we can handle and the detailed steps
involved in converting them.

Every other file in this directory is a support module / library of
some sort.  Some code is written in C, especially where we want to use
an external C library such as libxml2.

=head1 SEE ALSO

L<virt-p2v(1)>,
L<virt-v2v(1)>.

=head1 AUTHORS

Richard W.M. Jones

=head1 COPYRIGHT

Copyright (C) 2009-2025 Red Hat Inc.
