Refactor lost input ownership calculation, do it unconditionally

Previously, lost input ownership information from an action's inputDeps
was only calculated if any lost inputs came from runfiles. By
calculating ownership information unconditionally, lost input owners can
be determined for each kind of aggregating artifact, except for filesets,
at the ActionExecutionFunction level.

By not treating runfiles ownership specially, ActionRewindStrategy's
lost-input-owning direct deps calculation can be simpler. Also, the
runfiles-specific tracking in LostInputsExecException.InputOwners is no
longer necessary, so it can be eliminated in favor of the now-equivalent
ActionInputDepOwners.

This CL also makes LostInputs{ExecException,ActionExecutionException}
independent. That allows other parts of action execution, besides those
which throw ExecExceptions, to be able to communicate lost input
failures. Now that the ActionExecutionFunction level calculates lost
input ownership unconditionally, the requirements for those parts is
looser. Before, they would have been responsible for determining all
ownership relations except for those from runfiles. Now, they're
responsible only for determining ownership relations from filesets.

RELNOTES: None.
PiperOrigin-RevId: 280692324
7 files changed
tree: 3864b9792640a12dbecde34d743ed6e5a7578c3a
  1. .bazelci/
  2. examples/
  3. scripts/
  4. site/
  5. src/
  6. third_party/
  7. tools/
  8. .bazelrc
  9. .gitattributes
  10. .gitignore
  11. AUTHORS
  12. BUILD
  13. CHANGELOG.md
  14. CODEOWNERS
  15. combine_distfiles.py
  16. combine_distfiles_to_tar.sh
  17. compile.sh
  18. CONTRIBUTING.md
  19. CONTRIBUTORS
  20. distdir.bzl
  21. ISSUE_TEMPLATE.md
  22. LICENSE
  23. README.md
  24. WORKSPACE
README.md

Bazel

{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.

Getting Started

Documentation

Contributing to Bazel

See CONTRIBUTING.md

Build status