opam.eclass: Initial import.
authorAlexis Ballier <aballier@gentoo.org>
Wed, 2 Aug 2017 10:07:33 +0000 (12:07 +0200)
committerAlexis Ballier <aballier@gentoo.org>
Wed, 2 Aug 2017 11:22:38 +0000 (13:22 +0200)
eclass/opam.eclass [new file with mode: 0644]

diff --git a/eclass/opam.eclass b/eclass/opam.eclass
new file mode 100644 (file)
index 0000000..861d6cc
--- /dev/null
@@ -0,0 +1,49 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+# @ECLASS: opam.eclass
+# @MAINTAINER:
+# Gentoo ML Project <ml@gentoo.org>
+# @AUTHOR:
+# Alexis Ballier <aballier@gentoo.org>
+# @BLURB: Provides functions for installing opam packages.
+# @DESCRIPTION:
+# Provides dependencies on opam and ocaml, opam-install and a default
+# src_install for opam-based packages.
+
+case ${EAPI:-0} in
+    0|1|2|3|4) die "You need at least EAPI-5 to use opam.eclass";;
+    *) ;;
+esac
+
+RDEPEND=">=dev-lang/ocaml-4:="
+DEPEND="${RDEPEND}
+       dev-ml/opam"
+
+# @FUNCTION: opam-install
+# @USAGE: <list of packages>
+# @DESCRIPTION:
+# Installs the opam packages given as arguments. For each "${pkg}" element in
+# that list, "${pkg}.install" must be readable from current working directory.
+opam-install() {
+       local pkg
+       for pkg ; do
+               opam-installer -i \
+                       --prefix="${ED}usr" \
+                       --libdir="${D}$(ocamlc -where)" \
+                       --docdir="${ED}usr/share/doc/${PF}" \
+                       --mandir="${ED}usr/share/man" \
+                       "${pkg}.install" || die
+       done
+}
+
+opam_src_install() {
+       opam-install "${PN}"
+       # Handle opam putting doc in a subdir
+       if [ -d "${ED}usr/share/doc/${PF}/${PN}" ] ; then
+               mv "${ED}usr/share/doc/${PF}/${PN}/"* "${ED}usr/share/doc/${PF}/" || die
+               rmdir "${ED}usr/share/doc/${PF}/${PN}" || die
+       fi
+}
+
+EXPORT_FUNCTIONS src_install