On Sun, 2024-05-12 at 19:22 +0200, Florian Schmaus wrote:
> On 12/05/2024 04.26, Michał Górny wrote:
> > Unpack crates in parallel using xargs to utilize multicore systems
> > better.  Perform checksumming via a single sha256sum invocation.
> > 
> > For dev-python/watchfiles, this speeds up unpacking on my machine
> > from 2.6 s to 0.75 s (warm cache).
> > 
> > Signed-off-by: Michał Górny <mgo...@gentoo.org>
> > ---
> >   eclass/cargo.eclass | 56 ++++++++++++++++++++++++++-------------------
> >   1 file changed, 33 insertions(+), 23 deletions(-)
> > 
> > diff --git a/eclass/cargo.eclass b/eclass/cargo.eclass
> > index 0f2da982f60c..5a16d3a30528 100644
> > --- a/eclass/cargo.eclass
> > +++ b/eclass/cargo.eclass
> > @@ -329,40 +329,50 @@ _cargo_gen_git_config() {
> >   cargo_src_unpack() {
> >     debug-print-function ${FUNCNAME} "$@"
> >   
> > -   mkdir -p "${ECARGO_VENDOR}" || die
> > -   mkdir -p "${S}" || die
> > +   mkdir -p "${ECARGO_VENDOR}" "${S}" || die
> >   
> >     local archive shasum pkg
> > +   local crates=()
> >     for archive in ${A}; do
> >             case "${archive}" in
> >                     *.crate)
> > -                           # when called by pkgdiff-mg, do not unpack 
> > crates
> > -                           [[ ${PKGBUMPING} == ${PVR} ]] && continue
> > -
> > -                           ebegin "Loading ${archive} into Cargo registry"
> > -                           tar -xf "${DISTDIR}"/${archive} -C 
> > "${ECARGO_VENDOR}/" || die
> > -                           # generate sha256sum of the crate itself as 
> > cargo needs this
> > -                           shasum=$(sha256sum "${DISTDIR}"/${archive} | 
> > cut -d ' ' -f 1)
> > -                           pkg=$(basename ${archive} .crate)
> > -                           cat <<- EOF > 
> > ${ECARGO_VENDOR}/${pkg}/.cargo-checksum.json
> > -                           {
> > -                                   "package": "${shasum}",
> > -                                   "files": {}
> > -                           }
> > -                           EOF
> > -                           # if this is our target package we need it in 
> > ${WORKDIR} too
> > -                           # to make ${S} (and handle any revisions too)
> > -                           if [[ ${P} == ${pkg}* ]]; then
> > -                                   tar -xf "${DISTDIR}"/${archive} -C 
> > "${WORKDIR}" || die
> > -                           fi
> > -                           eend $?
> > +                           crates+=( "${archive}" )
> >                             ;;
> >                     *)
> > -                           unpack ${archive}
> > +                           unpack "${archive}"
> >                             ;;
> >             esac
> >     done
> >   
> > +   if [[ ${PKGBUMPING} != ${PVR} ]]; then
> > +           pushd "${DISTDIR}" >/dev/null || die
> > +
> > +           ebegin "Unpacking crates"
> > +           printf '%s\0' "${crates[@]}" |
> > +                   xargs -0 -P "$(makeopts_jobs)" -n 1 -- \
> 
> Consider using get_makeopts_jobs instead of makeopts_jobs, as it 
> searches more variables for --jobs.

Whose bright idea was to add a second similarly named function that does
roughly the same thing but apparently differently?  It can hardly get
more confusing.

-- 
Best regards,
Michał Górny

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to