fix use of stamping in rust_binary_without_process_wrapper (#1218)
* don't ever stamp when building process_wrapper
* buildify
* fix `stamp = 0` for all rust_binary_without_process_wrapper
diff --git a/rust/private/rust.bzl b/rust/private/rust.bzl
index 6a2ed62..3b17d62 100644
--- a/rust/private/rust.bzl
+++ b/rust/private/rust.bzl
@@ -929,14 +929,27 @@
"""),
)
-def _fake_out_process_wrapper(attrs):
+def _common_attrs_for_binary_without_process_wrapper(attrs):
new_attr = dict(attrs.items())
+
+ # use a fake process wrapper
new_attr["_process_wrapper"] = attr.label(
default = None,
executable = True,
allow_single_file = True,
cfg = "exec",
)
+
+ # fix stamp = 0
+ new_attr["stamp"] = attr.int(
+ doc = dedent("""\
+ Fix `stamp = 0` as stamping is not supported when building without process_wrapper:
+ https://github.com/bazelbuild/rules_rust/blob/8df4517d370b0c543a01ba38b63e1d5a4104b035/rust/private/rustc.bzl#L955
+ """),
+ default = 0,
+ values = [0],
+ )
+
return new_attr
# Provides an internal rust_binary to use that we can use to build the process
@@ -945,7 +958,7 @@
rust_binary_without_process_wrapper = rule(
implementation = _rust_binary_impl,
provides = _common_providers,
- attrs = dict(_fake_out_process_wrapper(_common_attrs).items() + _rust_binary_attrs.items()),
+ attrs = dict(_common_attrs_for_binary_without_process_wrapper(_common_attrs).items() + _rust_binary_attrs.items()),
executable = True,
fragments = ["cpp"],
host_fragments = ["cpp"],