lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [day] [month] [year] [list]
Message-ID: <20240817070955.75717-1-ojeda@kernel.org>
Date: Sat, 17 Aug 2024 09:09:55 +0200
From: Miguel Ojeda <ojeda@...nel.org>
To: Miguel Ojeda <ojeda@...nel.org>,
	Alex Gaynor <alex.gaynor@...il.com>,
	Wedson Almeida Filho <wedsonaf@...il.com>
Cc: Boqun Feng <boqun.feng@...il.com>,
	Gary Guo <gary@...yguo.net>,
	Björn Roy Baron <bjorn3_gh@...tonmail.com>,
	Benno Lossin <benno.lossin@...ton.me>,
	Andreas Hindborg <a.hindborg@...sung.com>,
	Alice Ryhl <aliceryhl@...gle.com>,
	rust-for-linux@...r.kernel.org,
	linux-kernel@...r.kernel.org,
	patches@...ts.linux.dev,
	Ali Bektas <bektasali@...tonmail.com>,
	Lukas Wirth <lukastw97@...il.com>
Subject: [RFC 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 <bektasali@...tonmail.com>
Cc: Lukas Wirth <lukastw97@...il.com>
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 <ojeda@...nel.org>
---
This is a patch for the future -- we need to wait until most Rust kernel
developers are using a new enough version of rust-analyzer. Thanks Ali
& Lukas!

 .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 7902adf4f7f1..a79fc2a71c62 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 d06a36106cd4..02f9dee6d236 100644
--- a/Documentation/rust/quick-start.rst
+++ b/Documentation/rust/quick-start.rst
@@ -259,7 +259,7 @@ The `rust-analyzer <https://rust-analyzer.github.io/>`_ 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 0a364e34f50b..9ef90963330c 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 1f10f92737f2..311675e97332 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 f270c7b0cf34..8b3a063b7c34 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 f38d26b78c2a..1e8c3278a133 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

base-commit: 7c626ce4bae1ac14f60076d00eafe71af30450ba
--
2.46.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