summaryrefslogtreecommitdiff
path: root/README-hacking
blob: 7da940eb1397c203f5bbb1b9ebb53b67ea41f216 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-*- outline -*-

These notes intend to help people working on the checked-out sources.
These requirements do not apply when building from a distribution tarball.
See also docs/hacking.html (after building libvirt using the information
included in this file) for more detailed contribution guidelines.

* Requirements

We've opted to keep only the highest-level sources in the GIT repository.
This eases our maintenance burden, (fewer merges etc.), but imposes more
requirements on anyone wishing to build from the just-checked-out sources.
Note the requirements to build the released archive are much less and
are just the requirements of the standard configure && make procedure.
Specific development tools and versions will be checked for and listed by
the bootstrap script.

Valgrind <http://valgrind.org/> is also highly recommended, if
Valgrind supports your architecture.

While building from a just-cloned source tree may require installing a
few prerequisites, later, a plain `git pull && make' should be sufficient.

* First GIT checkout

You can get a copy of the source repository like this:

        $ git clone https://libvirt.org/git/libvirt.git
        $ cd libvirt

As an optional step, if you already have a copy of the gnulib git
repository on your hard drive, then you can use it as a reference to
reduce download time and disk space requirements:

        $ export GNULIB_SRCDIR=/path/to/gnulib

We require to have the build directory different than the source directory:

        $ mkdir build && cd build

The next step is to get all required pieces from gnulib,
to run autoreconf, and to invoke ../autogen.sh:

        $ ../autogen.sh

And there you are!  Just

        $ make
        $ make check

At this point, there should be no difference between your local copy,
and the GIT master copy:

        $ cd ..
        $ git diff

should output no difference.

Enjoy!

Local Variables:
indent-tabs-mode: nil
End: