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 אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted