From 10d0f7ab1b0226ee9871e27e8af1b7a4a5c8dbc4 Mon Sep 17 00:00:00 2001 From: Boris-Chengbiao Zhou Date: Mon, 9 Aug 2021 15:52:04 +0200 Subject: [PATCH 1/2] rust: update generate_rust_analyzer.py to account for new is_proc_macro field rust-analyzer now doesn't complain about unresolved imports anymore inside of the rust/macros crate. Upstream PR which added the field: https://github.com/rust-analyzer/rust-analyzer/pull/9752 Signed-off-by: Boris-Chengbiao Zhou --- scripts/generate_rust_analyzer.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index 72c453e1aea042..7dee88ef6ff780 100755 --- a/scripts/generate_rust_analyzer.py +++ b/scripts/generate_rust_analyzer.py @@ -23,12 +23,13 @@ def generate_crates(srctree, objtree, sysroot_src, bindings_file): crates = [] crates_indexes = {} - def append_crate(display_name, root_module, is_workspace_member, deps, cfg): + def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=True, is_proc_macro=False): crates_indexes[display_name] = len(crates) crates.append({ "display_name": display_name, "root_module": str(root_module), "is_workspace_member": is_workspace_member, + "is_proc_macro": is_proc_macro, "deps": [{"crate": crates_indexes[dep], "name": dep} for dep in deps], "cfg": cfg, "edition": "2018", @@ -41,50 +42,41 @@ def append_crate(display_name, root_module, is_workspace_member, deps, cfg): append_crate( "core", sysroot_src / "core" / "src" / "lib.rs", - False, - [], [], + is_workspace_member=False, ) append_crate( "compiler_builtins", srctree / "rust" / "compiler_builtins.rs", - True, - [], [], ) append_crate( "alloc", srctree / "rust" / "alloc" / "lib.rs", - True, ["core", "compiler_builtins"], - [], ) append_crate( "macros", srctree / "rust" / "macros" / "lib.rs", - True, - [], [], + is_proc_macro=True, ) crates[-1]["proc_macro_dylib_path"] = "rust/libmacros.so" append_crate( "build_error", srctree / "rust" / "build_error.rs", - True, ["core", "compiler_builtins"], - [], ) append_crate( "kernel", srctree / "rust" / "kernel" / "lib.rs", - True, ["core", "alloc", "macros", "build_error"], - cfg, + cfg=cfg, ) crates[-1]["env"]["RUST_BINDINGS_FILE"] = str(bindings_file.resolve(True)) crates[-1]["source"] = { @@ -111,9 +103,8 @@ def append_crate(display_name, root_module, is_workspace_member, deps, cfg): append_crate( name, path, - True, ["core", "alloc", "kernel"], - cfg, + cfg=cfg, ) return crates From 3647bb0846cd866b1d15b040ffb912f0d139980a Mon Sep 17 00:00:00 2001 From: Boris-Chengbiao Zhou Date: Thu, 26 Aug 2021 19:08:09 +0200 Subject: [PATCH 2/2] rust: update generate_rust_analyzer.py Update the script to account for the new way helpers are handled since commit 7324a8. Signed-off-by: Boris-Chengbiao Zhou --- rust/Makefile | 2 +- scripts/generate_rust_analyzer.py | 7 +++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/rust/Makefile b/rust/Makefile index 7c18b06d47e332..03962d693f33c3 100644 --- a/rust/Makefile +++ b/rust/Makefile @@ -296,7 +296,7 @@ rustc_host_target = $(shell $(RUSTC) --version --verbose | grep -F 'host: ' | cu RUST_LIB_SRC ?= $(rustc_sysroot)/lib/rustlib/src/rust/library rust-analyzer: - $(Q)$(srctree)/scripts/generate_rust_analyzer.py $(srctree) $(objtree) $(RUST_LIB_SRC) $(objtree)/rust/bindings_generated.rs > $(objtree)/rust-project.json + $(Q)$(srctree)/scripts/generate_rust_analyzer.py $(srctree) $(objtree) $(RUST_LIB_SRC) > $(objtree)/rust-project.json $(objtree)/rust/compiler_builtins.o: private rustc_objcopy = -w -W '__*' $(objtree)/rust/compiler_builtins.o: $(srctree)/rust/compiler_builtins.rs \ diff --git a/scripts/generate_rust_analyzer.py b/scripts/generate_rust_analyzer.py index 7dee88ef6ff780..1beb5ee09251f8 100755 --- a/scripts/generate_rust_analyzer.py +++ b/scripts/generate_rust_analyzer.py @@ -8,7 +8,7 @@ import pathlib import sys -def generate_crates(srctree, objtree, sysroot_src, bindings_file): +def generate_crates(srctree, objtree, sysroot_src): # Generate the configuration list. cfg = [] with open(objtree / "include" / "generated" / "rustc_cfg") as fd: @@ -78,7 +78,7 @@ def append_crate(display_name, root_module, deps, cfg=[], is_workspace_member=Tr ["core", "alloc", "macros", "build_error"], cfg=cfg, ) - crates[-1]["env"]["RUST_BINDINGS_FILE"] = str(bindings_file.resolve(True)) + crates[-1]["env"]["OBJTREE"] = str(objtree.resolve(True)) crates[-1]["source"] = { "include_dirs": [ str(srctree / "rust" / "kernel"), @@ -115,7 +115,6 @@ def main(): parser.add_argument("srctree", type=pathlib.Path) parser.add_argument("objtree", type=pathlib.Path) parser.add_argument("sysroot_src", type=pathlib.Path) - parser.add_argument("bindings_file", type=pathlib.Path) args = parser.parse_args() logging.basicConfig( @@ -124,7 +123,7 @@ def main(): ) rust_project = { - "crates": generate_crates(args.srctree, args.objtree, args.sysroot_src, args.bindings_file), + "crates": generate_crates(args.srctree, args.objtree, args.sysroot_src), "sysroot_src": str(args.sysroot_src), }