-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reland "Also path map transitive header jar paths with direct classpath optimization" #21401
Conversation
This reverts commit f5d76b1.
fbcbba4
to
edd47cb
Compare
FYI @aranguyen |
LGTM, and I can confirm most of the regression is gone (other than the small amount caused by the new field). However since @aranguyen has an alternative change in progress, I'd like them to confirm which way they'd like to proceed with. |
@hvadehra I spoke with both @fmeum and @cushon about both fixes and if this updated fix does not have any serious regression, let's go ahead with this one because this makes sure the .jdeps files will only contained unmapped paths and not mixed paths. The other alternative fixing only |
@bazel-io fork 7.1.0 |
…th optimization" Rollforward of fd196bf, which was rolled back in f5d76b1. The analysis-time memory regression (newly retained `NestedSet` instances) has been resolved separately in 31fae9e. 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 bazelbuild#21401. PiperOrigin-RevId: 609010786 Change-Id: I0d9ea5b11430ee40be74fe582af84fedaa52ade6
… classpath optimization" (#21458) Rollforward of fd196bf, which was rolled back in f5d76b1. The analysis-time memory regression (newly retained `NestedSet` instances) has been resolved separately in 31fae9e. 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 74fe669 PiperOrigin-RevId: 609010786 Change-Id: I0d9ea5b11430ee40be74fe582af84fedaa52ade6 Co-authored-by: Fabian Meumertzheim <[email protected]>
The changes in this PR have been included in Bazel 7.1.0 RC1. Please test out the release candidate and report any issues as soon as possible. If you're using Bazelisk, you can point to the latest RC by setting USE_BAZEL_VERSION=last_rc. |
Rollforward of fd196bf, which was rolled back in f5d76b1.
The analysis-time memory regression (newly retained
NestedSet
instances) has been resolved separately in 31fae9e. The execution-time memory regression (unconditionally flattenedNestedSet
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.