Merging a RunfilesSupport object into Runfiles.Builder no longer adds the runfiles middleman to the artifacts.

Runfiles.Builder.merge(RunfilesSupport) would add the runfiles
middleman of the RunfilesSupport object being merged into the
artifacts of the nascent Runfiles object. This effectively made the
construction of one runfiles tree depend on that of another.

Instead of putting the runfiles middleman into the runfiles artifacts,
we can put it into the FilesToRunProvider, which should have the same
effect. To facilitate this, RuleConfiguredTargetBuilder gains a
addFilesToRun method. Note that not every caller of
merge(RunfilesSupport) has to be modified because some were already
adding the runfiles middleman to their FilesProvider (e.g.,
AndroidHostServiceFixture), which is a subset of FilesToRunProvider.

This is split out from https://bazel-review.googlesource.com/c/14010

Change-Id: Icfca5262a32619e1e351477f3ff641350b6798dc
PiperOrigin-RevId: 168358030
5 files changed
tree: aaa48ef993f45ddd1b2acd0a8dcb5dbe916abe54
  1. examples/
  2. scripts/
  3. site/
  4. src/
  5. third_party/
  6. tools/
  7. .gitattributes
  8. .gitignore
  9. AUTHORS
  10. BUILD
  11. CHANGELOG.md
  12. combine_distfiles.py
  13. combine_distfiles_to_tar.sh
  14. compile.sh
  15. CONTRIBUTING.md
  16. CONTRIBUTORS
  17. ISSUE_TEMPLATE.md
  18. LICENSE
  19. README.md
  20. 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 only rebuilds 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 system. 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

Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.