commit | 2fc2e2b84aa378de68a8f3f87a2f22eb583a0df3 | [log] [tgz] |
---|---|---|
author | lberki <lberki@google.com> | Mon Aug 12 10:13:06 2019 -0700 |
committer | Copybara-Service <copybara-worker@google.com> | Mon Aug 12 10:14:00 2019 -0700 |
tree | 23de81eda7792de224dc4af4377296decd7c9026 | |
parent | 86998afbfb76c5b42c7cce92c4e1bb005da78781 [diff] |
Add support for unresolved symlinks as outputs of actions. Implemented by adding a bit to Artifact that tells if it is an unresolved symlink. In the latter case, the digest of the artifact is computed from the return value of readlink() and a little tweaking to avoid hash collisions instead of resolving the symlink and using the checksum of its eventual target. This bit is also added to ActionInput because execution strategies also need to know it (for example, when a sandbox strategy encounters a symlink, if the symlink is unresolved, it creates it within the sandbox verbatim, otherwise, it chases it and creates a file with the same contents as the target of the symlink) Limitations: - Does not work with RBE (this is doable with some coding, but I'm not familiar with the code base) - Does not work with sandboxfs or the Windows sandbox Other than these issues, this seems to work reasonably well. In particular, action caching works as expected (and is tested) Progress towards #9075. RELNOTES: None. PiperOrigin-RevId: 262950280
{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.