Patch taken from the Ubuntu source repository for Unison 2.48.4.

From: Stephane Glondu <steph@glondu.net>
Date: Mon, 25 Nov 2019 10:52:48 +0100
Subject: Fix compilation with OCaml 4.08.1

---
 Makefile.OCaml           | 2 +-
 files.ml                 | 2 +-
 recon.ml                 | 4 ++--
 system/system_generic.ml | 2 +-
 uigtk2.ml                | 2 +-
 5 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/Makefile.OCaml b/Makefile.OCaml
index 21610ce..7549907 100644
--- a/Makefile.OCaml
+++ b/Makefile.OCaml
@@ -95,7 +95,7 @@ buildexecutable::
 ### Default parameters
 
 # Generate backtrace information for exceptions
-CAMLFLAGS+=-g
+CAMLFLAGS+=-g -unsafe-string
 
 INCLFLAGS=-I lwt -I ubase -I system
 CAMLFLAGS+=$(INCLFLAGS)
diff --git a/files.ml b/files.ml
index ba42ad5..02d52f3 100644
--- a/files.ml
+++ b/files.ml
@@ -722,7 +722,7 @@ let get_files_in_directory dir =
   with End_of_file ->
     dirh.System.closedir ()
   end;
-  Sort.list (<) !files
+  List.sort compare !files
 
 let ls dir pattern =
   Util.convertUnixErrorsToTransient
diff --git a/recon.ml b/recon.ml
index 5ed358d..a8719c4 100644
--- a/recon.ml
+++ b/recon.ml
@@ -651,8 +651,8 @@ let rec reconcile
 
 (* Sorts the paths so that they will be displayed in order                   *)
 let sortPaths pathUpdatesList =
-  Sort.list
-    (fun (p1, _) (p2, _) -> Path.compare p1 p2 <= 0)
+  List.sort
+    (fun (p1, _) (p2, _) -> Path.compare p1 p2)
     pathUpdatesList
 
 let rec enterPath p1 p2 t =
diff --git a/system/system_generic.ml b/system/system_generic.ml
index 9230cdc..ee457c5 100755
--- a/system/system_generic.ml
+++ b/system/system_generic.ml
@@ -47,7 +47,7 @@ let open_out_gen = open_out_gen
 let chmod = Unix.chmod
 let chown = Unix.chown
 let utimes = Unix.utimes
-let link = Unix.link
+let link s1 s2 = Unix.link s1 s2
 let openfile = Unix.openfile
 let opendir f =
   let h = Unix.opendir f in
diff --git a/uigtk2.ml b/uigtk2.ml
index 206d8ad..b2a17e2 100644
--- a/uigtk2.ml
+++ b/uigtk2.ml
@@ -94,7 +94,7 @@ let icon =
 let icon =
   let p = GdkPixbuf.create ~width:48 ~height:48 ~has_alpha:true () in
   Gpointer.blit
-    (Gpointer.region_of_string Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
+    (Gpointer.region_of_bytes Pixmaps.icon_data) (GdkPixbuf.get_pixels p);
   p
 
 let leftPtrWatch =
