commit | e80063e152056504d2c5f91e927d9837cbc0e62f | [log] [tgz] |
---|---|---|
author | bazel.build machine account <15028808+bazel-io@users.noreply.github.com> | Wed Feb 21 13:10:53 2024 -0500 |
committer | GitHub <noreply@github.com> | Wed Feb 21 18:10:53 2024 +0000 |
tree | 340c873834a6680096e4be9d82eb5c48d64e202a | |
parent | 74e928bbda0744d12a1b871d41782d8445cee9db [diff] |
[7.1.0] Reland "Also path map transitive header jar paths with direct classpath optimization" (#21458) Rollforward of fd196bf03f4301cc3fbfc307570637f4de71c82c, which was rolled back in f5d76b1777ce861a7e551342fe25363517d53ff5. The analysis-time memory regression (newly retained `NestedSet` instances) has been resolved separately in 31fae9e8e6687cbaf0dfe55a466696210c80be96. The execution-time memory regression (unconditionally flattened `NestedSet`s) is now only incurred with path mapping enabled. Original description: `JavaHeaderCompileAction` can apply an optimization where it compiles the source files only against direct dependencies, making use of the fact that Turbine includes sufficient information about transitive dependencies into the direct header jars in a special directory. In order to ensure that downstream consumers of header compilation action can use its `.jdeps` file regardless of which of these actions actually uses path mapping, all such paths to transitive jars have to be unmapped. With this commit, actions can declare additional artifacts whose paths they want to apply path mapping to. By always passing all transitive jars into the path mapper, even when only the direct jars are inputs to the action, the transitive header jar paths can be unmapped and stripped path collisions between them correctly result in a noop `PathMapper` being used for the current action. Closes #21401. Commit https://github.com/bazelbuild/bazel/commit/74fe66974e0c4c6b920e067070a519140829c22a PiperOrigin-RevId: 609010786 Change-Id: I0d9ea5b11430ee40be74fe582af84fedaa52ade6 Co-authored-by: Fabian Meumertzheim <fabian@meumertzhe.im>
{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:
To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
See CONTRIBUTING.md