• [gentoo-dev] [PATCH 3/5] cargo.eclass: Optimize GIT_CRATES check

    From =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?@21:1/5 to All on Fri Jun 16 14:10:01 2023
    Optimize the GIT_CRATES check to call `declare -p` only if the variable
    is actually set. In the vast majority of ebuilds using cargo.eclass,
    it's not set, so the subshell-first approach is slowing things down.
    With this change, the speed improves by another ~20%:

    ```
    real 363 it/s
    user 365 it/s
    ```

    Signed-off-by: Michał Górny <mgorny@gentoo.org>
    ---
    eclass/cargo.eclass | 58 ++++++++++++++++++++++-----------------------
    1 file changed, 29 insertions(+), 29 deletions(-)

    diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
    index 4e0cd1e4de70..d97bb0df9348 100644
    --- a/eclass/cargo.eclass
    +++ b/eclass/cargo.eclass
    @@ -189,35 +189,35 @@ _cargo_set_crate_uris() {
    CARGO_CRATE_URIS+="${url} "
    done

    - local git_crates_type
    - git_crates_type="$(declare -p GIT_CRATES 2>&-)"
    - if [[ ${git_crates_type} == "declare -A "* ]]; then
    - local crate commit crate_uri crate_dir repo_ext feat_expr
    -
    - for crate in "${!GIT_CRATES[@]}"; do
    - IFS=';' read -r crate_uri commit crate_dir <<< "${GIT_CRATES[${crate}]}"
    -
    - case "${crate_uri}" in
    - https://github.com/*)
    - repo_ext=".gh"
    - repo_name="${crate_uri##*/}"
    - crate_uri="${crate_uri%/}/archive/%commit%.tar.gz"
    - ;;
    - https://gitlab.com/*)
    - repo_ext=".gl"
    - repo_name="${crate_uri##*/}"
    - crate_uri="${crate_uri%/}/-/archive/%commit%/${repo_name}-%