caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
* [Caml-list] OCaml 3.12.1 compatibility report
@ 2011-06-16 15:01 Damien Doligez
  2011-06-16 15:11 ` [Caml-list] " Sylvain Le Gall
                   ` (3 more replies)
  0 siblings, 4 replies; 16+ messages in thread
From: Damien Doligez @ 2011-06-16 15:01 UTC (permalink / raw)
  To: caml users

[-- Attachment #1: Type: text/plain, Size: 3536 bytes --]


                  OCaml 3.12.1 Compatibility Report


I have compiled the following software with the latest release
candidate of OCaml (3.12.1+rc1).

See below for a list of what I had to patch to get these to compile.
The packages I had to patch are marked here with a *

* advi-1.9.0.tar.gz
  alt-ergo-0.93.tar.gz
  bin_prot-1.3.1.tar.gz
* boomerang-0.2-source.tar.gz
* cameleon-1.9.21.tar.gz
* camlimages-4.0.0.tar.bz2
  camomile-0.8.2.tar.bz2
  camlp5-6.02.2.tgz
* camlzip-1.04.tar.gz
  config-file-1.0.tar.gz
  coq-8.3pl2.tar.gz
  core-0.7.0.tar.gz
  core_extended-0.7.0.tar.gz
  cryptokit-1.4.tar.gz
  extlib-1.5.1.tar.gz
  fieldslib-0.1.2.tar.gz
  findlib-1.2.7.tar.gz
  frama-c-Carbon-20110201.tar.gz
* hevea-1.10.tar.gz
  lablgtk-2.14.2.tar.gz
* lablgtkextras-1.0.tar.gz
  lwt-2.3.0.tar.gz
  menhir-20110201.tar.gz
* oasis-0.2.0.tar.gz
* obrowser-1.1.tar.gz
* ocaml-data-notation-0.0.3.tar.gz
  ocaml-expect-0.0.2.tar.gz
* ocaml-fileutils-0.4.2.tar.gz
  ocaml-mysql-1.0.4.tar.gz
  ocaml-sqlite3-release-1.6.1.tar.gz
  ocaml-ssl-0.4.5.tar.gz
  ocaml-text-0.4.tar.gz
  ocamlgraph-1.7.tar.gz
  ocamlify-0.0.1.tar.gz
  ocamlnet-3.2.1.tar.gz
  ocgi-0.5.tar.gz
  ocsigen-1.3.4.tar.gz
* omake-0.9.8.6-0.rc1.tar.gz
  ounit-1.1.0.tar.gz
  pcre-ocaml-release-6.2.2.tar.gz
  react-0.9.2.tbz
  res-release-3.2.0.tar.gz
  sexplib-5.2.1.tar.gz
  sks-1.1.1.tgz
  type-conv-2.3.0.tar.gz
  unison-2.40.63.tar.gz
* vsyml-2010-04-06.tar.gz
* xml-light-2.2.zip
  zen_2.3.2.tar.gz

-----------------------------------------------------------

This is what I had to patch because of problems unrelated to 3.12.1:

advi: 2 lines
  Change Makefile to link with graphics and lablgtk

boomerang: 1 line
  Change Makefile to remove "doc" from subdirs

cameleon: 5 lines
  Change ed_main.ml to remove call to GtkThread.set_do_jobs_delay
  Change checkocaml.ml: detection of lablgtkextras depends on xml-light
    configuration

camlimages: 15 lines
  Add oPng.mli and oJpeg.mli
  Change META file to add archives camlimages.cma and .cmxa (neeed for advi)

camlzip: 10 lines
  Change Makefile to configure the location of libz.a
  Add a META file for findlib

hevea: 2 lines
  Change hevea.ml to remove target file in case of error
  Change Makefile to pass LIBDIR and LATEXLIBDIR to install script

lablgtkextras: 40 lines
  Change checkocaml.ml and Makefiles to detect where is xml-light installed
    (see xml-light below)

oasis: 8 lines
  Change setup.ml to handle OCaml version numbers with a + suffix

obrowser-1.1: 13 lines
  Change in Makefile to add .PHONY annotation to AXO (my filesystem is
    case-insensitive, so AXO interferes with axo).
  Update pervasives.ml and pervasives.mli to reflect OCaml changes since 3.11.1

ocaml-data-notation: 3 lines
  Change in Makefile to follow name change of "type-conv.syntax" to "type-conv"
  Changes in pa_odn.ml to remove extraneous occurrences "_loc"

ocaml-fileutils: 2 lines
  Changes in Makefile to remove use of non-portable "install -t"

omake: 1 line
  Change in OMakefiles to remove "-warn-error A"
  Note: DO NOT use "-warn-error A" in released code.

vsyml: 4 lines
  Changes in Makefile to remove non-portable "echo -n"

xml-light: 3 lines
  Changes in Makefile to install in a subdirectory of .../lib/ocaml
    This is needed because xml-light exports xml.cmi and ocsigen has a
    file xML.mli.  These conflict because my filesystem is case-insensitive.

-- Damien


[-- Attachment #2: REPORT-3.12.1.txt --]
[-- Type: text/plain, Size: 3519 bytes --]

                  OCaml 3.12.1 Compatibility Report


I have compiled the following software with the latest release
candidate of OCaml (3.12.1+rc1).

See below for a list of what I had to patch to get these to compile.
The packages I had to patch are marked here with a *

* advi-1.9.0.tar.gz
  alt-ergo-0.93.tar.gz
  bin_prot-1.3.1.tar.gz
* boomerang-0.2-source.tar.gz
* cameleon-1.9.21.tar.gz
* camlimages-4.0.0.tar.bz2
  camomile-0.8.2.tar.bz2
  camlp5-6.02.2.tgz
* camlzip-1.04.tar.gz
  config-file-1.0.tar.gz
  coq-8.3pl2.tar.gz
  core-0.7.0.tar.gz
  core_extended-0.7.0.tar.gz
  cryptokit-1.4.tar.gz
  extlib-1.5.1.tar.gz
  fieldslib-0.1.2.tar.gz
  findlib-1.2.7.tar.gz
  frama-c-Carbon-20110201.tar.gz
* hevea-1.10.tar.gz
  lablgtk-2.14.2.tar.gz
* lablgtkextras-1.0.tar.gz
  lwt-2.3.0.tar.gz
  menhir-20110201.tar.gz
* oasis-0.2.0.tar.gz
* obrowser-1.1.tar.gz
* ocaml-data-notation-0.0.3.tar.gz
  ocaml-expect-0.0.2.tar.gz
* ocaml-fileutils-0.4.2.tar.gz
  ocaml-mysql-1.0.4.tar.gz
  ocaml-sqlite3-release-1.6.1.tar.gz
  ocaml-ssl-0.4.5.tar.gz
  ocaml-text-0.4.tar.gz
  ocamlgraph-1.7.tar.gz
  ocamlify-0.0.1.tar.gz
  ocamlnet-3.2.1.tar.gz
  ocgi-0.5.tar.gz
  ocsigen-1.3.4.tar.gz
* omake-0.9.8.6-0.rc1.tar.gz
  ounit-1.1.0.tar.gz
  pcre-ocaml-release-6.2.2.tar.gz
  react-0.9.2.tbz
  res-release-3.2.0.tar.gz
  sexplib-5.2.1.tar.gz
  sks-1.1.1.tgz
  type-conv-2.3.0.tar.gz
  unison-2.40.63.tar.gz
* vsyml-2010-04-06.tar.gz
* xml-light-2.2.zip
  zen_2.3.2.tar.gz

-----------------------------------------------------------

This is what I had to patch because of problems unrelated to 3.12.1:

advi: 2 lines
  Change Makefile to link with graphics and lablgtk

boomerang: 1 line
  Change Makefile to remove "doc" from subdirs

cameleon: 5 lines
  Change ed_main.ml to remove call to GtkThread.set_do_jobs_delay
  Change checkocaml.ml: detection of lablgtkextras depends on xml-light
    configuration

camlimages: 15 lines
  Add oPng.mli and oJpeg.mli
  Change META file to add archives camlimages.cma and .cmxa (neeed for advi)

camlzip: 10 lines
  Change Makefile to configure the location of libz.a
  Add a META file for findlib

hevea: 2 lines
  Change hevea.ml to remove target file in case of error
  Change Makefile to pass LIBDIR and LATEXLIBDIR to install script

lablgtkextras: 40 lines
  Change checkocaml.ml and Makefiles to detect where is xml-light installed
    (see xml-light below)

oasis: 8 lines
  Change setup.ml to handle OCaml version numbers with a + suffix

obrowser-1.1: 13 lines
  Change in Makefile to add .PHONY annotation to AXO (my filesystem is
    case-insensitive, so AXO interferes with axo).
  Update pervasives.ml and pervasives.mli to reflect OCaml changes since 3.11.1

ocaml-data-notation: 3 lines
  Change in Makefile to follow name change of "type-conv.syntax" to "type-conv"
  Changes in pa_odn.ml to remove extraneous occurrences "_loc"

ocaml-fileutils: 2 lines
  Changes in Makefile to remove use of non-portable "install -t"

omake: 1 line
  Change in OMakefiles to remove "-warn-error A"
  Note: DO NOT use "-warn-error A" in released code.

vsyml: 4 lines
  Changes in Makefile to remove non-portable "echo -n"

xml-light: 3 lines
  Changes in Makefile to install in a subdirectory of .../lib/ocaml
    This is needed because xml-light exports xml.cmi and ocsigen has a
    file xML.mli.  These conflict because my filesystem is case-insensitive.

[-- Attachment #3: advi-1.9.0.patch --]
[-- Type: application/octet-stream, Size: 571 bytes --]

--- advi-1.9.0/src/Makefile.in.orig	2010-04-05 10:16:22.000000000 +0200
+++ advi-1.9.0/src/Makefile.in	2011-05-20 09:56:29.000000000 +0200
@@ -97,8 +97,8 @@
 AWK = @AWK@
 BUILD_DATE = @BUILD_DATE@
 CAMLIMAGES_INCLUDES = @CAMLIMAGES_INCLUDES@
-CAMLIMAGES_LIBS_BYTE = @CAMLIMAGES_LIBS_BYTE@
-CAMLIMAGES_LIBS_NATIVE = @CAMLIMAGES_LIBS_NATIVE@
+CAMLIMAGES_LIBS_BYTE = graphics.cma -I +lablgtk2 lablgtk.cma @CAMLIMAGES_LIBS_BYTE@
+CAMLIMAGES_LIBS_NATIVE = graphics.cmxa -I +lablgtk2 lablgtk.cmxa @CAMLIMAGES_LIBS_NATIVE@
 CC = @CC@
 CCDEPMODE = @CCDEPMODE@
 CFLAGS = @CFLAGS@

[-- Attachment #4: boomerang-0.2.patch --]
[-- Type: application/octet-stream, Size: 373 bytes --]

--- boomerang-0.2/OMakefile.orig	2010-06-07 15:01:55.000000000 +0200
+++ boomerang-0.2/OMakefile	2010-06-07 15:02:08.000000000 +0200
@@ -126,7 +126,7 @@
 ##############################################################################
 # Include sub-directories
 
-SUBDIRS = common src lenses examples doc
+SUBDIRS = common src lenses examples #doc
 
 .SUBDIRS: $(SUBDIRS)
 

[-- Attachment #5: cameleon-1.9.21.patch --]
[-- Type: application/octet-stream, Size: 1456 bytes --]

--- cameleon-1.9.21.orig/src/editor/ed_main.ml	2011-01-13 10:57:39.000000000 +0100
+++ cameleon-1.9.21/src/editor/ed_main.ml	2011-05-03 21:32:06.000000000 +0200
@@ -75,7 +75,7 @@
      in
      Cam_hooks.warning_message (Ed_misc.to_utf8 m);
     );
-  GtkThread.set_do_jobs_delay 0.02;
+  (*GtkThread.set_do_jobs_delay 0.02;*)
   GtkThread.main ();
   Ed_view.iter_factories
     (fun f -> Ed_misc.catch_print_exceptions (fun () -> f#on_exit) ());
--- cameleon-1.9.21.orig/utils/checkocaml.ml	2011-01-13 10:57:39.000000000 +0100
+++ cameleon-1.9.21/utils/checkocaml.ml	2011-05-08 23:08:02.000000000 +0200
@@ -964,10 +964,10 @@
     prerr_endline msg; exit 1
 
 let _ = !print "\n### checking required tools and libraries ###\n"
-let _ =
+let xml_light_incs =
   match detect_xml_light ~modes conf with
-    [], [] -> !fatal_error "Could not link with Xml-light"
-  | l, _ -> add_subst "XMLLIGHT_INCLUDES" (string_of_includes l)
+    [], [] -> !fatal_error "Could not link with Xml-light"; assert false
+  | l, _ -> add_subst "XMLLIGHT_INCLUDES" (string_of_includes l); l
 
 let pcre_includes =
   match detect_pcre ~modes conf with
@@ -1025,7 +1025,7 @@
 
 let _ =
   let (incs,b) =
-    match detect_lablgtkextras ~modes lablgtk_incs conf with
+    match detect_lablgtkextras ~modes (lablgtk_incs @ xml_light_incs) conf with
       [], [] -> !fatal_error "Could not link with LablGtk-extras"; assert false
     | l, _ -> (string_of_includes l,true)
   in

[-- Attachment #6: camlimages-4.0.0.patch --]
[-- Type: application/octet-stream, Size: 1332 bytes --]

--- camlimages-4.0.0.orig/src/oPng.mli	1970-01-01 01:00:00.000000000 +0100
+++ camlimages-4.0.0/src/oPng.mli	2011-05-17 17:47:40.000000000 +0200
@@ -0,0 +1,4 @@
+val load_as_rgb24 : string -> Images.load_option list -> OImages.oimage
+val load : string -> Images.load_option list -> OImages.oimage
+val save :
+  string -> Images.save_option list -> < image : Images.t; .. > -> unit
--- camlimages-4.0.0.orig/src/oJpeg.mli	1970-01-01 01:00:00.000000000 +0100
+++ camlimages-4.0.0/src/oJpeg.mli	2011-05-17 17:48:33.000000000 +0200
@@ -0,0 +1,9 @@
+val load : string -> Images.load_option list -> OImages.oimage
+val load_thumbnail :
+  string ->
+  Images.load_option list -> Geometry.spec -> int * int * OImages.oimage
+val save : string -> Images.save_option list -> OImages.oimage -> unit
+val save_as_cmyk :
+  string ->
+  Images.save_option list ->
+  (Images.rgb -> int * int * int * int) -> OImages.oimage -> unit
--- camlimages-4.0.0/src/META.in.orig	2011-05-20 09:48:04.000000000 +0200
+++ camlimages-4.0.0/src/META.in	2011-05-20 09:48:30.000000000 +0200
@@ -2,7 +2,8 @@
 version = "@PACKAGE_VERSION@"
 description = "Objective Caml image processing library"
 
-requires = "camlimages.core"
+archive(byte) = "camlimages.cma"
+archive(native) = "camlimages.cmxa"
 
 package "core" (
   archive(byte) = "camlimages_core.cma"

[-- Attachment #7: camlzip-1.04.patch --]
[-- Type: application/octet-stream, Size: 793 bytes --]

--- camlzip-1.04/Makefile	2009-10-20 15:59:55.000000000 +0200
+++ camlzip-1.04/Makefile.new	2009-10-20 16:00:31.000000000 +0200
@@ -4,10 +4,10 @@
 ZLIB_LIB=-lz
 
 # The directory containing the Zlib library (libz.a or libz.so)
-ZLIB_LIBDIR=/usr/local/lib
+ZLIB_LIBDIR=/opt/local/lib
 
 # The directory containing the Zlib header file (zlib.h)
-ZLIB_INCLUDE=/usr/local/include
+ZLIB_INCLUDE=/opt/local/include
 
 # Where to install the library.  By default: sub-directory 'zip' of
 # OCaml's standard library directory.
--- /dev/null	2009-10-20 16:35:40.000000000 +0200
+++ camlzip-1.04/META	2009-10-20 16:37:31.000000000 +0200
@@ -0,0 +1,6 @@
+name = "camlzip"
+version = "1.04"
+description = "compression library"
+archive(byte) = "zip.cma"
+archive(native) = "zip.cmxa"
+directory = "+zip"

[-- Attachment #8: hevea-1.10.patch --]
[-- Type: application/octet-stream, Size: 657 bytes --]

diff -r -u hevea-1.10 2/hevea.ml hevea-1.10/hevea.ml
--- hevea-1.10 2/hevea.ml	2007-02-09 15:44:28.000000000 +0100
+++ hevea-1.10/hevea.ml	2009-08-27 17:51:55.000000000 +0200
@@ -237,6 +237,7 @@
 *)
   end ;
   let _ = finalize false in
+  begin try Sys.remove Parse_opts.name_out with _ -> () end;
   prerr_endline "Adios" ;
   exit 2
 ;;
--- hevea-1.10/Makefile.orig	2009-10-28 12:18:16.000000000 +0100
+++ hevea-1.10/Makefile	2009-10-28 12:18:00.000000000 +0100
@@ -48,7 +48,7 @@
 all-make: $(TARGET)-make
 
 install: config.sh
-	./install.sh $(TARGET)
+	LIBDIR=${LIBDIR} LATEXLIBDIR=${LATEXLIBDIR} ./install.sh $(TARGET)
 
 byte: ocb-byte
 opt: ocb-opt

[-- Attachment #9: lablgtkextras-1.0.patch --]
[-- Type: application/octet-stream, Size: 2887 bytes --]

--- lablgtkextras-1.0.orig/checkocaml.ml	2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/checkocaml.ml	2011-05-06 13:58:36.000000000 +0200
@@ -836,6 +836,37 @@
   iter includes
 (*/c==v=[OCaml_conf.detect_lablgtk2]=0.1====*)
 
+(*c==v=[OCaml_conf.detect_xml_light]=0.3====*)
+let detect_xml_light ?(modes=[`Byte;`Opt]) conf =
+  let includes =
+     ["default install", [] ;
+      "+xml-light style", [Filename.concat (ocaml_libdir conf) "xml-light"] ;
+     ]
+  in
+  let includes =
+    match ocamlfind_query conf "xml-light" with
+      None -> includes
+    | Some s -> ("with ocamlfind", [s]) :: includes
+  in
+  let libs = ["xml-light.cma"] in
+  let f (mes, includes) mode =
+    let mes = Printf.sprintf "checking for Xml-light (%s) %s... "
+	(string_of_mode mode) mes
+    in
+    can_link ~mes mode conf ~includes ~libs []
+  in
+  let rec iter = function
+      [] -> ([], [])
+    | incs :: q ->
+	let f = f incs in
+	if List.for_all f modes then
+	  (snd incs, libs)
+	else
+	  iter q
+  in
+  iter includes
+(*/c==v=[OCaml_conf.detect_xml_light]=0.3====*)
+
 let detect_cairo ?(modes=[`Byte;`Opt]) conf =
   let includes = ["default install", ["+cairo"]] in
   let includes =
@@ -894,6 +925,11 @@
   | s, _ -> add_subst "LABLGTK2_INCLUDES" s
 ;;
 let _ =
+  match detect_xml_light ~modes conf with
+    [], [] -> !fatal_error "Could not link with Xml-light"
+  | l, _ -> add_subst "XMLLIGHT_INCLUDES" (string_of_includes l)
+;;
+let _ =
   let lablgladecc =
     try ocaml_prog "lablgladecc2"
     with Program_not_found _ ->
--- lablgtkextras-1.0.orig/master.Makefile.in	2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/master.Makefile.in	2011-05-06 15:53:47.000000000 +0200
@@ -74,6 +74,7 @@
 ROOT=@ROOT@
 
 LABLGTK2_INCLUDES= @LABLGTK2_INCLUDES@
+XMLLIGHT_INCLUDES=@XMLLIGHT_INCLUDES@
 
 # some common targets :
 #######################
--- lablgtkextras-1.0.orig/src/Makefile	2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/src/Makefile	2011-05-06 15:56:22.000000000 +0200
@@ -27,7 +27,7 @@
 include ../master.Makefile
 
 MY_INCLUDES=
-SYSTEM_INCLUDES= $(LABLGTK2_INCLUDES)
+SYSTEM_INCLUDES= $(LABLGTK2_INCLUDES) $(XMLLIGHT_INCLUDES)
 
 INCLUDES=$(MY_INCLUDES) $(SYSTEM_INCLUDES)
 
--- lablgtkextras-1.0.orig/configure	2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/configure	2011-05-06 16:02:43.000000000 +0200
@@ -556,6 +556,7 @@
 ac_unique_file="master.Makefile.in"
 ac_subst_vars='LTLIBOBJS
 LIBOBJS
+XMLLIGHT_INCLUDES
 LABLGTK2_INCLUDES
 CWLIB_BYTE
 CWLIB
--- lablgtkextras-1.0.orig/configure.ac	2011-01-13 08:39:06.000000000 +0100
+++ lablgtkextras-1.0/configure.ac	2011-05-06 16:00:35.000000000 +0200
@@ -153,6 +153,7 @@
 AC_SUBST(CWLIB_BYTE)
 
 AC_SUBST(LABLGTK2_INCLUDES)
+AC_SUBST(XMLLIGHT_INCLUDES)
 
 # Finally create the master.Makefile.in and other files
 ACFILES="master.Makefile src/version.ml src/install.ml"

[-- Attachment #10: oasis-version.patch --]
[-- Type: application/octet-stream, Size: 852 bytes --]

--- setup.ml.orig	2011-03-22 17:00:48.000000000 +0100
+++ setup.ml	2011-05-02 14:32:29.000000000 +0200
@@ -2662,10 +2662,14 @@
         (ocamlc_config_map ())
         0
     in
-    let nm_config =
+    let chop_version_suffix s =
+      try String.sub s 0 (String.index s '+')
+      with _ -> s
+    in
+    let nm_config, value_config =
       match nm with 
-        | "ocaml_version" -> "version"
-        | _ -> nm
+        | "ocaml_version" -> "version", chop_version_suffix
+        | _ -> nm, (fun x -> x)
     in
       var_redefine
         nm 
@@ -2677,7 +2681,7 @@
               let value = 
                 SMap.find nm_config map
               in
-                value
+                value_config value
             with Not_found ->
               failwithf2
                 (f_ "Cannot find field '%s' in '%s -config' output")

[-- Attachment #11: obrowser-1.1.patch --]
[-- Type: application/octet-stream, Size: 14142 bytes --]

diff -u -r obrowser-1.1.orig/Makefile obrowser-1.1/Makefile
--- obrowser-1.1.orig/Makefile	2010-01-22 19:16:35.000000000 +0100
+++ obrowser-1.1/Makefile	2010-04-27 16:07:08.000000000 +0200
@@ -24,6 +24,7 @@
 	@echo "[EXAMPLE] $*"
 	@cd examples/$* && $(MAKE) --no-print-directory
 
+.PHONY: AXO
 AXO:
 	@echo "[AXO]"
 	@cd axo/ && $(MAKE) --no-print-directory
diff -u -r obrowser-1.1.orig/rt/caml/pervasives.ml obrowser-1.1/rt/caml/pervasives.ml
--- obrowser-1.1.orig/rt/caml/pervasives.ml	2010-01-22 19:16:35.000000000 +0100
+++ obrowser-1.1/rt/caml/pervasives.ml	2010-04-27 16:14:45.000000000 +0200
@@ -83,6 +83,8 @@
 external (/.) : float -> float -> float = "%divfloat"
 external ( ** ) : float -> float -> float = "caml_power_float" "pow" "float"
 external exp : float -> float = "caml_exp_float" "exp" "float"
+external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float"
+external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float"
 external acos : float -> float = "caml_acos_float" "acos" "float"
 external asin : float -> float = "caml_asin_float" "asin" "float"
 external atan : float -> float = "caml_atan_float" "atan" "float"
diff -u -r obrowser-1.1.orig/rt/caml/pervasives.mli obrowser-1.1/rt/caml/pervasives.mli
--- obrowser-1.1.orig/rt/caml/pervasives.mli	2010-01-22 19:16:35.000000000 +0100
+++ obrowser-1.1/rt/caml/pervasives.mli	2010-04-27 16:18:35.000000000 +0200
@@ -264,6 +264,14 @@
 external log10 : float -> float = "caml_log10_float" "log10" "float"
 (** Base 10 logarithm. *)
 
+external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float"
+(** [expm1 x] computes [exp x -. 1.0], giving numerically-accurate results
+    even if [x] is close to [0.0]. *)
+
+external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float"
+(** [log1p x] computes [log(1.0 +. x)] (natural logarithm),
+    giving numerically-accurate results even if [x] is close to [0.0]. *)
+
 external cos : float -> float = "caml_cos_float" "cos" "float"
 (** See {!Pervasives.atan2}. *)
 
--- obrowser-1.1/rt/caml/pervasives.mli.orig	2010-07-23 16:15:49.000000000 +0200
+++ obrowser-1.1/rt/caml/pervasives.mli	2010-07-23 16:24:44.000000000 +0200
@@ -11,19 +11,20 @@
 (*                                                                     *)
 (***********************************************************************)
 
-(* $Id: pervasives.mli,v 1.113 2008/10/06 13:33:21 doligez Exp $ *)
+(* $Id: pervasives.mli 10548 2010-06-09 10:26:19Z weis $ *)
 
 (** The initially opened module.
 
    This module provides the basic operations over the built-in types
    (numbers, booleans, strings, exceptions, references, lists, arrays,
-   input-output channels, ...)
+   input-output channels, ...).
 
    This module is automatically opened at the beginning of each compilation.
    All components of this module can therefore be referred by their short
    name, without prefixing them by [Pervasives].
 *)
 
+
 (** {6 Exceptions} *)
 
 external raise : exn -> 'a = "%raise"
@@ -42,7 +43,6 @@
 
 (** {6 Comparisons} *)
 
-
 external ( = ) : 'a -> 'a -> bool = "%equal"
 (** [e1 = e2] tests for structural equality of [e1] and [e2].
    Mutable structures (e.g. references and arrays) are equal
@@ -71,7 +71,7 @@
    The ordering is compatible with [(=)]. As in the case
    of [(=)], mutable structures are compared by contents.
    Comparison between functional values raises [Invalid_argument].
-   Comparison between cyclic structures does not terminate. *)
+   Comparison between cyclic structures may not terminate. *)
 
 external compare : 'a -> 'a -> int = "%compare"
 (** [compare x y] returns [0] if [x] is equal to [y],
@@ -93,17 +93,22 @@
    the {!List.sort} and {!Array.sort} functions. *)
 
 val min : 'a -> 'a -> 'a
-(** Return the smaller of the two arguments. *)
+(** Return the smaller of the two arguments.
+    The result is unspecified if one of the arguments contains
+    the float value [nan]. *)
 
 val max : 'a -> 'a -> 'a
-(** Return the greater of the two arguments. *)
+(** Return the greater of the two arguments.
+    The result is unspecified if one of the arguments contains
+    the float value [nan]. *)
 
 external ( == ) : 'a -> 'a -> bool = "%eq"
 (** [e1 == e2] tests for physical equality of [e1] and [e2].
-   On integers and characters, physical equality is identical to structural
-   equality. On mutable structures, [e1 == e2] is true if and only if
-   physical modification of [e1] also affects [e2].
-   On non-mutable structures, the behavior of [(==)] is
+   On mutable types such as references, arrays, strings, records with
+   mutable fields and objects with mutable instance variables,
+   [e1 == e2] is true if and only if physical modification of [e1]
+   also affects [e2].
+   On non-mutable types, the behavior of [(==)] is
    implementation-dependent; however, it is guaranteed that
    [e1 == e2] implies [compare e1 e2 = 0]. *)
 
@@ -113,7 +118,6 @@
 
 (** {6 Boolean operations} *)
 
-
 external not : bool -> bool = "%boolnot"
 (** The boolean negation. *)
 
@@ -123,7 +127,7 @@
    [e2] is not evaluated at all. *)
 
 external ( & ) : bool -> bool -> bool = "%sequand"
-(** @deprecated {!Pervasives.(&&)} should be used instead. *)
+(** @deprecated {!Pervasives.( && )} should be used instead. *)
 
 external ( || ) : bool -> bool -> bool = "%sequor"
 (** The boolean ``or''. Evaluation is sequential, left-to-right:
@@ -131,7 +135,7 @@
    [e2] is not evaluated at all. *)
 
 external ( or ) : bool -> bool -> bool = "%sequor"
-(** @deprecated {!Pervasives.(||)} should be used instead.*)
+(** @deprecated {!Pervasives.( || )} should be used instead.*)
 
 
 (** {6 Integer arithmetic} *)
@@ -141,13 +145,18 @@
    They do not fail on overflow. *)
 
 external ( ~- ) : int -> int = "%negint"
-(** Unary negation. You can also write [-e] instead of [~-e]. *)
+(** Unary negation. You can also write [- e] instead of [~- e]. *)
+
+external ( ~+ ) : int -> int = "%identity"
+(** Unary addition. You can also write [+ e] instead of [~+ e].
+    @since 3.12.0
+*)
 
 external succ : int -> int = "%succint"
-(** [succ x] is [x+1]. *)
+(** [succ x] is [x + 1]. *)
 
 external pred : int -> int = "%predint"
-(** [pred x] is [x-1]. *)
+(** [pred x] is [x - 1]. *)
 
 external ( + ) : int -> int -> int = "%addint"
 (** Integer addition. *)
@@ -164,15 +173,15 @@
    Integer division rounds the real quotient of its arguments towards zero.
    More precisely, if [x >= 0] and [y > 0], [x / y] is the greatest integer
    less than or equal to the real quotient of [x] by [y].  Moreover,
-   [(-x) / y = x / (-y) = -(x / y)].  *)
+   [(- x) / y = x / (- y) = - (x / y)].  *)
 
 external ( mod ) : int -> int -> int = "%modint"
 (** Integer remainder.  If [y] is not zero, the result
    of [x mod y] satisfies the following properties:
    [x = (x / y) * y + x mod y] and
-   [abs(x mod y) <= abs(y)-1].
+   [abs(x mod y) <= abs(y) - 1].
    If [y = 0], [x mod y] raises [Division_by_zero].
-   Notice that [x mod y] is nonpositive if and only if [x < 0].
+   Note that [x mod y] is negative only if [x < 0].
    Raise [Division_by_zero] if [y] is zero. *)
 
 val abs : int -> int
@@ -186,10 +195,8 @@
 (** The smallest representable integer. *)
 
 
-
 (** {7 Bitwise operations} *)
 
-
 external ( land ) : int -> int -> int = "%andint"
 (** Bitwise logical and. *)
 
@@ -230,12 +237,17 @@
    [neg_infinity] for [-1.0 /. 0.0], and [nan] (``not a number'')
    for [0.0 /. 0.0].  These special numbers then propagate through
    floating-point computations as expected: for instance,
-   [1.0 /. infinity] is [0.0], and any operation with [nan] as
-   argument returns [nan] as result.
+   [1.0 /. infinity] is [0.0], and any arithmetic operation with [nan]
+   as argument returns [nan] as result.
 *)
 
 external ( ~-. ) : float -> float = "%negfloat"
-(** Unary negation. You can also write [-.e] instead of [~-.e]. *)
+(** Unary negation. You can also write [-. e] instead of [~-. e]. *)
+
+external ( ~+. ) : float -> float = "%identity"
+(** Unary addition. You can also write [+. e] instead of [~+. e].
+    @since 3.12.0
+*)
 
 external ( +. ) : float -> float -> float = "%addfloat"
 (** Floating-point addition *)
@@ -250,10 +262,10 @@
 (** Floating-point division. *)
 
 external ( ** ) : float -> float -> float = "caml_power_float" "pow" "float"
-(** Exponentiation *)
+(** Exponentiation. *)
 
 external sqrt : float -> float = "caml_sqrt_float" "sqrt" "float"
-(** Square root *)
+(** Square root. *)
 
 external exp : float -> float = "caml_exp_float" "exp" "float"
 (** Exponential. *)
@@ -266,54 +278,64 @@
 
 external expm1 : float -> float = "caml_expm1_float" "caml_expm1" "float"
 (** [expm1 x] computes [exp x -. 1.0], giving numerically-accurate results
-    even if [x] is close to [0.0]. *)
+    even if [x] is close to [0.0].
+    @since 3.12.0
+*)
 
 external log1p : float -> float = "caml_log1p_float" "caml_log1p" "float"
 (** [log1p x] computes [log(1.0 +. x)] (natural logarithm),
-    giving numerically-accurate results even if [x] is close to [0.0]. *)
+    giving numerically-accurate results even if [x] is close to [0.0].
+    @since 3.12.0
+*)
 
 external cos : float -> float = "caml_cos_float" "cos" "float"
-(** See {!Pervasives.atan2}. *)
+(** Cosine.  Argument is in radians. *)
 
 external sin : float -> float = "caml_sin_float" "sin" "float"
-(** See {!Pervasives.atan2}. *)
+(** Sine.  Argument is in radians. *)
 
 external tan : float -> float = "caml_tan_float" "tan" "float"
-(** See {!Pervasives.atan2}. *)
+(** Tangent.  Argument is in radians. *)
 
 external acos : float -> float = "caml_acos_float" "acos" "float"
-(** See {!Pervasives.atan2}. *)
+(** Arc cosine.  The argument must fall within the range [[-1.0, 1.0]].
+    Result is in radians and is between [0.0] and [pi]. *)
 
 external asin : float -> float = "caml_asin_float" "asin" "float"
-(** See {!Pervasives.atan2}. *)
+(** Arc sine.  The argument must fall within the range [[-1.0, 1.0]].
+    Result is in radians and is between [-pi/2] and [pi/2]. *)
 
 external atan : float -> float = "caml_atan_float" "atan" "float"
-(** See {!Pervasives.atan2}. *)
+(** Arc tangent.
+    Result is in radians and is between [-pi/2] and [pi/2]. *)
 
 external atan2 : float -> float -> float = "caml_atan2_float" "atan2" "float"
-(** The usual trigonometric functions. *)
+(** [atan x y] returns the arc tangent of [y /. x].  The signs of [x]
+    and [y] are used to determine the quadrant of the result.
+    Result is in radians and is between [-pi] and [pi]. *)
 
 external cosh : float -> float = "caml_cosh_float" "cosh" "float"
-(** See {!Pervasives.tanh}. *)
+(** Hyperbolic cosine.  Argument is in radians. *)
 
 external sinh : float -> float = "caml_sinh_float" "sinh" "float"
-(** See {!Pervasives.tanh}. *)
+(** Hyperbolic sine.  Argument is in radians. *)
 
 external tanh : float -> float = "caml_tanh_float" "tanh" "float"
-(** The usual hyperbolic trigonometric functions. *)
+(** Hyperbolic tangent.  Argument is in radians. *)
 
 external ceil : float -> float = "caml_ceil_float" "ceil" "float"
-(** See {!Pervasives.floor}. *)
+(** Round above to an integer value.
+    [ceil f] returns the least integer value greater than or equal to [f].
+    The result is returned as a float. *)
 
 external floor : float -> float = "caml_floor_float" "floor" "float"
-(** Round the given float to an integer value.
-   [floor f] returns the greatest integer value less than or
-   equal to [f].
-   [ceil f] returns the least integer value greater than or
-   equal to [f]. *)
+(** Round below to an integer value.
+    [floor f] returns the greatest integer value less than or
+    equal to [f].
+    The result is returned as a float. *)
 
 external abs_float : float -> float = "%absfloat"
-(** Return the absolute value of the argument. *)
+(** [abs_float f] returns the absolute value of [f]. *)
 
 external mod_float : float -> float -> float = "caml_fmod_float" "fmod" "float"
 (** [mod_float a b] returns the remainder of [a] with respect to
@@ -450,7 +472,6 @@
    if the given string is not a valid representation of a float. *)
 
 
-
 (** {6 Pair operations} *)
 
 external fst : 'a * 'b -> 'a = "%field0"
@@ -552,8 +573,8 @@
    The result is unspecified if the line read is not a valid
    representation of a floating-point number. *)
 
-(** {7 General output functions} *)
 
+(** {7 General output functions} *)
 
 type open_flag =
     Open_rdonly      (** open for reading. *)
@@ -779,6 +800,7 @@
    This function has no effect under operating systems that
    do not distinguish between text mode and binary mode. *)
 
+
 (** {7 Operations on large files} *)
 
 module LargeFile :
@@ -797,6 +819,7 @@
   regular integers (type [int]), these alternate functions allow
   operating on files whose sizes are greater than [max_int]. *)
 
