bazel icon indicating copy to clipboard operation
bazel copied to clipboard

provide a means of comparing local vs. remote execution outputs, and failing on mismatch

Open fangism opened this issue 1 year ago • 2 comments

Description of the feature request:

We are interested in verifying that local and remote builds produce identical artifacts. Perhaps this could be done as a bazel configuration or remote execution option? We're aware there exists an option to race local vs. remote execution results, taking the first success as the winner. Could that be modified as a new option that waits for both local and remote execution to complete, and then compare all outputs, and fail on mismatch?

Which category does this issue belong to?

Remote Execution

What underlying problem are you trying to solve with this feature?

We want to eliminate all build output differences between local and remote execution, for the sake of caching, build-verification, debug artifact reusability. For example, we found that the default set of clang compile options can leak absolute paths in debug info, which is undesirable.

Which operating system are you running Bazel on?

various

What is the output of bazel info release?

release 7.2.1

If bazel info release returns development version or (@non-git), tell us how you built Bazel.

No response

What's the output of git remote get-url origin; git rev-parse HEAD ?

No response

Have you found anything relevant by searching the web?

No response

Any other information, logs, or outputs that you want to share?

No response

fangism avatar Aug 15 '24 23:08 fangism

In such a proposed mode of operation, it should be understood that --remote_output_download=all is needed so that remote and local outputs of intermediate build steps can be compared.

fangism avatar Aug 15 '24 23:08 fangism

Would it help to capture execution logs for local and remote builds and compare them? (See https://bazel.build/remote/cache-remote#caching-across-machines)

tjgq avatar Aug 22 '24 12:08 tjgq