diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java index f604cebb8d1939..b2f673cdec5aaa 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java @@ -861,6 +861,7 @@ private BuildConfigurationEvent createBuildEvent() { .setPlatformName(getCpu()) .putAllMakeVariable(getMakeEnvironment()) .setCpu(getCpu()) + .setIsTool(isToolConfiguration()) .build()); return new BuildConfigurationEvent(eventId, builder.build()); } diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto index 52204a322ac968..379645b8466820 100644 --- a/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/proto/build_event_stream.proto @@ -410,6 +410,8 @@ message Configuration { string platform_name = 2; string cpu = 3; map make_variable = 4; + // Whether this configuration is used for building tools. + bool is_tool = 5; } // Payload of the event indicating the expansion of a target pattern. diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallback.java index ee7422200286bf..6844693d3d2853 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallback.java +++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallback.java @@ -89,6 +89,7 @@ public ImmutableList getConfigurations() { .setMnemonic(configProto.getMnemonic()) .setPlatformName(configProto.getPlatformName()) .setId(entry.getValue()) + .setIsTool(configProto.getIsTool()) .build(); }) .collect(toImmutableList()); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/v2/KnownConfigurations.java b/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/v2/KnownConfigurations.java index fae3610a035a5d..1158ac837b72eb 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/v2/KnownConfigurations.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/v2/KnownConfigurations.java @@ -33,6 +33,7 @@ Configuration createProto(BuildEvent config, int id) throws InterruptedException .setChecksum(config.getEventId().getConfiguration().getId()) .setMnemonic(configProto.getMnemonic()) .setPlatformName(configProto.getPlatformName()) + .setIsTool(configProto.getIsTool()) .setId(id) .build(); } diff --git a/src/main/protobuf/analysis_v2.proto b/src/main/protobuf/analysis_v2.proto index 28d72f07bd8424..d04916b14ab8ea 100644 --- a/src/main/protobuf/analysis_v2.proto +++ b/src/main/protobuf/analysis_v2.proto @@ -179,6 +179,9 @@ message Configuration { // The checksum representation of the configuration options; string checksum = 4; + + // Whether this configuration is used for building tools. + bool is_tool = 5; } message KeyValuePair { diff --git a/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD b/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD index 9048195269f38b..53d584a4b7097f 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD +++ b/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD @@ -122,7 +122,7 @@ java_test( deps = [ ":configured_target_query_helper", ":configured_target_query_test", - "//src/main/java/com/google/devtools/build/lib/analysis:config/transition_factories", + "//src/main/java/com/google/devtools/build/lib/analysis:config/execution_transition_factory", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/query2", @@ -132,7 +132,6 @@ java_test( "//src/main/protobuf:analysis_v2_java_proto", "//src/main/protobuf:build_java_proto", "//src/test/java/com/google/devtools/build/lib/analysis/util", - "//src/test/java/com/google/devtools/build/lib/query2/testutil", "//third_party:guava", "//third_party:junit4", "//third_party:truth", diff --git a/src/test/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallbackTest.java b/src/test/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallbackTest.java index ca9ab11abc43a0..3cfc52d823138d 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallbackTest.java +++ b/src/test/java/com/google/devtools/build/lib/query2/cquery/ProtoOutputFormatterCallbackTest.java @@ -23,7 +23,7 @@ import com.google.devtools.build.lib.analysis.AnalysisProtosV2; import com.google.devtools.build.lib.analysis.AnalysisProtosV2.Configuration; import com.google.devtools.build.lib.analysis.AnalysisProtosV2.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.TransitionFactories; +import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory; import com.google.devtools.build.lib.analysis.util.MockRule; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.events.NullEventHandler; @@ -122,8 +122,6 @@ public void testSelectInAttribute() throws Exception { @Test public void testConfigurations() throws Exception { - FooPatchTransition attributePatchTransition = new FooPatchTransition("SET BY PATCH"); - MockRule ruleWithPatch = () -> MockRule.define( @@ -132,7 +130,7 @@ public void testConfigurations() throws Exception { builder.add( attr("deps", LABEL_LIST) .allowedFileTypes(FileTypeSet.ANY_FILE) - .cfg(TransitionFactories.of(attributePatchTransition)))); + .cfg(ExecutionTransitionFactory.create()))); MockRule parentRuleClass = () -> MockRule.define( @@ -157,14 +155,6 @@ public void testConfigurations() throws Exception { List configurations = cqueryResult.getConfigurationsList(); assertThat(configurations).hasSize(2); - assertThat(configurations) - .ignoringFieldDescriptors( - Configuration.getDescriptor().findFieldByName("checksum"), - Configuration.getDescriptor().findFieldByName("id")) - .containsExactly( - Configuration.newBuilder().setMnemonic("k8-fastbuild").setPlatformName("k8").build(), - Configuration.newBuilder().setMnemonic("k8-fastbuild").setPlatformName("k8").build()); - List resultsList = cqueryResult.getResultsList(); ConfiguredTarget parentRuleProto = getRuleProtoByName(resultsList, "//test:parent_rule"); @@ -177,6 +167,16 @@ public void testConfigurations() throws Exception { Configuration parentConfiguration = getConfigurationForId(configurations, parentRuleProto.getConfigurationId()); assertThat(parentConfiguration.getChecksum()).isEqualTo(parentRule.getConfigurationChecksum()); + assertThat(parentConfiguration) + .ignoringFieldDescriptors( + Configuration.getDescriptor().findFieldByName("checksum"), + Configuration.getDescriptor().findFieldByName("id")) + .isEqualTo( + Configuration.newBuilder() + .setMnemonic("k8-fastbuild") + .setPlatformName("k8") + .setIsTool(false) + .build()); ConfiguredTarget transitionRuleProto = getRuleProtoByName(resultsList, "//test:transition_rule"); @@ -193,6 +193,10 @@ public void testConfigurations() throws Exception { ConfiguredTarget depRuleProto = getRuleProtoByName(resultsList, "//test:dep"); Configuration depRuleConfiguration = getConfigurationForId(configurations, depRuleProto.getConfigurationId()); + assertThat(depRuleConfiguration.getPlatformName()).isEqualTo("k8"); + assertThat(depRuleConfiguration.getMnemonic()).matches("k8-opt-exec-.*"); + assertThat(depRuleConfiguration.getIsTool()).isTrue(); + KeyedConfiguredTarget depRule = getKeyedTargetByLabel(keyedTargets, "//test:dep"); assertThat(depRuleProto.getConfiguration().getChecksum())