+
 (** {6 References} *)
 
 type 'a ref = { mutable contents : 'a }
@@ -861,7 +884,6 @@
 
 (** {6 Program termination} *)
 
-
 val exit : int -> 'a
 (** Terminate the process, returning the given status code
    to the operating system: usually 0 to indicate no errors,
@@ -879,9 +901,9 @@
    The functions are called in ``last in, first out'' order:
    the function most recently added with [at_exit] is called first. *)
 
-
 (**/**)
 
+
 (** {6 For system use only, not for the casual user} *)
 
 val valid_float_lexem : string -> string
--- obrowser-1.1/rt/caml/pervasives.ml.orig	2010-07-23 16:25:56.000000000 +0200
+++ obrowser-1.1/rt/caml/pervasives.ml	2010-07-23 16:29:32.000000000 +0200
@@ -51,6 +51,7 @@
 (* Integer operations *)
 
 external (~-) : int -> int = "%negint"
+external (~+) : int -> int = "%identity"
 external succ : int -> int = "%succint"
 external pred : int -> int = "%predint"
 external (+) : int -> int -> int = "%addint"
@@ -77,6 +78,7 @@
 (* Floating-point operations *)
 
 external (~-.) : float -> float = "%negfloat"
+external (~+.) : float -> float = "%identity"
 external (+.) : float -> float -> float = "%addfloat"
 external (-.) : float -> float -> float = "%subfloat"
 external ( *. ) : float -> float -> float = "%mulfloat"

[-- Attachment #12: ocaml-data-notation-0.0.3.patch --]
[-- Type: application/octet-stream, Size: 1205 bytes --]

--- ocaml-data-notation-0.0.3.orig/src/pa_odn.ml	2010-10-19 23:35:58.000000000 +0200
+++ ocaml-data-notation-0.0.3/src/pa_odn.ml	2011-05-03 14:51:05.000000000 +0200
@@ -199,7 +199,7 @@
     function
       | TyDcl (_loc, type_name, tps, rhs, _cl) ->
           let body = 
-            Gen.switch_tp_def _loc
+            Gen.switch_tp_def
               ~alias:odn_of_alias
               ~sum:odn_of_sum
               ~record:odn_of_record
@@ -225,7 +225,7 @@
   let _loc, recursive = 
     match tp with
       | TyDcl (_loc, type_name, _, rhs, _) -> 
-          _loc, Gen.type_is_recursive _loc type_name rhs
+          _loc, Gen.type_is_recursive type_name rhs
       | TyAnd (_loc, _, _) -> 
           _loc, true
       | _ -> assert false
--- ocaml-data-notation-0.0.3.orig/src/META	2010-10-19 23:35:58.000000000 +0200
+++ ocaml-data-notation-0.0.3/src/META	2011-05-06 16:37:50.000000000 +0200
@@ -43,7 +43,7 @@
  package "syntax" (
   version = "0.0.3"
   description = "Syntax extension for odn"
-  requires = "type-conv.syntax camlp4 odn"
+  requires = "type-conv camlp4 odn"
   archive(syntax,preprocessor) = "pa_odn.cma"
   archive(syntax,toploop) = "pa_odn.cma"
   exists_if = "pa_odn.cma"

[-- Attachment #13: ocaml-fileutils-0.4.2.patch --]
[-- Type: application/octet-stream, Size: 487 bytes --]

--- ocaml-fileutils-0.4.2.orig/Makefile	2011-05-03 15:04:34.000000000 +0200
+++ ocaml-fileutils-0.4.2/Makefile	2011-05-03 15:05:28.000000000 +0200
@@ -72,8 +72,8 @@
 	  $(wildcard $(BUILDDIR)/fileutils-str.lib) \
 	  $(wildcard $(BUILDDIR)/*.cmx) 
 	$(INSTALL) -d $(htmldir)/api
-	$(INSTALL_DATA) -t $(htmldir)/api \
-	  $(wildcard $(BUILDDIR)/fileutils.docdir/*)
+	$(INSTALL_DATA) \
+	  $(wildcard $(BUILDDIR)/fileutils.docdir/*) $(htmldir)/api
 
 uninstall:
 	-$(RM) -r $(htmldir)/api

[-- Attachment #14: omake-0.9.8.6.patch --]
[-- Type: application/octet-stream, Size: 372 bytes --]

--- omake-0.9.8.6.orig/lib/build/OCaml.om	2008-03-05 02:07:25.000000000 +0100
+++ omake-0.9.8.6/lib/build/OCaml.om	2011-05-02 22:53:23.000000000 +0200
@@ -176,7 +176,7 @@
 #
 declare OCAMLDEPFLAGS
 public.OCAMLPPFLAGS  =
-public.OCAMLFLAGS    = -warn-error A
+public.OCAMLFLAGS    = -warn-error a
 public.OCAMLCFLAGS   = -g
 public.OCAMLOPTFLAGS =
 public.OCAMLCPPFLAGS =

[-- Attachment #15: sks-1.1.1.patch --]
[-- Type: application/octet-stream, Size: 410 bytes --]

diff -N -r -u sks-1.1.1.orig/Makefile.local sks-1.1.1/Makefile.local
--- sks-1.1.1.orig/Makefile.local	1970-01-01 01:00:00.000000000 +0100
+++ sks-1.1.1/Makefile.local	2010-05-17 14:49:16.000000000 +0200
@@ -0,0 +1,9 @@
+BDBLIB=-L/opt/local/lib/db46
+BDBINCLUDE=-I/opt/local/include/db46
+LIBDB=-ldb-4.6
+MANDIR=${PREFIX}/share/man
+export BDBLIB
+export BDBINCLUDE
+export PREFIX
+export LIBDB
+export MANDIR

[-- Attachment #16: vsyml-2010-04-06.patch --]
[-- Type: application/octet-stream, Size: 1019 bytes --]

--- vsyml-2010-04-06.orig/makefile	2010-04-06 19:28:25.000000000 +0200
+++ vsyml-2010-04-06/makefile	2010-08-23 15:16:22.000000000 +0200
@@ -525,13 +525,13 @@
 
 # dependencies for the symbolic simulator main file on cmo cma cmx and cmxa
 $(VSYML_CMO_LST): $(VSYML_MAIN)
-	echo -n "VSYML_CMO=" > $@
-	for i in `grep -o -e '[a-zA-Z0-9_]*\.cmo' $<` ; do echo -n $$i " " >> $@ ; done
+	echo "VSYML_CMO=" | tr -d '\012' > $@
+	for i in `grep -o -e '[a-zA-Z0-9_]*\.cmo' $<` ; do echo $$i " " | tr -d '\012' >> $@ ; done
 	echo $(patsubst $(SRC_PATH)$(PATH_SEPARATOR)%.ml,%.cmo,$<) >> $@
 
 $(VSYML_CMA_LST): $(VSYML_MAIN)
-	echo -n "VSYML_CMA=" > $@
-	for i in `grep -o -e '[a-zA-Z0-9_]*\.cma' $<` ; do echo -n $$i " " >> $@ ; done
+	echo "VSYML_CMA=" | tr -d '\012' > $@
+	for i in `grep -o -e '[a-zA-Z0-9_]*\.cma' $<` ; do echo $$i " " | tr -d '\012' >> $@ ; done
 
 $(VSYML_BYTE_CMO_LST): $(VSYML_CMO_LST)
 	sed -e 's@\([a-zA-Z0-9_]*\)\.cmo@$(BYTE_PATH)$(PATH_SEPARATOR)\1.cmo@g' -e 's/VSYML_CMO/VSYML_BYTE_CMO/' $< > $@

[-- Attachment #17: xml-light-2.2.patch --]
[-- Type: application/octet-stream, Size: 603 bytes --]

--- xml-light/Makefile	2003-10-12 11:16:12.000000000 +0200
+++ xml-light-2.2/Makefile	2010-01-23 20:57:57.000000000 +0100
@@ -2,7 +2,7 @@
 # http://tech.motion-twin.com
 .SUFFIXES : .ml .mli .cmo .cmx .cmi .mll .mly
 
-INSTALLDIR=`ocamlc -where`
+INSTALLDIR=`ocamlc -where`/xml-light
 CFLAGS=
 LFLAGS= -a
 LIBS=
@@ -12,6 +12,7 @@
 opt: xml-light.cmxa test_opt.exe
 
 install: all opt
+	mkdir -p "${INSTALLDIR}"
 	cp xml-light.cmxa xml-light.a xml-light.cma xml.mli xmlParser.mli dtd.mli xml.cmi xmlParser.cmi dtd.cmi xml.cmx dtd.cmx xmlParser.cmx $(INSTALLDIR)
 
 doc:

[-- Attachment #18: Type: text/plain, Size: 2 bytes --]




^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Caml-list] Re: OCaml 3.12.1 compatibility report
  2011-06-16 15:01 [Caml-list] OCaml 3.12.1 compatibility report Damien Doligez
@ 2011-06-16 15:11 ` Sylvain Le Gall
  2011-06-16 15:18 ` [Caml-list] " Stéphane Glondu
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 16+ messages in thread
From: Sylvain Le Gall @ 2011-06-16 15:11 UTC (permalink / raw)
  To: caml-list

On 16-06-2011, Damien Doligez <damien.doligez@inria.fr> wrote:
>
> --Apple-Mail-3--783193267
> Content-Transfer-Encoding: quoted-printable
> Content-Type: text/plain;
> 	charset=us-ascii
>
>
>                   OCaml 3.12.1 Compatibility Report
>
>
> I have compiled the following software with the latest release
> candidate of OCaml (3.12.1+rc1).
>
> -----------------------------------------------------------
>
> This is what I had to patch because of problems unrelated to 3.12.1:
>
> oasis: 8 lines
>   Change setup.ml to handle OCaml version numbers with a + suffix
>

Fixed in oasis 0.2.1~alpha1

> ocaml-data-notation: 3 lines
>   Change in Makefile to follow name change of "type-conv.syntax" to "type-c=
> onv"

Fixed in ocaml-data-notation 0.0.5

>   Changes in pa_odn.ml to remove extraneous occurrences "_loc"

Probably fixed in 0.0.5

>
> ocaml-fileutils: 2 lines
>   Changes in Makefile to remove use of non-portable "install -t"
>

Fixed in ocaml-fileutils 0.4.3

Cheers,
Sylvain Le Gall
-- 
My company: http://www.ocamlcore.com
Linkedin:   http://fr.linkedin.com/in/sylvainlegall
Start an OCaml project here: http://forge.ocamlcore.org
OCaml blogs:                 http://planet.ocamlcore.org



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-16 15:01 [Caml-list] OCaml 3.12.1 compatibility report Damien Doligez
  2011-06-16 15:11 ` [Caml-list] " Sylvain Le Gall
@ 2011-06-16 15:18 ` Stéphane Glondu
  2011-06-16 15:33 ` Florent Ouchet
  2011-06-16 17:59 ` Serge Ziryukin
  3 siblings, 0 replies; 16+ messages in thread
From: Stéphane Glondu @ 2011-06-16 15:18 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users

Le 16/06/2011 17:01, Damien Doligez a écrit :
>                    OCaml 3.12.1 Compatibility Report
>
>
> I have compiled the following software with the latest release
> candidate of OCaml (3.12.1+rc1). [...]

Very nice! As far as Debian is concerned, basically all packages 
currently in unstable (with type-conv and its reverse dependencies taken 
from testing) compile with no changes. The resulting binary packages are 
available at:

   http://ocaml.debian.net/debian/ocaml-3.12.1%2Brc1/


Cheers,

-- 
Stéphane

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-16 15:01 [Caml-list] OCaml 3.12.1 compatibility report Damien Doligez
  2011-06-16 15:11 ` [Caml-list] " Sylvain Le Gall
  2011-06-16 15:18 ` [Caml-list] " Stéphane Glondu
@ 2011-06-16 15:33 ` Florent Ouchet
  2011-06-16 17:46   ` Gerd Stolpmann
  2011-06-16 17:59 ` Serge Ziryukin
  3 siblings, 1 reply; 16+ messages in thread
From: Florent Ouchet @ 2011-06-16 15:33 UTC (permalink / raw)
  Cc: caml users

Damien Doligez a écrit :
> vsyml: 4 lines
>   Changes in Makefile to remove non-portable "echo -n"
>   
Hello Damien,

Was this incompatibility solved by using "echo $$i \\" instead of "echo 
-n $$i"?
If not, could you share this change?

PS: I've some patches pending for upcoming VSYML 1.8.

-- 
Florent Ouchet
PhD Student
CIS/VDS Team - TIMA Laboratory



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-16 15:33 ` Florent Ouchet
@ 2011-06-16 17:46   ` Gerd Stolpmann
  2011-06-27  9:31     ` Damien Doligez
  0 siblings, 1 reply; 16+ messages in thread
From: Gerd Stolpmann @ 2011-06-16 17:46 UTC (permalink / raw)
  To: florent.ouchet; +Cc: caml users

Am Donnerstag, den 16.06.2011, 17:33 +0200 schrieb Florent Ouchet:
> Damien Doligez a écrit :
> > vsyml: 4 lines
> >   Changes in Makefile to remove non-portable "echo -n"
> >   
> Hello Damien,
> 
> Was this incompatibility solved by using "echo $$i \\" instead of "echo 
> -n $$i"?
> If not, could you share this change?

In such cases printf is a good workaround. Exists everywhere as shell
command, is a POSIX standard, and works as usual, with full control over
newlines.

Gerd

> 
> PS: I've some patches pending for upcoming VSYML 1.8.
> 
> -- 
> Florent Ouchet
> PhD Student
> CIS/VDS Team - TIMA Laboratory
> 
> 
> 


-- 
------------------------------------------------------------
Gerd Stolpmann, Bad Nauheimer Str.3, 64289 Darmstadt,Germany 
gerd@gerd-stolpmann.de          http://www.gerd-stolpmann.de
Phone: +49-6151-153855                  Fax: +49-6151-997714
------------------------------------------------------------



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-16 15:01 [Caml-list] OCaml 3.12.1 compatibility report Damien Doligez
                   ` (2 preceding siblings ...)
  2011-06-16 15:33 ` Florent Ouchet
@ 2011-06-16 17:59 ` Serge Ziryukin
  2011-06-27 10:29   ` Stéphane Glondu
  3 siblings, 1 reply; 16+ messages in thread
From: Serge Ziryukin @ 2011-06-16 17:59 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users

On Jun 16, 2011, at 6:01 PM, Damien Doligez wrote:

> 
>                  OCaml 3.12.1 Compatibility Report
> 
> 
> I have compiled the following software with the latest release
> candidate of OCaml (3.12.1+rc1).
> 
> See below for a list of what I had to patch to get these to compile.
> The packages I had to patch are marked here with a *
> 
[...]
> bin_prot-1.3.1.tar.gz
[...]

Did you also run 'make test' on bin_prot?
It fails for me:

I: Running command '/Users/ftrvxmtrx/temp/sandbox/bin_prot-1.3.1/_build/lib_test/test_runner'
........................F................................F.........
==============================================================================
Failure: 1:Bin_prot_c:24:bigstring

OUnit: read_bigstring [| ... |]: returned wrong result
------------------------------------------------------------------------------
==============================================================================
Failure: 0:Bin_prot_ml:24:bigstring

OUnit: read_bigstring [| ... |]: returned wrong result
------------------------------------------------------------------------------
Ran: 67 tests in: 0.04 seconds.
FAILED: Cases: 67 Tried: 67 Errors: 0 Failures: 2 Skip:0 Todo:0



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-16 17:46   ` Gerd Stolpmann
@ 2011-06-27  9:31     ` Damien Doligez
  2011-06-28  8:07       ` Florent Ouchet
  0 siblings, 1 reply; 16+ messages in thread
From: Damien Doligez @ 2011-06-27  9:31 UTC (permalink / raw)
  To: caml users


On 2011-06-16, at 19:46, Gerd Stolpmann wrote:

> In such cases printf is a good workaround. Exists everywhere as shell
> command, is a POSIX standard, and works as usual, with full control over
> newlines.


When I was young, printf didn't exist, so I used

  echo $foo | tr -d '\012'

But Gerd's advice is good, next time I'll use printf.

-- Damien


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-16 17:59 ` Serge Ziryukin
@ 2011-06-27 10:29   ` Stéphane Glondu
  2011-06-27 12:49     ` xclerc
  0 siblings, 1 reply; 16+ messages in thread
From: Stéphane Glondu @ 2011-06-27 10:29 UTC (permalink / raw)
  To: Serge Ziryukin; +Cc: Damien Doligez, caml users

Le 16/06/2011 19:59, Serge Ziryukin a écrit :
> [...]
>> bin_prot-1.3.1.tar.gz
> [...]
>
> Did you also run 'make test' on bin_prot?
> It fails for me:
>
> I: Running command '/Users/ftrvxmtrx/temp/sandbox/bin_prot-1.3.1/_build/lib_test/test_runner'
> ........................F................................F.........
> ==============================================================================
> Failure: 1:Bin_prot_c:24:bigstring
>
> OUnit: read_bigstring [| ... |]: returned wrong result
> ------------------------------------------------------------------------------
> ==============================================================================
> Failure: 0:Bin_prot_ml:24:bigstring
>
> OUnit: read_bigstring [| ... |]: returned wrong result
> ------------------------------------------------------------------------------
> Ran: 67 tests in: 0.04 seconds.
> FAILED: Cases: 67 Tried: 67 Errors: 0 Failures: 2 Skip:0 Todo:0

I can reproduce this error, and it appears with this new OCaml version 
(and not with OCaml 3.12.0).


Cheers,

-- 
Stéphane

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-27 10:29   ` Stéphane Glondu
@ 2011-06-27 12:49     ` xclerc
  2011-06-27 14:40       ` Till Varoquaux
  2011-06-27 15:22       ` Xavier Leroy
  0 siblings, 2 replies; 16+ messages in thread
From: xclerc @ 2011-06-27 12:49 UTC (permalink / raw)
  To: caml users; +Cc: Serge Ziryukin, Damien Doligez, Stéphane Glondu


Le 27 juin 2011 à 12:29, Stéphane Glondu a écrit :

> Le 16/06/2011 19:59, Serge Ziryukin a écrit :
>> [...]
>>> bin_prot-1.3.1.tar.gz
>> [...]
>> 
>> Did you also run 'make test' on bin_prot?
>> It fails for me:
>> 
>> I: Running command '/Users/ftrvxmtrx/temp/sandbox/bin_prot-1.3.1/_build/lib_test/test_runner'
>> ........................F................................F.........
>> ==============================================================================
>> Failure: 1:Bin_prot_c:24:bigstring
>> 
>> OUnit: read_bigstring [| ... |]: returned wrong result
>> ------------------------------------------------------------------------------
>> ==============================================================================
>> Failure: 0:Bin_prot_ml:24:bigstring
>> 
>> OUnit: read_bigstring [| ... |]: returned wrong result
>> ------------------------------------------------------------------------------
>> Ran: 67 tests in: 0.04 seconds.
>> FAILED: Cases: 67 Tried: 67 Errors: 0 Failures: 2 Skip:0 Todo:0
> 
> I can reproduce this error, and it appears with this new OCaml version (and not with OCaml 3.12.0).

Had quite a hard time to pinpoint the problem, but finally got it.
The tests are failing because a try is made to compare two big arrays with different layouts.
It used to be accepted by the big array compare function, but now only big arrays with the
same kind and layout can be compared [1].


Regards,

Xavier Clerc


[1] cf. http://caml.inria.fr/cgi-bin/viewcvs.cgi/ocaml/version/3.12/otherlibs/bigarray/bigarray_stubs.c?rev=11037&r1=10496&r2=11037



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-27 12:49     ` xclerc
@ 2011-06-27 14:40       ` Till Varoquaux
  2011-06-27 15:22       ` Xavier Leroy
  1 sibling, 0 replies; 16+ messages in thread
From: Till Varoquaux @ 2011-06-27 14:40 UTC (permalink / raw)
  To: xclerc; +Cc: caml users, Serge Ziryukin, Damien Doligez, Stéphane Glondu

On Mon, Jun 27, 2011 at 8:49 AM, xclerc <xavier.clerc@inria.fr> wrote:
>
> Le 27 juin 2011 à 12:29, Stéphane Glondu a écrit :
>
>> Le 16/06/2011 19:59, Serge Ziryukin a écrit :
>>> [...]
>>>> bin_prot-1.3.1.tar.gz
>>> [...]
>>>
>>> Did you also run 'make test' on bin_prot?
>>> It fails for me:
>>>
>>> I: Running command '/Users/ftrvxmtrx/temp/sandbox/bin_prot-1.3.1/_build/lib_test/test_runner'
>>> ........................F................................F.........
>>> ==============================================================================
>>> Failure: 1:Bin_prot_c:24:bigstring
>>>
>>> OUnit: read_bigstring [| ... |]: returned wrong result
>>> ------------------------------------------------------------------------------
>>> ==============================================================================
>>> Failure: 0:Bin_prot_ml:24:bigstring
>>>
>>> OUnit: read_bigstring [| ... |]: returned wrong result
>>> ------------------------------------------------------------------------------
>>> Ran: 67 tests in: 0.04 seconds.
>>> FAILED: Cases: 67 Tried: 67 Errors: 0 Failures: 2 Skip:0 Todo:0
>>
>> I can reproduce this error, and it appears with this new OCaml version (and not with OCaml 3.12.0).
>
> Had quite a hard time to pinpoint the problem, but finally got it.
> The tests are failing because a try is made to compare two big arrays with different layouts.
> It used to be accepted by the big array compare function, but now only big arrays with the
> same kind and layout can be compared [1].
>
>
> Regards,
>
> Xavier Clerc
>
>
> [1] cf. http://caml.inria.fr/cgi-bin/viewcvs.cgi/ocaml/version/3.12/otherlibs/bigarray/bigarray_stubs.c?rev=11037&r1=10496&r2=11037
>
>
>
Thank you for every one who looked into it.

We (Janestreet) are not using 3.12.1 yet. We'll try to have a test
setup ASAP and issue a bug-fix release.
Xavier: your work will be very helpful in squashing that bug; thank
you very much.

Till
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa-roc.inria.fr/wws/info/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-27 12:49     ` xclerc
  2011-06-27 14:40       ` Till Varoquaux
@ 2011-06-27 15:22       ` Xavier Leroy
  2011-06-27 15:57         ` Markus Mottl
  1 sibling, 1 reply; 16+ messages in thread
From: Xavier Leroy @ 2011-06-27 15:22 UTC (permalink / raw)
  To: xclerc; +Cc: caml users, Serge Ziryukin, Damien Doligez, Stéphane Glondu

2011/6/27 xclerc <xavier.clerc@inria.fr>:

> The tests are failing because a try is made to compare two big arrays with different layouts.
> It used to be accepted by the big array compare function, but now only big arrays with the
> same kind and layout can be compared [1].

Technically, bigarrays that differ in kind or layout can still be
compared safely (= without crashing), but in 3.12.1 and up they will
never compare equal.

This is really a corner case, because in classic Caml and not using
Obj.repr nor Obj.magic, the two bigarrays being compared must have the
same static type and therefore the same kind and layout.  With
first-class modules today, or GADTs tomorrow, it is possible to
compare two values having different representation types.  That's why
polymorphic comparison in 3.12.1 was hardened so that it would behave
better in this case.

I'd be interested to understand why bin_prot ends up comparing
bigarrays of different layouts: is this an oversight in the test suite
or a strong requirement?

- Xavier Leroy

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-27 15:22       ` Xavier Leroy
@ 2011-06-27 15:57         ` Markus Mottl
  2011-06-28 16:52           ` Damien Doligez
  0 siblings, 1 reply; 16+ messages in thread
From: Markus Mottl @ 2011-06-27 15:57 UTC (permalink / raw)
  To: Xavier Leroy
  Cc: xclerc, caml users, Serge Ziryukin, Damien Doligez, Stéphane Glondu

On Mon, Jun 27, 2011 at 11:22, Xavier Leroy <Xavier.Leroy@inria.fr> wrote:
> I'd be interested to understand why bin_prot ends up comparing
> bigarrays of different layouts: is this an oversight in the test suite
> or a strong requirement?

I have traced down this problem to the C-bindings of the bin-prot
library.  When it is supposed to unmarshal bigarrays, it always
allocates them using Fortran-layout.  But this should be C-layout for
"bigstrings".  I will fix this in the next release.  The problem
should not have any noticable other impact.

Regards,
Markus

-- 
Markus Mottl        http://www.ocaml.info        markus.mottl@gmail.com


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-27  9:31     ` Damien Doligez
@ 2011-06-28  8:07       ` Florent Ouchet
  0 siblings, 0 replies; 16+ messages in thread
From: Florent Ouchet @ 2011-06-28  8:07 UTC (permalink / raw)
  To: caml users

Damien Doligez a écrit :
> When I was young, printf didn't exist, so I used
>
>   echo $foo | tr -d '\012'
>
> But Gerd's advice is good, next time I'll use printf.
>   
Hello,

Thanks for the help! I've fixed the makefile and it's now using "printf" 
instead of "echo -n". VSYML 1.8 should be released as soon as I've some 
time after my manuscrit is finished...

-- 
Florent Ouchet
PhD Student
CIS/VDS Team - TIMA Laboratory



^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-27 15:57         ` Markus Mottl
@ 2011-06-28 16:52           ` Damien Doligez
  2011-06-30 21:37             ` Markus Mottl
  0 siblings, 1 reply; 16+ messages in thread
From: Damien Doligez @ 2011-06-28 16:52 UTC (permalink / raw)
  To: caml users


On 2011-06-27, at 17:57, Markus Mottl wrote:

> I have traced down this problem to the C-bindings of the bin-prot
> library.  When it is supposed to unmarshal bigarrays, it always
> allocates them using Fortran-layout.  But this should be C-layout for
> "bigstrings".  I will fix this in the next release.  The problem
> should not have any noticable other impact.


Thank you guys for solving the problem while I was in vacation.
I'm sorry we didn't catch this earlier because I didn't have
"make test" in my Makefile.

-- Damien


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-28 16:52           ` Damien Doligez
@ 2011-06-30 21:37             ` Markus Mottl
  2011-07-04 11:45               ` xclerc
  0 siblings, 1 reply; 16+ messages in thread
From: Markus Mottl @ 2011-06-30 21:37 UTC (permalink / raw)
  To: Damien Doligez; +Cc: caml users

I have uploaded a new version of bin-prot to my website, which should
fix the problem.  I haven't actually tested it with OCaml 3.12.1, but
am quite confident it will work.  Please let me know if the discussed
problem persists.  Note that Jane Street will still have to update
their version of bin-prot.

Regards,
Markus

On Tue, Jun 28, 2011 at 12:52, Damien Doligez <damien.doligez@inria.fr> wrote:
>
> On 2011-06-27, at 17:57, Markus Mottl wrote:
>
>> I have traced down this problem to the C-bindings of the bin-prot
>> library.  When it is supposed to unmarshal bigarrays, it always
>> allocates them using Fortran-layout.  But this should be C-layout for
>> "bigstrings".  I will fix this in the next release.  The problem
>> should not have any noticable other impact.
>
>
> Thank you guys for solving the problem while I was in vacation.
> I'm sorry we didn't catch this earlier because I didn't have
> "make test" in my Makefile.
>
> -- Damien
>
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa-roc.inria.fr/wws/info/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs
>
>



-- 
Markus Mottl        http://www.ocaml.info        markus.mottl@gmail.com


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Caml-list] OCaml 3.12.1 compatibility report
  2011-06-30 21:37             ` Markus Mottl
@ 2011-07-04 11:45               ` xclerc
  0 siblings, 0 replies; 16+ messages in thread
From: xclerc @ 2011-07-04 11:45 UTC (permalink / raw)
  To: Markus Mottl, Damien Doligez, caml users; +Cc: xclerc Clerc


Le 30 juin 2011 à 23:37, Markus Mottl a écrit :

> I have uploaded a new version of bin-prot to my website, which should
> fix the problem.  I haven't actually tested it with OCaml 3.12.1, but
> am quite confident it will work.  Please let me know if the discussed
> problem persists.  Note that Jane Street will still have to update
> their version of bin-prot.

Just applied the patch from your Mercurial repository (*) to the Jane Street
distribution (which is quite different in terms of packaging), and can confirm
that all the tests now pass under 3.12.1.

Thanks for your quick update.


Regards,

Xavier Clerc


(*) files "read_ml.ml", "read_stubs.c", and "unsafe_read_c.ml"



^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2011-07-04 11:45 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-16 15:01 [Caml-list] OCaml 3.12.1 compatibility report Damien Doligez
2011-06-16 15:11 ` [Caml-list] " Sylvain Le Gall
2011-06-16 15:18 ` [Caml-list] " Stéphane Glondu
2011-06-16 15:33 ` Florent Ouchet
2011-06-16 17:46   ` Gerd Stolpmann
2011-06-27  9:31     ` Damien Doligez
2011-06-28  8:07       ` Florent Ouchet
2011-06-16 17:59 ` Serge Ziryukin
2011-06-27 10:29   ` Stéphane Glondu
2011-06-27 12:49     ` xclerc
2011-06-27 14:40       ` Till Varoquaux
2011-06-27 15:22       ` Xavier Leroy
2011-06-27 15:57         ` Markus Mottl
2011-06-28 16:52           ` Damien Doligez
2011-06-30 21:37             ` Markus Mottl
2011-07-04 11:45               ` xclerc

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).