On 03/01/2023 00.19, Maciej Barć wrote:
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 | 49 +++++++++++++++++++++++++++++++++++++++++-----
  1 file changed, 44 insertions(+), 5 deletions(-)

diff --git a/eclass/dune.eclass b/eclass/dune.eclass
index 4bc73eda8..384908a40 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
@@ -29,7 +29,7 @@ _DUNE_ECLASS=1
  # Set before inheriting the eclass.
  : ${DUNE_PKG_NAME:=${PN}}
-inherit multiprocessing
+inherit edo multiprocessing
# Do not complain about CFLAGS etc since ml projects do not use them.
  QA_FLAGS_IGNORED='.*'
@@ -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} "${@}"
+
+       edo dune "${@}"
+}
+
+# @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.

It appears there is additional output between the ebegin / eend. You may want to consider dropping ebegin and eend. In general, the pattern ebegin, edo, eend should probably be avoided.

- Flow

Reply via email to