mbox series

[v2,0/6] `RUSTC_VERSION` and re-config/re-build support on compiler change

Message ID 20240902165535.1101978-1-ojeda@kernel.org (mailing list archive)
Headers show
Series `RUSTC_VERSION` and re-config/re-build support on compiler change | expand

Message

Miguel Ojeda Sept. 2, 2024, 4:55 p.m. UTC
This series mainly adds support for `CONFIG_RUSTC_VERSION` (which is needed for
other upcoming series) as well as support for rebuilding the kernel when the
Rust compiler version text changes, plus other secondary improvements.

v1: https://lore.kernel.org/rust-for-linux/20240808221138.873750-1-ojeda@kernel.org/
v2:

  - Dropped patch #2 "kbuild: rust: make command for `RUSTC_VERSION_TEXT` closer
    to the `CC` one" (Masahiro, Björn).

    In other words, now the `RUSTC_VERSION_TEXT` command is kept as it
    was, without `LC_ALL=1` nor `| head -n1`.

  - Replaced `macros` crate dependency with a comment in the code that `fixdep`
    will find, since we can do it for that one, unlike `core` (Masahiro,
    Nicolas).

  - Added patch (here #5) to add a warning when the Rust compiler used to build
    the kernel differs from the one used to build an out-of-tree module, like
    the C side does (Nicolas).

    If the patch is not wanted, then it can be skipped without much loss, since
    anyway Rust will fail to compile in that case. However, it would be nice to
    have to prevent potentially unexpected situations and to clarify the errors
    that `rustc` would emit later. See the commit message for more details.

  - Rewrapped comment to stay under 80 lines (Nicolas).

  - Picked up a couple tags that could more or less be reasonably taken given
    the changes to v2. Re-runs of tests welcome!

Miguel Ojeda (6):
  kbuild: rust: add `CONFIG_RUSTC_VERSION`
  kbuild: rust: re-run Kconfig if the version text changes
  kbuild: rust: rebuild if the version text changes
  kbuild: rust: replace proc macros dependency on `core.o` with the
    version text
  kbuild: rust: warn if the out-of-tree compiler differs from the kernel
    one
  docs: rust: include other expressions in conditional compilation
    section

 Documentation/rust/general-information.rst |  8 +++++++
 Makefile                                   | 18 ++++++++++-----
 init/Kconfig                               | 11 ++++++++-
 rust/Makefile                              |  7 +++---
 rust/macros/lib.rs                         |  4 ++++
 scripts/rustc-version.sh                   | 26 ++++++++++++++++++++++
 6 files changed, 64 insertions(+), 10 deletions(-)
 create mode 100755 scripts/rustc-version.sh


base-commit: a335e95914046c6bed45c0d17cabcd483682cf5e
--
2.46.0

Comments

Alice Ryhl Sept. 3, 2024, 11:35 a.m. UTC | #1
On Mon, Sep 2, 2024 at 6:55 PM Miguel Ojeda <ojeda@kernel.org> wrote:
>
> This series mainly adds support for `CONFIG_RUSTC_VERSION` (which is needed for
> other upcoming series) as well as support for rebuilding the kernel when the
> Rust compiler version text changes, plus other secondary improvements.
>
> v1: https://lore.kernel.org/rust-for-linux/20240808221138.873750-1-ojeda@kernel.org/
> v2:
>
>   - Dropped patch #2 "kbuild: rust: make command for `RUSTC_VERSION_TEXT` closer
>     to the `CC` one" (Masahiro, Björn).
>
>     In other words, now the `RUSTC_VERSION_TEXT` command is kept as it
>     was, without `LC_ALL=1` nor `| head -n1`.
>
>   - Replaced `macros` crate dependency with a comment in the code that `fixdep`
>     will find, since we can do it for that one, unlike `core` (Masahiro,
>     Nicolas).
>
>   - Added patch (here #5) to add a warning when the Rust compiler used to build
>     the kernel differs from the one used to build an out-of-tree module, like
>     the C side does (Nicolas).
>
>     If the patch is not wanted, then it can be skipped without much loss, since
>     anyway Rust will fail to compile in that case. However, it would be nice to
>     have to prevent potentially unexpected situations and to clarify the errors
>     that `rustc` would emit later. See the commit message for more details.
>
>   - Rewrapped comment to stay under 80 lines (Nicolas).
>
>   - Picked up a couple tags that could more or less be reasonably taken given
>     the changes to v2. Re-runs of tests welcome!
>
> Miguel Ojeda (6):
>   kbuild: rust: add `CONFIG_RUSTC_VERSION`
>   kbuild: rust: re-run Kconfig if the version text changes
>   kbuild: rust: rebuild if the version text changes
>   kbuild: rust: replace proc macros dependency on `core.o` with the
>     version text
>   kbuild: rust: warn if the out-of-tree compiler differs from the kernel
>     one
>   docs: rust: include other expressions in conditional compilation
>     section

I re-ran the same tests as for v1.

Tested-by: Alice Ryhl <aliceryhl@google.com>
Miguel Ojeda Sept. 3, 2024, 11:36 a.m. UTC | #2
On Tue, Sep 3, 2024 at 1:35 PM Alice Ryhl <aliceryhl@google.com> wrote:
>
> I re-ran the same tests as for v1.
>
> Tested-by: Alice Ryhl <aliceryhl@google.com>

Thanks a lot!

Cheers,
Miguel
Nicolas Schier Sept. 4, 2024, 7:32 p.m. UTC | #3
On Mon, Sep 02, 2024 at 06:55:27PM +0200, Miguel Ojeda wrote:
> This series mainly adds support for `CONFIG_RUSTC_VERSION` (which is needed for
> other upcoming series) as well as support for rebuilding the kernel when the
> Rust compiler version text changes, plus other secondary improvements.
> 
> v1: https://lore.kernel.org/rust-for-linux/20240808221138.873750-1-ojeda@kernel.org/
> v2:
> 
>   - Dropped patch #2 "kbuild: rust: make command for `RUSTC_VERSION_TEXT` closer
>     to the `CC` one" (Masahiro, Björn).
> 
>     In other words, now the `RUSTC_VERSION_TEXT` command is kept as it
>     was, without `LC_ALL=1` nor `| head -n1`.
> 
>   - Replaced `macros` crate dependency with a comment in the code that `fixdep`
>     will find, since we can do it for that one, unlike `core` (Masahiro,
>     Nicolas).
> 
>   - Added patch (here #5) to add a warning when the Rust compiler used to build
>     the kernel differs from the one used to build an out-of-tree module, like
>     the C side does (Nicolas).
> 
>     If the patch is not wanted, then it can be skipped without much loss, since
>     anyway Rust will fail to compile in that case. However, it would be nice to
>     have to prevent potentially unexpected situations and to clarify the errors
>     that `rustc` would emit later. See the commit message for more details.
> 
>   - Rewrapped comment to stay under 80 lines (Nicolas).
> 
>   - Picked up a couple tags that could more or less be reasonably taken given
>     the changes to v2. Re-runs of tests welcome!
> 
> Miguel Ojeda (6):
>   kbuild: rust: add `CONFIG_RUSTC_VERSION`
>   kbuild: rust: re-run Kconfig if the version text changes
>   kbuild: rust: rebuild if the version text changes
>   kbuild: rust: replace proc macros dependency on `core.o` with the
>     version text
>   kbuild: rust: warn if the out-of-tree compiler differs from the kernel
>     one
>   docs: rust: include other expressions in conditional compilation
>     section
> 
>  Documentation/rust/general-information.rst |  8 +++++++
>  Makefile                                   | 18 ++++++++++-----
>  init/Kconfig                               | 11 ++++++++-
>  rust/Makefile                              |  7 +++---
>  rust/macros/lib.rs                         |  4 ++++
>  scripts/rustc-version.sh                   | 26 ++++++++++++++++++++++
>  6 files changed, 64 insertions(+), 10 deletions(-)
>  create mode 100755 scripts/rustc-version.sh
> 
> 
> base-commit: a335e95914046c6bed45c0d17cabcd483682cf5e
> --
> 2.46.0
> 

the whole series looks good to me.  Thanks for the good explanations.

Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>

Kind regards,
Nicolas
Miguel Ojeda Sept. 4, 2024, 9:15 p.m. UTC | #4
On Wed, Sep 4, 2024 at 9:32 PM Nicolas Schier <nicolas@fjasle.eu> wrote:
>
> the whole series looks good to me.  Thanks for the good explanations.
>
> Reviewed-by: Nicolas Schier <nicolas@fjasle.eu>

Thanks a lot Nicolas, I appreciate the quick review and the kind words.

Cheers,
Miguel
Miguel Ojeda Sept. 4, 2024, 9:15 p.m. UTC | #5
On Mon, Sep 2, 2024 at 6:55 PM Miguel Ojeda <ojeda@kernel.org> wrote:
>
> This series mainly adds support for `CONFIG_RUSTC_VERSION` (which is needed for
> other upcoming series) as well as support for rebuilding the kernel when the
> Rust compiler version text changes, plus other secondary improvements.

Applied to `rust-next` -- thanks everyone!

Just to be extra safe, I did not add patch #5 ("kbuild: rust: warn if
the out-of-tree compiler differs from the kernel one") for the moment
to give people more time to look at it, but we can add it later if
nobody shouts.

Cheers,
Miguel