Pino Toscano
2019-Sep-05 08:47 UTC
[Libguestfs] [PATCH 0/1] Build fix for future OCaml 4.09
This is a simple fix for building also with the upcoming OCaml 4.09, which has a slight API change in the C library. This does not cover embedded copies such as ocaml-augeas, and ocaml-libvirt, which are being fixed separately, and will then be synchronized. Pino Toscano (1): ocaml: make const the return value of caml_named_value() common/mlpcre/pcre-c.c | 2 +- common/mltools/uri-c.c | 2 +- common/mlvisit/visit-c.c | 2 +- generator/daemon.ml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) -- 2.21.0
Pino Toscano
2019-Sep-05 08:47 UTC
[Libguestfs] [PATCH 1/1] ocaml: make const the return value of caml_named_value()
With OCaml >= 4.09 caml_named_value() returns a const value *, so keep the constness to build also in this case. --- common/mlpcre/pcre-c.c | 2 +- common/mltools/uri-c.c | 2 +- common/mlvisit/visit-c.c | 2 +- generator/daemon.ml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/mlpcre/pcre-c.c b/common/mlpcre/pcre-c.c index be054a004..62a6dd5da 100644 --- a/common/mlpcre/pcre-c.c +++ b/common/mlpcre/pcre-c.c @@ -73,7 +73,7 @@ init (void) static void raise_pcre_error (const char *msg, int errcode) { - value *exn = caml_named_value ("PCRE.Error"); + const value *exn = caml_named_value ("PCRE.Error"); value args[2]; args[0] = caml_copy_string (msg); diff --git a/common/mltools/uri-c.c b/common/mltools/uri-c.c index 2a8837cd9..db6fe23fc 100644 --- a/common/mltools/uri-c.c +++ b/common/mltools/uri-c.c @@ -47,7 +47,7 @@ guestfs_int_mllib_parse_uri (value argv /* arg value, not an array! */) r = parse_uri (String_val (argv), &uri); if (r == -1) { - value *exn = caml_named_value ("URI.Parse_failed"); + const value *exn = caml_named_value ("URI.Parse_failed"); caml_raise (*exn); } diff --git a/common/mlvisit/visit-c.c b/common/mlvisit/visit-c.c index 7137c4998..804aabc9d 100644 --- a/common/mlvisit/visit-c.c +++ b/common/mlvisit/visit-c.c @@ -53,7 +53,7 @@ value guestfs_int_mllib_visit (value gv, value dirv, value fv) { CAMLparam3 (gv, dirv, fv); - value *visit_failure_exn; + const value *visit_failure_exn; guestfs_h *g = (guestfs_h *) (intptr_t) Int64_val (gv); struct visitor_function_wrapper_args args; /* The dir string could move around when we call the diff --git a/generator/daemon.ml b/generator/daemon.ml index a4e136aaa..b67c4d20b 100644 --- a/generator/daemon.ml +++ b/generator/daemon.ml @@ -746,7 +746,7 @@ let generate_daemon_caml_stubs () let nr_args = List.length args_do_function in pr "{\n"; - pr " static value *cb = NULL;\n"; + pr " static const value *cb = NULL;\n"; pr " CAMLparam0 ();\n"; pr " CAMLlocal2 (v, retv);\n"; pr " CAMLlocalN (args, %d);\n" -- 2.21.0
Richard W.M. Jones
2019-Sep-05 09:01 UTC
Re: [Libguestfs] [PATCH 1/1] ocaml: make const the return value of caml_named_value()
On Thu, Sep 05, 2019 at 10:47:42AM +0200, Pino Toscano wrote:> With OCaml >= 4.09 caml_named_value() returns a const value *, so keep > the constness to build also in this case. > --- > common/mlpcre/pcre-c.c | 2 +- > common/mltools/uri-c.c | 2 +- > common/mlvisit/visit-c.c | 2 +- > generator/daemon.ml | 2 +- > 4 files changed, 4 insertions(+), 4 deletions(-) > > diff --git a/common/mlpcre/pcre-c.c b/common/mlpcre/pcre-c.c > index be054a004..62a6dd5da 100644 > --- a/common/mlpcre/pcre-c.c > +++ b/common/mlpcre/pcre-c.c > @@ -73,7 +73,7 @@ init (void) > static void > raise_pcre_error (const char *msg, int errcode) > { > - value *exn = caml_named_value ("PCRE.Error"); > + const value *exn = caml_named_value ("PCRE.Error"); > value args[2]; > > args[0] = caml_copy_string (msg); > diff --git a/common/mltools/uri-c.c b/common/mltools/uri-c.c > index 2a8837cd9..db6fe23fc 100644 > --- a/common/mltools/uri-c.c > +++ b/common/mltools/uri-c.c > @@ -47,7 +47,7 @@ guestfs_int_mllib_parse_uri (value argv /* arg value, not an array! */) > > r = parse_uri (String_val (argv), &uri); > if (r == -1) { > - value *exn = caml_named_value ("URI.Parse_failed"); > + const value *exn = caml_named_value ("URI.Parse_failed");In my version I got rid of the useless local variable. Rich.> caml_raise (*exn); > } > > diff --git a/common/mlvisit/visit-c.c b/common/mlvisit/visit-c.c > index 7137c4998..804aabc9d 100644 > --- a/common/mlvisit/visit-c.c > +++ b/common/mlvisit/visit-c.c > @@ -53,7 +53,7 @@ value > guestfs_int_mllib_visit (value gv, value dirv, value fv) > { > CAMLparam3 (gv, dirv, fv); > - value *visit_failure_exn; > + const value *visit_failure_exn; > guestfs_h *g = (guestfs_h *) (intptr_t) Int64_val (gv); > struct visitor_function_wrapper_args args; > /* The dir string could move around when we call the > diff --git a/generator/daemon.ml b/generator/daemon.ml > index a4e136aaa..b67c4d20b 100644 > --- a/generator/daemon.ml > +++ b/generator/daemon.ml > @@ -746,7 +746,7 @@ let generate_daemon_caml_stubs () > let nr_args = List.length args_do_function in > > pr "{\n"; > - pr " static value *cb = NULL;\n"; > + pr " static const value *cb = NULL;\n"; > pr " CAMLparam0 ();\n"; > pr " CAMLlocal2 (v, retv);\n"; > pr " CAMLlocalN (args, %d);\n" > -- > 2.21.0 > > _______________________________________________ > Libguestfs mailing list > Libguestfs@redhat.com > https://www.redhat.com/mailman/listinfo/libguestfs-- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top
Apparently Analagous Threads
- [PATCH] ocaml: Change calls to caml_named_value() to cope with const value* return.
- [PATCH 1/1] ocaml: make const the return value of caml_named_value()
- [PATCH 0/9] build: Require OCaml >= 4.02.
- [PATCH 0/5] Miscellaneous refactoring of common/utils, create common/mltools
- [PATCH] build: build C sources using OCaml API with CAML_NAME_SPACE