diff --git a/rust/private/rust_analyzer.bzl b/rust/private/rust_analyzer.bzl index bc12306a82..51aa266148 100644 --- a/rust/private/rust_analyzer.bzl +++ b/rust/private/rust_analyzer.bzl @@ -277,6 +277,7 @@ def _rust_analyzer_toolchain_impl(ctx): proc_macro_srv = ctx.executable.proc_macro_srv, rustc = ctx.executable.rustc, rustc_srcs = ctx.attr.rustc_srcs, + rustc_srcs_path = ctx.attr.rustc_srcs_path, ) return [toolchain] @@ -302,6 +303,10 @@ rust_analyzer_toolchain = rule( doc = "The source code of rustc.", mandatory = True, ), + "rustc_srcs_path": attr.string( + doc = "The direct path to rustc srcs relative to rustc_srcs package root.", + default = "library" + ) }, ) @@ -315,8 +320,8 @@ def _rust_analyzer_detect_sysroot_impl(ctx): ) rustc_srcs = rust_analyzer_toolchain.rustc_srcs + sysroot_src = rustc_srcs.label.package + "/" + rust_analyzer_toolchain.rustc_srcs_path - sysroot_src = rustc_srcs.label.package + "/library" if rustc_srcs.label.workspace_root: sysroot_src = _OUTPUT_BASE_TEMPLATE + rustc_srcs.label.workspace_root + "/" + sysroot_src else: