Skip to content

Commit

Permalink
Delete KeyedConfiguredTarget.
Browse files Browse the repository at this point in the history
No longer needed since ConfiguredTargetKey is embedded in ConfiguredTarget.

PiperOrigin-RevId: 535908504
Change-Id: Id0b11ae876d32a94438c7409136c0c52dcadf1ad
  • Loading branch information
aoeui authored and copybara-github committed May 27, 2023
1 parent 861df78 commit 67446d6
Show file tree
Hide file tree
Showing 24 changed files with 214 additions and 297 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
package com.google.devtools.build.lib.buildtool;

import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.cmdline.TargetPattern;
import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment.TopLevelConfigurations;
import com.google.devtools.build.lib.query2.cquery.ConfiguredTargetQueryEnvironment;
import com.google.devtools.build.lib.query2.cquery.CqueryOptions;
import com.google.devtools.build.lib.query2.cquery.KeyedConfiguredTarget;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction;
import com.google.devtools.build.lib.query2.engine.QueryExpression;
import com.google.devtools.build.lib.runtime.CommandEnvironment;
Expand All @@ -27,7 +27,7 @@
import java.util.Collection;

/** Performs {@code cquery} processing. */
public final class CqueryProcessor extends PostAnalysisQueryProcessor<KeyedConfiguredTarget> {
public final class CqueryProcessor extends PostAnalysisQueryProcessor<ConfiguredTarget> {

public CqueryProcessor(
QueryExpression queryExpression, TargetPattern.Parser mainRepoTargetParser) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
package com.google.devtools.build.lib.query2.cquery;

import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.configuredtargets.OutputFileConfiguredTarget;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
import com.google.devtools.build.lib.packages.Attribute;
Expand All @@ -37,7 +38,7 @@ class BuildOutputFormatterCallback extends CqueryThreadsafeCallback {
CqueryOptions options,
OutputStream out,
SkyframeExecutor skyframeExecutor,
TargetAccessor<KeyedConfiguredTarget> accessor) {
TargetAccessor<ConfiguredTarget> accessor) {
super(eventHandler, options, out, skyframeExecutor, accessor, /*uniquifyResults=*/ false);
}

Expand Down Expand Up @@ -66,28 +67,28 @@ public Iterable<Object> getPossibleValues(Rule rule, Attribute attr) {
}

@Nullable
private ConfiguredAttributeMapper getAttributeMap(KeyedConfiguredTarget kct)
private ConfiguredAttributeMapper getAttributeMap(ConfiguredTarget kct)
throws InterruptedException {
Rule associatedRule = accessor.getTarget(kct).getAssociatedRule();
if (associatedRule == null) {
return null;
} else if (kct.getConfiguredTarget() instanceof OutputFileConfiguredTarget) {
} else if (kct instanceof OutputFileConfiguredTarget) {
return ConfiguredAttributeMapper.of(
associatedRule,
accessor.getGeneratingConfiguredTarget(kct).getConfigConditions(),
kct.getConfigurationChecksum(),
/*alwaysSucceed=*/ false);
kct.getConfigurationKey().getOptionsChecksum(),
/* alwaysSucceed= */ false);
} else {
return ConfiguredAttributeMapper.of(
associatedRule,
kct.getConfigConditions(),
kct.getConfigurationChecksum(),
/*alwaysSucceed=*/ false);
kct.getConfigurationKey().getOptionsChecksum(),
/* alwaysSucceed= */ false);
}
}

