summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--dev-ml/merlin/Manifest1
-rw-r--r--dev-ml/merlin/files/merlin-4.2-ocaml-4.12.patch30
-rw-r--r--dev-ml/merlin/merlin-4.2.ebuild82
3 files changed, 113 insertions, 0 deletions
diff --git a/dev-ml/merlin/Manifest b/dev-ml/merlin/Manifest
index 22bfea096e99..2cc2c5d29fb5 100644
--- a/dev-ml/merlin/Manifest
+++ b/dev-ml/merlin/Manifest
@@ -1,2 +1,3 @@
DIST merlin-3.4.2.tar.gz 11016272 BLAKE2B 6fa55423df7ae8f7a8056e90be630f148dd101194de1921605843caf805bd6c9694fa3fe5b8c2f8eff5d57d7d0e9d8653036b6165a49af655158925c7af87d2f SHA512 8225366ebf27ca656ca89fe00d5aec581487ae332aeab81568e7606eaf575648a7614d4d2de8e0757a4e69c6f4014fefa4574c95da13d42acb310c9dd58a468a
DIST merlin-4.1.tar.gz 2136082 BLAKE2B 3e7e1996611f0cefb3a33b2a78cd36b6e8b84d48bc48f46c45ba340c4be1b93b4a1876f8f4192e911c1c384c416ad7502ba3c7a2abb72eff01215f9fb26bfaf0 SHA512 f0f3ada007f8214b97a8557bddca87eded48ee01a8bb88aba6476e52881ead52d9f47e2666a9292b5c6a490e4cfdc7d8bb322e8489f78eaac7b0f80b6d1e87bc
+DIST merlin-4.2-411.tar.gz 1601588 BLAKE2B 348b48ccf2b209bb511450e4ba46ceb3639b1a5facd70bec4519369907e162e95575fa101aa1b79c56719927272a4feebf981692ea2bcb2299fc2c284833b1be SHA512 9ca8d3690621019b8213abcc1a32e1d754b93849f0bbd79bcab3a14915acc295eb60a7b68e997a75e777daaef83d5ca3e81944b7baf352dc4cce8480905ea2d7
diff --git a/dev-ml/merlin/files/merlin-4.2-ocaml-4.12.patch b/dev-ml/merlin/files/merlin-4.2-ocaml-4.12.patch
new file mode 100644
index 000000000000..f0d0c4301937
--- /dev/null
+++ b/dev-ml/merlin/files/merlin-4.2-ocaml-4.12.patch
@@ -0,0 +1,30 @@
+diff -u merlin-4.2-411/dot-merlin-reader.opam merlin-4.2-412/dot-merlin-reader.opam
+--- merlin-4.2-411/dot-merlin-reader.opam 2021-04-13 11:01:00.000000000 +0200
++++ merlin-4.2-412/dot-merlin-reader.opam 2021-04-13 10:53:39.000000000 +0200
+@@ -10,10 +10,12 @@
+ ["dune" "build" "-p" name "-j" jobs]
+ ]
+ depends: [
+- "ocaml" {>= "4.02.1" & < "4.12"}
+- "dune" {>= "1.8.0"}
++ "ocaml" {>= "4.06.1" }
++ "dune" {>= "2.7.0"}
+ "yojson" {>= "1.6.0"}
+ "ocamlfind" {>= "1.6.0"}
+ "csexp" {>= "1.2.3"}
+ "result" {>= "1.5"}
+ ]
++description:
++ "Helper process: reads .merlin files and gives the normalized content to merlin"
+diff -u merlin-4.2-411/merlin.opam merlin-4.2-412/merlin.opam
+--- merlin-4.2-411/merlin.opam 2021-04-13 11:01:00.000000000 +0200
++++ merlin-4.2-412/merlin.opam 2021-04-13 10:53:39.000000000 +0200
+@@ -10,7 +10,7 @@
+ ["dune" "runtest" "-p" "merlin,dot-merlin-reader" "-j" "1"] {with-test}
+ ]
+ depends: [
+- "ocaml" {>= "4.11.0" & < "4.12"}
++ "ocaml" {>= "4.12" & < "4.13"}
+ "dune" {>= "2.7.0"}
+ "dot-merlin-reader" {>= "4.0"}
+ "yojson" {>= "1.6.0"}
diff --git a/dev-ml/merlin/merlin-4.2.ebuild b/dev-ml/merlin/merlin-4.2.ebuild
new file mode 100644
index 000000000000..e3b8f11d9723
--- /dev/null
+++ b/dev-ml/merlin/merlin-4.2.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+# TODO: vim-plugin, although it's not clear how to make it work here
+inherit elisp-common dune
+
+DESCRIPTION="Context sensitive completion for OCaml in Vim and Emacs"
+HOMEPAGE="https://github.com/ocaml/merlin"
+SRC_URI="https://github.com/ocaml/merlin/archive/v${PV}-411.tar.gz -> ${P}-411.tar.gz"
+
+LICENSE="MIT"
+SLOT="0/${PV}"
+KEYWORDS="~amd64"
+IUSE="emacs +ocamlopt test"
+RESTRICT="!test? ( test )"
+
+RDEPEND="
+ dev-ml/csexp:=
+ dev-ml/yojson:=
+ dev-ml/menhir:=
+ || (
+ dev-lang/ocaml:0/4.11
+ dev-lang/ocaml:0/4.12
+ )
+ emacs? (
+ >=app-editors/emacs-23.1:*
+ app-emacs/auto-complete
+ app-emacs/company-mode
+ )
+"
+DEPEND="${RDEPEND}
+ test? ( app-misc/jq )"
+
+SITEFILE="50${PN}-gentoo.el"
+
+S="${WORKDIR}"/${P}-411
+
+src_prepare() {
+ has_version "dev-lang/ocaml:0/4.12" && \
+ eapply "${FILESDIR}"/${P}-ocaml-4.12.patch
+ default
+
+ # Handle installation via the eclass
+ rm emacs/dune || die
+
+ # rm failing test
+ rm -r tests/test-dirs/locate/context-detection/cd-mod_constr.t || die
+}
+
+src_compile() {
+ dune build @install
+
+ if use emacs ; then
+ # Build the emacs integration
+ cd emacs || die
+
+ # iedit isn't packaged yet
+ rm merlin-iedit.el || die
+
+ elisp-compile *.el
+ fi
+}
+
+src_install() {
+ dune_src_install
+
+ if use emacs ; then
+ cd "${S}/emacs" || die
+ elisp-install ${PN} *.el *.elc
+ elisp-site-file-install "${FILESDIR}/${SITEFILE}"
+ fi
+}
+
+pkg_postinst() {
+ use emacs && elisp-site-regen
+}
+
+pkg_postrm() {
+ use emacs && elisp-site-regen
+}