On Tue, 2023-01-03 at 00:19 +0100, 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 "${@}"
How do you pronounce it? ;-) > +} > + > +# @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. -- Best regards, Michał Górny