1load("@bazel_skylib//:bzl_library.bzl", "bzl_library") 2load("@cui//:defs.bzl", "aliases", "all_crate_deps") 3load("@rules_rust//rust:defs.bzl", "rust_binary", "rust_doc", "rust_doc_test", "rust_library", "rust_test") 4load("//crate_universe:version.bzl", "VERSION") 5 6exports_files( 7 glob([ 8 "src/**/*.bzl", 9 "src/**/*.j2", 10 "src/**/*.rs", 11 ]) + [ 12 "Cargo.toml", 13 "Cargo.lock", 14 "defs.bzl", 15 "docs_bzlmod.bzl", 16 "docs_workspace.bzl", 17 ], 18 visibility = ["//visibility:public"], 19) 20 21filegroup( 22 name = "bzl_srcs", 23 srcs = glob(["*.bzl"]) + [ 24 "//crate_universe/3rdparty:bzl_srcs", 25 "//crate_universe/private:bzl_srcs", 26 "//crate_universe/tools:bzl_srcs", 27 ], 28 visibility = ["//visibility:public"], 29) 30 31bzl_library( 32 name = "bzl_lib", 33 srcs = [":bzl_srcs"], 34 visibility = ["//visibility:public"], 35 deps = ["//rust:bzl_lib"], 36) 37 38filegroup( 39 name = "rust_srcs", 40 srcs = glob([ 41 "src/**/*.bzl", 42 "src/**/*.j2", 43 "src/**/*.rs", 44 ]), 45 visibility = ["//:__subpackages__"], 46) 47 48rust_library( 49 name = "cargo_bazel", 50 srcs = glob( 51 include = ["src/**/*.rs"], 52 exclude = ["src/main.rs"], 53 ), 54 aliases = aliases(), 55 compile_data = glob( 56 include = ["src/**"], 57 exclude = ["src/**/*.rs"], 58 ), 59 edition = "2021", 60 proc_macro_deps = all_crate_deps(proc_macro = True), 61 # This target embeds additional, stamping related information (see 62 # https://docs.bazel.build/versions/main/user-manual.html#workspace_status 63 # for more information). Set stamp = -1 to indicate that it should respect 64 # the value of the --stamp comandline flag. 65 stamp = -1, 66 version = VERSION, 67 visibility = ["//visibility:public"], 68 deps = all_crate_deps(normal = True), 69) 70 71rust_binary( 72 name = "cargo_bazel_bin", 73 srcs = ["src/main.rs"], 74 edition = "2021", 75 version = VERSION, 76 visibility = ["//visibility:public"], 77 deps = [":cargo_bazel"], 78) 79 80alias( 81 name = "bin", 82 actual = ":cargo_bazel_bin", 83 visibility = ["//visibility:public"], 84) 85 86rust_test( 87 name = "unit_test", 88 aliases = aliases(), 89 crate = ":cargo_bazel", 90 data = glob(["test_data/**"]) + [ 91 "//crate_universe/test_data/serialized_configs", 92 "@rules_rust//rust/toolchain:current_cargo_files", 93 "@rules_rust//rust/toolchain:current_rustc_files", 94 ], 95 proc_macro_deps = all_crate_deps( 96 proc_macro_dev = True, 97 ), 98 rustc_env = { 99 "CARGO": "$(rootpath @rules_rust//rust/toolchain:current_cargo_files)", 100 "RUSTC": "$(rootpath @rules_rust//rust/toolchain:current_rustc_files)", 101 }, 102 deps = [ 103 "@rules_rust//tools/runfiles", 104 ] + all_crate_deps( 105 normal_dev = True, 106 ), 107) 108 109# Integration tests which invoke cargo and/or rustc as subprocesses. 110rust_test( 111 name = "cargo_integration_test", 112 timeout = "long", 113 srcs = ["tests/cargo_integration_test.rs"], 114 aliases = aliases(), 115 data = glob(["test_data/**"]) + [ 116 "//crate_universe/test_data/serialized_configs", 117 "@rules_rust//rust/toolchain:current_cargo_files", 118 "@rules_rust//rust/toolchain:current_rustc_files", 119 ], 120 edition = "2021", 121 env = { 122 "CARGO": "$(rootpath @rules_rust//rust/toolchain:current_cargo_files)", 123 "RUSTC": "$(rootpath @rules_rust//rust/toolchain:current_rustc_files)", 124 }, 125 proc_macro_deps = all_crate_deps( 126 proc_macro_dev = True, 127 ), 128 rustc_env = { 129 "CARGO": "$(rootpath @rules_rust//rust/toolchain:current_cargo_files)", 130 "RUSTC": "$(rootpath @rules_rust//rust/toolchain:current_rustc_files)", 131 }, 132 tags = ["requires-network"], 133 deps = [ 134 ":cargo_bazel", 135 "@rules_rust//tools/runfiles", 136 ] + all_crate_deps( 137 normal = True, 138 ), 139) 140 141rust_test( 142 name = "versions_test", 143 srcs = ["tests/version_test.rs"], 144 data = [ 145 "Cargo.toml", 146 "version.bzl", 147 ], 148 edition = "2021", 149 rustc_env = { 150 "CARGO_TOML": "$(rootpath :Cargo.toml)", 151 "VERSION_BZL": "$(rootpath :version.bzl)", 152 }, 153) 154 155rust_doc( 156 name = "rustdoc", 157 crate = ":cargo_bazel", 158 rustdoc_flags = [ 159 "--cap-lints=warn", 160 "--document-private-items", 161 "--allow=rustdoc::private_intra_doc_links", 162 ], 163 visibility = ["//visibility:public"], 164) 165 166rust_doc_test( 167 name = "rustdoc_test", 168 crate = ":cargo_bazel", 169) 170