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ć <[email protected]>
> ---
> 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