Skip to content

Commit e61e6e1

Browse files
provide flag to exclude data at compile time (#3005)
Fixes #2977 --------- Co-authored-by: Daniel Wagner-Hall <[email protected]>
1 parent d9bbb1d commit e61e6e1

File tree

8 files changed

+25
-5
lines changed

8 files changed

+25
-5
lines changed

crate_universe/BUILD.bazel

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ alias(
9393
rust_test(
9494
name = "unit_test",
9595
aliases = aliases(),
96+
compile_data = glob(["test_data/**"]),
9697
crate = ":cargo_bazel",
9798
data = glob(["test_data/**"]) + [
9899
"//crate_universe/test_data/serialized_configs",

examples/cargo_manifest_dir/external_crate/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,6 @@ load("@rules_rust//rust:defs.bzl", "rust_library")
33
rust_library(
44
name = "external_crate",
55
srcs = ["src/lib.rs"],
6-
data = ["include/included_file.rs.inc"],
6+
compile_data = ["include/included_file.rs.inc"],
77
visibility = ["//visibility:public"],
88
)

examples/crate_universe/WORKSPACE.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ rust_binary(
539539
name = "cxxbridge-cmd",
540540
srcs = glob(["src/**/*.rs"]),
541541
aliases = aliases(),
542-
data = [
542+
compile_data = [
543543
"src/gen/include/cxx.h",
544544
],
545545
edition = "2021",

examples/flag_locations/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ rust_test(
1212
srcs = [
1313
"main.rs",
1414
],
15-
data = [":flag_generator"],
15+
compile_data = [":flag_generator"],
1616
edition = "2018",
1717
rustc_flags = [
1818
"@$(location :flag_generator)",

rust/private/rustc.bzl

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -715,8 +715,14 @@ def collect_inputs(
715715
if build_info.flags:
716716
build_info_inputs.append(build_info.flags)
717717

718+
# The old default behavior was to include data files at compile time.
719+
# This flag controls whether to include data files in compile_data.
720+
data_included_in_inputs = []
721+
if not toolchain._incompatible_do_not_include_data_in_compile_data:
722+
data_included_in_inputs = getattr(files, "data", [])
723+
718724
nolinkstamp_compile_inputs = depset(
719-
getattr(files, "data", []) +
725+
data_included_in_inputs +
720726
build_info_inputs +
721727
([toolchain.target_json] if toolchain.target_json else []) +
722728
([] if linker_script == None else [linker_script]),

rust/settings/BUILD.bazel

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,3 +253,11 @@ per_crate_rustc_flag(
253253
build_setting_default = [],
254254
visibility = ["//visibility:public"],
255255
)
256+
257+
# A flag to control whether to include data files in compile_data.
258+
incompatible_flag(
259+
name = "incompatible_do_not_include_data_in_compile_data",
260+
build_setting_default = True,
261+
issue = "https://github.com/bazelbuild/rules_rust/issues/2977",
262+
visibility = ["//visibility:public"],
263+
)

rust/toolchain.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -699,6 +699,7 @@ def _rust_toolchain_impl(ctx):
699699
_experimental_use_coverage_metadata_files = ctx.attr._experimental_use_coverage_metadata_files[BuildSettingInfo].value,
700700
_incompatible_change_rust_test_compilation_output_directory = ctx.attr._incompatible_change_rust_test_compilation_output_directory[IncompatibleFlagInfo].enabled,
701701
_toolchain_generated_sysroot = ctx.attr._toolchain_generated_sysroot[BuildSettingInfo].value,
702+
_incompatible_do_not_include_data_in_compile_data = ctx.attr._incompatible_do_not_include_data_in_compile_data[IncompatibleFlagInfo].enabled,
702703
_no_std = no_std,
703704
)
704705
return [
@@ -886,6 +887,10 @@ rust_toolchain = rule(
886887
"_incompatible_change_rust_test_compilation_output_directory": attr.label(
887888
default = Label("//rust/settings:incompatible_change_rust_test_compilation_output_directory"),
888889
),
890+
"_incompatible_do_not_include_data_in_compile_data": attr.label(
891+
default = Label("//rust/settings:incompatible_do_not_include_data_in_compile_data"),
892+
doc = "Label to a boolean build setting that controls whether to include data files in compile_data.",
893+
),
889894
"_no_std": attr.label(
890895
default = Label("//:no_std"),
891896
),

test/build_env/BUILD.bazel

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ package(default_visibility = ["//visibility:public"])
99
rust_test(
1010
name = "conflicting_deps_test",
1111
srcs = ["tests/manifest_dir.rs"],
12-
data = ["src/manifest_dir_file.txt"],
12+
compile_data = ["src/manifest_dir_file.txt"],
1313
edition = "2018",
1414
)
1515

0 commit comments

Comments
 (0)