Create builders initialized from the prior stage in dependency analysis.
Part of work on toolchain transitions, #10523.
Closes #11574.
PiperOrigin-RevId: 315756199
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
index da5080b..796e733 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD
@@ -713,6 +713,7 @@
deps = [
":aspect_collection",
":config/transitions/configuration_transition",
+ ":dependency",
"//src/main/java/com/google/devtools/build/lib/cmdline",
"//third_party:auto_value",
],
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyKey.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyKey.java
index f7ba381..61e7c12 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyKey.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyKey.java
@@ -53,4 +53,8 @@
/** Returns the aspects that are propagating to the target this dependency points to. */
public abstract AspectCollection getAspects();
+
+ public Dependency.Builder getDependencyBuilder() {
+ return Dependency.builder().setLabel(getLabel());
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
index c9612dd..6137627 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java
@@ -99,6 +99,10 @@
return new AutoValue_DependencyResolver_PartiallyResolvedDependency.Builder()
.setPropagatingAspects(ImmutableList.of());
}
+
+ public DependencyKey.Builder getDependencyKeyBuilder() {
+ return DependencyKey.builder().setLabel(getLabel());
+ }
}
/**
@@ -198,8 +202,7 @@
OrderedSetMultimap<DependencyKind, Label> outgoingLabels = OrderedSetMultimap.create();
// TODO(bazel-team): Figure out a way to implement the below (and partiallyResolveDependencies)
- // using
- // LabelVisitationUtils.
+ // using LabelVisitationUtils.
Rule fromRule = null;
ConfiguredAttributeMapper attributeMap = null;
if (target instanceof OutputFile) {
@@ -366,9 +369,9 @@
for (Map.Entry<DependencyKind, PartiallyResolvedDependency> entry :
partiallyResolvedDeps.entries()) {
- PartiallyResolvedDependency dep = entry.getValue();
+ PartiallyResolvedDependency partiallyResolvedDependency = entry.getValue();
- Target toTarget = targetMap.get(dep.getLabel());
+ Target toTarget = targetMap.get(partiallyResolvedDependency.getLabel());
if (toTarget == null) {
// Dependency pointing to non-existent target. This error was reported in getTargets(), so
// we can just ignore this dependency.
@@ -377,18 +380,19 @@
ConfigurationTransition transition =
TransitionResolver.evaluateTransition(
- originalConfiguration, dep.getTransition(), toTarget, trimmingTransitionFactory);
+ originalConfiguration,
+ partiallyResolvedDependency.getTransition(),
+ toTarget,
+ trimmingTransitionFactory);
AspectCollection requiredAspects =
- filterPropagatingAspects(dep.getPropagatingAspects(), toTarget);
+ filterPropagatingAspects(partiallyResolvedDependency.getPropagatingAspects(), toTarget);
+ DependencyKey.Builder dependencyKeyBuilder =
+ partiallyResolvedDependency.getDependencyKeyBuilder();
outgoingEdges.put(
entry.getKey(),
- DependencyKey.builder()
- .setLabel(dep.getLabel())
- .setTransition(transition)
- .setAspects(requiredAspects)
- .build());
+ dependencyKeyBuilder.setTransition(transition).setAspects(requiredAspects).build());
}
return outgoingEdges;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
index 242cdd0..81f311e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java
@@ -178,7 +178,7 @@
DependencyKind dependencyKind, DependencyKey dependencyKey)
throws DependencyEvaluationException, ValueMissingException, InterruptedException {
- Dependency.Builder dependencyBuilder = Dependency.builder().setLabel(dependencyKey.getLabel());
+ Dependency.Builder dependencyBuilder = dependencyKey.getDependencyBuilder();
ConfigurationTransition transition = dependencyKey.getTransition();
if (transition == NullTransition.INSTANCE) {