On Sat, Apr 18, 2020 at 5:16 AM Richard W.M. Jones <rjones(a)redhat.com> wrote:
* ocaml-topkg is broken for unclear reasons:
https://bugzilla.redhat.com/show_bug.cgi?id=1825451
This affects many other packages.
#mod_use appears to have changed behavior, whether intentionally or
unintentionally I do not know. Inside the topkg-1.0.1 directory with
ocaml 4.10.0:
$ ocaml
OCaml version 4.10.0
# #use "topfind";;
- : unit = ()
Findlib has been successfully loaded. Additional directives:
#require "package";; to load a package
#list;; to list the available packages
#camlp4o;; to load camlp4 (standard syntax)
#camlp4r;; to load camlp4 (revised syntax)
#predicates "p,q,...";; to set these predicates
Topfind.reset();; to force that packages will be reloaded
#thread;; to enable threads
- : unit = ()
# #require "bytes";;
/usr/lib64/ocaml/bytes: added to search path
# #require "result";;
/usr/lib64/ocaml/result: added to search path
/usr/lib64/ocaml/result/result.cma: loaded
# #directory "src";;
# #mod_use "topkg_result.ml";;
module Topkg_result :
sig
val ( >>= ) :
('a, 'b) result -> ('a -> ('c, 'b) result) -> ('c,
'b) result
val ( >>| ) : ('a, 'b) result -> ('a -> 'c) -> ('c,
'b) result
type ('a, 'b) r = ('a, 'b) result = Ok of 'a | Error of 'b
type 'a result = ('a, [ `Msg of string ]) r
module R :
sig
type msg = [ `Msg of string ]
val msgf :
('a, Format.formatter, unit, [> `Msg of string ]) format4 -> 'a
val reword_error : ('a -> 'b) -> ('c, 'a) r -> ('c,
'b) r
val error_msg : 'a -> ('b, [> `Msg of 'a ]) r
val error_msgf :
('a, Format.formatter, unit, ('b, [> `Msg of string ]) r) format4
->
'a
val reword_error_msg :
?replace:bool ->
(string -> [< `Msg of string ]) ->
('a, [< `Msg of string ]) r -> ('a, [> `Msg of string ]) r
end
end
# #show Topkg_result;;
module Topkg_result :
sig
val ( >>= ) :
('a, 'b) result -> ('a -> ('c, 'b) result) -> ('c,
'b) result
val ( >>| ) : ('a, 'b) result -> ('a -> 'c) -> ('c,
'b) result
type ('a, 'b) r = ('a, 'b) result = Ok of 'a | Error of 'b
type 'a result = ('a, [ `Msg of string ]) r
module R : sig ... end
end
# #show R;;
Unknown element.
With ocaml 4.11.0, it is essentially the same up until this point:
# #mod_use "topkg_result.ml";;
val ( >>= ) : ('a, 'b) result -> ('a -> ('c, 'b) result)
-> ('c, 'b) result =
<fun>
val ( >>| ) : ('a, 'b) result -> ('a -> 'c) -> ('c,
'b) result = <fun>
type ('a, 'b) r = ('a, 'b) result = Ok of 'a | Error of 'b
type 'a result = ('a, [ `Msg of string ]) r
module R :
sig
type msg = [ `Msg of string ]
val msgf :
('a, Format.formatter, unit, [> `Msg of string ]) format4 -> 'a
val reword_error : ('a -> 'b) -> ('c, 'a) r -> ('c,
'b) r
val error_msg : 'a -> ('b, [> `Msg of 'a ]) r
val error_msgf :
('a, Format.formatter, unit, ('b, [> `Msg of string ]) r) format4 ->
'a
val reword_error_msg :
?replace:bool ->
(string -> [< `Msg of string ]) ->
('a, [< `Msg of string ]) r -> ('a, [> `Msg of string ]) r
end
# #show Topkg_result;;
Unknown element.
# #show R;;
module R :
sig
type msg = [ `Msg of string ]
val msgf :
('a, Format.formatter, unit, [> `Msg of string ]) format4 -> 'a
val reword_error : ('a -> 'b) -> ('c, 'a) r -> ('c,
'b) r
val error_msg : 'a -> ('b, [> `Msg of 'a ]) r
val error_msgf :
('a, Format.formatter, unit, ('b, [> `Msg of string ]) r) format4 ->
'a
val reword_error_msg :
?replace:bool ->
(string -> [< `Msg of string ]) ->
('a, [< `Msg of string ]) r -> ('a, [> `Msg of string ]) r
end
So the module name is no longer set from the filename. If this is an
intentional change, then the topkg code will have to be modifed.
Otherwise, it is an ocaml bug.
--
Jerry James
http://www.jamezone.org/