Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -450,6 +450,23 @@ tasks:
run_targets:
- "//tools/rust_analyzer:gen_rust_project"
- "//tools/rust_analyzer:discover_bazel_rust_project"
ide_integration_vscode_tests_linux:
name: IDE VSCode Tests
platform: ubuntu2204
run_targets:
- "//tools/vscode:gen_launch_json"
- "//test/vscode:vscode_test"
ide_integration_vscode_tests_macos:
name: IDE VSCode Tests
platform: macos_arm64
run_targets:
- "//tools/vscode:gen_launch_json"
- "//test/vscode:vscode_test"
ide_integration_vscode_tests_windows:
name: IDE VSCode Tests
platform: windows
run_targets:
- "//tools/vscode:gen_launch_json"
crate_universe_examples_ubuntu2204:
name: Crate Universe Examples
platform: ubuntu2204
Expand Down
3 changes: 3 additions & 0 deletions MODULE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ use_repo(
"rtra",
"rtra__serde-1.0.219",
"rtra__serde_json-1.0.143",
"rtvsc",
"rtvsc__serde-1.0.228",
"rtvsc__serde_json-1.0.145",
"rules_rust_test_load_arbitrary_tool",
"rules_rust_toolchain_test_target_json",
)
Expand Down
1 change: 1 addition & 0 deletions docs/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
- [crate_universe (bzlmod)](crate_universe_bzlmod.md)
- [crate_universe (WORKSPACE)](crate_universe_workspace.md)
- [Upstream Tooling](./upstream_tooling.md)
- [IDE Integrations](./ide_integrations.md)
- [Extensions](./extensions.md)
- [bindgen](./rust_bindgen.md)
- [mdbook](./rust_mdbook.md)
Expand Down
31 changes: 31 additions & 0 deletions docs/src/ide_integrations.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
# IDE Integrations

## VSCode

### Intellisense

The best intellisense integrations to date are documented for [rust-analyzer](./rust_analyzer.md). Please refer to this documentation for setup instructions.

### Debugging

`rules_rust` offers tooling to generate VSCode targets for running `rust_binary` and `rust_test` targets with a debugger in VSCode.

#### Prerequisites

