Skip to content

Commit 19423de

Browse files
committed
add feature to disable src transform
1 parent a5a9648 commit 19423de

File tree

5 files changed

+23
-3
lines changed

5 files changed

+23
-3
lines changed

rust/private/rust.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ def _rust_test_impl(ctx):
344344
# Need to consider all src files together when transforming
345345
srcs = depset(ctx.files.srcs, transitive = [crate.srcs]).to_list()
346346
compile_data = depset(ctx.files.compile_data, transitive = [crate.compile_data]).to_list()
347-
srcs, compile_data, crate_root = transform_sources(ctx, srcs, compile_data, getattr(ctx.file, "crate_root", None))
347+
srcs, compile_data, crate_root = transform_sources(ctx, srcs, compile_data, crate.root)
348348

349349
if crate.compile_data_targets:
350350
compile_data_targets = depset(ctx.attr.compile_data, transitive = [crate.compile_data_targets])
@@ -368,7 +368,7 @@ def _rust_test_impl(ctx):
368368
crate_info_dict = dict(
369369
name = crate_name,
370370
type = crate_type,
371-
root = crate.root,
371+
root = crate_root,
372372
srcs = depset(srcs),
373373
deps = depset(deps, transitive = [crate.deps]),
374374
proc_macro_deps = depset(proc_macro_deps, transitive = [crate.proc_macro_deps]),

rust/private/utils.bzl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -828,13 +828,15 @@ def transform_sources(ctx, srcs, compile_data, crate_root):
828828
Tuple(List[File], List[File], File): The transformed srcs, compile_data
829829
and crate_root
830830
"""
831+
toolchain = find_toolchain(ctx)
832+
831833
has_generated_sources = (
832834
len([src for src in srcs if not src.is_source]) +
833835
len([src for src in compile_data if not src.is_source]) >
834836
0
835837
)
836838

837-
if not has_generated_sources:
839+
if not has_generated_sources or toolchain._incompatible_do_not_transform_sources:
838840
return srcs, compile_data, crate_root
839841

840842
package_root = paths.join(ctx.label.workspace_root, ctx.label.package)

rust/settings/BUILD.bazel

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ load(
2424
"incompatible_change_clippy_error_format",
2525
"incompatible_change_rust_test_compilation_output_directory",
2626
"incompatible_do_not_include_data_in_compile_data",
27+
"incompatible_do_not_transform_sources",
2728
"lto",
2829
"no_std",
2930
"pipelined_compilation",
@@ -102,6 +103,8 @@ incompatible_change_rust_test_compilation_output_directory()
102103

103104
incompatible_do_not_include_data_in_compile_data()
104105

106+
incompatible_do_not_transform_sources()
107+
105108
lto()
106109

107110
no_std()

rust/settings/settings.bzl

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,16 @@ def incompatible_do_not_include_data_in_compile_data():
450450
issue = "https://github.com/bazelbuild/rules_rust/issues/2977",
451451
)
452452

453+
# buildifier: disable=unnamed-macro
454+
def incompatible_do_not_transform_sources():
455+
"""A flag to control whether to include data files in compile_data.
456+
"""
457+
incompatible_flag(
458+
name = "incompatible_do_not_transform_sources",
459+
build_setting_default = False,
460+
issue = "https://github.com/bazelbuild/rules_rust/issues/<none>",
461+
)
462+
453463
def codegen_units():
454464
"""The default value for `--codegen-units` which also affects resource allocation for rustc actions.
455465

rust/toolchain.bzl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -749,6 +749,7 @@ def _rust_toolchain_impl(ctx):
749749
_incompatible_change_rust_test_compilation_output_directory = ctx.attr._incompatible_change_rust_test_compilation_output_directory[IncompatibleFlagInfo].enabled,
750750
_toolchain_generated_sysroot = ctx.attr._toolchain_generated_sysroot[BuildSettingInfo].value,
751751
_incompatible_do_not_include_data_in_compile_data = ctx.attr._incompatible_do_not_include_data_in_compile_data[IncompatibleFlagInfo].enabled,
752+
_incompatible_do_not_transform_sources = ctx.attr._incompatible_do_not_transform_sources[IncompatibleFlagInfo].enabled,
752753
_no_std = no_std,
753754
_codegen_units = ctx.attr._codegen_units[BuildSettingInfo].value,
754755
_experimental_use_allocator_libraries_with_mangled_symbols = ctx.attr.experimental_use_allocator_libraries_with_mangled_symbols,
@@ -969,6 +970,10 @@ rust_toolchain = rule(
969970
default = Label("//rust/settings:incompatible_do_not_include_data_in_compile_data"),
970971
doc = "Label to a boolean build setting that controls whether to include data files in compile_data.",
971972
),
973+
"_incompatible_do_not_transform_sources": attr.label(
974+
default = Label("//rust/settings:incompatible_do_not_transform_sources"),
975+
doc = "Label to a boolean build setting that controls whether to transform source files.",
976+
),
972977
"_no_std": attr.label(
973978
default = Label("//rust/settings:no_std"),
974979
),

0 commit comments

Comments
 (0)