Skip to content

Commit 454b846

Browse files
tamirdgregkh
authored andcommitted
scripts: generate_rust_analyzer: add missing include_dirs
[ Upstream commit d1f9280 ] Commit 8c4555c ("scripts: add `generate_rust_analyzer.py`") specified OBJTREE for the bindings crate, and `source.include_dirs` for the kernel crate, likely in an attempt to support out-of-source builds for those crates where the generated files reside in `objtree` rather than `srctree`. This was insufficient because both bits of configuration are required for each crate; the result is that rust-analyzer is unable to resolve generated files for either crate in an out-of-source build. [ Originally we were not using `OBJTREE` in the `kernel` crate, but we did pass the variable anyway, so conceptually it could have been there since then. Regarding `include_dirs`, it started in `kernel` before being in mainline because we included the bindings directly there (i.e. there was no `bindings` crate). However, when that crate got created, we moved the `OBJTREE` there but not the `include_dirs`. Nowadays, though, we happen to need the `include_dirs` also in the `kernel` crate for `generated_arch_static_branch_asm.rs` which was not there back then -- Tamir confirms it is indeed required for that reason. - Miguel ] Add the missing bits to improve the developer experience. Fixes: 8c4555c ("scripts: add `generate_rust_analyzer.py`") Signed-off-by: Tamir Duberstein <tamird@gmail.com> Tested-by: Andreas Hindborg <a.hindborg@kernel.org> Link: https://lore.kernel.org/r/20250210-rust-analyzer-bindings-include-v2-1-23dff845edc3@gmail.com [ Slightly reworded title. - Miguel ] Signed-off-by: Miguel Ojeda <ojeda@kernel.org> Signed-off-by: Sasha Levin <sashal@kernel.org>
1 parent 79b833e commit 454b846

1 file changed

Lines changed: 21 additions & 21 deletions

File tree

scripts/generate_rust_analyzer.py

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -90,27 +90,27 @@ def append_sysroot_crate(
9090
["core", "compiler_builtins"],
9191
)
9292

93-
append_crate(
94-
"bindings",
95-
srctree / "rust"/ "bindings" / "lib.rs",
96-
["core"],
97-
cfg=cfg,
98-
)
99-
crates[-1]["env"]["OBJTREE"] = str(objtree.resolve(True))
100-
101-
append_crate(
102-
"kernel",
103-
srctree / "rust" / "kernel" / "lib.rs",
104-
["core", "macros", "build_error", "bindings"],
105-
cfg=cfg,
106-
)
107-
crates[-1]["source"] = {
108-
"include_dirs": [
109-
str(srctree / "rust" / "kernel"),
110-
str(objtree / "rust")
111-
],
112-
"exclude_dirs": [],
113-
}
93+
def append_crate_with_generated(
94+
display_name,
95+
deps,
96+
):
97+
append_crate(
98+
display_name,
99+
srctree / "rust"/ display_name / "lib.rs",
100+
deps,
101+
cfg=cfg,
102+
)
103+
crates[-1]["env"]["OBJTREE"] = str(objtree.resolve(True))
104+
crates[-1]["source"] = {
105+
"include_dirs": [
106+
str(srctree / "rust" / display_name),
107+
str(objtree / "rust")
108+
],
109+
"exclude_dirs": [],
110+
}
111+
112+
append_crate_with_generated("bindings", ["core"])
113+
append_crate_with_generated("kernel", ["core", "macros", "build_error", "bindings"])
114114

115115
def is_root_crate(build_file, target):
116116
try:

0 commit comments

Comments
 (0)