From fc5c255cd7a1b38fba4e05dc11fc766c9c2d9e89 Mon Sep 17 00:00:00 2001 From: Miguel Ojeda Date: Sat, 17 Aug 2024 09:09:55 +0200 Subject: [PATCH] rust: use the hidden variant of `rust-project.json` Very soon after we requested it [1], `rust-analyzer` added support for `.rust-project.json` [2], i.e. the hidden variant of `.rust-project.json`. While this is only a (tiny) issue for kernel developers that use Rust (i.e. so far a very small number compared to the total), the file is not really something most kernel developers need to see, care or modify while working, so it is not really needed to show it by default in listings. It also follows the pattern of other files that are not directly related to the project (unlike e.g. a `Kconfig` file). Thus migrate to it. Cc: Ali Bektas Cc: Lukas Wirth Link: https://github.com/rust-lang/rust-analyzer/issues/17816 [1] Link: https://github.com/rust-lang/rust-analyzer/pull/17818 [2] Signed-off-by: Miguel Ojeda --- .gitignore | 2 +- Documentation/rust/quick-start.rst | 2 +- Makefile | 8 ++++---- rust/Makefile | 2 +- scripts/generate_rust_analyzer.py | 2 +- scripts/remove-stale-files | 2 ++ 6 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 7902adf4f7f1a5..a79fc2a71c625f 100644 --- a/.gitignore +++ b/.gitignore @@ -176,4 +176,4 @@ x509.genkey sphinx_*/ # Rust analyzer configuration -/rust-project.json +/.rust-project.json diff --git a/Documentation/rust/quick-start.rst b/Documentation/rust/quick-start.rst index d06a36106cd458..02f9dee6d23653 100644 --- a/Documentation/rust/quick-start.rst +++ b/Documentation/rust/quick-start.rst @@ -259,7 +259,7 @@ The `rust-analyzer `_ language server can be used with many editors to enable syntax highlighting, completion, go to definition, and other features. -``rust-analyzer`` needs a configuration file, ``rust-project.json``, which +``rust-analyzer`` needs a configuration file, ``.rust-project.json``, which can be generated by the ``rust-analyzer`` Make target:: make LLVM=1 rust-analyzer diff --git a/Makefile b/Makefile index 0a364e34f50b84..9ef90963330cc1 100644 --- a/Makefile +++ b/Makefile @@ -1483,7 +1483,7 @@ endif # CONFIG_MODULES CLEAN_FILES += vmlinux.symvers modules-only.symvers \ modules.builtin modules.builtin.modinfo modules.nsdeps \ compile_commands.json rust/test \ - rust-project.json .vmlinux.objs .vmlinux.export.c + .rust-project.json .vmlinux.objs .vmlinux.export.c # Directories & files removed with 'make mrproper' MRPROPER_FILES += include/config include/generated \ @@ -1621,7 +1621,7 @@ help: @echo ' (requires kernel .config)' @echo ' rusttest - Runs the Rust tests' @echo ' (requires kernel .config; downloads external repos)' - @echo ' rust-analyzer - Generate rust-project.json rust-analyzer support file' + @echo ' rust-analyzer - Generate .rust-project.json rust-analyzer support file' @echo ' (requires kernel .config)' @echo ' dir/file.[os] - Build specified target only' @echo ' dir/file.rsi - Build macro expanded source, similar to C preprocessing.' @@ -1809,7 +1809,7 @@ help: @echo ' modules - default target, build the module(s)' @echo ' modules_install - install the module' @echo ' clean - remove generated files in module directory only' - @echo ' rust-analyzer - generate rust-project.json rust-analyzer support file' + @echo ' rust-analyzer - generate .rust-project.json rust-analyzer support file' @echo '' ifndef CONFIG_MODULES @@ -1958,7 +1958,7 @@ quiet_cmd_tags = GEN $@ tags TAGS cscope gtags: FORCE $(call cmd,tags) -# Generate rust-project.json (a file that describes the structure of non-Cargo +# Generate .rust-project.json (a file that describes the structure of non-Cargo # Rust projects) for rust-analyzer (an implementation of the Language Server # Protocol). PHONY += rust-analyzer diff --git a/rust/Makefile b/rust/Makefile index 1f10f92737f2c0..311675e973321e 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -351,7 +351,7 @@ rust-analyzer: --cfgs='core=$(core-cfgs)' --cfgs='alloc=$(alloc-cfgs)' \ $(realpath $(srctree)) $(realpath $(objtree)) \ $(RUST_LIB_SRC) $(KBUILD_EXTMOD) > \ - $(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/rust-project.json + $(if $(KBUILD_EXTMOD),$(extmod_prefix),$(objtree))/.rust-project.json redirect-intrinsics = \ __addsf3 __eqsf2 __gesf2 __lesf2 __ltsf2 __mulsf3 __nesf2 __unordsf2 \ diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index f270c7b0cf345d..8b3a063b7c343a 100755 --- a/scripts/generate_rust_analyzer.py +++ b/scripts/generate_rust_analyzer.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 # SPDX-License-Identifier: GPL-2.0 -"""generate_rust_analyzer - Generates the `rust-project.json` file for `rust-analyzer`. +"""generate_rust_analyzer - Generates the `.rust-project.json` file for `rust-analyzer`. """ import argparse diff --git a/scripts/remove-stale-files b/scripts/remove-stale-files index f38d26b78c2a4a..1e8c3278a13359 100755 --- a/scripts/remove-stale-files +++ b/scripts/remove-stale-files @@ -21,3 +21,5 @@ set -e # then will be really dead and removed from the code base entirely. rm -f *.spec + +rm -f rust-project.json