Roll forward of https://github.com/bazelbuild/bazel/commit/78fdb7d62d

The original change broke some call paths that didn't have an event reporter to
provide. It's also a bit fragile in relying on AbstractUnorderedFormatter.setEventHandler to provide the reporter - there are different call sites and if we forget to call that method from one of them we'd get a null pointer exception.

This version simply makes the reporting optional: if the reporter is available the output formatter reports to it. Else it skips it.

Ideally we'd do a deeper audit of all call sites and guarantee the existence of a reporter in all expected places. That's a lot of refactoring, and in some disparate pieces of code that serve varying purposes. So it's unclear what assumptions are correct in what place.

This approach, while weaker, at least avoids the crash and provides a clear reason in *some* use cases. We could presumably expand such qualifying use cases incrementally as needed. In the meantime those use cases will simply return misleading data. :(

PiperOrigin-RevId: 300832332
12 files changed
tree: 68395b43e9c2ce1669f601e80f7e8fac8204591d
  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