Open roman-kashitsyn opened 2 years ago
I've added a bit of logging to see what's going on in the cargo-bazel generate
function:
https://github.com/bazelbuild/rules_rust/blob/3aa6de3c63e4b0600521ecc0ac191505b1e4e747/crate_universe/src/cli/generate.rs#L108-L124
below are the values of cargo_metadata
, annotations
, and context
:
Cargo metadata: Metadata {
packages: [
Package {
name: "direct-cargo-bazel-deps",
version: Version {
major: 0,
minor: 0,
patch: 1,
},
authors: [],
id: PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
},
source: None,
description: None,
dependencies: [
Dependency {
name: "getrandom",
source: Some(
"registry+https://github.com/rust-lang/crates.io-index",
),
req: VersionReq {
comparators: [
Comparator {
op: Caret,
major: 0,
minor: Some(
2,
),
patch: Some(
6,
),
pre: Prerelease(""),
},
],
},
kind: Normal,
optional: false,
uses_default_features: true,
features: [],
target: None,
rename: Some(
"getrandom",
),
registry: None,
path: None,
},
Dependency {
name: "getrandom",
source: Some(
"registry+https://github.com/rust-lang/crates.io-index",
),
req: VersionReq {
comparators: [
Comparator {
op: Caret,
major: 0,
minor: Some(
2,
),
patch: Some(
6,
),
pre: Prerelease(""),
},
],
},
kind: Normal,
optional: false,
uses_default_features: true,
features: [
"custom",
],
target: None,
rename: Some(
"getrandom_custom",
),
registry: None,
path: None,
},
],
license: None,
license_file: None,
targets: [
Target {
name: "direct_cargo_bazel_deps",
kind: [
"lib",
],
crate_types: [
"lib",
],
required_features: [],
src_path: "/var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69/.direct_cargo_bazel_deps.rs",
edition: "2018",
doctest: true,
test: true,
doc: true,
},
],
features: {},
manifest_path: "/var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69/Cargo.toml",
categories: [],
keywords: [],
readme: None,
repository: None,
homepage: None,
documentation: None,
edition: "2018",
metadata: Null,
links: None,
publish: None,
default_run: None,
rust_version: None,
},
],
workspace_members: [
PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
},
],
resolve: Some(
Resolve {
nodes: [
Node {
id: PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
},
deps: [],
dependencies: [],
features: [],
},
],
root: Some(
PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
},
),
},
),
workspace_root: "/var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69",
target_directory: "/var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69/target",
workspace_metadata: Object({
"cargo-bazel": Object({
"package_prefixes": Object({}),
"sources": Object({
"cfg-if 1.0.0": Object({
"sha256": String(
"baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
),
"url": String(
"https://crates.io/api/v1/crates/cfg-if/1.0.0/download",
),
}),
"getrandom 0.2.6": Object({
"sha256": String(
"9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad",
),
"url": String(
"https://crates.io/api/v1/crates/getrandom/0.2.6/download",
),
}),
"libc 0.2.125": Object({
"sha256": String(
"5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b",
),
"url": String(
"https://crates.io/api/v1/crates/libc/0.2.125/download",
),
}),
"wasi 0.10.2+wasi-snapshot-preview1": Object({
"sha256": String(
"fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6",
),
"url": String(
"https://crates.io/api/v1/crates/wasi/0.10.2+wasi-snapshot-preview1/download",
),
}),
}),
}),
}),
version: 1,
}
Annotations: Annotations {
metadata: MetadataAnnotation {
packages: {
PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
}: Package {
name: "direct-cargo-bazel-deps",
version: Version {
major: 0,
minor: 0,
patch: 1,
},
authors: [],
id: PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
},
source: None,
description: None,
dependencies: [
Dependency {
name: "getrandom",
source: Some(
"registry+https://github.com/rust-lang/crates.io-index",
),
req: VersionReq {
comparators: [
Comparator {
op: Caret,
major: 0,
minor: Some(
2,
),
patch: Some(
6,
),
pre: Prerelease(""),
},
],
},
kind: Normal,
optional: false,
uses_default_features: true,
features: [],
target: None,
rename: Some(
"getrandom",
),
registry: None,
path: None,
},
Dependency {
name: "getrandom",
source: Some(
"registry+https://github.com/rust-lang/crates.io-index",
),
req: VersionReq {
comparators: [
Comparator {
op: Caret,
major: 0,
minor: Some(
2,
),
patch: Some(
6,
),
pre: Prerelease(""),
},
],
},
kind: Normal,
optional: false,
uses_default_features: true,
features: [
"custom",
],
target: None,
rename: Some(
"getrandom_custom",
),
registry: None,
path: None,
},
],
license: None,
license_file: None,
targets: [
Target {
name: "direct_cargo_bazel_deps",
kind: [
"lib",
],
crate_types: [
"lib",
],
required_features: [],
src_path: "/var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69/.direct_cargo_bazel_deps.rs",
edition: "2018",
doctest: true,
test: true,
doc: true,
},
],
features: {},
manifest_path: "/var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69/Cargo.toml",
categories: [],
keywords: [],
readme: None,
repository: None,
homepage: None,
documentation: None,
edition: "2018",
metadata: Null,
links: None,
publish: None,
default_run: None,
rust_version: None,
},
},
crates: {
PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
}: CrateAnnotation {
node: Node {
id: PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
},
deps: [],
dependencies: [],
features: [],
},
deps: DependencySet {
normal_deps: SelectList {
common: {},
selects: {},
},
normal_dev_deps: SelectList {
common: {},
selects: {},
},
proc_macro_deps: SelectList {
common: {},
selects: {},
},
proc_macro_dev_deps: SelectList {
common: {},
selects: {},
},
build_deps: SelectList {
common: {},
selects: {},
},
build_proc_macro_deps: SelectList {
common: {},
selects: {},
},
},
},
},
workspace_members: {
PackageId {
repr: "direct-cargo-bazel-deps 0.0.1 (path+file:///var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69)",
},
},
workspace_root: "/var/folders/vb/dfxkrs1j3dbgz7nytyhnch6r0000gn/T/.tmplK1v69",
workspace_metadata: WorkspaceMetadata {
sources: {
CrateId {
name: "cfg-if",
version: "1.0.0",
}: SourceInfo {
url: "https://crates.io/api/v1/crates/cfg-if/1.0.0/download",
sha256: "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd",
},
CrateId {
name: "getrandom",
version: "0.2.6",
}: SourceInfo {
url: "https://crates.io/api/v1/crates/getrandom/0.2.6/download",
sha256: "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad",
},
CrateId {
name: "libc",
version: "0.2.125",
}: SourceInfo {
url: "https://crates.io/api/v1/crates/libc/0.2.125/download",
sha256: "5916d2ae698f6de9bfb891ad7a8d65c09d232dc58cc4ac433c7da3b2fd84bc2b",
},
CrateId {
name: "wasi",
version: "0.10.2+wasi-snapshot-preview1",
}: SourceInfo {
url: "https://crates.io/api/v1/crates/wasi/0.10.2+wasi-snapshot-preview1/download",
sha256: "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6",
},
},
workspace_prefix: None,
package_prefixes: {},
},
},
lockfile: LockfileAnnotation {
crates: {},
},
config: Config {
generate_build_scripts: true,
annotations: {},
rendering: RenderConfig {
repository_name: "crate_variants",
build_file_template: "//:BUILD.{name}-{version}.bazel",
crate_label_template: "@{repository}__{name}-{version}//:{target}",
crates_module_template: "//:{file}",
crate_repository_template: "{repository}__{name}-{version}",
default_package_name: None,
platforms_template: "@rules_rust//rust/platform:{triple}",
vendor_mode: None,
},
cargo_config: None,
supported_platform_triples: {
"aarch64-apple-darwin",
"aarch64-apple-ios",
"aarch64-linux-android",
"aarch64-unknown-linux-gnu",
"arm-unknown-linux-gnueabi",
"armv7-unknown-linux-gnueabi",
"i686-apple-darwin",
"i686-linux-android",
"i686-pc-windows-msvc",
"i686-unknown-freebsd",
"i686-unknown-linux-gnu",
"powerpc-unknown-linux-gnu",
"s390x-unknown-linux-gnu",
"wasm32-unknown-unknown",
"wasm32-wasi",
"x86_64-apple-darwin",
"x86_64-apple-ios",
"x86_64-linux-android",
"x86_64-pc-windows-msvc",
"x86_64-unknown-freebsd",
"x86_64-unknown-linux-gnu",
},
},
pairred_extras: {},
}
Context: Context {
checksum: None,
crates: {
CrateId {
name: "direct-cargo-bazel-deps",
version: "0.0.1",
}: CrateContext {
name: "direct-cargo-bazel-deps",
version: "0.0.1",
repository: None,
targets: [
Library(
TargetAttributes {
crate_name: "direct_cargo_bazel_deps",
crate_root: Some(
".direct_cargo_bazel_deps.rs",
),
srcs: Glob {
include: [
"**/*.rs",
],
exclude: [],
},
},
),
],
library_target_name: Some(
"direct_cargo_bazel_deps",
),
common_attrs: CommonAttributes {
compile_data: SelectList {
common: {},
selects: {},
},
compile_data_glob: {
"**",
},
crate_features: {},
data: SelectList {
common: {},
selects: {},
},
data_glob: {},
deps: SelectList {
common: {},
selects: {},
},
extra_deps: {},
deps_dev: SelectList {
common: {},
selects: {},
},
edition: "2018",
linker_script: None,
proc_macro_deps: SelectList {
common: {},
selects: {},
},
extra_proc_macro_deps: {},
proc_macro_deps_dev: SelectList {
common: {},
selects: {},
},
rustc_env: SelectDict {
common: {},
selects: {},
},
rustc_env_files: SelectList {
common: {},
selects: {},
},
rustc_flags: SelectList {
common: {},
selects: {},
},
version: "0.0.1",
tags: [],
},
build_script_attrs: None,
license: None,
additive_build_file_content: None,
},
},
binary_crates: {},
workspace_members: {
CrateId {
name: "direct-cargo-bazel-deps",
version: "0.0.1",
}: "",
},
conditions: {},
}
It seems that the cargo_metadata
object is already defective: annotations are constructed from the resolve
field, but cargo_metadata
doesn't mention getrandom
in resolve
.
I need to use different variants of a library in the same workspace, depending on the target platform. However, when I add the same package with different aliases to the
packages
section ofcrates_repository
rule, the package disappears from the workspace. Minimal example:WORKSPACE.bazel
The
Cargo.Bazel.lock
file is empty as well:If I remove either of the library variants, the build works as expected.