diff options
author | Maciej Barć <xgqt@gentoo.org> | 2021-12-08 05:47:27 +0100 |
---|---|---|
committer | Maciej Barć <xgqt@gentoo.org> | 2021-12-14 14:22:14 +0100 |
commit | 598a0ef46231d15d5bad6badae9e1101ef8bc0a1 (patch) | |
tree | 92965c8f2af813dfa9673bee246375cdcf9e47bb /eclass/dune.eclass | |
parent | www-client/firefox: drop 91.3.0-r1 (diff) | |
download | gentoo-598a0ef46231d15d5bad6badae9e1101ef8bc0a1.tar.gz gentoo-598a0ef46231d15d5bad6badae9e1101ef8bc0a1.tar.bz2 gentoo-598a0ef46231d15d5bad6badae9e1101ef8bc0a1.zip |
eclass/dune.eclass: fix dune-install function
Support EAPI 8 and drop support for EAPI 5.
Set DUNE_PKG_NAME to PN by default.
Move "Move docs to the appropriate place" block to dune-install
to make dune-install now handle a list of subpackages correctly.
Use ebegin and eend for dune calls instead of "|| die".
Thanks to ULM for bash fixes.
Signed-off-by: Maciej Barć <xgqt@gentoo.org>
Diffstat (limited to 'eclass/dune.eclass')
-rw-r--r-- | eclass/dune.eclass | 56 |
1 files changed, 35 insertions, 21 deletions
diff --git a/eclass/dune.eclass b/eclass/dune.eclass index 02a8a870ef43..69aad36921b9 100644 --- a/eclass/dune.eclass +++ b/eclass/dune.eclass @@ -8,7 +8,7 @@ # ML <ml@gentoo.org> # @AUTHOR: # Rafael Kitover <rkitover@gmail.com> -# @SUPPORTED_EAPIS: 5 6 7 +# @SUPPORTED_EAPIS: 6 7 8 # @BLURB: Provides functions for installing Dune packages. # @DESCRIPTION: # Provides dependencies on dDne and OCaml and default src_compile, src_test and @@ -19,9 +19,10 @@ # @DESCRIPTION: # Sets the actual Dune package name, if different from Gentoo package name. # Set before inheriting the eclass. +: ${DUNE_PKG_NAME:-${PN}} case ${EAPI:-0} in - 5|6|7) ;; + 6|7|8) ;; *) die "${ECLASS}: EAPI ${EAPI} not supported" ;; esac @@ -32,7 +33,7 @@ EXPORT_FUNCTIONS src_compile src_test src_install RDEPEND=">=dev-lang/ocaml-4:=[ocamlopt?] dev-ml/dune:=" case ${EAPI:-0} in - 5|6) + 6) DEPEND="${RDEPEND} dev-ml/dune" ;; *) @@ -42,11 +43,15 @@ case ${EAPI:-0} in esac dune_src_compile() { - dune build @install --profile release || die + ebegin "Building" + dune build @install --profile release + eend $? || die } dune_src_test() { - dune runtest || die + ebegin "Testing" + dune runtest + eend $? || die } # @FUNCTION: dune-install @@ -54,26 +59,35 @@ dune_src_test() { # @DESCRIPTION: # Installs the dune packages given as arguments. For each "${pkg}" element in # that list, "${pkg}.install" must be readable from "${PWD}/_build/default" +# +# Example use: +# @CODE +# dune-install menhir menhirLib menhirSdk +# @CODE dune-install() { + local -a pkgs=( "${@}" ) + [[ ${#pkgs[@]} -eq 0 ]] && pkgs=( "${DUNE_PKG_NAME}" ) + + local -a myduneopts=( + --prefix="${ED%/}/usr" + --libdir="${D%/}$(ocamlc -where)" + --mandir="${ED%/}/usr/share/man" + ) local pkg - for pkg ; do - dune install \ - --prefix="${ED%/}/usr" \ - --libdir="${D%/}$(ocamlc -where)" \ - --mandir="${ED%/}/usr/share/man" \ - "${pkg}" || die + for pkg in "${pkgs[@]}" ; do + ebegin "Installing ${pkg}" + dune install ${myduneopts[@]} ${pkg} + eend $? || die + + # Move docs to the appropriate place. + if [ -d "${ED%/}/usr/doc/${pkg}" ] ; then + mkdir -p "${ED%/}/usr/share/doc/${PF}/" || die + mv "${ED%/}/usr/doc/${pkg}" "${ED%/}/usr/share/doc/${PF}/" || die + rm -rf "${ED%/}/usr/doc" || die + fi done } dune_src_install() { - local pkg="${1:-${DUNE_PKG_NAME:-${PN}}}" - - dune-install "${pkg}" - - # Move docs to the appropriate place. - if [ -d "${ED%/}/usr/doc/${pkg}" ] ; then - mkdir -p "${ED%/}/usr/share/doc/${PF}/" || die - mv "${ED%/}/usr/doc/${pkg}/"* "${ED%/}/usr/share/doc/${PF}/" || die - rm -rf "${ED%/}/usr/doc" || die - fi + dune-install ${1:-${DUNE_PKG_NAME}} } |