X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=HACKING;h=f661d1d694abd6a703ab941463ad186bbf919300;hb=17233ce2113aa730752ae3420cc209b2a72ab616;hp=7dbc360e1f48ba34d37b63be78d5e10175020656;hpb=c0e4b5dc693cefdc81a4ec7cc1073a2cae371803;p=libguestfs.git diff --git a/HACKING b/HACKING index 7dbc360..f661d1d 100644 --- a/HACKING +++ b/HACKING @@ -7,8 +7,8 @@ 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. +(1) generator/generator_actions.ml: Add your new action, parameters, +description, etc. to the big list 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 @@ -69,7 +69,11 @@ appliance/ The qemu appliance, build scripts and so on. capitests/ - Automated tests of the C API. + Automated tests of the C API. See "Tests" below. + +cat/ + The 'virt-cat', 'virt-filesystems' and 'virt-ls' commands and + documentation. contrib/ Outside contributions, experimental parts. @@ -80,6 +84,9 @@ csharp/ daemon/ The daemon that runs inside the guest and carries out actions. +df/ + 'virt-df' command and documentation. + examples/ The examples. @@ -89,12 +96,18 @@ fish/ fuse/ FUSE (userspace filesystem) built on top of libguestfs. +generator/ + The crucially important generator, used to automatically + generate large amounts of boilerplate C code for things like + RPC and bindings. + haskell/ Haskell bindings. -hivex/ - Hive extraction library, for reading Windows Registry files. - See hivex/README for more details. +hivex/ [removed in 1.0.85] + This used to contain the hivex library for reading and + writing Windows Registry binary hive files. This is now + available as a separate upstream project. images/ Some guest images to test against. These are gzipped to save @@ -114,8 +127,17 @@ m4/ ocaml/ OCaml bindings. +php/ + PHP bindings. + po/ - Translations. + Translations of simple gettext strings. For translations of + longer documents, see po-docs/. + +po-docs/ + The build infrastructure and PO files for translations of + manpages and POD files. Eventually this will be combined + with the po/ directory, but that is rather complicated. perl/ Perl bindings. @@ -126,22 +148,56 @@ python/ regressions/ Regression tests. +rescue/ + 'virt-rescue' command and documentation. + ruby/ Ruby bindings. tools/ - Command line tools like virt-cat, virt-df, virt-edit and more. - In versions <= 1.0.73 these were all in separate directories - like cat/, df/, edit/, but since then we moved them all into - one directory to simplify builds. + Command line tools written in Perl (virt-resize and more). src/ Source code to the C library. - Also contains the crucial generator program. test-tool/ Interactive qemu/kernel test tool. +Tests +---------------------------------------------------------------------- + +You can supply zero or as many tests as you want per API call. + +Note that the test environment has 3 block devices, of size 500MB, +50MB and 10MB (respectively /dev/sda, /dev/sdb, /dev/sdc), and +a fourth ISO block device with some known files on it (/dev/sdd). + +Note for partitioning purposes, the 500MB device has 1015 cylinders. +Number of cylinders was 63 for IDE emulated disks with precisely +the same size. How exactly this is calculated is a mystery. + +The ISO block device (/dev/sdd) comes from images/test.iso. + +To be able to run the tests in a reasonable amount of time, +the virtual machine and block devices are reused between tests. +So don't try testing kill_subprocess :-x + +Between each test we blockdev-setrw, umount-all, lvm-remove-all. + +Don't assume anything about the previous contents of the block +devices. Use 'Init*' to create some initial scenarios. + +You can add a prerequisite clause to any individual test. This +is a run-time check, which, if it fails, causes the test to be +skipped. Useful if testing a command which might not work on +all variations of libguestfs builds. A test that has prerequisite +of 'Always' is run unconditionally. + +In addition, packagers can skip individual tests by setting the +environment variables: eg: + SKIP_TEST__=1 SKIP_TEST_COMMAND_3=1 (skips test #3 of command) + SKIP_TEST_=1 SKIP_TEST_ZEROFREE=1 (skips all zerofree tests) + Debugging ----------------------------------------------------------------------