help-guix
[Top][All Lists]
Advanced

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

Re: Specifying rust version


From: phodina
Subject: Re: Specifying rust version
Date: Tue, 27 Dec 2022 16:00:35 +0000

Hi,

>> the documentation for 'cargo-build-system' [1] refers to parameter
>> '#:rust' which allows user to specify the Rust compiler version.
>> However, I've found this commit
>> 9635119a61a9ab1b023558727fcdf1816fdc7fc6 from Maxim which makes all
>> 'rust-.*' definitions private.  Is there a way to specify newer Rust
>> compiler? Something like 'rust-next'?  The package requires version
>> 1.62 but the current is 1.60. Also both version are already defined.
>> What's missing is just way to select them.
>> 
>> [1] https://guix.gnu.org/manual/en/html_node/Build-Systems.html
>> 
>
> I checked gnu/packages/rust.scm and it looks like the rust packages
> aren't hidden but actually not exported. If they were just hidden then
> you could still do `#:rust ,rust-1.62`. Since they're actually not
> exported you need to use the not-really-supported `@@` to refer to that
> variable, so you'd have to use something like:
> #:rust ,(@@ (gnu packages rust) rust-1.62)

Thanks Efraim, this is exactly what I've been looking for atm as temporary
hack.

> Given how it would be useful to have access to newer rust versions I
> think it'd be worthwhile to make a post in guix-devel about making the
> newer versions of rust use define-public but be hidden, so they can be
> used as expected for the #:rust keyword.

It would be definitely great to have access to the latest packaged version
of rust. However, I understand this will trigger a lot of rebuilds.

> > > 
> > > the documentation for 'cargo-build-system' [1] refers to parameter
> > > '#:rust' which allows user to specify the Rust compiler version.
> > > However, I've found this commit
> > > 9635119a61a9ab1b023558727fcdf1816fdc7fc6 from Maxim which makes all
> > > 'rust-.*' definitions private. Is there a way to specify newer Rust
> > > compiler? Something like 'rust-next'? The package requires version
> > > 1.62 but the current is 1.60. Also both version are already defined.
> > > What's missing is just way to select them.
> > > 
> > > [1] https://guix.gnu.org/manual/en/html_node/Build-Systems.html
> > 
> > I checked gnu/packages/rust.scm and it looks like the rust packages
> > aren't hidden but actually not exported. If they were just hidden then
> > you could still do `#:rust ,rust-1.62`. Since they're actually not
> > exported you need to use the not-really-supported `@@` to refer to that
> > variable, so you'd have to use something like:
> > #:rust ,(@@ (gnu packages rust) rust-1.62)
> 
> 
> Normally only the newest released Rust version is supported by upstream,
> so what we should do is add a newer rust and use it by default.
> 
> The reasons previous rust versions are not exported is because they
> aren't intended to be used by applications; they are built using
> '--stage=1' to speed up compilation, which creates slower binaries and
> may expose ABI stability problems (*if I remember the rust people's
> explanation correctly).
> 
> When adding new version of rust, we move all the tests and final rust
> version specifics to the leaf (last) rust version, and keep the
> intermediary rusts minimal (no test, no tools, stage=1, etc.)
> 
> > Given how it would be useful to have access to newer rust versions I
> > think it'd be worthwhile to make a post in guix-devel about making the
> > newer versions of rust use define-public but be hidden, so they can be
> > used as expected for the #:rust keyword.
> 
> 
> It's typical that build system or services expose a way for the user to
> use a variant of a package, but in the case of rust, I don't think it
> should be advertised as a way to use different rust versions (given only
> the last version is supported by upstream, e.g. sometimes fixing CVEs).

I have to agree with you that this is just an anti-pattern and the #:rust
should not be advertised.

The best approach would be to add new rust version and switch to it.

So do you think Maxim the `#:rust` parameter should be dropped and the
documentation also removed?

I guess same approach would apply for antioxidant-build-system, right? [1]

1 https://notabug.org/maximed/cargoless-rust-experiments

----
Petr






reply via email to

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