@Override
public void processOutput(Iterable<KeyedConfiguredTarget> partialResult)
public void processOutput(Iterable<ConfiguredTarget> partialResult)
throws InterruptedException, IOException {
BuildOutputFormatter.TargetOutputter outputter =
new TargetOutputter(
Expand All @@ -98,7 +99,7 @@ public void processOutput(Iterable<KeyedConfiguredTarget> partialResult)
// and which path is chosen, which people may find even more informative.
(rule, attr) -> false,
System.lineSeparator());
for (KeyedConfiguredTarget configuredTarget : partialResult) {
for (ConfiguredTarget configuredTarget : partialResult) {
Target target = accessor.getTarget(configuredTarget);
outputter.output(target, new CqueryAttributeReader(getAttributeMap(configuredTarget)));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
package com.google.devtools.build.lib.query2.cquery;

import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.query2.common.AbstractBlazeQueryEnvironment;
import com.google.devtools.build.lib.query2.engine.Callback;
import com.google.devtools.build.lib.query2.engine.QueryEnvironment;
Expand Down Expand Up @@ -58,7 +59,7 @@ public List<ArgumentType> getArgumentTypes() {

/**
* This function is only viable with ConfiguredTargetQueryEnvironment which extends {@link
* AbstractBlazeQueryEnvironment <KeyedConfiguredTarget>}.
* AbstractBlazeQueryEnvironment <ConfiguredTarget>}.
*/
@Override
@SuppressWarnings("unchecked")
Expand All @@ -84,6 +85,6 @@ public <T> QueryTaskFuture<Void> eval(
targetExpression.toString(),
targetsFuture,
configuration,
(Callback<KeyedConfiguredTarget>) callback));
(Callback<ConfiguredTarget>) callback));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@

import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
Expand Down Expand Up @@ -57,7 +57,7 @@
*
* <p>Incomplete; we'll implement getVisibility when needed.
*/
public class ConfiguredTargetAccessor implements TargetAccessor<KeyedConfiguredTarget> {
public class ConfiguredTargetAccessor implements TargetAccessor<ConfiguredTarget> {

private final WalkableGraph walkableGraph;
private final ConfiguredTargetQueryEnvironment queryEnvironment;
Expand All @@ -69,55 +69,56 @@ public ConfiguredTargetAccessor(
}

@Override
public String getTargetKind(KeyedConfiguredTarget target) {
public String getTargetKind(ConfiguredTarget target) {
Target actualTarget = getTarget(target);
return actualTarget.getTargetKind();
}

@Override
public String getLabel(KeyedConfiguredTarget target) {
return target.getLabel().toString();
public String getLabel(ConfiguredTarget target) {
return target.getOriginalLabel().toString();
}

@Override
public String getPackage(KeyedConfiguredTarget target) {
return target.getLabel().getPackageIdentifier().getPackageFragment().toString();
public String getPackage(ConfiguredTarget target) {
return target.getOriginalLabel().getPackageIdentifier().getPackageFragment().toString();
}

@Override
public boolean isRule(KeyedConfiguredTarget target) {
public boolean isRule(ConfiguredTarget target) {
Target actualTarget = getTarget(target);
return actualTarget instanceof Rule;
}

@Override
public boolean isTestRule(KeyedConfiguredTarget target) {
public boolean isTestRule(ConfiguredTarget target) {
Target actualTarget = getTarget(target);
return TargetUtils.isTestRule(actualTarget);
}

@Override
public boolean isTestSuite(KeyedConfiguredTarget target) {
public boolean isTestSuite(ConfiguredTarget target) {
Target actualTarget = getTarget(target);
return TargetUtils.isTestSuiteRule(actualTarget);
}

@Override
public List<KeyedConfiguredTarget> getPrerequisites(
public List<ConfiguredTarget> getPrerequisites(
QueryExpression caller,
KeyedConfiguredTarget keyedConfiguredTarget,
ConfiguredTarget keyedConfiguredTarget,
String attrName,
String errorMsgPrefix)
throws QueryException, InterruptedException {
// Process aliases.
KeyedConfiguredTarget actual = keyedConfiguredTarget.getActual();
ConfiguredTarget actual = keyedConfiguredTarget.getActual();

Preconditions.checkArgument(
isRule(actual), "%s %s is not a rule configured target", errorMsgPrefix, getLabel(actual));

Multimap<Label, KeyedConfiguredTarget> depsByLabel =
ImmutableListMultimap<Label, ConfiguredTarget> depsByLabel =
Multimaps.index(
queryEnvironment.getFwdDeps(ImmutableList.of(actual)), KeyedConfiguredTarget::getLabel);
queryEnvironment.getFwdDeps(ImmutableList.of(actual)),
ConfiguredTarget::getOriginalLabel);

Rule rule = (Rule) getTarget(actual);
ImmutableMap<Label, ConfigMatchingProvider> configConditions = actual.getConfigConditions();
Expand All @@ -135,41 +136,41 @@ public List<KeyedConfiguredTarget> getPrerequisites(
errorMsgPrefix, rule.getRuleClass(), attrName),
ConfigurableQuery.Code.ATTRIBUTE_MISSING);
}
ImmutableList.Builder<KeyedConfiguredTarget> toReturn = ImmutableList.builder();
ImmutableList.Builder<ConfiguredTarget> toReturn = ImmutableList.builder();
attributeMapper.visitLabels(attrName, label -> toReturn.addAll(depsByLabel.get(label)));
return toReturn.build();
}

@Override
public List<String> getStringListAttr(KeyedConfiguredTarget target, String attrName) {
public List<String> getStringListAttr(ConfiguredTarget target, String attrName) {
Target actualTarget = getTarget(target);
return TargetUtils.getStringListAttr(actualTarget, attrName);
}

@Override
public String getStringAttr(KeyedConfiguredTarget target, String attrName) {
public String getStringAttr(ConfiguredTarget target, String attrName) {
Target actualTarget = getTarget(target);
return TargetUtils.getStringAttr(actualTarget, attrName);
}

@Override
public Iterable<String> getAttrAsString(KeyedConfiguredTarget target, String attrName) {
public Iterable<String> getAttrAsString(ConfiguredTarget target, String attrName) {
Target actualTarget = getTarget(target);
return TargetUtils.getAttrAsString(actualTarget, attrName);
}

@Override
public ImmutableSet<QueryVisibility<KeyedConfiguredTarget>> getVisibility(
QueryExpression caller, KeyedConfiguredTarget from) throws QueryException {
public ImmutableSet<QueryVisibility<ConfiguredTarget>> getVisibility(
QueryExpression caller, ConfiguredTarget from) throws QueryException {
// TODO(bazel-team): implement this if needed.
throw new QueryException(
"visible() is not supported on configured targets",
ConfigurableQuery.Code.VISIBLE_FUNCTION_NOT_SUPPORTED);
}

public Target getTarget(KeyedConfiguredTarget keyedConfiguredTarget) {
public Target getTarget(ConfiguredTarget configuredTarget) {
// Dereference any aliases that might be present.
Label label = keyedConfiguredTarget.getConfiguredTarget().getOriginalLabel();
Label label = configuredTarget.getOriginalLabel();
try {
return queryEnvironment.getTarget(label);
} catch (InterruptedException e) {
Expand All @@ -180,18 +181,15 @@ public Target getTarget(KeyedConfiguredTarget keyedConfiguredTarget) {
}

/** Returns the rule that generates the given output file. */
RuleConfiguredTarget getGeneratingConfiguredTarget(KeyedConfiguredTarget kct)
RuleConfiguredTarget getGeneratingConfiguredTarget(ConfiguredTarget kct)
throws InterruptedException {
Preconditions.checkArgument(kct.getConfiguredTarget() instanceof OutputFileConfiguredTarget);
Preconditions.checkArgument(kct instanceof OutputFileConfiguredTarget);
return (RuleConfiguredTarget)
((ConfiguredTargetValue)
walkableGraph.getValue(
ConfiguredTargetKey.builder()
.setLabel(
((OutputFileConfiguredTarget) kct.getConfiguredTarget())
.getGeneratingRule()
.getLabel())
.setConfiguration(queryEnvironment.getConfiguration(kct))
.setLabel(((OutputFileConfiguredTarget) kct).getGeneratingRule().getLabel())
.setConfigurationKey(kct.getConfigurationKey())
.build()
.toKey()))
.getConfiguredTarget();
Expand Down
Loading

0 comments on commit 67446d6

Please sign in to comment.