summaryrefslogtreecommitdiff
path: root/dev-ml/ppx_deriving_yojson
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-07-14 21:03:06 +0100
commit8376ef56580626e9c0f796d5b85b53a0a1c7d5f5 (patch)
tree7681bbd4e8b05407772df40a4bf04cbbc8afc3fa /dev-ml/ppx_deriving_yojson
parent30a9caf154332f12ca60756e1b75d2f0e3e1822d (diff)
gentoo resync : 14.07.2018
Diffstat (limited to 'dev-ml/ppx_deriving_yojson')
-rw-r--r--dev-ml/ppx_deriving_yojson/Manifest4
-rw-r--r--dev-ml/ppx_deriving_yojson/files/ocaml405.patch76
-rw-r--r--dev-ml/ppx_deriving_yojson/metadata.xml11
-rw-r--r--dev-ml/ppx_deriving_yojson/ppx_deriving_yojson-3.0.ebuild44
4 files changed, 135 insertions, 0 deletions
diff --git a/dev-ml/ppx_deriving_yojson/Manifest b/dev-ml/ppx_deriving_yojson/Manifest
new file mode 100644
index 000000000000..4e356a0a6c9c
--- /dev/null
+++ b/dev-ml/ppx_deriving_yojson/Manifest
@@ -0,0 +1,4 @@
+AUX ocaml405.patch 4497 BLAKE2B f6967088e7a34ae06d50e22abf08fac3fa3899552de3a6bff642a9ffaf4cc53eb8db100a53d89d01a2d1ee01ee71e17ac30d850179378971f54cdedad00b84e9 SHA512 9bd0c7d462867b314b96d7971dc5d6b81730dee3918c5d2061c7881f7e4e172d27c9d3273c1fdfa25dce30abbc413c97eedb0e1c50cc84c82e177084220d0c8a
+DIST ppx_deriving_yojson-3.0.tar.gz 18111 BLAKE2B eaf8d380b8ff606bebff4050af9fb22624b404f106518a0f68b23866e66459f74c0984970ae0bbbdb67d2f71264a832850a8e03740c8fb207bc70abe89a61219 SHA512 70c690d880ff652f9f92e95af047e87726bab48100e9325406eef7a9ed80f439df7292324de56cd17a93c6ad6bc9c1e7ce6edcd7c3b336352f0df4bfa7c7b81c
+EBUILD ppx_deriving_yojson-3.0.ebuild 1012 BLAKE2B bd4af32968c4c032ec70ba76bf1814717430292adb12bd5d7185043eaadea827a94a4270855eee874fbdbbbc5d02f4746e67a6cc2f1d3506a403b84b0d9fd646 SHA512 bb1b4a997bc0e804de5d659fc26a1140c485cd1d749f0f7565cb41c92460b745842fe71c409226b24df7c82d8ab8f4f759f715442aaf447f836520a21d3bc644
+MISC metadata.xml 342 BLAKE2B 1b3bc6020fa4b6448165b9ff18d228c0dba8f7b5340abd1573ecd5d3db8296648e3a43b835fde12ff40e3603dc4138927d69055da8ca51ea4146d91fd6ae165d SHA512 ee968464fdc162f4caa4e063c43829f8ffaa89d46e49191ed6a661eeab021d5765d4bdbcd31fefbc0806ebb072aa5988a13cea45ad0d548ccdfdad5e7a500b93
diff --git a/dev-ml/ppx_deriving_yojson/files/ocaml405.patch b/dev-ml/ppx_deriving_yojson/files/ocaml405.patch
new file mode 100644
index 000000000000..33440fabdd19
--- /dev/null
+++ b/dev-ml/ppx_deriving_yojson/files/ocaml405.patch
@@ -0,0 +1,76 @@
+Index: ppx_deriving_yojson-3.0/src/ppx_deriving_yojson.cppo.ml
+===================================================================
+--- ppx_deriving_yojson-3.0.orig/src/ppx_deriving_yojson.cppo.ml
++++ ppx_deriving_yojson-3.0/src/ppx_deriving_yojson.cppo.ml
+@@ -260,7 +260,7 @@ let ser_str_of_type ~options ~path ({ pt
+ let polymorphize_ser = Ppx_deriving.poly_arrow_of_type_decl
+ (fun var -> [%type: [%t var] -> Yojson.Safe.json]) type_decl
+ in
+- let ty = Typ.poly poly_vars (polymorphize_ser [%type: [%t typ] -> Yojson.Safe.json]) in
++ let ty = Typ.poly (List.map Location.mknoloc poly_vars) (polymorphize_ser [%type: [%t typ] -> Yojson.Safe.json]) in
+ let default_fun =
+ let type_path = String.concat "." (path @ [type_decl.ptype_name.txt]) in
+ let e_type_path = Exp.constant (Pconst_string (type_path, None)) in
+@@ -270,7 +270,7 @@ let ser_str_of_type ~options ~path ({ pt
+ in
+ let poly_fun = polymorphize default_fun in
+ let poly_fun =
+- (Ppx_deriving.fold_left_type_decl (fun exp name -> Exp.newtype name exp) poly_fun type_decl)
++ (Ppx_deriving.fold_left_type_decl (fun exp name -> Exp.newtype (Location.mknoloc name) exp) poly_fun type_decl)
+ in
+ let mod_name = "M_"^to_yojson_name in
+ let typ = Type.mk ~kind:(Ptype_record [Type.field ~mut:Mutable (mknoloc "f") ty])
+@@ -337,7 +337,7 @@ let ser_str_of_type ~options ~path ({ pt
+ raise_errorf ~loc "%s cannot be derived for fully abstract types" deriver
+ in
+ let ty = ser_type_of_decl ~options ~path type_decl in
+- let fv = Ppx_deriving.free_vars_in_core_type ty in
++ let fv = List.map Location.mknoloc (Ppx_deriving.free_vars_in_core_type ty) in
+ let poly_type = Typ.force_poly @@ Typ.poly fv @@ ty in
+ let var = pvar (Ppx_deriving.mangle_type_decl (`Suffix "to_yojson") type_decl) in
+ ([],
+@@ -431,7 +431,7 @@ let desu_str_of_type ~options ~path ({ p
+ raise_errorf ~loc "%s: extensible type manifest should be a type name" deriver
+ | None ->
+ let poly_vars = List.rev
+- (Ppx_deriving.fold_left_type_decl (fun acc name -> name :: acc) [] type_decl)
++ (List.map Location.mknoloc (Ppx_deriving.fold_left_type_decl (fun acc name -> name :: acc) [] type_decl))
+ in
+ let polymorphize_desu = Ppx_deriving.poly_arrow_of_type_decl
+ (fun var -> [%type: Yojson.Safe.json -> [%t error_or var]]) type_decl in
+@@ -441,7 +441,7 @@ let desu_str_of_type ~options ~path ({ p
+ let default_fun = Exp.function_ [Exp.case [%pat? _] top_error] in
+ let poly_fun = polymorphize default_fun in
+ let poly_fun =
+- (Ppx_deriving.fold_left_type_decl (fun exp name -> Exp.newtype name exp) poly_fun type_decl)
++ (Ppx_deriving.fold_left_type_decl (fun exp name -> Exp.newtype (Location.mknoloc name) exp) poly_fun type_decl)
+ in
+ let mod_name = "M_"^of_yojson_name in
+ let typ = Type.mk ~kind:(Ptype_record [Type.field ~mut:Mutable (mknoloc "f") ty])
+@@ -514,7 +514,7 @@ let desu_str_of_type ~options ~path ({ p
+ raise_errorf ~loc "%s cannot be derived for fully abstract types" deriver
+ in
+ let ty = desu_type_of_decl ~options ~path type_decl in
+- let fv = Ppx_deriving.free_vars_in_core_type ty in
++ let fv = List.map Location.mknoloc (Ppx_deriving.free_vars_in_core_type ty) in
+ let poly_type = Typ.force_poly @@ Typ.poly fv @@ ty in
+ let var = pvar (Ppx_deriving.mangle_type_decl (`Suffix "of_yojson") type_decl) in
+ ([],
+@@ -579,7 +579,7 @@ let ser_sig_of_type ~options ~path type_
+ (`PrefixSuffix ("M", "to_yojson")) type_decl
+ in
+ let poly_vars = List.rev
+- (Ppx_deriving.fold_left_type_decl (fun acc name -> name :: acc) [] type_decl)
++ (List.map Location.mknoloc (Ppx_deriving.fold_left_type_decl (fun acc name -> name :: acc) [] type_decl))
+ in
+ let typ = Ppx_deriving.core_type_of_type_decl type_decl in
+ let polymorphize_ser = Ppx_deriving.poly_arrow_of_type_decl
+@@ -614,7 +614,7 @@ let desu_sig_of_type ~options ~path type
+ (`PrefixSuffix ("M", "of_yojson")) type_decl
+ in
+ let poly_vars = List.rev
+- (Ppx_deriving.fold_left_type_decl (fun acc name -> name :: acc) [] type_decl)
++ (List.map Location.mknoloc (Ppx_deriving.fold_left_type_decl (fun acc name -> name :: acc) [] type_decl))
+ in
+ let typ = Ppx_deriving.core_type_of_type_decl type_decl in
+ let polymorphize_desu = Ppx_deriving.poly_arrow_of_type_decl
diff --git a/dev-ml/ppx_deriving_yojson/metadata.xml b/dev-ml/ppx_deriving_yojson/metadata.xml
new file mode 100644
index 000000000000..0c78feb0828a
--- /dev/null
+++ b/dev-ml/ppx_deriving_yojson/metadata.xml
@@ -0,0 +1,11 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="project">
+ <email>ml@gentoo.org</email>
+ <name>Gentoo ML Project</name>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">whitequark/ppx_deriving_yojson</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-ml/ppx_deriving_yojson/ppx_deriving_yojson-3.0.ebuild b/dev-ml/ppx_deriving_yojson/ppx_deriving_yojson-3.0.ebuild
new file mode 100644
index 000000000000..07d29ef08c77
--- /dev/null
+++ b/dev-ml/ppx_deriving_yojson/ppx_deriving_yojson-3.0.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit eutils opam
+
+DESCRIPTION="A Yojson codec generator for OCaml"
+HOMEPAGE="https://github.com/whitequark/ppx_deriving_yojson/"
+SRC_URI="https://github.com/whitequark/ppx_deriving_yojson/archive/v${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64"
+IUSE="+ocamlopt test"
+
+DEPEND="
+ dev-lang/ocaml:=[ocamlopt?]
+ dev-ml/yojson:=
+ dev-ml/result:=
+ >=dev-ml/ppx_deriving-4:=
+ dev-ml/cppo:=
+"
+RDEPEND="${DEPEND}"
+DEPEND="${DEPEND}
+ dev-ml/findlib
+ dev-ml/ocamlbuild
+ test? ( dev-ml/ounit dev-ml/ppx_import )"
+
+src_prepare() {
+ has_version '>=dev-lang/ocaml-4.05_rc' && epatch "${FILESDIR}/ocaml405.patch"
+}
+
+src_compile() {
+ cp pkg/META.in pkg/META
+ ocaml pkg/build.ml \
+ native=$(usex ocamlopt true false) \
+ native-dynlink=$(usex ocamlopt true false) \
+ || die
+}
+
+src_test() {
+ ocamlbuild -j 0 -use-ocamlfind -classic-display src_test/test_ppx_yojson.byte -- || die
+}