unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: phodina <phodina@protonmail.com>
To: help-guix <help-guix@gnu.org>
Cc: Maxim Cournoyer <maxim.cournoyer@gmail.com>,
	Efraim Flashner <efraim@flashner.co.il>
Subject: Re: Specifying rust version
Date: Tue, 27 Dec 2022 16:00:35 +0000	[thread overview]
Message-ID: <rWJVp3VrfrH3Cw7inEY7Ltw8iU2Laf8JtYsC1H0Zt8zW1mxCpXPtuSQtenCpmk3x5l8d-D0wRfw4ncX7zNmC16cPdZ8hs3yuS5ZbWsqoJ5E=@protonmail.com> (raw)
In-Reply-To: <877cyc7vuu.fsf@gmail.com>

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	other threads:[~2022-12-27 16:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <9HPT231QhmBHf-sXMAX0HcaUXokVCH-pKqntxd3QLQ4aH53EYk4soFhngqkdfsasYo-0g7JFk8zZhMInQgGwQBRsd19OWvc1y1PadBYTjlg=@protonmail.com>
2022-12-26  9:00 ` Specifying rust version phodina via
2022-12-27  6:53   ` Efraim Flashner
2022-12-27 14:40     ` Maxim Cournoyer
2022-12-27 16:00       ` phodina [this message]
2022-12-27 17:34         ` Maxim Cournoyer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='rWJVp3VrfrH3Cw7inEY7Ltw8iU2Laf8JtYsC1H0Zt8zW1mxCpXPtuSQtenCpmk3x5l8d-D0wRfw4ncX7zNmC16cPdZ8hs3yuS5ZbWsqoJ5E=@protonmail.com' \
    --to=phodina@protonmail.com \
    --cc=efraim@flashner.co.il \
    --cc=help-guix@gnu.org \
    --cc=maxim.cournoyer@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).