* obey hardening LDFLAGS (Closes: #792502). Thanks to Török Edwin
for the patch!
- add patch 0013-Obey-ldflags.patch
+ * Compute a stable name for preprocessed files (Closes: #838188).
+ Thanks to Johannes Schauer for the patch!
-- Mehdi Dogguy <mehdi@debian.org> Thu, 22 Dec 2016 00:12:38 +0100
--- /dev/null
+From: Johannes Schauer <josch@debian.org>
+Date: Thu, 22 Dec 2016 00:36:14 +0100
+Subject: Compute a stable name for preprocessed files
+
+---
+ driver/pparse.ml | 11 ++++++++++-
+ 1 file changed, 10 insertions(+), 1 deletion(-)
+
+diff --git a/driver/pparse.ml b/driver/pparse.ml
+index b67c180..321d0cc 100644
+--- a/driver/pparse.ml
++++ b/driver/pparse.ml
+@@ -18,10 +18,19 @@ type error =
+
+ exception Error of error
+
++external open_desc: string -> open_flag list -> int -> int = "caml_sys_open"
++external close_desc: int -> unit = "caml_sys_close"
++
+ (* Optionally preprocess a source file *)
+
+ let call_external_preprocessor sourcefile pp =
+- let tmpfile = Filename.temp_file "ocamlpp" "" in
++ (* do not use Filename.temp_file as the resulting temporary file name will be
++ * recorded in the debug output of the resulting binary and thus make the
++ * output random and unreproducible *)
++ let temp_dir = Filename.get_temp_dir_name () in
++ let hash = Digest.to_hex (Digest.string (sourcefile^pp)) in
++ let tmpfile = Filename.concat temp_dir ("ocamlpp"^hash) in
++ close_desc(open_desc tmpfile [Open_wronly; Open_creat; Open_excl] 0o600);
+ let comm = Printf.sprintf "%s %s > %s"
+ pp (Filename.quote sourcefile) tmpfile
+ in