From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 4A1FD138330 for ; Wed, 7 Sep 2016 09:34:18 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 8301721C276; Wed, 7 Sep 2016 09:34:14 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id F1C8B21C276 for ; Wed, 7 Sep 2016 09:34:13 +0000 (UTC) Received: from oystercatcher.gentoo.org (unknown [IPv6:2a01:4f8:202:4333:225:90ff:fed9:fc84]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 6D333340831 for ; Wed, 7 Sep 2016 09:34:11 +0000 (UTC) Received: from localhost.localdomain (localhost [127.0.0.1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id 57C612465 for ; Wed, 7 Sep 2016 09:34:09 +0000 (UTC) From: "Alexis Ballier" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Alexis Ballier" Message-ID: <1473240841.56013d6071db66e97a6a7193594792b595610f3a.aballier@gentoo> Subject: [gentoo-commits] repo/gentoo:master commit in: dev-ml/eliom/files/, dev-ml/eliom/ X-VCS-Repository: repo/gentoo X-VCS-Files: dev-ml/eliom/eliom-5.0.0-r1.ebuild dev-ml/eliom/eliom-5.0.0-r2.ebuild dev-ml/eliom/files/oc43-2.patch X-VCS-Directories: dev-ml/eliom/files/ dev-ml/eliom/ X-VCS-Committer: aballier X-VCS-Committer-Name: Alexis Ballier X-VCS-Revision: 56013d6071db66e97a6a7193594792b595610f3a X-VCS-Branch: master Date: Wed, 7 Sep 2016 09:34:09 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Archives-Salt: 8c6aaf30-2fe4-49c8-a9e1-6d623434e2e8 X-Archives-Hash: e3c6c1e50a8fb2cbea43aeb237ee4dbf commit: 56013d6071db66e97a6a7193594792b595610f3a Author: Alexis Ballier gentoo org> AuthorDate: Wed Sep 7 09:33:53 2016 +0000 Commit: Alexis Ballier gentoo org> CommitDate: Wed Sep 7 09:34:01 2016 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=56013d60 dev-ml/eliom: backport another patch from upstream to work with ocaml 4.03 Package-Manager: portage-2.3.0 ...eliom-5.0.0-r1.ebuild => eliom-5.0.0-r2.ebuild} | 2 +- dev-ml/eliom/files/oc43-2.patch | 136 +++++++++++++++++++++ 2 files changed, 137 insertions(+), 1 deletion(-) diff --git a/dev-ml/eliom/eliom-5.0.0-r1.ebuild b/dev-ml/eliom/eliom-5.0.0-r2.ebuild similarity index 96% rename from dev-ml/eliom/eliom-5.0.0-r1.ebuild rename to dev-ml/eliom/eliom-5.0.0-r2.ebuild index 8aaec1f..36923d1 100644 --- a/dev-ml/eliom/eliom-5.0.0-r1.ebuild +++ b/dev-ml/eliom/eliom-5.0.0-r2.ebuild @@ -34,7 +34,7 @@ DEPEND="${RDEPEND} src_prepare() { if has_version '>=dev-lang/ocaml-4.03' ; then - epatch "${FILESDIR}/"{camlp4,oc43}.patch + epatch "${FILESDIR}/"{camlp4,oc43,oc43-2}.patch fi has_version '>=dev-ml/tyxml-4' && epatch "${FILESDIR}/tyxml4.patch" } diff --git a/dev-ml/eliom/files/oc43-2.patch b/dev-ml/eliom/files/oc43-2.patch new file mode 100644 index 00000000..c7eb8e2 --- /dev/null +++ b/dev-ml/eliom/files/oc43-2.patch @@ -0,0 +1,136 @@ +commit 27c69ac5dfbc26744e304232bb8c0cf22d396082 +Author: Vasilis Papavasileiou +Date: Thu May 5 11:14:02 2016 -0400 + + Fix PPX for 4.03 (empty let bindings) + +diff --git a/src/ppx/ppx_eliom_client.ml b/src/ppx/ppx_eliom_client.ml +index 580d2b5..fb2d263 100644 +--- a/src/ppx/ppx_eliom_client.ml ++++ b/src/ppx/ppx_eliom_client.ml +@@ -89,21 +89,25 @@ module Pass = struct + ] + + let define_client_functions ~loc client_value_datas = +- let bindings = +- List.map +- (fun (_num, id, expr, args) -> +- let patt = Pat.var id in +- let typ = find_fragment id in +- let args = List.map Pat.var args in +- let expr = +- [%expr +- fun [%p pat_args args] -> ([%e expr] : [%t typ]) +- ] [@metaloc loc] +- in +- Vb.mk ~loc patt expr) +- client_value_datas +- in +- Str.value ~loc Nonrecursive bindings ++ match client_value_datas with ++ | [] -> ++ [] ++ | _ -> ++ let bindings = ++ List.map ++ (fun (_num, id, expr, args) -> ++ let patt = Pat.var id in ++ let typ = find_fragment id in ++ let args = List.map Pat.var args in ++ let expr = ++ [%expr ++ fun [%p pat_args args] -> ([%e expr] : [%t typ]) ++ ] [@metaloc loc] ++ in ++ Vb.mk ~loc patt expr) ++ client_value_datas ++ in ++ [Str.value ~loc Nonrecursive bindings] + + (* For injections *) + +@@ -139,8 +143,8 @@ module Pass = struct + let client_expr_data = flush_client_value_datas () in + open_client_section loc :: + register_client_closures client_expr_data @ +- [ define_client_functions loc client_expr_data ; +- item ; ++ define_client_functions loc client_expr_data @ ++ [ item ; + close_server_section loc ; + ] + +@@ -155,11 +159,13 @@ module Pass = struct + push_client_value_data num id expr + (List.map fst escaped_bindings); + +- match context with +- | `Server -> ++ match context, escaped_bindings with ++ | `Server, _ -> + (* We are in a server fragment, this code should always be discarded. *) + Exp.extension @@ AM.extension_of_error @@ Location.errorf "Eliom: ICE" +- | `Shared -> ++ | `Shared, [] -> ++ [%expr [%e frag_eid] ()][@metaloc loc] ++ | `Shared, _ -> + let bindings = + List.map + (fun (gen_id, expr) -> +diff --git a/src/ppx/ppx_eliom_server.ml b/src/ppx/ppx_eliom_server.ml +index 97f0b53..b5238ad 100644 +--- a/src/ppx/ppx_eliom_server.ml ++++ b/src/ppx/ppx_eliom_server.ml +@@ -85,6 +85,7 @@ module Pass = struct + let $gen_id$ = $orig_expr$ and ... + (Necessary for injections in shared section) *) + let bind_injected_idents injections = ++ assert (injections <> []); + let bindings = + List.map + (fun (txt, expr,_) -> +@@ -134,10 +135,15 @@ module Pass = struct + + let client_str item = + let all_injections = flush_injections () in +- let loc = item.pstr_loc in +- [ bind_injected_idents all_injections; ++ let ccs = ++ let loc = item.pstr_loc in + close_client_section loc all_injections +- ] ++ in ++ match all_injections with ++ | [] -> ++ [ ccs ] ++ | l -> ++ [ bind_injected_idents l ; ccs ] + + let server_str item = [ + item ; +@@ -146,12 +152,19 @@ module Pass = struct + + let shared_str item = + let all_injections = flush_injections () in +- let loc = item.pstr_loc in +- [ bind_injected_idents all_injections ; +- item ; +- close_server_section loc ; +- close_client_section loc all_injections ; +- ] ++ let cl = ++ let loc = item.pstr_loc in ++ [ ++ item; ++ close_server_section loc ; ++ close_client_section loc all_injections ; ++ ] ++ in ++ match all_injections with ++ | [] -> ++ cl ++ | l -> ++ bind_injected_idents l :: cl + + let fragment ?typ ~context:_ ~num ~id expr = + let typ =