rust-analyzer: Factor aliases into the project (#2709)

Fixes #2707
This commit is contained in:
Daniel Wagner-Hall 2024-06-20 16:47:56 +01:00 committed by GitHub
parent 78c68d60d9
commit 4ea03d6fd0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
25 changed files with 1718 additions and 34 deletions

View File

@ -87,3 +87,7 @@ http_archive(
strip_prefix = "rules_testing-0.6.0", strip_prefix = "rules_testing-0.6.0",
url = "https://github.com/bazelbuild/rules_testing/releases/download/v0.6.0/rules_testing-v0.6.0.tar.gz", url = "https://github.com/bazelbuild/rules_testing/releases/download/v0.6.0/rules_testing-v0.6.0.tar.gz",
) )
load("//test/3rdparty/crates:crates.bzl", test_crate_repositories = "crate_repositories")
test_crate_repositories()

View File

@ -259,6 +259,7 @@ def _rust_prost_aspect_impl(target, ctx):
cfgs = ["test", "debug_assertions"] cfgs = ["test", "debug_assertions"]
rust_analyzer_info = write_rust_analyzer_spec_file(ctx, ctx.rule.attr, ctx.label, RustAnalyzerInfo( rust_analyzer_info = write_rust_analyzer_spec_file(ctx, ctx.rule.attr, ctx.label, RustAnalyzerInfo(
aliases = {},
crate = dep_variant_info.crate_info, crate = dep_variant_info.crate_info,
cfgs = cfgs, cfgs = cfgs,
env = dep_variant_info.crate_info.rustc_env, env = dep_variant_info.crate_info.rustc_env,

View File

@ -157,6 +157,7 @@ TestCrateInfo = provider(
RustAnalyzerInfo = provider( RustAnalyzerInfo = provider(
doc = "RustAnalyzerInfo holds rust crate metadata for targets", doc = "RustAnalyzerInfo holds rust crate metadata for targets",
fields = { fields = {
"aliases": "Dict[RustAnalyzerInfo, String]: Replacement names these targets should be known as in Rust code",
"build_info": "BuildInfo: build info for this crate if present", "build_info": "BuildInfo: build info for this crate if present",
"cfgs": "List[String]: features or other compilation `--cfg` settings", "cfgs": "List[String]: features or other compilation `--cfg` settings",
"crate": "CrateInfo: Crate information.", "crate": "CrateInfo: Crate information.",

View File

@ -47,6 +47,7 @@ def write_rust_analyzer_spec_file(ctx, attrs, owner, base_info):
crate_spec = ctx.actions.declare_file("{}.rust_analyzer_crate_spec.json".format(owner.name)) crate_spec = ctx.actions.declare_file("{}.rust_analyzer_crate_spec.json".format(owner.name))
rust_analyzer_info = RustAnalyzerInfo( rust_analyzer_info = RustAnalyzerInfo(
aliases = base_info.aliases,
crate = base_info.crate, crate = base_info.crate,
cfgs = base_info.cfgs, cfgs = base_info.cfgs,
env = base_info.env, env = base_info.env,
@ -70,6 +71,21 @@ def write_rust_analyzer_spec_file(ctx, attrs, owner, base_info):
return rust_analyzer_info return rust_analyzer_info
def _accumulate_rust_analyzer_info(dep_infos_to_accumulate, label_index_to_accumulate, dep):
if dep == None:
return
if RustAnalyzerInfo in dep:
label_index_to_accumulate[dep.label] = dep[RustAnalyzerInfo]
dep_infos_to_accumulate.append(dep[RustAnalyzerInfo])
if RustAnalyzerGroupInfo in dep:
for expanded_dep in dep[RustAnalyzerGroupInfo].deps:
label_index_to_accumulate[expanded_dep.crate.owner] = expanded_dep
dep_infos_to_accumulate.append(expanded_dep)
def _accumulate_rust_analyzer_infos(dep_infos_to_accumulate, label_index_to_accumulate, deps_attr):
for dep in deps_attr:
_accumulate_rust_analyzer_info(dep_infos_to_accumulate, label_index_to_accumulate, dep)
def _rust_analyzer_aspect_impl(target, ctx): def _rust_analyzer_aspect_impl(target, ctx):
if (rust_common.crate_info not in target and if (rust_common.crate_info not in target and
rust_common.test_crate_info not in target and rust_common.test_crate_info not in target and
@ -91,37 +107,18 @@ def _rust_analyzer_aspect_impl(target, ctx):
build_info = None build_info = None
dep_infos = [] dep_infos = []
if hasattr(ctx.rule.attr, "deps"): labels_to_rais = {}
for dep in ctx.rule.attr.deps:
# Save BuildInfo if we find any (for build script output)
if BuildInfo in dep:
build_info = dep[BuildInfo]
dep_infos = [dep[RustAnalyzerInfo] for dep in ctx.rule.attr.deps if RustAnalyzerInfo in dep]
group_infos = [dep[RustAnalyzerGroupInfo] for dep in ctx.rule.attr.deps if RustAnalyzerGroupInfo in dep] for dep in getattr(ctx.rule.attr, "deps", []):
for group_info in group_infos: # Save BuildInfo if we find any (for build script output)
dep_infos.extend(group_info.deps) if BuildInfo in dep:
build_info = dep[BuildInfo]
if hasattr(ctx.rule.attr, "proc_macro_deps"): _accumulate_rust_analyzer_infos(dep_infos, labels_to_rais, getattr(ctx.rule.attr, "deps", []))
dep_infos += [dep[RustAnalyzerInfo] for dep in ctx.rule.attr.proc_macro_deps if RustAnalyzerInfo in dep] _accumulate_rust_analyzer_infos(dep_infos, labels_to_rais, getattr(ctx.rule.attr, "proc_macro_deps", []))
group_infos = [dep[RustAnalyzerGroupInfo] for dep in ctx.rule.attr.proc_macro_deps if RustAnalyzerGroupInfo in dep] _accumulate_rust_analyzer_info(dep_infos, labels_to_rais, getattr(ctx.rule.attr, "crate", None))
for group_info in group_infos: _accumulate_rust_analyzer_info(dep_infos, labels_to_rais, getattr(ctx.rule.attr, "actual", None))
dep_infos.extend(group_info.deps)
if hasattr(ctx.rule.attr, "crate") and ctx.rule.attr.crate != None:
if RustAnalyzerInfo in ctx.rule.attr.crate:
dep_infos.append(ctx.rule.attr.crate[RustAnalyzerInfo])
if RustAnalyzerGroupInfo in ctx.rule.attr.crate:
dep_infos.extend(ctx.rule.attr.crate[RustAnalyzerGroupInfo])
if hasattr(ctx.rule.attr, "actual") and ctx.rule.attr.actual != None:
if RustAnalyzerInfo in ctx.rule.attr.actual:
dep_infos.append(ctx.rule.attr.actual[RustAnalyzerInfo])
if RustAnalyzerGroupInfo in ctx.rule.attr.actual:
dep_infos.extend(ctx.rule.attr.actual[RustAnalyzerGroupInfo])
if rust_common.crate_group_info in target: if rust_common.crate_group_info in target:
return [RustAnalyzerGroupInfo(deps = dep_infos)] return [RustAnalyzerGroupInfo(deps = dep_infos)]
@ -132,7 +129,13 @@ def _rust_analyzer_aspect_impl(target, ctx):
else: else:
fail("Unexpected target type: {}".format(target)) fail("Unexpected target type: {}".format(target))
aliases = {}
for aliased_target, aliased_name in getattr(ctx.rule.attr, "aliases", {}).items():
if aliased_target.label in labels_to_rais:
aliases[labels_to_rais[aliased_target.label]] = aliased_name
rust_analyzer_info = write_rust_analyzer_spec_file(ctx, ctx.rule.attr, ctx.label, RustAnalyzerInfo( rust_analyzer_info = write_rust_analyzer_spec_file(ctx, ctx.rule.attr, ctx.label, RustAnalyzerInfo(
aliases = aliases,
crate = crate_info, crate = crate_info,
cfgs = cfgs, cfgs = cfgs,
env = crate_info.rustc_env, env = crate_info.rustc_env,
@ -249,6 +252,7 @@ def _create_single_crate(ctx, attrs, info):
# the crate being processed, we don't add it as a dependency to itself. This is # the crate being processed, we don't add it as a dependency to itself. This is
# common and expected - `rust_test.crate` pointing to the `rust_library`. # common and expected - `rust_test.crate` pointing to the `rust_library`.
crate["deps"] = [_crate_id(dep.crate) for dep in info.deps if _crate_id(dep.crate) != crate_id] crate["deps"] = [_crate_id(dep.crate) for dep in info.deps if _crate_id(dep.crate) != crate_id]
crate["aliases"] = {_crate_id(alias_target.crate): alias_name for alias_target, alias_name in info.aliases.items()}
crate["cfg"] = info.cfgs crate["cfg"] = info.cfgs
crate["target"] = find_toolchain(ctx).target_triple.str crate["target"] = find_toolchain(ctx).target_triple.str
if info.proc_macro_dylib_path != None: if info.proc_macro_dylib_path != None:

23
test/3rdparty/BUILD.bazel vendored Normal file
View File

@ -0,0 +1,23 @@
load("//crate_universe:defs.bzl", "crate", "crates_vendor")
package(default_visibility = ["//visibility:public"])
crates_vendor(
name = "crates_vendor",
mode = "remote",
packages = {
"serde": crate.spec(
features = ["derive"],
version = "1",
),
"serde_json": crate.spec(
version = "1",
),
},
# Short for 'test 3rdparty'. 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 = "t3p",
tags = ["manual"],
vendor_path = "crates",
)

44
test/3rdparty/crates/BUILD.bazel vendored Normal file
View File

@ -0,0 +1,44 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/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",
actual = "@t3p__serde-1.0.203//:serde",
tags = ["manual"],
)
alias(
name = "serde_json",
actual = "@t3p__serde_json-1.0.117//:serde_json",
tags = ["manual"],
)

View File

@ -0,0 +1,81 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
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_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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.11",
)

View File

@ -0,0 +1,134 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "proc_macro2",
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 = [
"proc-macro",
],
crate_root = "src/lib.rs",
edition = "2021",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=proc-macro2",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.85",
deps = [
"@t3p__proc-macro2-1.0.85//:build_script_build",
"@t3p__unicode-ident-1.0.12//:unicode_ident",
],
)
cargo_build_script(
name = "_bs",
srcs = glob(
include = ["**/*.rs"],
allow_empty = True,
),
crate_features = [
"proc-macro",
],
crate_name = "build_script_build",
crate_root = "build.rs",
data = glob(
include = ["**"],
allow_empty = True,
exclude = [
"**/* *",
".tmp_git_root/**/*",
"BUILD",
"BUILD.bazel",
"WORKSPACE",
"WORKSPACE.bazel",
],
),
edition = "2021",
pkg_name = "proc-macro2",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=proc-macro2",
"manual",
"noclippy",
"norustfmt",
],
version = "1.0.85",
visibility = ["//visibility:private"],
)
alias(
name = "build_script_build",
actual = ":_bs",
tags = ["manual"],
)

View File

@ -0,0 +1,87 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "quote",
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 = [
"proc-macro",
],
crate_root = "src/lib.rs",
edition = "2018",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=quote",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.36",
deps = [
"@t3p__proc-macro2-1.0.85//:proc_macro2",
],
)

View File

@ -0,0 +1,81 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "ryu",
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_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=ryu",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.18",
)

View File

@ -0,0 +1,142 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "serde",
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 = [
"default",
"derive",
"serde_derive",
"std",
],
crate_root = "src/lib.rs",
edition = "2018",
proc_macro_deps = [
"@t3p__serde_derive-1.0.203//:serde_derive",
],
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=serde",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.203",
deps = [
"@t3p__serde-1.0.203//:build_script_build",
],
)
cargo_build_script(
name = "_bs",
srcs = glob(
include = ["**/*.rs"],
allow_empty = True,
),
crate_features = [
"default",
"derive",
"serde_derive",
"std",
],
crate_name = "build_script_build",
crate_root = "build.rs",
data = glob(
include = ["**"],
allow_empty = True,
exclude = [
"**/* *",
".tmp_git_root/**/*",
"BUILD",
"BUILD.bazel",
"WORKSPACE",
"WORKSPACE.bazel",
],
),
edition = "2018",
pkg_name = "serde",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=serde",
"manual",
"noclippy",
"norustfmt",
],
version = "1.0.203",
visibility = ["//visibility:private"],
)
alias(
name = "build_script_build",
actual = ":_bs",
tags = ["manual"],
)

View File

@ -0,0 +1,89 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//rust:defs.bzl", "rust_proc_macro")
package(default_visibility = ["//visibility:public"])
rust_proc_macro(
name = "serde_derive",
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 = [
"default",
],
crate_root = "src/lib.rs",
edition = "2015",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=serde_derive",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.203",
deps = [
"@t3p__proc-macro2-1.0.85//:proc_macro2",
"@t3p__quote-1.0.36//:quote",
"@t3p__syn-2.0.66//:syn",
],
)

View File

@ -0,0 +1,138 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//cargo:defs.bzl", "cargo_build_script")
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "serde_json",
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 = [
"default",
"std",
],
crate_root = "src/lib.rs",
edition = "2021",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=serde_json",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.117",
deps = [
"@t3p__itoa-1.0.11//:itoa",
"@t3p__ryu-1.0.18//:ryu",
"@t3p__serde-1.0.203//:serde",
"@t3p__serde_json-1.0.117//:build_script_build",
],
)
cargo_build_script(
name = "_bs",
srcs = glob(
include = ["**/*.rs"],
allow_empty = True,
),
crate_features = [
"default",
"std",
],
crate_name = "build_script_build",
crate_root = "build.rs",
data = glob(
include = ["**"],
allow_empty = True,
exclude = [
"**/* *",
".tmp_git_root/**/*",
"BUILD",
"BUILD.bazel",
"WORKSPACE",
"WORKSPACE.bazel",
],
),
edition = "2021",
pkg_name = "serde_json",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=serde_json",
"manual",
"noclippy",
"norustfmt",
],
version = "1.0.117",
visibility = ["//visibility:private"],
)
alias(
name = "build_script_build",
actual = ":_bs",
tags = ["manual"],
)

View File

@ -0,0 +1,93 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "syn",
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 = [
"clone-impls",
"derive",
"parsing",
"printing",
"proc-macro",
],
crate_root = "src/lib.rs",
edition = "2021",
rustc_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=syn",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "2.0.66",
deps = [
"@t3p__proc-macro2-1.0.85//:proc_macro2",
"@t3p__quote-1.0.36//:quote",
"@t3p__unicode-ident-1.0.12//:unicode_ident",
],
)

View File

@ -0,0 +1,81 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
load("@rules_rust//rust:defs.bzl", "rust_library")
package(default_visibility = ["//visibility:public"])
rust_library(
name = "unicode_ident",
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_flags = [
"--cap-lints=allow",
],
tags = [
"cargo-bazel",
"crate-name=unicode-ident",
"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-fuchsia": [],
"@rules_rust//rust/platform:aarch64-linux-android": [],
"@rules_rust//rust/platform:aarch64-pc-windows-msvc": [],
"@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: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-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-unknown": [],
"@rules_rust//rust/platform:wasm32-wasi": [],
"@rules_rust//rust/platform:x86_64-apple-darwin": [],
"@rules_rust//rust/platform:x86_64-apple-ios": [],
"@rules_rust//rust/platform:x86_64-fuchsia": [],
"@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-linux-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-nixos-gnu": [],
"@rules_rust//rust/platform:x86_64-unknown-none": [],
"//conditions:default": ["@platforms//:incompatible"],
}),
version = "1.0.12",
)

47
test/3rdparty/crates/alias_rules.bzl vendored Normal file
View File

@ -0,0 +1,47 @@
"""Alias that transitions its target to `compilation_mode=opt`. Use `transition_alias="opt"` to enable."""
load("@rules_cc//cc:defs.bzl", "CcInfo")
load("@rules_rust//rust:rust_common.bzl", "COMMON_PROVIDERS")
def _transition_alias_impl(ctx):
# `ctx.attr.actual` is a list of 1 item due to the transition
providers = [ctx.attr.actual[0][provider] for provider in COMMON_PROVIDERS]
if CcInfo in ctx.attr.actual[0]:
providers.append(ctx.attr.actual[0][CcInfo])
return providers
def _change_compilation_mode(compilation_mode):
def _change_compilation_mode_impl(_settings, _attr):
return {
"//command_line_option:compilation_mode": compilation_mode,
}
return transition(
implementation = _change_compilation_mode_impl,
inputs = [],
outputs = [
"//command_line_option:compilation_mode",
],
)
def _transition_alias_rule(compilation_mode):
return rule(
implementation = _transition_alias_impl,
provides = COMMON_PROVIDERS,
attrs = {
"actual": attr.label(
mandatory = True,
doc = "`rust_library()` target to transition to `compilation_mode=opt`.",
providers = COMMON_PROVIDERS,
cfg = _change_compilation_mode(compilation_mode),
),
"_allowlist_function_transition": attr.label(
default = "@bazel_tools//tools/allowlists/function_transition_allowlist",
),
},
doc = "Transitions a Rust library crate to the `compilation_mode=opt`.",
)
transition_alias_dbg = _transition_alias_rule("dbg")
transition_alias_fastbuild = _transition_alias_rule("fastbuild")
transition_alias_opt = _transition_alias_rule("opt")

32
test/3rdparty/crates/crates.bzl vendored Normal file
View File

@ -0,0 +1,32 @@
###############################################################################
# @generated
# This file is auto-generated by the cargo-bazel tool.
#
# DO NOT MODIFY: Local changes may be replaced in future executions.
###############################################################################
"""Rules for defining repositories for remote `crates_vendor` repositories"""
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
# buildifier: disable=bzl-visibility
load("@rules_rust//crate_universe/private:crates_vendor.bzl", "crates_vendor_remote_repository")
# buildifier: disable=bzl-visibility
load("@rules_rust//test/3rdparty/crates:defs.bzl", _crate_repositories = "crate_repositories")
def crate_repositories():
"""Generates repositories for vendored crates.
Returns:
A list of repos visible to the module through the module extension.
"""
maybe(
crates_vendor_remote_repository,
name = "t3p",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.bazel"),
defs_module = Label("@rules_rust//test/3rdparty/crates:defs.bzl"),
)
direct_deps = [struct(repo = "t3p", is_dev_dep = False)]
direct_deps.extend(_crate_repositories())
return direct_deps

499
test/3rdparty/crates/defs.bzl vendored Normal file
View File

@ -0,0 +1,499 @@
###############################################################################
# @generated
# DO NOT MODIFY: This file is auto-generated by a crate_universe tool. To
# regenerate this file, run the following:
#
# bazel run @//test/3rdparty:crates_vendor
###############################################################################
"""
# `crates_repository` API
- [aliases](#aliases)
- [crate_deps](#crate_deps)
- [all_crate_deps](#all_crate_deps)
- [crate_repositories](#crate_repositories)
"""
load("@bazel_skylib//lib:selects.bzl", "selects")
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")
###############################################################################
# MACROS API
###############################################################################
# An identifier that represent common dependencies (unconditional).
_COMMON_CONDITION = ""
def _flatten_dependency_maps(all_dependency_maps):
"""Flatten a list of dependency maps into one dictionary.
Dependency maps have the following structure:
```python
DEPENDENCIES_MAP = {
# The first key in the map is a Bazel package
# name of the workspace this file is defined in.
"workspace_member_package": {
# Not all dependencies are supported for all platforms.
# the condition key is the condition required to be true
# on the host platform.
"condition": {
# An alias to a crate target. # The label of the crate target the
# Aliases are only crate names. # package name refers to.
"package_name": "@full//:label",
}
}
}
```
Args:
all_dependency_maps (list): A list of dicts as described above
Returns:
dict: A dictionary as described above
"""
dependencies = {}
for workspace_deps_map in all_dependency_maps:
for pkg_name, conditional_deps_map in workspace_deps_map.items():
if pkg_name not in dependencies:
non_frozen_map = dict()
for key, values in conditional_deps_map.items():
non_frozen_map.update({key: dict(values.items())})
dependencies.setdefault(pkg_name, non_frozen_map)
continue
for condition, deps_map in conditional_deps_map.items():
# If the condition has not been recorded, do so and continue
if condition not in dependencies[pkg_name]:
dependencies[pkg_name].setdefault(condition, dict(deps_map.items()))
continue
# Alert on any miss-matched dependencies
inconsistent_entries = []
for crate_name, crate_label in deps_map.items():
existing = dependencies[pkg_name][condition].get(crate_name)
if existing and existing != crate_label:
inconsistent_entries.append((crate_name, existing, crate_label))
dependencies[pkg_name][condition].update({crate_name: crate_label})
return dependencies
def crate_deps(deps, package_name = None):
"""Finds the fully qualified label of the requested crates for the package where this macro is called.
Args:
deps (list): The desired list of crate targets.
package_name (str, optional): The package name of the set of dependencies to look up.
Defaults to `native.package_name()`.
Returns:
list: A list of labels to generated rust targets (str)
"""
if not deps:
return []
if package_name == None:
package_name = native.package_name()
# Join both sets of dependencies
dependencies = _flatten_dependency_maps([
_NORMAL_DEPENDENCIES,
_NORMAL_DEV_DEPENDENCIES,
_PROC_MACRO_DEPENDENCIES,
_PROC_MACRO_DEV_DEPENDENCIES,
_BUILD_DEPENDENCIES,
_BUILD_PROC_MACRO_DEPENDENCIES,
]).pop(package_name, {})
# Combine all conditional packages so we can easily index over a flat list
# TODO: Perhaps this should actually return select statements and maintain
# the conditionals of the dependencies
flat_deps = {}
for deps_set in dependencies.values():
for crate_name, crate_label in deps_set.items():
flat_deps.update({crate_name: crate_label})
missing_crates = []
crate_targets = []
for crate_target in deps:
if crate_target not in flat_deps:
missing_crates.append(crate_target)
else:
crate_targets.append(flat_deps[crate_target])
if missing_crates:
fail("Could not find crates `{}` among dependencies of `{}`. Available dependencies were `{}`".format(
missing_crates,
package_name,
dependencies,
))
return crate_targets
def all_crate_deps(
normal = False,
normal_dev = False,
proc_macro = False,
proc_macro_dev = False,
build = False,
build_proc_macro = False,
package_name = None):
"""Finds the fully qualified label of all requested direct crate dependencies \
for the package where this macro is called.
If no parameters are set, all normal dependencies are returned. Setting any one flag will
otherwise impact the contents of the returned list.
Args:
normal (bool, optional): If True, normal dependencies are included in the
output list.
normal_dev (bool, optional): If True, normal dev dependencies will be
included in the output list..
proc_macro (bool, optional): If True, proc_macro dependencies are included
in the output list.
proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
included in the output list.
build (bool, optional): If True, build dependencies are included
in the output list.
build_proc_macro (bool, optional): If True, build proc_macro dependencies are
included in the output list.
package_name (str, optional): The package name of the set of dependencies to look up.
Defaults to `native.package_name()` when unset.
Returns:
list: A list of labels to generated rust targets (str)
"""
if package_name == None:
package_name = native.package_name()
# Determine the relevant maps to use
all_dependency_maps = []
if normal:
all_dependency_maps.append(_NORMAL_DEPENDENCIES)
if normal_dev:
all_dependency_maps.append(_NORMAL_DEV_DEPENDENCIES)
if proc_macro:
all_dependency_maps.append(_PROC_MACRO_DEPENDENCIES)
if proc_macro_dev:
all_dependency_maps.append(_PROC_MACRO_DEV_DEPENDENCIES)
if build:
all_dependency_maps.append(_BUILD_DEPENDENCIES)
if build_proc_macro:
all_dependency_maps.append(_BUILD_PROC_MACRO_DEPENDENCIES)
# Default to always using normal dependencies
if not all_dependency_maps:
all_dependency_maps.append(_NORMAL_DEPENDENCIES)
dependencies = _flatten_dependency_maps(all_dependency_maps).pop(package_name, None)
if not dependencies:
if dependencies == None:
fail("Tried to get all_crate_deps for package " + package_name + " but that package had no Cargo.toml file")
else:
return []
crate_deps = list(dependencies.pop(_COMMON_CONDITION, {}).values())
for condition, deps in dependencies.items():
crate_deps += selects.with_or({
tuple(_CONDITIONS[condition]): deps.values(),
"//conditions:default": [],
})
return crate_deps
def aliases(
normal = False,
normal_dev = False,
proc_macro = False,
proc_macro_dev = False,
build = False,
build_proc_macro = False,
package_name = None):
"""Produces a map of Crate alias names to their original label
If no dependency kinds are specified, `normal` and `proc_macro` are used by default.
Setting any one flag will otherwise determine the contents of the returned dict.
Args:
normal (bool, optional): If True, normal dependencies are included in the
output list.
normal_dev (bool, optional): If True, normal dev dependencies will be
included in the output list..
proc_macro (bool, optional): If True, proc_macro dependencies are included
in the output list.
proc_macro_dev (bool, optional): If True, dev proc_macro dependencies are
included in the output list.
build (bool, optional): If True, build dependencies are included
in the output list.
build_proc_macro (bool, optional): If True, build proc_macro dependencies are
included in the output list.
package_name (str, optional): The package name of the set of dependencies to look up.
Defaults to `native.package_name()` when unset.
Returns:
dict: The aliases of all associated packages
"""
if package_name == None:
package_name = native.package_name()
# Determine the relevant maps to use
all_aliases_maps = []
if normal:
all_aliases_maps.append(_NORMAL_ALIASES)
if normal_dev:
all_aliases_maps.append(_NORMAL_DEV_ALIASES)
if proc_macro:
all_aliases_maps.append(_PROC_MACRO_ALIASES)
if proc_macro_dev:
all_aliases_maps.append(_PROC_MACRO_DEV_ALIASES)
if build:
all_aliases_maps.append(_BUILD_ALIASES)
if build_proc_macro:
all_aliases_maps.append(_BUILD_PROC_MACRO_ALIASES)
# Default to always using normal aliases
if not all_aliases_maps:
all_aliases_maps.append(_NORMAL_ALIASES)
all_aliases_maps.append(_PROC_MACRO_ALIASES)
aliases = _flatten_dependency_maps(all_aliases_maps).pop(package_name, None)
if not aliases:
return dict()
common_items = aliases.pop(_COMMON_CONDITION, {}).items()
# If there are only common items in the dictionary, immediately return them
if not len(aliases.keys()) == 1:
return dict(common_items)
# Build a single select statement where each conditional has accounted for the
# common set of aliases.
crate_aliases = {"//conditions:default": dict(common_items)}
for condition, deps in aliases.items():
condition_triples = _CONDITIONS[condition]
for triple in condition_triples:
if triple in crate_aliases:
crate_aliases[triple].update(deps)
else:
crate_aliases.update({triple: dict(deps.items() + common_items)})
return select(crate_aliases)
###############################################################################
# WORKSPACE MEMBER DEPS AND ALIASES
###############################################################################
_NORMAL_DEPENDENCIES = {
"": {
_COMMON_CONDITION: {
"serde": Label("@t3p__serde-1.0.203//:serde"),
"serde_json": Label("@t3p__serde_json-1.0.117//:serde_json"),
},
},
}
_NORMAL_ALIASES = {
"": {
_COMMON_CONDITION: {
},
},
}
_NORMAL_DEV_DEPENDENCIES = {
"": {
},
}
_NORMAL_DEV_ALIASES = {
"": {
},
}
_PROC_MACRO_DEPENDENCIES = {
"": {
},
}
_PROC_MACRO_ALIASES = {
"": {
},
}
_PROC_MACRO_DEV_DEPENDENCIES = {
"": {
},
}
_PROC_MACRO_DEV_ALIASES = {
"": {
},
}
_BUILD_DEPENDENCIES = {
"": {
},
}
_BUILD_ALIASES = {
"": {
},
}
_BUILD_PROC_MACRO_DEPENDENCIES = {
"": {
},
}
_BUILD_PROC_MACRO_ALIASES = {
"": {
},
}
_CONDITIONS = {
"aarch64-apple-darwin": ["@rules_rust//rust/platform:aarch64-apple-darwin"],
"aarch64-apple-ios": ["@rules_rust//rust/platform:aarch64-apple-ios"],
"aarch64-apple-ios-sim": ["@rules_rust//rust/platform:aarch64-apple-ios-sim"],
"aarch64-fuchsia": ["@rules_rust//rust/platform:aarch64-fuchsia"],
"aarch64-linux-android": ["@rules_rust//rust/platform:aarch64-linux-android"],
"aarch64-pc-windows-msvc": ["@rules_rust//rust/platform:aarch64-pc-windows-msvc"],
"aarch64-unknown-linux-gnu": ["@rules_rust//rust/platform:aarch64-unknown-linux-gnu"],
"aarch64-unknown-nixos-gnu": ["@rules_rust//rust/platform:aarch64-unknown-nixos-gnu"],
"aarch64-unknown-nto-qnx710": ["@rules_rust//rust/platform:aarch64-unknown-nto-qnx710"],
"arm-unknown-linux-gnueabi": ["@rules_rust//rust/platform:arm-unknown-linux-gnueabi"],
"armv7-linux-androideabi": ["@rules_rust//rust/platform:armv7-linux-androideabi"],
"armv7-unknown-linux-gnueabi": ["@rules_rust//rust/platform:armv7-unknown-linux-gnueabi"],
"i686-apple-darwin": ["@rules_rust//rust/platform:i686-apple-darwin"],
"i686-linux-android": ["@rules_rust//rust/platform:i686-linux-android"],
"i686-pc-windows-msvc": ["@rules_rust//rust/platform:i686-pc-windows-msvc"],
"i686-unknown-freebsd": ["@rules_rust//rust/platform:i686-unknown-freebsd"],
"i686-unknown-linux-gnu": ["@rules_rust//rust/platform:i686-unknown-linux-gnu"],
"powerpc-unknown-linux-gnu": ["@rules_rust//rust/platform:powerpc-unknown-linux-gnu"],
"riscv32imc-unknown-none-elf": ["@rules_rust//rust/platform:riscv32imc-unknown-none-elf"],
"riscv64gc-unknown-none-elf": ["@rules_rust//rust/platform:riscv64gc-unknown-none-elf"],
"s390x-unknown-linux-gnu": ["@rules_rust//rust/platform:s390x-unknown-linux-gnu"],
"thumbv7em-none-eabi": ["@rules_rust//rust/platform:thumbv7em-none-eabi"],
"thumbv8m.main-none-eabi": ["@rules_rust//rust/platform:thumbv8m.main-none-eabi"],
"wasm32-unknown-unknown": ["@rules_rust//rust/platform:wasm32-unknown-unknown"],
"wasm32-wasi": ["@rules_rust//rust/platform:wasm32-wasi"],
"x86_64-apple-darwin": ["@rules_rust//rust/platform:x86_64-apple-darwin"],
"x86_64-apple-ios": ["@rules_rust//rust/platform:x86_64-apple-ios"],
"x86_64-fuchsia": ["@rules_rust//rust/platform:x86_64-fuchsia"],
"x86_64-linux-android": ["@rules_rust//rust/platform:x86_64-linux-android"],
"x86_64-pc-windows-msvc": ["@rules_rust//rust/platform:x86_64-pc-windows-msvc"],
"x86_64-unknown-freebsd": ["@rules_rust//rust/platform:x86_64-unknown-freebsd"],
"x86_64-unknown-linux-gnu": ["@rules_rust//rust/platform:x86_64-unknown-linux-gnu"],
"x86_64-unknown-nixos-gnu": ["@rules_rust//rust/platform:x86_64-unknown-nixos-gnu"],
"x86_64-unknown-none": ["@rules_rust//rust/platform:x86_64-unknown-none"],
}
###############################################################################
def crate_repositories():
"""A macro for defining repositories for all generated crates.
Returns:
A list of repos visible to the module through the module extension.
"""
maybe(
http_archive,
name = "t3p__itoa-1.0.11",
sha256 = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b",
type = "tar.gz",
urls = ["https://static.crates.io/crates/itoa/1.0.11/download"],
strip_prefix = "itoa-1.0.11",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.itoa-1.0.11.bazel"),
)
maybe(
http_archive,
name = "t3p__proc-macro2-1.0.85",
sha256 = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23",
type = "tar.gz",
urls = ["https://static.crates.io/crates/proc-macro2/1.0.85/download"],
strip_prefix = "proc-macro2-1.0.85",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.proc-macro2-1.0.85.bazel"),
)
maybe(
http_archive,
name = "t3p__quote-1.0.36",
sha256 = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7",
type = "tar.gz",
urls = ["https://static.crates.io/crates/quote/1.0.36/download"],
strip_prefix = "quote-1.0.36",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.quote-1.0.36.bazel"),
)
maybe(
http_archive,
name = "t3p__ryu-1.0.18",
sha256 = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f",
type = "tar.gz",
urls = ["https://static.crates.io/crates/ryu/1.0.18/download"],
strip_prefix = "ryu-1.0.18",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.ryu-1.0.18.bazel"),
)
maybe(
http_archive,
name = "t3p__serde-1.0.203",
sha256 = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094",
type = "tar.gz",
urls = ["https://static.crates.io/crates/serde/1.0.203/download"],
strip_prefix = "serde-1.0.203",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.serde-1.0.203.bazel"),
)
maybe(
http_archive,
name = "t3p__serde_derive-1.0.203",
sha256 = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba",
type = "tar.gz",
urls = ["https://static.crates.io/crates/serde_derive/1.0.203/download"],
strip_prefix = "serde_derive-1.0.203",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.serde_derive-1.0.203.bazel"),
)
maybe(
http_archive,
name = "t3p__serde_json-1.0.117",
sha256 = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3",
type = "tar.gz",
urls = ["https://static.crates.io/crates/serde_json/1.0.117/download"],
strip_prefix = "serde_json-1.0.117",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.serde_json-1.0.117.bazel"),
)
maybe(
http_archive,
name = "t3p__syn-2.0.66",
sha256 = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5",
type = "tar.gz",
urls = ["https://static.crates.io/crates/syn/2.0.66/download"],
strip_prefix = "syn-2.0.66",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.syn-2.0.66.bazel"),
)
maybe(
http_archive,
name = "t3p__unicode-ident-1.0.12",
sha256 = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b",
type = "tar.gz",
urls = ["https://static.crates.io/crates/unicode-ident/1.0.12/download"],
strip_prefix = "unicode-ident-1.0.12",
build_file = Label("@rules_rust//test/3rdparty/crates:BUILD.unicode-ident-1.0.12.bazel"),
)
return [
struct(repo = "t3p__serde-1.0.203", is_dev_dep = False),
struct(repo = "t3p__serde_json-1.0.117", is_dev_dep = False),
]

View File

@ -4,8 +4,14 @@ load(":custom_alias.bzl", "custom_alias")
rust_library( rust_library(
name = "mylib", name = "mylib",
srcs = ["mylib.rs"], srcs = ["mylib.rs"],
aliases = {
":renamed_proc_macro_dep": "shorter_name",
},
edition = "2018", edition = "2018",
proc_macro_deps = [":proc_macro_dep"], proc_macro_deps = [
":proc_macro_dep",
":renamed_proc_macro_dep",
],
deps = [ deps = [
":alias_dep", ":alias_dep",
":custom_alias_dep", ":custom_alias_dep",
@ -81,6 +87,12 @@ rust_proc_macro(
edition = "2018", edition = "2018",
) )
rust_proc_macro(
name = "renamed_proc_macro_dep",
srcs = ["renamed_proc_macro_dep.rs"],
edition = "2018",
)
rust_test( rust_test(
name = "rust_project_json_test", name = "rust_project_json_test",
srcs = ["rust_project_json_test.rs"], srcs = ["rust_project_json_test.rs"],
@ -91,4 +103,8 @@ rust_test(
# contexts outside of `//test/rust_analyzer:rust_analyzer_test`. Run # contexts outside of `//test/rust_analyzer:rust_analyzer_test`. Run
# that target to execute this test. # that target to execute this test.
tags = ["manual"], tags = ["manual"],
deps = [
"@rules_rust//test/3rdparty/crates:serde",
"@rules_rust//test/3rdparty/crates:serde_json",
],
) )

View File

@ -1,5 +1,8 @@
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use serde::Deserialize;
use std::collections::BTreeSet;
use std::env; use std::env;
use std::path::PathBuf; use std::path::PathBuf;
@ -28,4 +31,52 @@ mod tests {
); );
} }
} }
#[test]
fn test_aliases_are_applied() {
let rust_project_path = PathBuf::from(env::var("RUST_PROJECT_JSON").unwrap());
let content = std::fs::read_to_string(&rust_project_path)
.unwrap_or_else(|_| panic!("couldn't open {:?}", &rust_project_path));
let project: Project =
serde_json::from_str(&content).expect("Failed to deserialize project JSON");
let renamed_proc_macro_dep_index = project
.crates
.iter()
.enumerate()
.find(|(_, krate)| krate.display_name == "renamed_proc_macro_dep")
.map(|(index, _)| index)
.unwrap();
let krate = project
.crates
.iter()
.find(|krate| krate.display_name == "mylib")
.unwrap();
let dep = krate
.deps
.iter()
.find(|dep| dep.krate == renamed_proc_macro_dep_index)
.unwrap();
assert_eq!(dep.name, "shorter_name");
}
#[derive(Deserialize)]
struct Project {
crates: Vec<Crate>,
}
#[derive(Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
struct Crate {
display_name: String,
deps: BTreeSet<Dep>,
}
#[derive(Debug, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
struct Dep {
#[serde(rename = "crate")]
krate: usize,
name: String,
}
} }

View File

@ -31,6 +31,10 @@ load("@rules_rust//rust:repositories.bzl", "rust_repositories")
rust_repositories() rust_repositories()
load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_dependencies") load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_dependencies")
rust_analyzer_dependencies() rust_analyzer_dependencies()
load("@rules_rust//test/3rdparty/crates:crates.bzl", test_crate_repositories = "crate_repositories")
test_crate_repositories()
EOF EOF
cat <<EOF >"${new_workspace}/.bazelrc" cat <<EOF >"${new_workspace}/.bazelrc"

View File

@ -39,6 +39,7 @@ struct Action {
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Deserialize)] #[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Deserialize)]
#[serde(deny_unknown_fields)] #[serde(deny_unknown_fields)]
pub struct CrateSpec { pub struct CrateSpec {
pub aliases: BTreeMap<String, String>,
pub crate_id: String, pub crate_id: String,
pub display_name: String, pub display_name: String,
pub edition: String, pub edition: String,
@ -219,6 +220,7 @@ mod test {
fn consolidate_lib_then_test_specs() { fn consolidate_lib_then_test_specs() {
let crate_specs = vec![ let crate_specs = vec![
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib".into(), display_name: "mylib".into(),
edition: "2018".into(), edition: "2018".into(),
@ -233,6 +235,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-extra_test_dep.rs".into(), crate_id: "ID-extra_test_dep.rs".into(),
display_name: "extra_test_dep".into(), display_name: "extra_test_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -247,6 +250,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-lib_dep.rs".into(), crate_id: "ID-lib_dep.rs".into(),
display_name: "lib_dep".into(), display_name: "lib_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -261,6 +265,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib_test".into(), display_name: "mylib_test".into(),
edition: "2018".into(), edition: "2018".into(),
@ -280,6 +285,7 @@ mod test {
consolidate_crate_specs(crate_specs).unwrap(), consolidate_crate_specs(crate_specs).unwrap(),
BTreeSet::from([ BTreeSet::from([
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib".into(), display_name: "mylib".into(),
edition: "2018".into(), edition: "2018".into(),
@ -294,6 +300,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-extra_test_dep.rs".into(), crate_id: "ID-extra_test_dep.rs".into(),
display_name: "extra_test_dep".into(), display_name: "extra_test_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -308,6 +315,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-lib_dep.rs".into(), crate_id: "ID-lib_dep.rs".into(),
display_name: "lib_dep".into(), display_name: "lib_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -329,6 +337,7 @@ mod test {
fn consolidate_test_then_lib_specs() { fn consolidate_test_then_lib_specs() {
let crate_specs = vec![ let crate_specs = vec![
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib_test".into(), display_name: "mylib_test".into(),
edition: "2018".into(), edition: "2018".into(),
@ -343,6 +352,7 @@ mod test {
crate_type: "bin".into(), crate_type: "bin".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib".into(), display_name: "mylib".into(),
edition: "2018".into(), edition: "2018".into(),
@ -357,6 +367,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-extra_test_dep.rs".into(), crate_id: "ID-extra_test_dep.rs".into(),
display_name: "extra_test_dep".into(), display_name: "extra_test_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -371,6 +382,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-lib_dep.rs".into(), crate_id: "ID-lib_dep.rs".into(),
display_name: "lib_dep".into(), display_name: "lib_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -390,6 +402,7 @@ mod test {
consolidate_crate_specs(crate_specs).unwrap(), consolidate_crate_specs(crate_specs).unwrap(),
BTreeSet::from([ BTreeSet::from([
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib".into(), display_name: "mylib".into(),
edition: "2018".into(), edition: "2018".into(),
@ -404,6 +417,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-extra_test_dep.rs".into(), crate_id: "ID-extra_test_dep.rs".into(),
display_name: "extra_test_dep".into(), display_name: "extra_test_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -418,6 +432,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-lib_dep.rs".into(), crate_id: "ID-lib_dep.rs".into(),
display_name: "lib_dep".into(), display_name: "lib_dep".into(),
edition: "2018".into(), edition: "2018".into(),
@ -444,6 +459,7 @@ mod test {
// mylib in mylib2.rs. // mylib in mylib2.rs.
let crate_specs = vec![ let crate_specs = vec![
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib".into(), display_name: "mylib".into(),
edition: "2018".into(), edition: "2018".into(),
@ -458,6 +474,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib_test".into(), display_name: "mylib_test".into(),
edition: "2018".into(), edition: "2018".into(),
@ -472,6 +489,7 @@ mod test {
crate_type: "bin".into(), crate_type: "bin".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib_main".into(), display_name: "mylib_main".into(),
edition: "2018".into(), edition: "2018".into(),
@ -486,6 +504,7 @@ mod test {
crate_type: "bin".into(), crate_type: "bin".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib2.rs".into(), crate_id: "ID-mylib2.rs".into(),
display_name: "mylib2".into(), display_name: "mylib2".into(),
edition: "2018".into(), edition: "2018".into(),
@ -506,6 +525,7 @@ mod test {
consolidate_crate_specs(perm).unwrap(), consolidate_crate_specs(perm).unwrap(),
BTreeSet::from([ BTreeSet::from([
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib.rs".into(), crate_id: "ID-mylib.rs".into(),
display_name: "mylib".into(), display_name: "mylib".into(),
edition: "2018".into(), edition: "2018".into(),
@ -520,6 +540,7 @@ mod test {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-mylib2.rs".into(), crate_id: "ID-mylib2.rs".into(),
display_name: "mylib2".into(), display_name: "mylib2".into(),
edition: "2018".into(), edition: "2018".into(),
@ -545,6 +566,7 @@ mod test {
// when explicitly building that target. // when explicitly building that target.
let crate_specs = vec![ let crate_specs = vec![
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-myproc_macro.rs".into(), crate_id: "ID-myproc_macro.rs".into(),
display_name: "myproc_macro".into(), display_name: "myproc_macro".into(),
edition: "2018".into(), edition: "2018".into(),
@ -562,6 +584,7 @@ mod test {
crate_type: "proc_macro".into(), crate_type: "proc_macro".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-myproc_macro.rs".into(), crate_id: "ID-myproc_macro.rs".into(),
display_name: "myproc_macro".into(), display_name: "myproc_macro".into(),
edition: "2018".into(), edition: "2018".into(),
@ -583,6 +606,7 @@ mod test {
assert_eq!( assert_eq!(
consolidate_crate_specs(perm).unwrap(), consolidate_crate_specs(perm).unwrap(),
BTreeSet::from([CrateSpec { BTreeSet::from([CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-myproc_macro.rs".into(), crate_id: "ID-myproc_macro.rs".into(),
display_name: "myproc_macro".into(), display_name: "myproc_macro".into(),
edition: "2018".into(), edition: "2018".into(),

View File

@ -137,14 +137,16 @@ pub fn generate_rust_project(
.get(dep) .get(dep)
.expect("failed to find dependency on second lookup"); .expect("failed to find dependency on second lookup");
let dep_crate = &project.crates[crate_index]; let dep_crate = &project.crates[crate_index];
Dependency { let name = if let Some(alias) = c.aliases.get(dep) {
crate_index, alias.clone()
name: dep_crate } else {
dep_crate
.display_name .display_name
.as_ref() .as_ref()
.expect("all crates should have display_name") .expect("all crates should have display_name")
.clone(), .clone()
} };
Dependency { crate_index, name }
}) })
.collect(), .collect(),
is_workspace_member: Some(c.is_workspace_member), is_workspace_member: Some(c.is_workspace_member),
@ -278,6 +280,7 @@ mod tests {
"sysroot", "sysroot",
"sysroot_src", "sysroot_src",
&BTreeSet::from([CrateSpec { &BTreeSet::from([CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-example".into(), crate_id: "ID-example".into(),
display_name: "example".into(), display_name: "example".into(),
edition: "2018".into(), edition: "2018".into(),
@ -309,6 +312,7 @@ mod tests {
"sysroot_src", "sysroot_src",
&BTreeSet::from([ &BTreeSet::from([
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-example".into(), crate_id: "ID-example".into(),
display_name: "example".into(), display_name: "example".into(),
edition: "2018".into(), edition: "2018".into(),
@ -323,6 +327,7 @@ mod tests {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-dep_a".into(), crate_id: "ID-dep_a".into(),
display_name: "dep_a".into(), display_name: "dep_a".into(),
edition: "2018".into(), edition: "2018".into(),
@ -337,6 +342,7 @@ mod tests {
crate_type: "rlib".into(), crate_type: "rlib".into(),
}, },
CrateSpec { CrateSpec {
aliases: BTreeMap::new(),
crate_id: "ID-dep_b".into(), crate_id: "ID-dep_b".into(),
display_name: "dep_b".into(), display_name: "dep_b".into(),
edition: "2018".into(), edition: "2018".into(),

View File

@ -6,6 +6,7 @@ cd "$(dirname "${BASH_SOURCE[0]}")"/..
# Re-generates all files which may need to be re-generated after changing crate_universe. # Re-generates all files which may need to be re-generated after changing crate_universe.
bazel run //crate_universe/3rdparty:crates_vendor bazel run //crate_universe/3rdparty:crates_vendor
bazel run //test/3rdparty:crates_vendor
bazel run //tools/rust_analyzer/3rdparty:crates_vendor bazel run //tools/rust_analyzer/3rdparty:crates_vendor
for d in examples/crate_universe/vendor_*; do for d in examples/crate_universe/vendor_*; do