rust: proc-macro2: rebuild if the version text changes
Miguel Ojeda
maintainerPATCH 1/1 rust: proc-macro2: rebuild if the version text changes
The Rust compiler cannot use dependencies built by other versions, e.g.:
error[E0514]: found crate `proc_macro2` compiled by an incompatible version of rustc
--> rust/quote/ext.rs:5:5
|
5 | use proc_macro2::{TokenStream, TokenTree};
| ^^^^^^^^^^^
|
= note: the following crate versions were found:
crate `proc_macro2` compiled by rustc 1.92.0 (ded5c06cf 2025-12-08): ./rust/libproc_macro2.rlib
= help: please recompile that crate using this compiler (rustc 1.93.0 (254b59607 2026-01-19)) (consider running `cargo clean` first)Thus trigger a rebuild if the version text changes like we do in other top-level cases (e.g. see commit aeb0e24abbeb ("kbuild: rust: replace proc macros dependency on core.o with the version text")).
The build errors for now are hard to trigger, since we do not yet use the new crates we just introduced (the use cases are coming in the next merge window), but they can still be seen if e.g. one manually removes one of the targets, so fix it already.
--- rust/proc-macro2/lib.rs | 4 ++++ 1 file changed, 4 insertions(+)
rust/proc-macro2/lib.rs +4 -0
@@ -1,5 +1,9 @@// SPDX-License-Identifier: Apache-2.0 OR MIT +// When fixdep scans this, it will find this string `CONFIG_RUSTC_VERSION_TEXT` +// and thus add a dependency on `include/config/RUSTC_VERSION_TEXT`, which is +// touched by Kconfig when the version string from the compiler changes. +//! [![github]](https://github.com/dtolnay/proc-macro2) [![crates-io]](https://crates.io/crates/proc-macro2) [![docs-rs]](crate) //! //! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github
base-commit: 2af6ad09fc7dfe9b3610100983cccf16998bf34d
Signature · 1 line
2.52.0
Quoted 16 lines · Miguel Ojeda
The Rust compiler cannot use dependencies built by other versions, e.g.:
error[E0514]: found crate `proc_macro2` compiled by an incompatible version of rustc --> rust/quote/ext.rs:5:5 | 5 | use proc_macro2::{TokenStream, TokenTree}; | ^^^^^^^^^^^ | = note: the following crate versions were found: crate `proc_macro2` compiled by rustc 1.92.0 (ded5c06cf 2025-12-08): ./rust/libproc_macro2.rlib = help: please recompile that crate using this compiler (rustc 1.93.0 (254b59607 2026-01-19)) (consider running `cargo clean` first)Thus trigger a rebuild if the version text changes like we do in other top-level cases (e.g. see commit
aeb0e24abbeb("kbuild: rust: replace proc macros dependency oncore.owith the version text")).
Quoted 7 lines
The build errors for now are hard to trigger, since we do not yet use the new crates we just introduced (the use cases are coming in the next merge window), but they can still be seen if e.g. one manually removes one of the targets, so fix it already.
Fixes 158a3b72118a ("rust: proc-macro2: enable support in kbuild")Signed-off-by Miguel Ojeda <[email protected]>
Gary Guo
reviewerQuoted 32 lines · Miguel Ojeda
The Rust compiler cannot use dependencies built by other versions, e.g.:
error[E0514]: found crate `proc_macro2` compiled by an incompatible version of rustc --> rust/quote/ext.rs:5:5 | 5 | use proc_macro2::{TokenStream, TokenTree}; | ^^^^^^^^^^^ | = note: the following crate versions were found: crate `proc_macro2` compiled by rustc 1.92.0 (ded5c06cf 2025-12-08): ./rust/libproc_macro2.rlib = help: please recompile that crate using this compiler (rustc 1.93.0 (254b59607 2026-01-19)) (consider running `cargo clean` first)Thus trigger a rebuild if the version text changes like we do in other top-level cases (e.g. see commit
aeb0e24abbeb("kbuild: rust: replace proc macros dependency oncore.owith the version text")).The build errors for now are hard to trigger, since we do not yet use the new crates we just introduced (the use cases are coming in the next merge window), but they can still be seen if e.g. one manually removes one of the targets, so fix it already.
Fixes 158a3b72118a ("rust: proc-macro2: enable support in kbuild")Signed-off-by Miguel Ojeda <[email protected]>--- rust/proc-macro2/lib.rs | 4 ++++ 1 file changed, 4 insertions(+)rust/proc-macro2/lib.rs +0
-0
rust/proc-macro2/lib.rs line 5
Quoted 5 lines
rust/proc-macro2/lib.rs +3
-0@@ -1,5 +1,9 @@// SPDX-License-Identifier: Apache-2.0 OR MIT +// When fixdep scans this, it will find this string `CONFIG_RUSTC_VERSION_TEXT` +// and thus add a dependency on `include/config/RUSTC_VERSION_TEXT`, which is +// touched by Kconfig when the version string from the compiler changes.
We use the same trick for multiple crates now. Is this something that can done in Makefile or it has to be in the source?
Best,
Gary
Quoted 6 lines
rust/proc-macro2/lib.rs +1
-0+//! [![github]](https://github.com/dtolnay/proc-macro2) [![crates-io]](https://crates.io/crates/proc-macro2) [![docs-rs]](crate) //! //! [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=github base-commit:
2af6ad09fc7dfe9b3610100983cccf16998bf34d
Quoted 3 lines · Gary Guo
We use the same trick for multiple crates now. Is this something that can done in
Makefileor it has to be in the source?
Good question: it can (we do it for core), but Kbuild preferred we avoid it since it is considered an implementation detail, so I only use that way for core.o since we cannot apply it in that case since we don't control the sources.
Having said that, for the new build system, I would prefer to ideally generate this automatically (and then it shouldn't be a problem to depend on that since it would be a "single" place to update it).
Cheers,
Miguel
Miguel Ojeda
AppliedQuoted 17 lines · Miguel Ojeda
The Rust compiler cannot use dependencies built by other versions, e.g.:
error[E0514]: found crate `proc_macro2` compiled by an incompatible version of rustc --> rust/quote/ext.rs:5:5 | 5 | use proc_macro2::{TokenStream, TokenTree}; | ^^^^^^^^^^^ | = note: the following crate versions were found: crate `proc_macro2` compiled by rustc 1.92.0 (ded5c06cf 2025-12-08): ./rust/libproc_macro2.rlib = help: please recompile that crate using this compiler (rustc 1.93.0 (254b59607 2026-01-19)) (consider running `cargo clean` first)Thus trigger a rebuild if the version text changes like we do in other top-level cases (e.g. see commit
aeb0e24abbeb("kbuild: rust: replace proc macros dependency oncore.owith the version text")).
Quoted 7 lines
The build errors for now are hard to trigger, since we do not yet use the new crates we just introduced (the use cases are coming in the next merge window), but they can still be seen if e.g. one manually removes one of the targets, so fix it already.
Fixes 158a3b72118a ("rust: proc-macro2: enable support in kbuild")Signed-off-by Miguel Ojeda <[email protected]>
Applied to rust-fixes -- thanks everyone!
I am applying this one fairly fast since Rust 1.93.0 is out and folks may trigger it in linux-next.
Cheers,
Miguel