• Re: [gentoo-dev] [PATCH] eclass/dune.eclass: introduce edune and dune-c

    From Anna@21:1/5 to All on Tue Jan 3 00:10:01 2023
    On 2023-01-02 22:37, 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ć <xgqt@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: ${@}"

    Please use "edo" to also log the command being executed.

    +}
    +
    +# @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



    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to All on Tue Jan 3 07:40:01 2023
    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ć <xgqt@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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Florian Schmaus@21:1/5 to All on Tue Jan 3 08:00:01 2023
    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ć <xgqt@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

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Florian Schmaus@21:1/5 to All on Tue Jan 3 16:20:01 2023
    On 03/01/2023 15.51, Maciej Barć wrote:
    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.

    I would like to keep the "Building ... [ OK ]" (made by ebegin) output
    as it was before the change.

    The reason the ebegin/edo/eend pattern should be avoided is that the
    output will not be

    Building ... [ OK ]

    instead it will be

    Building ... dune foo bar
    [ OK ]

    so the expectation that [ OK ] is on the right hand side is not fulfilled.

    Note that edo.eclass also provides edob(), which can be used if it is
    known that the command does not produce output.

    For example

    edob dune foo bar

    should result in

    Running dune foo bar [ OK ]

    - Flow

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From =?UTF-8?Q?Micha=C5=82_G=C3=B3rny?=@21:1/5 to All on Tue Jan 3 16:30:02 2023
    On Tue, 2023-01-03 at 15:47 +0100, Maciej Barć wrote:
    How do you pronounce it? ;-)

    Michał, I am not a phonetic expert but I guess it would be "e-dune",
    like "e" in "e-mail" or "i-djun" in broken Polish. :-D

    I meant the "e-do-dune" part xP.

    --
    Best regards,
    Michał Górny

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)