pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

lang/ocaml update FAIL



The following change does not reliably build for me and it breaks the
unison package.

On Thu, Aug 19, 2010 at 08:06:53AM +0000, Aleksej Saushev wrote:
> Committed By: asau
> Date:         Thu Aug 19 08:06:53 UTC 2010
> 
> Modified Files:
>       pkgsrc/lang/ocaml: Makefile Makefile.common PLIST PLIST.opt PLIST.stub
>           distinfo
>       pkgsrc/lang/ocaml/patches: patch-aj patch-an patch-at patch-az patch-bd
>           patch-bh patch-bo patch-bs patch-bt
> Removed Files:
>       pkgsrc/lang/ocaml/patches: patch-bk
> 
> Log Message:
> Update to O'Caml 3.12.0, add test target.

The failure to build is as follows:

cd byterun; /usr/pkg/bin/gmake all
gmake[1]: Entering directory 
`/pkg_comp/obj/pkgsrc/lang/ocaml/default/ocaml-3.12.0/byterun'
gmake[1]: Nothing to be done for `all'.
gmake[1]: Leaving directory 
`/pkg_comp/obj/pkgsrc/lang/ocaml/default/ocaml-3.12.0/byterun'
cp byterun/ocamlrun boot/ocamlrun
cp: boot/ocamlrun: Text file busy
gmake: *** [coldstart] Error 1
*** Error code 2

This is in a i386 5.1_RC3 pkg_comp jail.

The build of unison fails like this:

ocamlopt -I lwt -I ubase -c 
/pkg_comp/obj/pkgsrc/net/unison/default/unison-2.32.52/update.ml
File "/pkg_comp/obj/pkgsrc/net/unison/default/unison-2.32.52/update.ml", line 
1, characters 0-1:
Error: The implementation 
/pkg_comp/obj/pkgsrc/net/unison/default/unison-2.32.52/update.ml
       does not match the interface update.cmi:
       Modules do not match:
         sig
           type key = Name.t
           type 'a t = 'a MyMap.Make(Name).t
           val empty : 'a t
           val is_empty : 'a t -> bool
           val add : key -> 'a -> 'a t -> 'a t
           val find : key -> 'a t -> 'a
           val findi : key -> 'a t -> key * 'a
           val remove : key -> 'a t -> 'a t
           val mem : key -> 'a t -> bool
           val iter : (key -> 'a -> unit) -> 'a t -> unit
           val map : ('a -> 'b) -> 'a t -> 'b t
           val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
           val mapii : (key -> 'a -> key * 'b) -> 'a t -> 'b t
           val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
           val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
           val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
           val validate : 'a t -> [ `Duplicate of key | `Invalid | `Ok ]
         end
       is not included in
         sig
           type key = Name.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 merge :
             (key -> 'a option -> 'b option -> 'c option) ->
             'a t -> 'b t -> 'c 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
         end
       The field `split' is required but not provided
       The field `choose' is required but not provided
       The field `max_binding' is required but not provided
       The field `min_binding' is required but not provided
       The field `bindings' is required but not provided
       The field `cardinal' is required but not provided
       The field `partition' is required but not provided
       The field `filter' is required but not provided
       The field `exists' is required but not provided
       The field `for_all' is required but not provided
       The field `merge' is required but not provided
       The field `singleton' is required but not provided
gmake: *** [update.cmx] Error 2
*** Error code 2

I guess this is because of the following change that the release notes/changes
warn about:

* While fixing PR#4824, also corrected a gaping hole in the type checker,
  which allowed instantiating separately object parameters and instance
  variables in an interface. This hole was here since the beginning of
  ocaml, and as a result many programs using object inheritance in a non
  trivial way will need to be corrected. You can look at lablgtk2 for an
  example.

Maybe we should use the 3.11.2 release by default until this issue has been
dealt with in all the 3rd party OCaml programs.

--chris



Home | Main Index | Thread Index | Old Index