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

Bug#944592: FTBFS with OCaml 4.08.1 (safe strings)



control: tags -1 patch pending

diff uploaded

G.

On Tue, 12 Nov 2019 10:22:55 +0100 =?utf-8?q?St=C3=A9phane_Glondu?= <glondu@debian.org> wrote:
> Package: src:ocaml-deriving-ocsigen
> Version: 0.7.1-1
> Severity: serious
> Tags: ftbfs
> User: debian-ocaml-maint@lists.debian.org
> Usertags: ocaml-4.08-transition
> 
> Dear Maintainer,
> 
> ocaml-deriving-ocsigen FTBFS with OCaml 4.08.1 because -safe-string is
> the default now:
> 
>   https://buildd.debian.org/status/package.php?p=ocaml-deriving-ocsigen
> 
> 
> Cheers,
> 
> -- 
> Stéphane
> 
> -- System Information:
> Debian Release: bullseye/sid
>   APT prefers testing
>   APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
> Architecture: amd64 (x86_64)
> 
> Kernel: Linux 5.2.0-3-amd64 (SMP w/4 CPU cores)
> Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE=fr_FR.UTF-8 (charmap=UTF-8)
> Shell: /bin/sh linked to /usr/bin/dash
> Init: systemd (via /run/systemd/system)
> LSM: AppArmor: enabled
diff -Nru ocaml-deriving-ocsigen-0.7.1/debian/changelog ocaml-deriving-ocsigen-0.7.1/debian/changelog
--- ocaml-deriving-ocsigen-0.7.1/debian/changelog	2016-08-03 16:27:18.000000000 +0200
+++ ocaml-deriving-ocsigen-0.7.1/debian/changelog	2020-04-01 16:30:46.000000000 +0200
@@ -1,3 +1,13 @@
+ocaml-deriving-ocsigen (0.7.1-1.1) unstable; urgency=medium
+
+  * Non-maintainer upload.
+
+  [ Dimitri John Ledkov <xnox@ubuntu.com> ]
+  * Cherrypick upstream patch to fix ftbfs with new ocaml (Closes: #944592).
+  * Add libnum-ocaml-dev dependency
+
+ -- Gianfranco Costamagna <locutusofborg@debian.org>  Wed, 01 Apr 2020 16:30:46 +0200
+
 ocaml-deriving-ocsigen (0.7.1-1) unstable; urgency=medium
 
   * New upstream release
diff -Nru ocaml-deriving-ocsigen-0.7.1/debian/control ocaml-deriving-ocsigen-0.7.1/debian/control
--- ocaml-deriving-ocsigen-0.7.1/debian/control	2016-08-03 16:26:27.000000000 +0200
+++ ocaml-deriving-ocsigen-0.7.1/debian/control	2020-04-01 16:30:43.000000000 +0200
@@ -11,6 +11,7 @@
   debhelper (>= 9),
   libtype-conv-camlp4-dev (>= 108),
   liboptcomp-camlp4-dev,
+  libnum-ocaml-dev,
   oasis (>= 0.4.5),
   camlp4-extra
 Standards-Version: 3.9.8
diff -Nru ocaml-deriving-ocsigen-0.7.1/debian/patches/df07e7150f4d196720fa6b44a289783ae9168810.patch ocaml-deriving-ocsigen-0.7.1/debian/patches/df07e7150f4d196720fa6b44a289783ae9168810.patch
--- ocaml-deriving-ocsigen-0.7.1/debian/patches/df07e7150f4d196720fa6b44a289783ae9168810.patch	1970-01-01 01:00:00.000000000 +0100
+++ ocaml-deriving-ocsigen-0.7.1/debian/patches/df07e7150f4d196720fa6b44a289783ae9168810.patch	2020-04-01 16:30:43.000000000 +0200
@@ -0,0 +1,82 @@
+From df07e7150f4d196720fa6b44a289783ae9168810 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Daniel=20Hillerstr=C3=B6m?= <daniel.hillerstrom@ed.ac.uk>
+Date: Tue, 14 Nov 2017 19:56:45 +0000
+Subject: [PATCH] Since OCaml 4.06.0 (-safe-string option) bytes and strings
+ cannot be used interchangeably. This patch fixes the code base such that the
+ modules Bytes and String (and hence types bytes and string) are no longer
+ used interchangeably.
+
+---
+ lib/deriving_Dump.ml     | 7 ++++---
+ lib/deriving_interned.ml | 9 +++++----
+ syntax/common/utils.ml   | 2 +-
+ 3 files changed, 10 insertions(+), 8 deletions(-)
+
+diff --git a/lib/deriving_Dump.ml b/lib/deriving_Dump.ml
+index 13e356f..9bafe3d 100644
+--- a/lib/deriving_Dump.ml
++++ b/lib/deriving_Dump.ml
+@@ -142,7 +142,7 @@ module Dump_string = Defaults (
+         for i = 0 to len - 1 do
+           Bytes.unsafe_set s i (Stream.next stream)
+         done;
+-        s
++        Bytes.to_string s
+   end
+ )
+ 
+@@ -241,7 +241,8 @@ module Dump_via_marshal (P : sig type a end) = Defaults (
+   struct
+     include P
+     let to_buffer buffer obj = Buffer.add_string buffer (Marshal.to_string obj [Marshal.Closures])
+-    let from_stream stream = 
++    let from_stream stream =
++      let to_string bs = Bytes.to_string bs in
+       let readn n = 
+         let s = Bytes.create n in
+         for i = 0 to n - 1 do
+@@ -252,5 +253,5 @@ module Dump_via_marshal (P : sig type a end) = Defaults (
+       let header = readn Marshal.header_size in
+       let datasize = Marshal.data_size header 0 in
+       let datapart = readn datasize in
+-        Marshal.from_string (header ^ datapart) 0
++        Marshal.from_string ((to_string header) ^ (to_string datapart)) 0
+   end)
+diff --git a/lib/deriving_interned.ml b/lib/deriving_interned.ml
+index d53bcc7..88aad8f 100644
+--- a/lib/deriving_interned.ml
++++ b/lib/deriving_interned.ml
+@@ -14,15 +14,16 @@ type t = int * string
+     deriving (Show)
+ 
+ let intern s =
+-  try BytesMap.find s !map
++  let bs = Bytes.of_string s in
++  try BytesMap.find bs !map
+   with Not_found ->
+-    let fresh = (!counter, Bytes.of_string s) in begin
+-      map := BytesMap.add s fresh !map;
++    let fresh = (!counter, s) in begin
++      map := BytesMap.add bs fresh !map;
+       incr counter;
+       fresh
+     end
+ 
+-let to_string (_,s) = Bytes.to_string s
++let to_string (_,s) = s
+ let name = snd
+ let compare (l,_) (r,_) = compare l r
+ let eq (l,_) (r,_) = l = r
+diff --git a/syntax/common/utils.ml b/syntax/common/utils.ml
+index 913a40f..3a6aadc 100644
+--- a/syntax/common/utils.ml
++++ b/syntax/common/utils.ml
+@@ -216,7 +216,7 @@ let random_id length =
+     for i = 0 to length - 1 do
+       Bytes.set s i idchars.[Random.int nidchars]
+     done;
+-    s
++    Bytes.to_string s
+ 
+ (* The function used in OCaml to convert variant labels to their
+    integer representations.  The formula is given in Jacques
diff -Nru ocaml-deriving-ocsigen-0.7.1/debian/patches/series ocaml-deriving-ocsigen-0.7.1/debian/patches/series
--- ocaml-deriving-ocsigen-0.7.1/debian/patches/series	1970-01-01 01:00:00.000000000 +0100
+++ ocaml-deriving-ocsigen-0.7.1/debian/patches/series	2020-04-01 16:30:43.000000000 +0200
@@ -0,0 +1 @@
+df07e7150f4d196720fa6b44a289783ae9168810.patch

Reply to: