commit:     fec5a15d92a88b7a3143c0f9c43355ff9aa4fb34
Author:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
AuthorDate: Thu Jul 13 22:39:19 2017 +0000
Commit:     Alexis Ballier <aballier <AT> gentoo <DOT> org>
CommitDate: Thu Jul 13 23:24:40 2017 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fec5a15d

dev-ml/js_of_ocaml: fix build with ocaml 4.05

Package-Manager: Portage-2.3.6, Repoman-2.3.2

 dev-ml/js_of_ocaml/files/ocaml405.patch        | 41 ++++++++++++++++++++++++++
 dev-ml/js_of_ocaml/js_of_ocaml-2.8.4-r1.ebuild |  1 +
 2 files changed, 42 insertions(+)

diff --git a/dev-ml/js_of_ocaml/files/ocaml405.patch 
b/dev-ml/js_of_ocaml/files/ocaml405.patch
new file mode 100644
index 00000000000..552dff425c4
--- /dev/null
+++ b/dev-ml/js_of_ocaml/files/ocaml405.patch
@@ -0,0 +1,41 @@
+Index: js_of_ocaml-2.8.4/lib/ppx/ppx_js.ml
+===================================================================
+--- js_of_ocaml-2.8.4.orig/lib/ppx/ppx_js.ml
++++ js_of_ocaml-2.8.4/lib/ppx/ppx_js.ml
+@@ -162,7 +162,8 @@ let invoker ?(extra_types = []) uplift d
+      {[ fun (type res t0 t1 ..) arg1 arg2 -> e ]}
+   *)
+   let local_types =
+-    res :: List.map Arg.name (extra_types @ arguments)
++    List.map Location.mknoloc
++    (res :: List.map Arg.name (extra_types @ arguments))
+   in
+   let result = List.fold_right Exp.newtype local_types invoker in
+ 
+@@ -210,7 +211,7 @@ let method_call ~loc obj meth args =
+          (Exp.fun_ ~loc ~attrs:[merlin_noloc] Label.nolabel None
+             (Pat.var ~loc ~attrs:[merlin_noloc] (Location.mknoloc "x"))
+             (Exp.send ~loc ~attrs:[merlin_noloc]
+-               (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) meth))]
++               (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) (Location.mknoloc 
meth)))]
+   )
+ 
+ (* {[ obj##.prop ]} generates
+@@ -244,7 +245,7 @@ let prop_get ~loc:_ ~prop_loc obj prop =
+         (Exp.fun_ ~loc:gloc Label.nolabel None
+            (Pat.var ~loc:gloc ~attrs:[merlin_noloc] (Location.mknoloc "x"))
+            (Exp.send ~loc:prop_loc ~attrs:[merlin_noloc]
+-              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) prop))
++              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) (Location.mknoloc 
prop)))
+     ]
+   )
+ 
+@@ -289,7 +290,7 @@ let prop_set ~loc ~prop_loc obj prop val
+         (Exp.fun_ ~loc Label.nolabel None
+            (Pat.var ~loc:gloc ~attrs:[merlin_noloc] (Location.mknoloc "x"))
+            (Exp.send ~loc:prop_loc ~attrs:[merlin_noloc]
+-              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) prop))
++              (Exp.ident ~loc:gloc (lid ~loc:gloc "x")) (Location.mknoloc 
prop)))
+     ]
+   )
+ 

diff --git a/dev-ml/js_of_ocaml/js_of_ocaml-2.8.4-r1.ebuild 
b/dev-ml/js_of_ocaml/js_of_ocaml-2.8.4-r1.ebuild
index 9331122157d..cac8f1d0da5 100644
--- a/dev-ml/js_of_ocaml/js_of_ocaml-2.8.4-r1.ebuild
+++ b/dev-ml/js_of_ocaml/js_of_ocaml-2.8.4-r1.ebuild
@@ -41,6 +41,7 @@ DEPEND="${RDEPEND}"
 
 src_prepare() {
        epatch "${FILESDIR}/ppx.patch"
+       has_version '>=dev-lang/ocaml-4.05_rc' && epatch 
"${FILESDIR}/ocaml405.patch"
 }
 
 src_configure() {

Reply via email to