summaryrefslogtreecommitdiffstats
path: root/HACKING
blob: 390e4a4f3aa9e15ba5fc1bcf941d06da1b2bfc79 (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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
PLEASE LOOK AT THE TOP OF EACH FILE BEFORE EDITING TO SEE WHETHER IT
IS AUTOMATICALLY GENERATED OR NOT.

Adding a new action
----------------------------------------------------------------------

All action functions are generated automatically, so there are only
two files you need to edit:

(1) src/generator.ml: Add your new action, parameters, description,
etc. to the big list called 'functions' at the top of this file.

(2) Edit/create a C file in daemon/ subdirectory which implements your
'do_action' function.  Take a look at one of the numerous examples
there.

You will need to run src/generator.ml (from the top directory) which
regenerates all the auto-generated files, and then continue with the
ordinary build process.

Formatting
----------------------------------------------------------------------

Try to use GNU / Emacs default formatting, following the convention
used elsewhere in the source.

Please make sure that the code compiles without warnings.

Please test any changes.

Directories
----------------------------------------------------------------------

appliance/
	The qemu appliance, build scripts and so on.

capitests/
	Automated tests of the C API.

contrib/
	Outside contributions, experimental parts.

daemon/
	The daemon that runs inside the guest and carries out actions.

examples/
	The examples.

fish/
	Guestfish (the command-line program / shell)

haskell/
	Haskell bindings.

images/
	Some guest images to test against.  These are gzipped to save
	space.  You have to unzip them before use.

	Also contains some files used by the test suite.

inspector/
	Virtual machine image inspector (virt-inspector).

java/
	Java bindings.

m4/
	M4 macros used by autoconf.

ocaml/
	OCaml bindings.

po/
	Translations.

perl/
	Perl bindings.

python/
	Python bindings.

ruby/
	Ruby bindings.

src/
	Source code to the C library.
	Also contains the crucial generator program.

Debugging
----------------------------------------------------------------------

It's a good idea to use guestfish to try out new commands.

Debugging the daemon is a problem because it runs inside a minimal
qemu environment.  However you can print messages from the daemon, and
they will show up if you use 'guestfish -v'.

Patches
----------------------------------------------------------------------

Submit patches to the fedora-virt mailing list:
http://www.redhat.com/mailman/listinfo/fedora-virt
and CC to rjones@redhat.com

I18N
----------------------------------------------------------------------

We support i18n (gettext anyhow) in the library.

However many messages come from the daemon, and we don't translate
those at the moment.  One reason is that the appliance generally has
all locale files removed from it, because they take up a lot of space.
So we'd have to readd some of those, as well as copying our PO files
into the appliance.

Debugging messages are never translated, since they are intended for
the programmers.