aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD12
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java1
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java (renamed from src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapper.java)15
-rw-r--r--src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java8
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/select/ConfiguredAttributeMapperCommonTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java3
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java6
15 files changed, 39 insertions, 34 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index fdab0c01cc..9898d6fa69 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -329,6 +329,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib/cmdline",
],
deps = [
+ "//src/main/java/com/google/devtools/build/lib:config-matching-provider",
"//src/main/java/com/google/devtools/build/lib:events",
"//src/main/java/com/google/devtools/build/lib:skylarkinterface",
"//src/main/java/com/google/devtools/build/lib:syntax",
@@ -383,6 +384,17 @@ java_library(
)
java_library(
+ name = "config-matching-provider",
+ srcs = ["analysis/config/ConfigMatchingProvider.java"],
+ deps = [
+ ":transitive-info-provider",
+ "//src/main/java/com/google/devtools/build/lib/cmdline",
+ "//src/main/java/com/google/devtools/build/lib/concurrent",
+ "//third_party:guava",
+ ],
+)
+
+java_library(
name = "skylark-provider-collection",
srcs = ["analysis/SkylarkProviderCollection.java"],
deps = [
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 41323b6892..33c7531f4c 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
@@ -37,6 +37,7 @@ import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.Attribute.LateBoundDefault;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.packages.EnvironmentGroup;
import com.google.devtools.build.lib.packages.InputFile;
import com.google.devtools.build.lib.packages.NoSuchThingException;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index e17f74a21a..55e1f20879 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -63,6 +63,7 @@ import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.ConfigurationFragmentPolicy;
+import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.packages.FileTarget;
import com.google.devtools.build.lib.packages.FilesetEntry;
import com.google.devtools.build.lib.packages.ImplicitOutputsFunction;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
index 5b6b267b15..64c27a28d2 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java
@@ -245,7 +245,7 @@ public final class TargetCompleteEvent
if (!(target instanceof RuleConfiguredTarget)) {
return ImmutableList.<String>of();
}
- AttributeMap attributes = ConfiguredAttributeMapper.of((RuleConfiguredTarget) target);
+ AttributeMap attributes = ((RuleConfiguredTarget) target).getAttributeMapper();
// Every rule (implicitly) has a "tags" attribute.
return attributes.get("tags", Type.STRING_LIST);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
index 5079d96ae0..4810512d9a 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.analysis.config.RunUnder;
import com.google.devtools.build.lib.analysis.skylark.SkylarkApiProvider;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.packages.Info;
import com.google.devtools.build.lib.packages.OutputFile;
import com.google.devtools.build.lib.packages.Provider;
@@ -151,4 +152,11 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget {
public void repr(SkylarkPrinter printer) {
printer.append("<target " + getLabel() + ">");
}
+
+ /**
+ * Returns a {@link ConfiguredAttributeMapper} containing values of this target's attributes.
+ */
+ public ConfiguredAttributeMapper getAttributeMapper() {
+ return ConfiguredAttributeMapper.of(getTarget(), getConfigConditions());
+ }
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
index 256cf93e6b..a2350703a9 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/AggregatingAttributeMapper.java
@@ -278,7 +278,7 @@ public class AggregatingAttributeMapper extends AbstractAttributeMapper {
* This is because the selects have the same conditions, so whatever matches the first also
* matches the second. Note that this doesn't work for selects with overlapping but
* <i>different</i> key sets. That's because of key specialization (see
- * {@link com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper} - if the
+ * {@link ConfiguredAttributeMapper} - if the
* second select also included a condition <code>':c'</code> that includes both the flags
* in <code>':a'</code> and <code>':b'</code>, <code>':c'</code> would be chosen over
* them both.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java
index a1da224a6d..d57170fe3d 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java
@@ -11,7 +11,7 @@
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
-package com.google.devtools.build.lib.analysis;
+package com.google.devtools.build.lib.packages;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Joiner;
@@ -20,15 +20,9 @@ import com.google.common.base.Verify;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
-import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.packages.AbstractAttributeMapper;
-import com.google.devtools.build.lib.packages.Attribute;
-import com.google.devtools.build.lib.packages.AttributeMap;
-import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.BuildType.Selector;
import com.google.devtools.build.lib.packages.BuildType.SelectorList;
-import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.Preconditions;
@@ -71,13 +65,6 @@ public class ConfiguredAttributeMapper extends AbstractAttributeMapper {
}
/**
- * "Do-it-all" constructor that just needs a {@link RuleConfiguredTarget}.
- */
- public static ConfiguredAttributeMapper of(RuleConfiguredTarget ct) {
- return new ConfiguredAttributeMapper(ct.getTarget(), ct.getConfigConditions());
- }
-
- /**
* "Manual" constructor that requires the caller to pass the set of configurability conditions
* that trigger this rule's configurable attributes.
*
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
index 2446152193..f9bbde4062 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/PrintActionCommand.java
@@ -24,7 +24,6 @@ import com.google.devtools.build.lib.actions.CommandLineExpansionException;
import com.google.devtools.build.lib.actions.extra.DetailedExtraActionInfo;
import com.google.devtools.build.lib.actions.extra.ExtraActionSummary;
import com.google.devtools.build.lib.analysis.BuildView;
-import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.OutputGroupProvider;
@@ -349,7 +348,7 @@ public final class PrintActionCommand implements BlazeCommand {
if (!ruleConfiguredTarget.getTarget().isAttrDefined("hdrs", BuildType.LABEL_LIST)) {
return false;
}
- List<Label> hdrs = ConfiguredAttributeMapper.of(ruleConfiguredTarget)
+ List<Label> hdrs = ruleConfiguredTarget.getAttributeMapper()
.get("hdrs", BuildType.LABEL_LIST);
if (hdrs != null) {
for (Label hdrLabel : hdrs) {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
index 5cdec49b87..a5e2c46a3f 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectAwareAttributeMapperTest.java
@@ -50,7 +50,7 @@ public class AspectAwareAttributeMapperTest extends BuildViewTestCase {
.allowedFileTypes(FileTypeSet.ANY_FILE)
.build();
aspectAttributes = ImmutableMap.<String, Attribute>of(aspectAttr.getName(), aspectAttr);
- mapper = new AspectAwareAttributeMapper(ConfiguredAttributeMapper.of(ct), aspectAttributes);
+ mapper = new AspectAwareAttributeMapper(ct.getAttributeMapper(), aspectAttributes);
}
@Test
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
index 3334bd64c4..4c67a880f5 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfigurableAttributesTest.java
@@ -435,13 +435,13 @@ public class ConfigurableAttributesTest extends BuildViewTestCase {
// Configuration a:
useConfiguration("--test_arg=a");
ConfiguredTarget binary = getConfiguredTarget("//test:the_rule");
- AttributeMap attributes = ConfiguredAttributeMapper.of((RuleConfiguredTarget) binary);
+ AttributeMap attributes = ((RuleConfiguredTarget) binary).getAttributeMapper();
assertThat(attributes.get("$computed_attr", Type.STRING)).isEqualTo("a2");
// configuration b:
useConfiguration("--test_arg=b");
binary = getConfiguredTarget("//test:the_rule");
- attributes = ConfiguredAttributeMapper.of((RuleConfiguredTarget) binary);
+ attributes = ((RuleConfiguredTarget) binary).getAttributeMapper();
assertThat(attributes.get("$computed_attr", Type.STRING)).isEqualTo("b2");
}
@@ -1080,7 +1080,7 @@ public class ConfigurableAttributesTest extends BuildViewTestCase {
useConfiguration("--test_arg=a");
ConfiguredTarget binary = getConfiguredTarget("//srctest:gen");
- AttributeMap attributes = ConfiguredAttributeMapper.of((RuleConfiguredTarget) binary);
+ AttributeMap attributes = ((RuleConfiguredTarget) binary).getAttributeMapper();
assertThat(attributes.get("srcs", BuildType.LABEL_LIST)).isEmpty();
}
@@ -1099,7 +1099,7 @@ public class ConfigurableAttributesTest extends BuildViewTestCase {
useConfiguration("--test_arg=a");
ConfiguredTarget binary = getConfiguredTarget("//foo:rule");
- AttributeMap attributes = ConfiguredAttributeMapper.of((RuleConfiguredTarget) binary);
+ AttributeMap attributes = ((RuleConfiguredTarget) binary).getAttributeMapper();
assertThat(attributes.get("dep", BuildType.LABEL)).isEqualTo(
Label.parseAbsolute("//foo:default"));
}
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java b/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java
index 1144479115..6ec9372031 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/ConfiguredAttributeMapperTest.java
@@ -22,6 +22,7 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.Attribute;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.BuildType;
+import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.syntax.Type;
import java.util.ArrayList;
import java.util.List;
@@ -45,8 +46,7 @@ public class ConfiguredAttributeMapperTest extends BuildViewTestCase {
* Returns a ConfiguredAttributeMapper bound to the given rule with the target configuration.
*/
private ConfiguredAttributeMapper getMapper(String label) throws Exception {
- return ConfiguredAttributeMapper.of(
- (RuleConfiguredTarget) getConfiguredTarget(label));
+ return ((RuleConfiguredTarget) getConfiguredTarget(label)).getAttributeMapper();
}
private void writeConfigRules() throws Exception {
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/select/ConfiguredAttributeMapperCommonTest.java b/src/test/java/com/google/devtools/build/lib/analysis/select/ConfiguredAttributeMapperCommonTest.java
index 361e7b9916..9606207a4a 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/select/ConfiguredAttributeMapperCommonTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/select/ConfiguredAttributeMapperCommonTest.java
@@ -14,11 +14,10 @@
package com.google.devtools.build.lib.analysis.select;
import com.google.common.collect.ImmutableMap;
-import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.AbstractAttributeMapper;
-
+import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import org.junit.Before;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 5cc4fd146b..5ea5d2f953 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -50,7 +50,6 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories;
import com.google.devtools.build.lib.analysis.BuildView;
import com.google.devtools.build.lib.analysis.BuildView.AnalysisResult;
import com.google.devtools.build.lib.analysis.CachingAnalysisEnvironment;
-import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ExtraActionArtifactsProvider;
@@ -1496,7 +1495,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
* Returns an attribute value retriever for the given rule for the target configuration.
*/
protected AttributeMap attributes(RuleConfiguredTarget ct) {
- return ConfiguredAttributeMapper.of(ct);
+ return ct.getAttributeMapper();
}
protected AttributeMap attributes(ConfiguredTarget rule) {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
index 5a485de9da..37798bd3e1 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/ExternalPackageTest.java
@@ -15,7 +15,6 @@ package com.google.devtools.build.lib.packages;
import static com.google.common.truth.Truth.assertThat;
-import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.Label;
@@ -103,7 +102,7 @@ public class ExternalPackageTest extends BuildViewTestCase {
invalidatePackages();
useConfiguration("--define", "foo=bar");
ConfiguredAttributeMapper configuredAttributeMapper =
- ConfiguredAttributeMapper.of((RuleConfiguredTarget) getConfiguredTarget("//:a"));
+ ((RuleConfiguredTarget) getConfiguredTarget("//:a")).getAttributeMapper();
assertThat(configuredAttributeMapper.get("runtime_deps", BuildType.LABEL_LIST))
.containsExactly(Label.parseAbsolute("//:b"));
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
index ccdeb2d17b..9629bbd54e 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/ConfigFeatureFlagTest.java
@@ -19,11 +19,11 @@ import static com.google.common.truth.Truth.assertThat;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import com.google.common.testing.EqualsTester;
-import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleContext;
+import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.skylark.util.SkylarkTestCase;
import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.testutil.TestRuleClassProvider;
@@ -114,8 +114,8 @@ public final class ConfigFeatureFlagTest extends SkylarkTestCase {
" '//conditions:default': 'error'",
" }))");
- ConfiguredAttributeMapper attributeMapper = ConfiguredAttributeMapper.of(
- (RuleConfiguredTarget) getConfiguredTarget("//test:gen"));
+ ConfiguredAttributeMapper attributeMapper =
+ ((RuleConfiguredTarget) getConfiguredTarget("//test:gen")).getAttributeMapper();
assertThat(attributeMapper.get("cmd", Type.STRING)).isEqualTo("hello");
}