--- layout: fc_discuss_archives title: Message 38 from Frama-C-discuss on October 2010 ---
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Frama-c-discuss] problem compiling frama-c-Boron-20100401-why-2.24 using OCaml-3.12.0



Dear All,

I was trying to compile frama-c-Boron-20100401-why-2.24 with
OCaml-3.12.0 and --enable-external=why/frama-c-plugin

This results in 

[..]
Ocamlc   jc/jc_stdlib.ml
File "jc/jc_stdlib.ml", line 1, characters 0-1:
Error: The implementation jc/jc_stdlib.ml
       does not match the interface (inferred signature):
       Modules do not match:
         sig
           module type OrderedType = Map.OrderedType
           module type S =
             sig
               type key
               type +'a t
               val empty : 'a t
               val is_empty : 'a t -> bool
               val mem : key -> 'a t -> bool
               val add : key -> 'a -> 'a t -> 'a t
               val singleton : key -> 'a -> 'a t
               val remove : key -> 'a t -> 'a t
               val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
               val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
               val iter : (key -> 'a -> unit) -> 'a t -> unit
               val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
               val for_all : (key -> 'a -> bool) -> 'a t -> bool
               val exists : (key -> 'a -> bool) -> 'a t -> bool
               val filter : (key -> 'a -> bool) -> 'a t -> 'a t
               val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
               val cardinal : 'a t -> int
               val bindings : 'a t -> (key * 'a) list
               val min_binding : 'a t -> key * 'a
               val max_binding : 'a t -> key * 'a
               val choose : 'a t -> key * 'a
               val split : key -> 'a t -> 'a t * 'a option * 'a t
               val find : key -> 'a t -> 'a
               val map : ('a -> 'b) -> 'a t -> 'b t
               val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
               val elements : 'a t -> (key * 'a) list
               val keys : 'a t -> key list
               val values : 'a t -> 'a list
               val to_list : 'a t -> (key * 'a) list
               val exists : (key -> 'a -> bool) -> 'a t -> bool
               val filter : (key -> 'a -> bool) -> 'a t -> 'a t
               val find_or_default : key -> 'a -> 'a t -> 'a
               val find_or_none : key -> 'a t -> 'a option
               val merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
               val add_merge : ('a -> 'a -> 'a) -> key -> 'a -> 'a t -> 'a t
               val diff_merge :
                 ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
               val inter_merge :
                 ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
               val inter_merge_option :
                 ('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t
             end
           module Make :
             functor (Ord : OrderedType) ->
               sig
                 type key = Ord.t
                 type 'a t = 'a Map.Make(Ord).t
                 val empty : 'a t
                 val is_empty : 'a t -> bool
                 val mem : key -> 'a t -> bool
                 val add : key -> 'a -> 'a t -> 'a t
                 val singleton : key -> 'a -> 'a t
                 val remove : key -> 'a t -> 'a t
                 val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
                 val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
                 val iter : (key -> 'a -> unit) -> 'a t -> unit
                 val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
                 val for_all : (key -> 'a -> bool) -> 'a t -> bool
                 val exists : (key -> 'a -> bool) -> 'a t -> bool
                 val filter : (key -> 'a -> bool) -> 'a t -> 'a t
                 val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
                 val cardinal : 'a t -> int
                 val bindings : 'a t -> (key * 'a) list
                 val min_binding : 'a t -> key * 'a
                 val max_binding : 'a t -> key * 'a
                 val choose : 'a t -> key * 'a
                 val split : key -> 'a t -> 'a t * 'a option * 'a t
                 val find : key -> 'a t -> 'a
                 val map : ('a -> 'b) -> 'a t -> 'b t
                 val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
                 val elements : 'a t -> (key * 'a) list
                 val keys : 'a t -> key list
                 val values : 'a t -> 'a list
                 val to_list : 'a t -> (key * 'a) list
                 val exists : (key -> 'a -> bool) -> 'a t -> bool
                 val filter : (key -> 'a -> bool) -> 'a t -> 'a t
                 val find_or_default : key -> 'a -> 'a t -> 'a
                 val find_or_none : key -> 'a t -> 'a option
                 val merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
                 val add_merge :
                   ('a -> 'a -> 'a) -> key -> 'a -> 'a t -> 'a t
                 val diff_merge :
                   ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
                 val inter_merge :
                   ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
                 val inter_merge_option :
                   ('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t
               end
         end
       is not included in
         sig
           module type OrderedType = Map.OrderedType
           module type S =
             sig
               type key
               type +'a t
               val empty : 'a t
               val is_empty : 'a t -> bool
               val mem : key -> 'a t -> bool
               val add : key -> 'a -> 'a t -> 'a t
               val singleton : key -> 'a -> 'a t
               val remove : key -> 'a t -> 'a t
               val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
               val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
               val iter : (key -> 'a -> unit) -> 'a t -> unit
               val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
               val for_all : (key -> 'a -> bool) -> 'a t -> bool
               val exists : (key -> 'a -> bool) -> 'a t -> bool
               val filter : (key -> 'a -> bool) -> 'a t -> 'a t
               val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
               val cardinal : 'a t -> int
               val bindings : 'a t -> (key * 'a) list
               val min_binding : 'a t -> key * 'a
               val max_binding : 'a t -> key * 'a
               val choose : 'a t -> key * 'a
               val split : key -> 'a t -> 'a t * 'a option * 'a t
               val find : key -> 'a t -> 'a
               val map : ('a -> 'b) -> 'a t -> 'b t
               val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
               val elements : 'a t -> (key * 'a) list
               val keys : 'a t -> key list
               val values : 'a t -> 'a list
               val to_list : 'a t -> (key * 'a) list
               val exists : (key -> 'a -> bool) -> 'a t -> bool
               val filter : (key -> 'a -> bool) -> 'a t -> 'a t
               val find_or_default : key -> 'a -> 'a t -> 'a
               val find_or_none : key -> 'a t -> 'a option
               val merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
               val add_merge : ('a -> 'a -> 'a) -> key -> 'a -> 'a t -> 'a t
               val diff_merge :
                 ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
               val inter_merge :
                 ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
               val inter_merge_option :
                 ('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t
             end
           module Make :
             functor (Ord : OrderedType) ->
               sig
                 type key = Ord.t
                 type +'a t
                 val empty : 'a t
                 val is_empty : 'a t -> bool
                 val mem : key -> 'a t -> bool
                 val add : key -> 'a -> 'a t -> 'a t
                 val singleton : key -> 'a -> 'a t
                 val remove : key -> 'a t -> 'a t
                 val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
                 val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
                 val iter : (key -> 'a -> unit) -> 'a t -> unit
                 val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
                 val for_all : (key -> 'a -> bool) -> 'a t -> bool
                 val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
                 val cardinal : 'a t -> int
                 val bindings : 'a t -> (key * 'a) list
                 val min_binding : 'a t -> key * 'a
                 val max_binding : 'a t -> key * 'a
                 val choose : 'a t -> key * 'a
                 val split : key -> 'a t -> 'a t * 'a option * 'a t
                 val find : key -> 'a t -> 'a
                 val map : ('a -> 'b) -> 'a t -> 'b t
                 val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
                 val elements : 'a t -> (key * 'a) list
                 val keys : 'a t -> key list
                 val values : 'a t -> 'a list
                 val to_list : 'a t -> (key * 'a) list
                 val exists : (key -> 'a -> bool) -> 'a t -> bool
                 val filter : (key -> 'a -> bool) -> 'a t -> 'a t
                 val find_or_default : key -> 'a -> 'a t -> 'a
                 val find_or_none : key -> 'a t -> 'a option
                 val merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
                 val add_merge :
                   ('a -> 'a -> 'a) -> key -> 'a -> 'a t -> 'a t
                 val diff_merge :
                   ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
                 val inter_merge :
                   ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
                 val inter_merge_option :
                   ('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t
               end
         end
       Module type declarations do not match:
         module type S =
           sig
             type key
             type +'a t
             val empty : 'a t
             val is_empty : 'a t -> bool
             val mem : key -> 'a t -> bool
             val add : key -> 'a -> 'a t -> 'a t
             val singleton : key -> 'a -> 'a t
             val remove : key -> 'a t -> 'a t
             val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
             val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
             val iter : (key -> 'a -> unit) -> 'a t -> unit
             val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
             val for_all : (key -> 'a -> bool) -> 'a t -> bool
             val exists : (key -> 'a -> bool) -> 'a t -> bool
             val filter : (key -> 'a -> bool) -> 'a t -> 'a t
             val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
             val cardinal : 'a t -> int
             val bindings : 'a t -> (key * 'a) list
             val min_binding : 'a t -> key * 'a
             val max_binding : 'a t -> key * 'a
             val choose : 'a t -> key * 'a
             val split : key -> 'a t -> 'a t * 'a option * 'a t
             val find : key -> 'a t -> 'a
             val map : ('a -> 'b) -> 'a t -> 'b t
             val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
             val elements : 'a t -> (key * 'a) list
             val keys : 'a t -> key list
             val values : 'a t -> 'a list
             val to_list : 'a t -> (key * 'a) list
             val exists : (key -> 'a -> bool) -> 'a t -> bool
             val filter : (key -> 'a -> bool) -> 'a t -> 'a t
             val find_or_default : key -> 'a -> 'a t -> 'a
             val find_or_none : key -> 'a t -> 'a option
             val merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
             val add_merge : ('a -> 'a -> 'a) -> key -> 'a -> 'a t -> 'a t
             val diff_merge :
               ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
             val inter_merge :
               ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
             val inter_merge_option :
               ('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t
           end
       does not match
         module type S =
           sig
             type key
             type +'a t
             val empty : 'a t
             val is_empty : 'a t -> bool
             val mem : key -> 'a t -> bool
             val add : key -> 'a -> 'a t -> 'a t
             val singleton : key -> 'a -> 'a t
             val remove : key -> 'a t -> 'a t
             val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
             val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
             val iter : (key -> 'a -> unit) -> 'a t -> unit
             val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
             val for_all : (key -> 'a -> bool) -> 'a t -> bool
             val exists : (key -> 'a -> bool) -> 'a t -> bool
             val filter : (key -> 'a -> bool) -> 'a t -> 'a t
             val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
             val cardinal : 'a t -> int
             val bindings : 'a t -> (key * 'a) list
             val min_binding : 'a t -> key * 'a
             val max_binding : 'a t -> key * 'a
             val choose : 'a t -> key * 'a
             val split : key -> 'a t -> 'a t * 'a option * 'a t
             val find : key -> 'a t -> 'a
             val map : ('a -> 'b) -> 'a t -> 'b t
             val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
             val elements : 'a t -> (key * 'a) list
             val keys : 'a t -> key list
             val values : 'a t -> 'a list
             val to_list : 'a t -> (key * 'a) list
             val exists : (key -> 'a -> bool) -> 'a t -> bool
             val filter : (key -> 'a -> bool) -> 'a t -> 'a t
             val find_or_default : key -> 'a -> 'a t -> 'a
             val find_or_none : key -> 'a t -> 'a option
             val merge : ('a -> 'a -> 'a) -> 'a t -> 'a t -> 'a t
             val add_merge : ('a -> 'a -> 'a) -> key -> 'a -> 'a t -> 'a t
             val diff_merge :
               ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
             val inter_merge :
               ('a -> 'a -> 'a) -> ('a -> bool) -> 'a t -> 'a t -> 'a t
             val inter_merge_option :
               ('a -> 'b -> 'c option) -> 'a t -> 'b t -> 'c t
           end
       Illegal permutation of structure fields
gmake[1]: *** [jc/jc_stdlib.cmo] Error 2

Any hints as to what is going wrong here?

Thanks,

Marko
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 194 bytes
Desc: not available
URL: <http://lists.gforge.inria.fr/pipermail/frama-c-discuss/attachments/20101012/fc617d89/attachment.pgp>