On Sun, Mar 16, 2025 at 4:40 AM Miguel Ojeda <ojeda@xxxxxxxxxx> wrote: > > `rustdoc` only recognizes `--remap-path-prefix` starting with > Rust 1.81.0, which is later than on minimum, so we cannot pass it > unconditionally. Otherwise, we get: > > error: Unrecognized option: 'remap-path-prefix' > > Note that `rustc` (the compiler) does recognize the flag since a long > time ago (1.26.0). > > Moreover, `rustdoc` since Rust 1.82.0 ICEs in out-of-tree builds when > using `--remap-path-prefix`. The issue has been reduced and reported > upstream [1]. > > Thus workaround both issues by simply skipping the flag when generating > the docs -- it is not critical there anyway. > > The ICE does not reproduce under `--test`, but we still need to skip > the flag as well for `RUSTDOC TK` since it is not recognized. > > Fixes: 6b5747d07138 ("kbuild, rust: use -fremap-path-prefix to make paths relative") Applied to linux-kbuild. Thanks. Please note I locally modified the Fixes tag as follows: Fixes: dbdffaf50ff9 ("kbuild, rust: use -fremap-path-prefix to make paths relative") I rebased in order to fix my missing Signed-off-by, so the commit ID of the former commits changed. > Link: https://github.com/rust-lang/rust/issues/138520 [1] > Signed-off-by: Miguel Ojeda <ojeda@xxxxxxxxxx> > --- > v2: > - Skip the flag also in `RUSTDOC TK`. The ICE does not apply there, > but we still need to skip the flag. > > rust/Makefile | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/rust/Makefile b/rust/Makefile > index ea3849eb78f6..089473a89d46 100644 > --- a/rust/Makefile > +++ b/rust/Makefile > @@ -57,10 +57,14 @@ endif > core-cfgs = \ > --cfg no_fp_fmt_parse > > +# `rustc` recognizes `--remap-path-prefix` since 1.26.0, but `rustdoc` only > +# since Rust 1.81.0. Moreover, `rustdoc` ICEs on out-of-tree builds since Rust > +# 1.82.0 (https://github.com/rust-lang/rust/issues/138520). Thus workaround both > +# issues skipping the flag. The former also applies to `RUSTDOC TK`. > quiet_cmd_rustdoc = RUSTDOC $(if $(rustdoc_host),H, ) $< > cmd_rustdoc = \ > OBJTREE=$(abspath $(objtree)) \ > - $(RUSTDOC) $(filter-out $(skip_flags),$(if $(rustdoc_host),$(rust_common_flags),$(rust_flags))) \ > + $(RUSTDOC) $(filter-out $(skip_flags) --remap-path-prefix=%,$(if $(rustdoc_host),$(rust_common_flags),$(rust_flags))) \ > $(rustc_target_flags) -L$(objtree)/$(obj) \ > -Zunstable-options --generate-link-to-definition \ > --output $(rustdoc_output) \ > @@ -171,7 +175,7 @@ quiet_cmd_rustdoc_test_kernel = RUSTDOC TK $< > rm -rf $(objtree)/$(obj)/test/doctests/kernel; \ > mkdir -p $(objtree)/$(obj)/test/doctests/kernel; \ > OBJTREE=$(abspath $(objtree)) \ > - $(RUSTDOC) --test $(rust_flags) \ > + $(RUSTDOC) --test $(filter-out --remap-path-prefix=%,$(rust_flags)) \ > -L$(objtree)/$(obj) --extern ffi --extern kernel \ > --extern build_error --extern macros \ > --extern bindings --extern uapi \ > > base-commit: bc5431693696b3f928b0b7acf8d7a120127db7a4 > -- > 2.49.0 -- Best Regards Masahiro Yamada