edune is a thin wrapper for dune, which will help to run special, uncommon dune commands; dune-compile is a function to selectively pick which packages will be compiled "for-release" (as dune call it); dune-compile without any arguments replaces the current dune_src_compile
Signed-off-by: Maciej Barć <x...@gentoo.org> --- eclass/dune.eclass | 47 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 43 insertions(+), 4 deletions(-) diff --git a/eclass/dune.eclass b/eclass/dune.eclass index 4bc73eda8..6c760accd 100644 --- a/eclass/dune.eclass +++ b/eclass/dune.eclass @@ -1,4 +1,4 @@ -# Copyright 1999-2022 Gentoo Authors +# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 # @ECLASS: dune.eclass @@ -44,15 +44,54 @@ BDEPEND=" dev-ml/dune " +# @FUNCTION: edune +# @USAGE: <arg> ... +# @DESCRIPTION: +# A thin wrapper for the `dune` command. +# Runs `dune` with given arguments and dies on failure. +# +# Example use: +# @CODE +# edune clean +# @CODE +edune() { + debug-print-function ${FUNCNAME} "${@}" + + dune "${@}" || die "dune call failed, given arguments: ${@}" +} + +# @FUNCTION: dune-compile +# @USAGE: [package] ... +# @DESCRIPTION: +# Compiles either all of packages sources in current directory or selected +# packages. In case of all packages the package detection is done via dune +# itself. +# +# Example use: +# @CODE +# dune-compile menhir menhirLib menhirSdk +# @CODE +dune-compile() { + local -a myduneopts=( + -j $(makeopts_jobs) + --profile release + ) + if [[ -n "${1}" ]] ; then + myduneopts+=( --for-release-of-packages="$(IFS="," ; echo "${*}")" ) + fi + + edune build @install "${myduneopts[@]}" +} + dune_src_compile() { ebegin "Building" - dune build @install -j $(makeopts_jobs) --profile release + dune-compile eend $? || die } dune_src_test() { ebegin "Testing" - dune runtest -j $(makeopts_jobs) --profile release + edune runtest -j $(makeopts_jobs) --profile release eend $? || die } @@ -80,7 +119,7 @@ dune-install() { local pkg for pkg in "${pkgs[@]}" ; do ebegin "Installing ${pkg}" - dune install ${myduneopts[@]} ${pkg} + edune install ${myduneopts[@]} ${pkg} eend $? || die # Move docs to the appropriate place. -- 2.38.2