Re: [PATCH] Kbuild: add RUSTC_BOOTSTRAP to rustc-option

From: Masahiro Yamada
Date: Tue Oct 08 2024 - 14:45:51 EST


On Tue, Oct 8, 2024 at 11:25 PM Miguel Ojeda
<miguel.ojeda.sandonis@xxxxxxxxx> wrote:
>
> On Tue, Oct 8, 2024 at 3:49 PM Alice Ryhl <aliceryhl@xxxxxxxxxx> wrote:
> >
> > When using unstable features with the Rust compiler, you must either use
> > a nightly compiler release or set the RUSTC_BOOTSTRAP environment
> > variable. Otherwise, the compiler will emit a compiler error. This
> > environment variable is missing when rustc-option is executed, so add
> > the environment variable.
>
> Yeah, `$(shell ...` does not pass the environment, so we need it.


Really?

$(shell ...) inherits env variables in my understanding.





> > This change is necessary to avoid two kinds of problems:
> >
> > 1. When using rustc-option to test whether a -Z flag is available, the
> > check will always fail, even if the flag is available.
> > 2. If KBUILD_RUSTFLAGS happens to contain any -Z flags from the
> > environment, even if unrelated to the flag being tested, then all
> > invocations of rustc-option everywhere will fail.
> >
> > I was not actually able to trigger the second kind of problem with the
> > makefiles that exist today, but it seems like it could easily start
> > being a problem due to complicated interactions between changes. It is
> > better to fix this now so it doesn't surprise us later.
> >
> > I added the flag under try-run as this seemed like the easiest way to
> > make sure that the fix applies to all variations of rustc-option,
> > including new ones added in the future.
> >
> > Signed-off-by: Alice Ryhl <aliceryhl@xxxxxxxxxx>
>
> I think we need an `export` there.
>
> I am also rechecking this, and I didn't get a reply from:
>
> https://lore.kernel.org/rust-for-linux/CANiq72mv5E0PvZRW5eAEvqvqj74PH01hcRhLWTouB4z32jTeSA@xxxxxxxxxxxxxx/
>
> And I forgot about it, which is my mistake too -- I still think we
> need it (and we should not use `-o` either together with it, I think).
>
> I can take a look...


No.

You need to understand who expands it.

TMPOUT=$(TMPOUT);

was needed because you used

-out-dir="$$TMPOUT"

It should be -out-dir=$(TMPOUT)


Such pointless code is unneeded.




--
Best Regards
Masahiro Yamada