From a708a02680da349c85077acb6d8db21805342416 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Tue, 11 Jul 2017 12:54:40 +0200 Subject: BuildEventWithConfiguration: represent configurations as BuildEvent From a BEP point of view, the only interface of a configuration we care about is its BuildEvent structure. Represent it as such, so that we can move this class to the rest of the buildeventstream module. This is a prerequisite for ActionOwners refering to configurations in the BEP. Change-Id: I6d1c1bf2951aac91607e83cad664553cd6620df8 PiperOrigin-RevId: 161510049 --- .../build/lib/analysis/TargetCompleteEvent.java | 7 +++--- .../build/lib/analysis/TargetConfiguredEvent.java | 16 ++++++++++--- .../config/BuildEventWithConfiguration.java | 27 ---------------------- .../lib/bazel/rules/VisibilityErrorEvent.java | 7 +++--- .../BuildEventWithConfiguration.java | 27 ++++++++++++++++++++++ .../build/lib/runtime/BuildEventStreamer.java | 8 +++---- 6 files changed, 51 insertions(+), 41 deletions(-) delete mode 100644 src/main/java/com/google/devtools/build/lib/analysis/config/BuildEventWithConfiguration.java create mode 100644 src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventWithConfiguration.java (limited to 'src/main/java/com/google/devtools/build') 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 fc1402573a..7e50b36ba0 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 @@ -21,13 +21,14 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.EventReportingArtifacts; import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsInOutputGroup; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildEventWithConfiguration; import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer; +import com.google.devtools.build.lib.buildeventstream.BuildEvent; import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; import com.google.devtools.build.lib.buildeventstream.BuildEventId; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.File; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.OutputGroup; +import com.google.devtools.build.lib.buildeventstream.BuildEventWithConfiguration; import com.google.devtools.build.lib.buildeventstream.BuildEventWithOrderConstraint; import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent; import com.google.devtools.build.lib.causes.Cause; @@ -207,12 +208,12 @@ public final class TargetCompleteEvent } @Override - public Collection getConfigurations() { + public Collection getConfigurations() { BuildConfiguration configuration = target.getConfiguration(); if (configuration != null) { return ImmutableList.of(target.getConfiguration()); } else { - return ImmutableList.of(); + return ImmutableList.of(); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java index 2473991981..56ddc4dceb 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java @@ -15,11 +15,13 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildEventWithConfiguration; +import com.google.devtools.build.lib.buildeventstream.BuildEvent; import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; import com.google.devtools.build.lib.buildeventstream.BuildEventId; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; +import com.google.devtools.build.lib.buildeventstream.BuildEventWithConfiguration; import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent; +import com.google.devtools.build.lib.buildeventstream.NullConfiguration; import com.google.devtools.build.lib.cmdline.Label; import java.util.Collection; @@ -34,8 +36,16 @@ public class TargetConfiguredEvent implements BuildEventWithConfiguration { } @Override - public Collection getConfigurations() { - return configurations; + public Collection getConfigurations() { + ImmutableList.Builder builder = new ImmutableList.Builder<>(); + for (BuildConfiguration config : configurations) { + if (config != null) { + builder.add(config); + } else { + builder.add(new NullConfiguration()); + } + } + return builder.build(); } @Override diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildEventWithConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildEventWithConfiguration.java deleted file mode 100644 index a4742c0101..0000000000 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildEventWithConfiguration.java +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright 2017 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// 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.config; - -import com.google.devtools.build.lib.buildeventstream.BuildEvent; -import java.util.Collection; - -/** Interface for {@link BuildEvent}s that reference {@link BuildConfigration}s */ -public interface BuildEventWithConfiguration extends BuildEvent { - /** - * The {@link BuildConfiguration}s the event mentions, and hence should be introduced in the - * stream before this event. - */ - Collection getConfigurations(); -} diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/VisibilityErrorEvent.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/VisibilityErrorEvent.java index 5842a8e186..afe4e34bc3 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/VisibilityErrorEvent.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/VisibilityErrorEvent.java @@ -16,10 +16,11 @@ package com.google.devtools.build.lib.bazel.rules; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildEventWithConfiguration; +import com.google.devtools.build.lib.buildeventstream.BuildEvent; import com.google.devtools.build.lib.buildeventstream.BuildEventConverters; import com.google.devtools.build.lib.buildeventstream.BuildEventId; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos; +import com.google.devtools.build.lib.buildeventstream.BuildEventWithConfiguration; import com.google.devtools.build.lib.buildeventstream.GenericBuildEvent; import com.google.devtools.build.lib.cmdline.Label; import java.util.Collection; @@ -55,7 +56,7 @@ public class VisibilityErrorEvent implements BuildEventWithConfiguration { } @Override - public Collection getConfigurations() { - return ImmutableList.of(configuration); + public Collection getConfigurations() { + return ImmutableList.of(configuration); } } diff --git a/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventWithConfiguration.java b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventWithConfiguration.java new file mode 100644 index 0000000000..4cd2b46daf --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/buildeventstream/BuildEventWithConfiguration.java @@ -0,0 +1,27 @@ +// Copyright 2017 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// 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.buildeventstream; + +import java.util.Collection; + +/** Interface for {@link BuildEvent}s that reference build configurations */ +public interface BuildEventWithConfiguration extends BuildEvent { + /** + * The configurations the event mentions, and hence should be introduced in the stream before this + * event; they are abstracted as {@link BuildEvent}, as for the build event stream the only thing + * we care is how they get presenteded in the protocol. + */ + Collection getConfigurations(); +} diff --git a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java index 1d4e55b55e..fa2b152c91 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/BuildEventStreamer.java @@ -32,8 +32,6 @@ import com.google.devtools.build.lib.actions.EventReportingArtifacts; import com.google.devtools.build.lib.analysis.BuildInfoEvent; import com.google.devtools.build.lib.analysis.NoBuildEvent; import com.google.devtools.build.lib.analysis.NoBuildRequestFinishedEvent; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildEventWithConfiguration; import com.google.devtools.build.lib.buildeventstream.AbortedEvent; import com.google.devtools.build.lib.buildeventstream.AnnounceBuildEventTransportsEvent; import com.google.devtools.build.lib.buildeventstream.ArtifactGroupNamer; @@ -43,6 +41,7 @@ import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.Abo import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.NamedSetOfFilesId; import com.google.devtools.build.lib.buildeventstream.BuildEventTransport; import com.google.devtools.build.lib.buildeventstream.BuildEventTransportClosedEvent; +import com.google.devtools.build.lib.buildeventstream.BuildEventWithConfiguration; import com.google.devtools.build.lib.buildeventstream.BuildEventWithOrderConstraint; import com.google.devtools.build.lib.buildeventstream.LastBuildEvent; import com.google.devtools.build.lib.buildeventstream.NullConfiguration; @@ -351,7 +350,7 @@ public class BuildEventStreamer implements EventHandler { maybeReportArtifactSet(new NestedSetView(set)); } - private void maybeReportConfiguration(BuildConfiguration configuration) { + private void maybeReportConfiguration(BuildEvent configuration) { BuildEvent event = configuration; if (configuration == null) { event = new NullConfiguration(); @@ -392,8 +391,7 @@ public class BuildEventStreamer implements EventHandler { } if (event instanceof BuildEventWithConfiguration) { - for (BuildConfiguration configuration : - ((BuildEventWithConfiguration) event).getConfigurations()) { + for (BuildEvent configuration : ((BuildEventWithConfiguration) event).getConfigurations()) { maybeReportConfiguration(configuration); } } -- cgit v1.2.3