commit | 5311ba382ec513de31618f0d4d0f8f46a0c886c8 | [log] [tgz] |
---|---|---|
author | janakr <janakr@google.com> | Fri May 08 10:39:23 2020 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Fri May 08 10:40:30 2020 -0700 |
tree | 611ae7a91c15c16b43fcfca702c69834724d8cf3 | |
parent | f33234a58b0416c1c21607854f5aa6433a8d3886 [diff] |
Plug some "missing file" holes. 1. When a tree artifact fails to create its directory, wrap the IOException immediately, since it was performed on behalf of a specific action, and is not really indicative of a "missing file". 2. When a discovered input file throws an exception in nokeep-going mode, handle it properly in the requesting ActionExecutionFunction. 3. Use common utilities to create error messages and Causes where possible in ActionExecutionFunction and CompletionFunction. Also be more stringent: we don't expect these failures to happen when an Artifact has a null Label, so enforce that (although we don't crash if the Label is missing). We print the Artifact's Label when possible (since although it is not a path, it has strictly more information: the containing package), and always print the IOException's message. Enable CustomRealFilesystemBuildIntegrationTestCase (and rename it to make clear that it is a test!). This exposed that CompletionFunction wasn't properly handling IOExceptions in its artifacts to build (3) and that we were not handling discovered input IOExceptions properly (2). I will separately fix SkyframeBuilder to not crash when an unexpected IOException bubbles up. PiperOrigin-RevId: 310584571
{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