-
Notifications
You must be signed in to change notification settings - Fork 511
Open
Description
It appears that changes to data dependencies causes rebuilds of targets that depend on targets with the direct data dependencies. For example, a library bar
with data = ["foo"]
does not rebuild when foo
changes, but a binary depending on bar
does.
Reproduction steps using the attached repo:
-
bazel build //...
to hydrate cache -
bazel build //... --subcommands
(should see no subcommands) -
Edit
data_dep.txt
-
bazel build //... --subcommands
SUBCOMMAND: # //:bin_depending_on_lib_with_data_dep [action 'Compiling Rust bin bin_depending_on_lib_with_data_dep (1 files)', configuration: 7f8856bb0405540c89cb61a09c1d0562ac1a95a54b0f8a7e6cabe690edf58098, execution platform: @@platforms//host:host, mnemonic: Rustc]
data-rebuild-repro.zip (credit to @ograff)
Possibly related:
rules_rust/rust/private/rustc.bzl
Lines 1914 to 1917 in f9d42ff
out_dir_compile_inputs = depset( input_files, transitive = [dep_info.link_search_path_files, dep_info.transitive_data] + input_depsets, ) rules_rust/rust/private/rustc.bzl
Lines 310 to 312 in f9d42ff
# Track transitive non-macro data in case a proc macro depends on this crate. transitive_data.append(crate_info.data) transitive_data.append(dep_info.transitive_data) - Update
cargo_build_script
to work without runfiles support. #2887
Metadata
Metadata
Assignees
Labels
No labels