| load("@rules_rust//cargo:defs.bzl", "cargo_build_script") |
| load("@rules_rust//rust:defs.bzl", "rust_test") |
| |
| # generate a file |
| genrule( |
| name = "data_generator", |
| outs = ["generated.data"], |
| cmd = "echo hello > $@", |
| ) |
| |
| _data = [ |
| # we should be able to read non-generated source/data files |
| "source.file", |
| # and generated files as well |
| "generated.data", |
| # we should also be able to access external binaries |
| # such as protoc. |
| "@com_google_protobuf//:protoc", |
| ] |
| |
| cargo_build_script( |
| name = "build", |
| srcs = ["build.rs"], |
| build_script_env = { |
| "GENERATED_DATA": "$(location generated.data)", |
| "SOME_TOOL": "$(execpath @com_google_protobuf//:protoc)", |
| # both execpath and location should work |
| "SOURCE_FILE": "$(execpath source.file)", |
| }, |
| data = _data, |
| ) |
| |
| rust_test( |
| name = "test", |
| srcs = [ |
| "main.rs", |
| ], |
| data = _data, |
| edition = "2018", |
| rustc_env = { |
| "GENERATED_DATA_ABS": "$(execpath generated.data)", |
| "GENERATED_DATA_ROOT": "$(rootpath generated.data)", |
| "SOME_TOOL": "$(rootpath @com_google_protobuf//:protoc)", |
| "SOURCE_FILE": "$(rootpath source.file)", |
| }, |
| deps = [ |
| ":build", |
| ], |
| ) |