guix-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug#46399] [PATCH] build-system/cargo: Propagate crates across builds.


From: Efraim Flashner
Subject: [bug#46399] [PATCH] build-system/cargo: Propagate crates across builds.
Date: Mon, 12 Apr 2021 09:40:17 +0300

On Sun, Apr 11, 2021 at 05:11:21PM +0200, pelzflorian (Florian Pelz) wrote:
> Hello Efraim!
> 
> Thank you for improving Rust development with Guix.  I have a question
> about this change to doc/guix.texi when translating.  Sorry for
> noticing so late just before the string freeze.
> 
> On Tue, Feb 09, 2021 at 12:58:43PM +0200, Efraim Flashner wrote:
> > diff --git a/doc/guix.texi b/doc/guix.texi
> > index 7d18703283..0d153a1470 100644
> > --- a/doc/guix.texi
> > +++ b/doc/guix.texi
> > […]
> > @@ -7437,8 +7437,10 @@ supports builds of packages using Cargo, the build 
> > tool of the
> >  It adds @code{rustc} and @code{cargo} to the set of inputs.
> >  A different Rust package can be specified with the @code{#:rust} parameter.
> >  
> > -Regular cargo dependencies should be added to the package definition via 
> > the
> > -@code{#:cargo-inputs} parameter as a list of name and spec pairs, where the
> > +Regular cargo dependencies should be added to the package definition 
> > similarly
> > +to other packages; those needed only at build time to native-inputs, 
> > others to
> > +inputs.  If you need to add source-only crates then you should add them to 
> > via
> > +the @code{#:cargo-inputs} parameter as a list of name and spec pairs, 
> > where the
> >  spec can be a package or a source definition.  Note that the spec must
> >  evaluate to a path to a gzipped tarball which includes a @code{Cargo.toml}
> >  file at its root, or it will be ignored.  Similarly, cargo dev-dependencies
> 
> I have no experience in Rust.  Do I understand correctly that
> source-only crates among the inputs should be added both to inputs and
> to #:cargo-inputs?  Is the
> 
> > +inputs.  If you need to add source-only crates then you should add them to 
> > via
> 
> a typo which should read “add them too” instead of “add them to”?

I went back and refreshed myself with what I wrote there. source-only
crates should be added to both regular inputs and to #:cargo-inputs.
Actually converting the ~1000 rust packages to actually make good use of
the changes will allow us to drop nearly all the #:cargo-inputs and just
use regular inputs, but until then we still need the propagated source
magic that comes from #:cargo-inputs.

Yes, definitely a typo, it should be "add them too".

> I look at the subsequent change
> f35ab79e033aa8e4955e9c9100c74ecbb3ce4d0b to rust-wayland-commons
> 
> > diff --git a/gnu/packages/crates-graphics.scm 
> > b/gnu/packages/crates-graphics.scm
> > index d67e9dc02f..7dde00ffdb 100644
> > --- a/gnu/packages/crates-graphics.scm
> > +++ b/gnu/packages/crates-graphics.scm
> > @@ -2415,8 +2415,11 @@ the wayland protocol, client side.")
> >      (arguments
> > -     `(#:skip-build? #t
> > -       #:cargo-inputs
> > +     `(#:cargo-inputs
> >         (("rust-nix" ,rust-nix-0.18)
> >          ("rust-once-cell" ,rust-once-cell-1)
> > -        ("rust-smallvec" ,rust-smallvec-1)
> > -        ("rust-wayland-sys" ,rust-wayland-sys-0.28))))
> > +        ("rust-smallvec" ,rust-smallvec-1))))
> > +    (inputs
> > +     `(("rust-nix" ,rust-nix-0.18)
> > +       ("rust-once-cell" ,rust-once-cell-1)
> > +       ("rust-smallvec" ,rust-smallvec-1)
> > +       ("rust-wayland-sys" ,rust-wayland-sys-0.28)))
> >      (home-page "https://github.com/smithay/wayland-rs";)
> 
> and do not understand why rust-wayland-sys is only part of inputs but
> rust-once-cell is also among the cargo-inputs.  Also the inputs are
> empty for older versions of rust-wayland-commons.

#:cargo-inputs are "magic" in that they propagate their own #:cargo-inputs
to future builds. The changes to the cargo-build-system mimic this so we
can use regular inputs and not #:cargo-inputs. rust-wayland-sys-0.28 has
enough of its dependencies converted that it can be used as just an
input but rust-once-cell-1 hasn't yet so it still needs to be in
#:cargo-inputs. As far as the other versions of rust-wayland-commons, I
started by focusing on alacritty so we could remove some of the build
phases and move them to the crates which actually needed patching.

> Could you clarify what is written in the doc/guix.texi?
> 
> Regards,
> Florian

I think for now the best option is to add the rust inputs of all types
to both inputs and #:cargo-inputs (or native-inputs and
#:cargo-development-inputs) and then remove them from #:cargo-inputs
when it's possible to do so. Ultimately Someone™ should revive the
wip-rust branch and convert all the crates over in one go and adjust the
importer and manual.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]