commit | ffad58728d850b465a070d25b037ea1bced0f91f | [log] [tgz] |
---|---|---|
author | buchgr <buchgr@google.com> | Tue Jun 18 08:06:32 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Tue Jun 18 08:07:19 2019 -0700 |
tree | 440f814f504415ff1309b933e592b3ddedeb451e | |
parent | 620d21c40cdd9bf9187fe74263ade3db1edaa009 [diff] |
Remove all usages of BlazeDirectories#(getExecRoot()|getOutputPath()) from Bazel Bazel's execution root path looks as follows: output_base/execroot/workspace_name. That is one needs to know the workspace name when constructing it. Bazel only knows the workspace name after/during the loading phase however BlazeDirectories is constructed before that. So BlazeDirectories.getExecRoot() returns a path to a folder that's not the exec root (it takes the name of the directory that contains the WORKSPACE file as the workspace name) and this leads to all kinds of bugs as one can imagine. Thus I removed all calls to BlazeDirectories.(getExecRoot()|getOutputPath()) in Bazel and replaced them with calls to BlazeDirectories.getExecRoot(workspaceName). What this change does: - All artifacts in Bazel agree on one exec root. - Bazel will no longer create two execroot directories on disk. - Renamed getExecRoot to getBlazeExecRoot() and updated the code to return null when called in Bazel in order to prevent future wrong use of this method. - Resolved a TODO in BlazeDirectories where we had code to support the workspace path being null. RELNOTES: None. PiperOrigin-RevId: 253790673
{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 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
Bazel is released in ‘Beta’. See the product roadmap to learn about the path toward a stable 1.0 release.