On Friday, 21 July 2017 18:11:58 CEST Richard W.M. Jones wrote:
---
builder/sources.ml | 2 --
common/mlstdutils/Makefile.am | 4 ++-
common/mlstdutils/stringSet.ml | 19 ++++++++++++
common/mlstdutils/stringSet.mli | 46 ++++++++++++++++++++++++++++
dib/elements.ml | 2 --
sysprep/sysprep_operation_ca_certificates.ml | 1 -
sysprep/sysprep_operation_kerberos_data.ml | 1 -
sysprep/sysprep_operation_rpm_db.ml | 1 -
sysprep/sysprep_operation_user_account.ml | 2 --
v2v/create_libvirt_xml.ml | 2 --
10 files changed, 68 insertions(+), 12 deletions(-)
[...]
diff --git a/common/mlstdutils/stringSet.mli b/common/mlstdutils/stringSet.mli
new file mode 100644
index 000000000..e2889d86e
--- /dev/null
+++ b/common/mlstdutils/stringSet.mli
@@ -0,0 +1,46 @@
+(* virt-v2v
+ * Copyright (C) 2009-2017 Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *)
+
+type elt = String.t
+type t = Set.Make(String).t
+
+val empty : t
+val is_empty : t -> bool
+val mem : elt -> t -> bool
+val add : elt -> t -> t
+val singleton: elt -> t
+val remove: elt -> t -> t
+val union: t -> t -> t
+val inter: t -> t -> t
+val diff: t -> t -> t
+val compare: t -> t -> int
+val equal: t -> t -> bool
+val subset: t -> t -> bool
+val iter: (elt -> unit) -> t -> unit
+val map: (elt -> elt) -> t -> t
+val fold: (elt -> 'a -> 'a) -> t -> 'a -> 'a
+val for_all: (elt -> bool) -> t -> bool
+val exists: (elt -> bool) -> t -> bool
+val filter: (elt -> bool) -> t -> t
+val partition: (elt -> bool) -> t -> t * t
+val cardinal: t -> int
+val elements: t -> elt list
+val min_elt: t -> elt
+val max_elt: t -> elt
+val choose: t -> elt
+val split: elt -> t -> t * bool * t
This interface fails to compile for me (Fedora 25, OCaml 4.02.3):
OCAMLCMI stringSet.cmi
OCAMLOPT stringSet.cmx
File "stringSet.ml", line 1:
Error: The implementation stringSet.ml
does not match the interface stringSet.cmi:
The value `map' is required but not provided
Makefile:2479: recipe for target 'stringSet.cmx' failed
Indeed removing 'map' from there works, but I doubt that's the correct
fix... It looks like Set.S.map was added in OCaml 4.03/04, so removing
it will fail to build for newer OCaml's.
--
Pino Toscano