Install [CodeLLDB](https://marketplace.visualstudio.com/items?itemName=vadimcn.vscode-lldb) extension in VSCode.

#### Generate Launch Configurations

Generate VSCode `launch.json` for debugging all Rust targets in the current workspace:

```bash
bazel run @rules_rust//tools/vscode:gen_launch_json
```

To scope debug generated `launch.json` targets, query patterns can be passed:

```bash
bazel run @rules_rust//tools/vscode:gen_launch_json -- //path/to/...
```

Bazel targets should now be available for debugging via the "Run and Debug" menu.
2 changes: 2 additions & 0 deletions test/deps.bzl
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ load("//test/generated_inputs:external_repo.bzl", "generated_inputs_in_external_
load("//test/load_arbitrary_tool:load_arbitrary_tool_test.bzl", "load_arbitrary_tool_test")
load("//test/rust_analyzer/3rdparty/crates:crates.bzl", rust_analyzer_test_crate_repositories = "crate_repositories")
load("//test/unit/toolchain:toolchain_test_utils.bzl", "rules_rust_toolchain_test_target_json_repository")
load("//test/vscode/3rdparty/crates:crates.bzl", vscode_test_crate_repositories = "crate_repositories")

_LIBC_BUILD_FILE_CONTENT = """\
load("@rules_rust//rust:defs.bzl", "rust_library")
Expand Down Expand Up @@ -40,6 +41,7 @@ def rules_rust_test_deps(is_bzlmod = False):
direct_deps = load_arbitrary_tool_test()
direct_deps.extend(generated_inputs_in_external_repo())
direct_deps.extend(rust_analyzer_test_crate_repositories())
direct_deps.extend(vscode_test_crate_repositories())

maybe(
http_archive,
Expand Down
8 changes: 4 additions & 4 deletions test/rust_analyzer/rust_analyzer_test_runner.sh
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ local_path_override(

bazel_dep(
name = "bazel_skylib",
version = "1.7.1",
version = "1.8.2",
)

rust = use_extension("@rules_rust//rust:extensions.bzl", "rust")
Expand Down Expand Up @@ -102,13 +102,13 @@ function rust_analyzer_test() {
else
RUST_LOG="${rust_log}" bazel run "@rules_rust//tools/rust_analyzer:gen_rust_project"
fi

echo "Validating rust-project.json..."
bazel run "@rules_rust//tools/rust_analyzer:validate" -- rust-project.json

echo "Generating auto-discovery.json..."
RUST_LOG="${rust_log}" bazel run "@rules_rust//tools/rust_analyzer:discover_bazel_rust_project" > auto-discovery.json

echo "Building..."
bazel build //...
echo "Testing..."
Expand Down
21 changes: 21 additions & 0 deletions test/vscode/3rdparty/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
load("@rules_rust//crate_universe:defs.bzl", "crate", "crates_vendor")

crates_vendor(
name = "crates_vendor",
mode = "remote",
packages = {
"serde": crate.spec(
features = ["derive"],
version = "1",
),
"serde_json": crate.spec(
version = "1",
),
},
# Short for 'rust_test_vscode'. Keep this short to reduce
# the risk to bump into absolute path length issues on Windows. See:
# https://github.com/bazelbuild/rules_rust/issues/1120
repository_name = "rtvsc",
tags = ["manual"],
vendor_path = "crates",
)
56 changes: 56 additions & 0 deletions test/vscode/3rdparty/crates/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @@//test/vscode/3rdparty:crates_vendor
###############################################################################

package(default_visibility = ["//visibility:public"])

exports_files(
[
"cargo-bazel.json",
"crates.bzl",
"defs.bzl",
] + glob(
include = ["*.bazel"],
allow_empty = True,
),
)

filegroup(
name = "srcs",
srcs = glob(
include = [
"*.bazel",
"*.bzl",
],
allow_empty = True,
),
)

# Workspace Member Dependencies
alias(
name = "serde-1.0.228",
actual = "@rtvsc__serde-1.0.228//:serde",
tags = ["manual"],
)

alias(
name = "serde",
actual = "@rtvsc__serde-1.0.228//:serde",
tags = ["manual"],
)

alias(
name = "serde_json-1.0.145",
actual = "@rtvsc__serde_json-1.0.145//:serde_json",
tags = ["manual"],
)

alias(
name = "serde_json",
actual = "@rtvsc__serde_json-1.0.145//:serde_json",
tags = ["manual"],
)
96 changes: 96 additions & 0 deletions test/vscode/3rdparty/crates/BUILD.itoa-1.0.15.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @@//test/vscode/3rdparty:crates_vendor
###############################################################################

load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars")
load("@rules_rust//rust:defs.bzl", "rust_library")

package(default_visibility = ["//visibility:public"])

cargo_toml_env_vars(
name = "cargo_toml_env_vars",
src = "Cargo.toml",
)

rust_library(
name = "itoa",
srcs = glob(
include = ["**/*.rs"],
allow_empty = True,
),
compile_data = glob(
include = ["**"],
allow_empty = True,
exclude = [
"**/* *",
".tmp_git_root/**/*",
"BUILD",
"BUILD.bazel",
"WORKSPACE",
"WORKSPACE.bazel",
],
),
crate_root = "src/lib.rs",
edition = "2018",
rustc_env_files = [
":cargo_toml_env_vars",
],
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=itoa",
"manual",
"noclippy",
"norustfmt",
],
target_compatible_with = select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [],
"@rules_rust//rust/platform:aarch64-apple-ios": [],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
"@rules_rust//rust/platform:aarch64-unknown-uefi": [],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
"@rules_rust//rust/platform:armv7-linux-androideabi": [],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
"@rules_rust//rust/platform:i686-apple-darwin": [],
"@rules_rust//rust/platform:i686-linux-android": [],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [],
"@rules_rust//rust/platform:i686-unknown-freebsd": [],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
"@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
"@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [],
"@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
"@rules_rust//rust/platform:thumbv7em-none-eabi": [],
"@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
"@rules_rust//rust/platform:wasm32-unknown-emscripten": [],
"@rules_rust//rust/platform:wasm32-unknown-unknown": [],
"@rules_rust//rust/platform:wasm32-wasip1": [],
"@rules_rust//rust/platform:wasm32-wasip1-threads": [],
"@rules_rust//rust/platform:wasm32-wasip2": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-linux-android": [],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
"@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.15",
)
100 changes: 100 additions & 0 deletions test/vscode/3rdparty/crates/BUILD.memchr-2.7.6.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @@//test/vscode/3rdparty:crates_vendor
###############################################################################

load("@rules_rust//cargo:defs.bzl", "cargo_toml_env_vars")
load("@rules_rust//rust:defs.bzl", "rust_library")

package(default_visibility = ["//visibility:public"])

cargo_toml_env_vars(
name = "cargo_toml_env_vars",
src = "Cargo.toml",
)

rust_library(
name = "memchr",
srcs = glob(
include = ["**/*.rs"],
allow_empty = True,
),
compile_data = glob(
include = ["**"],
allow_empty = True,
exclude = [
"**/* *",
".tmp_git_root/**/*",
"BUILD",
"BUILD.bazel",
"WORKSPACE",
"WORKSPACE.bazel",
],
),
crate_features = [
"alloc",
"std",
],
crate_root = "src/lib.rs",
edition = "2021",
rustc_env_files = [
":cargo_toml_env_vars",
],
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=memchr",
"manual",
"noclippy",
"norustfmt",
],
target_compatible_with = select({
"@rules_rust//rust/platform:aarch64-apple-darwin": [],
"@rules_rust//rust/platform:aarch64-apple-ios": [],
"@rules_rust//rust/platform:aarch64-apple-ios-sim": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@rules_rust//rust/platform:aarch64-unknown-fuchsia": [],
"@rules_rust//rust/platform:aarch64-unknown-linux-gnu": [],
"@rules_rust//rust/platform:aarch64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:aarch64-unknown-nto-qnx710": [],
"@rules_rust//rust/platform:aarch64-unknown-uefi": [],
"@rules_rust//rust/platform:arm-unknown-linux-gnueabi": [],
"@rules_rust//rust/platform:armv7-linux-androideabi": [],
"@rules_rust//rust/platform:armv7-unknown-linux-gnueabi": [],
"@rules_rust//rust/platform:i686-apple-darwin": [],
"@rules_rust//rust/platform:i686-linux-android": [],
"@rules_rust//rust/platform:i686-pc-windows-msvc": [],
"@rules_rust//rust/platform:i686-unknown-freebsd": [],
"@rules_rust//rust/platform:i686-unknown-linux-gnu": [],
"@rules_rust//rust/platform:powerpc-unknown-linux-gnu": [],
"@rules_rust//rust/platform:riscv32imc-unknown-none-elf": [],
"@rules_rust//rust/platform:riscv64gc-unknown-linux-gnu": [],
"@rules_rust//rust/platform:riscv64gc-unknown-none-elf": [],
"@rules_rust//rust/platform:s390x-unknown-linux-gnu": [],
"@rules_rust//rust/platform:thumbv7em-none-eabi": [],
"@rules_rust//rust/platform:thumbv8m.main-none-eabi": [],
"@rules_rust//rust/platform:wasm32-unknown-emscripten": [],
"@rules_rust//rust/platform:wasm32-unknown-unknown": [],
"@rules_rust//rust/platform:wasm32-wasip1": [],
"@rules_rust//rust/platform:wasm32-wasip1-threads": [],
"@rules_rust//rust/platform:wasm32-wasip2": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-linux-android": [],
"@rules_rust//rust/platform:x86_64-pc-windows-msvc": [],
"@rules_rust//rust/platform:x86_64-unknown-freebsd": [],
"@rules_rust//rust/platform:x86_64-unknown-fuchsia": [],
"@rules_rust//rust/platform:x86_64-unknown-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"@rules_rust//rust/platform:x86_64-unknown-uefi": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "2.7.6",
)
Loading