Files
libguestfs/generator
Richard W.M. Jones b5fbc7e617 tests: Replace $TEST_FUNCTIONS
Replace strange $TEST_FUNCTIONS variable/expansion thing with
something more like what we use in nbdkit, a simple tests/functions.sh
script that gets sourced into each test script.

Update the common submodule to get:

  commit 8137d47d0e654065391151eb275e3b64f230f6f5
  Author: Richard W.M. Jones <rjones@redhat.com>
  Date:   Thu Feb 13 11:13:55 2025 +0000

    mlcustomize, mltools: Replace $TEST_FUNCTIONS

    TEST_FUNCTIONS is being removed from libguestfs and guestfs-tools (it
    was removed from virt-v2v a while back).  Make the same adjustment in
    the common submodule.

(and some other commits which are not relevant to libguestfs)
2025-02-13 11:15:34 +00:00
..
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2019-09-10 17:52:16 +02:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2020-06-04 13:49:35 +01:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2025-02-13 11:15:34 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2021-12-09 13:46:28 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-05-22 16:42:31 +01:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2019-07-29 10:28:31 +01:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00
2023-02-07 10:50:48 +00:00

This program generates a large amount of code and documentation for
all the daemon actions.

To add a new action there are only two files you need to change,
'actions_*.ml' to describe the interface, and daemon/<somefile>.c to
write the implementation.

After editing these files, build it (make -C generator) to regenerate
all the output files.  'make' will rerun this automatically when
necessary.

IMPORTANT: This program should NOT print any warnings at compile time
or run time.  If it prints warnings, you should treat them as errors.

OCaml tips:

(1) In emacs, install tuareg-mode to display and format OCaml code
correctly.  'vim' comes with a good OCaml editing mode by default.

(2) Read the resources at http://ocaml.org/learn/

(3) A module called 'Foo' is defined in one or two files called
'foo.mli' and 'foo.ml' (NB: lowercase first letter).  The *.mli file,
if present, defines the public interface for the module.  The *.ml
file is the implementation.  If the *.mli file is missing then
everything is exported.

Some notable files in this directory:

  actions_*.ml        The libguestfs API.
  proc_nr.ml          Procedure numbers associated with each API.
  structs.ml          Structures returned by the API.
  c.ml                Generate C API.
  <lang>.ml           Generate bindings for <lang>.
  main.ml             The main generator program.

Note about long descriptions:

When referring to another action, use the format C<guestfs_other>
(ie. the full name of the C function).  This will be replaced as
appropriate in other language bindings.  Apart from that, long
descriptions are just perldoc paragraphs.

Note about extending functions:

In general you cannot change the name, number of required arguments or
type of required arguments of a function, since this would break
backwards compatibility.

You may add another optional argument, *if* the function has >= 1
optional arguments already.  Add it at the end of the list.

You may add optional arguments to a function that doesn't have any.
However you *must* set the once_had_no_optargs flag to true, so that
the relevant backwards compatibility bindings can be added.