aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
diff options
context:
space:
mode:
authorGravatar janakr <janakr@google.com>2018-01-18 07:45:12 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-18 07:47:19 -0800
commitf3e6f251d3823a826918ad762d1f69f84030ef8c (patch)
tree6913889c0eeb17dcc51d81faf871abde9ea69c93 /src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
parentaad6304ad938cae6010c1d58f01d92a12a81ac1a (diff)
Start the process of getting Target out of ConfiguredTarget: add a new container, ConfiguredTargetAndTarget, that can be used to access Targets, and deprecate ConfiguredTarget#getTarget. ConfiguredAndTargetObjects are intended to be limited in scope, not being persisted to Skyframe.
The eventual plan is to remove the target field from ConfiguredTarget. This CL is mostly straightforward, except for dealing with AliasConfiguredTargets, which cause some complications. A significant cleanup is still needed before #getTarget can be removed, but I don't see any impossible blockers. We will may still need to store a Target-like object in ConfiguredTarget (that has the RuleClass, or at least a string representation of it, for instance), but that will let us avoid storing a full Target together with its associated Package. PiperOrigin-RevId: 182371566
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
index af99802979..bcb3748b04 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java
@@ -65,6 +65,7 @@ import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.profiler.memory.CurrentRuleTracker;
import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
+import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndTarget;
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
import com.google.devtools.build.lib.util.OrderedSetMultimap;
import com.google.devtools.build.lib.vfs.PathFragment;
@@ -98,7 +99,7 @@ public final class ConfiguredTargetFactory {
* to the {@code AnalysisEnvironment}.
*/
private NestedSet<PackageGroupContents> convertVisibility(
- OrderedSetMultimap<Attribute, ConfiguredTarget> prerequisiteMap,
+ OrderedSetMultimap<Attribute, ConfiguredTargetAndTarget> prerequisiteMap,
EventHandler reporter,
Target target,
BuildConfiguration packageGroupConfiguration) {
@@ -116,7 +117,7 @@ public final class ConfiguredTargetFactory {
NestedSetBuilder<PackageGroupContents> result = NestedSetBuilder.stableOrder();
for (Label groupLabel : packageGroupsVisibility.getPackageGroups()) {
// PackageGroupsConfiguredTargets are always in the package-group configuration.
- ConfiguredTarget group =
+ TransitiveInfoCollection group =
findPrerequisite(prerequisiteMap, groupLabel, packageGroupConfiguration);
PackageSpecificationProvider provider = null;
// group == null can only happen if the package group list comes
@@ -145,12 +146,14 @@ public final class ConfiguredTargetFactory {
}
}
- private ConfiguredTarget findPrerequisite(
- OrderedSetMultimap<Attribute, ConfiguredTarget> prerequisiteMap, Label label,
+ private TransitiveInfoCollection findPrerequisite(
+ OrderedSetMultimap<Attribute, ConfiguredTargetAndTarget> prerequisiteMap,
+ Label label,
BuildConfiguration config) {
- for (ConfiguredTarget prerequisite : prerequisiteMap.get(null)) {
- if (prerequisite.getLabel().equals(label) && (prerequisite.getConfiguration() == config)) {
- return prerequisite;
+ for (ConfiguredTargetAndTarget prerequisite : prerequisiteMap.get(null)) {
+ if (prerequisite.getTarget().getLabel().equals(label)
+ && (prerequisite.getConfiguredTarget().getConfiguration() == config)) {
+ return prerequisite.getConfiguredTarget();
}
}
return null;
@@ -227,7 +230,7 @@ public final class ConfiguredTargetFactory {
Target target,
BuildConfiguration config,
BuildConfiguration hostConfig,
- OrderedSetMultimap<Attribute, ConfiguredTarget> prerequisiteMap,
+ OrderedSetMultimap<Attribute, ConfiguredTargetAndTarget> prerequisiteMap,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
@Nullable ToolchainContext toolchainContext)
throws InterruptedException {
@@ -301,7 +304,7 @@ public final class ConfiguredTargetFactory {
Rule rule,
BuildConfiguration configuration,
BuildConfiguration hostConfiguration,
- OrderedSetMultimap<Attribute, ConfiguredTarget> prerequisiteMap,
+ OrderedSetMultimap<Attribute, ConfiguredTargetAndTarget> prerequisiteMap,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
@Nullable ToolchainContext toolchainContext)
throws InterruptedException {
@@ -406,11 +409,11 @@ public final class ConfiguredTargetFactory {
*/
public ConfiguredAspect createAspect(
AnalysisEnvironment env,
- ConfiguredTarget associatedTarget,
+ ConfiguredTargetAndTarget associatedTarget,
ImmutableList<Aspect> aspectPath,
ConfiguredAspectFactory aspectFactory,
Aspect aspect,
- OrderedSetMultimap<Attribute, ConfiguredTarget> prerequisiteMap,
+ OrderedSetMultimap<Attribute, ConfiguredTargetAndTarget> prerequisiteMap,
ImmutableMap<Label, ConfigMatchingProvider> configConditions,
@Nullable ToolchainContext toolchainContext,
BuildConfiguration aspectConfiguration,
@@ -449,8 +452,9 @@ public final class ConfiguredTargetFactory {
return null;
}
- ConfiguredAspect configuredAspect = aspectFactory
- .create(associatedTarget, ruleContext, aspect.getParameters());
+ ConfiguredAspect configuredAspect =
+ aspectFactory.create(
+ associatedTarget.getConfiguredTarget(), ruleContext, aspect.getParameters());
if (configuredAspect != null) {
validateAdvertisedProviders(
configuredAspect, aspect.getDefinition().getAdvertisedProviders(),