commit | b442fca8156c68eeb93ebce454dee9c5faf44044 | [log] [tgz] |
---|---|---|
author | ajurkowski <ajurkowski@google.com> | Mon Jul 06 10:27:35 2020 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Jul 06 10:28:56 2020 -0700 |
tree | e5afc369efe84a32ca8f71f4cb5aae906eac94da | |
parent | 82e6b6a3b9589b93f4abcf3eb0f14cd1d50008ff [diff] |
Add a warning when shared actions detection can be producing a false positive. Shared actions detection is based on the action key -- if 2 actions have the same key, we will consider them equal. The problem is that we cannot reliably construct the action key for actions which have tree artifact inputs. Example: ``` args = ctx.actions.args() args.add_all([tree_artifact], map_each=function, expand_directories=True) action = ctx.actions.run(arguments=[args], ...) ``` For such action, we will constuct the key by running `function` on the directory itself (rather than expanded contents of it). This means that for 2 actions with equal inputs and different functions, as long as their result is the same when called for the directory, we will consider them equal. Please note that it does not imply that their result for files within the directory are actually the same. As a result of that problem, we may falsly share an action and proceed with a build which should otherwise fail. In order to aid the users in debugging issues (like non-determinism) of such builds, add a warning about the potential problem. PiperOrigin-RevId: 319805921
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
Follow our tutorials:
See CONTRIBUTING.md