On Friday, 21 July 2017 22:36:04 CEST Richard W.M. Jones wrote:
v1 -> v2:
- [lots of changes]
Thanks for them.
Requested, but not done for various reasons:
- Removing GUESTFSD_EXT_CMD. This is still being used by OpenSUSE, so
we'll have to think of a better mechanism for it. Something like
‘guestfsd --dump-commands’ may work better.
Note I was not suggesting to remove it unconditionally, but that the
C -> OCaml conversion would have lost some of them -- thus find a
solution to make the list of used tools still coherent (i.e for both
C and OCaml code), or remove it altogether.
This is now dealt by removing it.
- Generating:
external available : unit -> bool = "guestfs_int_daemon_optgroup..."
etc. It's hard to generate these functions and have them added to the
correct modules (since the OCaml modules are hand-written, and it's
awkward to include generated bits in them).
My suggestion was to create a single OptGroups module, with all the
foo_available functions. Instead of all the functions, another option
could be like the following:
type available_feature =
| ACL
| AUGEAS
...
val available : available_feature -> bool
Other notes:
- daemon must be linked to -ldl -lm because the OCaml runtime
(libasmrun.so) depends on both.
I don't understand, at least here it links with them:
$ readelf -d /usr/lib64/ocaml/libasmrun_shared.so | grep NEEDED
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libdl.so.2]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
So unless we use libdl and libm explicitly, we don't need to care about
which libraries are used by libasmrun.so. Am I missing anything here?
- Structs must be repeated in *.mli files because you can't use
OCaml
‘include’ to pick up single structs from another module. However
the structs are still type checked by the compiler, so we cannot
write incorrect / untyped code this way.
Not even by referencing the module? Ie. Structs.btrfsvolumeinfo
(or so), like done eg in builder/*_parser.mli?
--
Pino Toscano