From db54a93c6bd4d571177b13604e9e87028f158f78 Mon Sep 17 00:00:00 2001 From: janakr Date: Thu, 29 Jun 2017 20:22:15 +0200 Subject: Add a #getBytes() method to DeterministicWriter that returns a ByteString. By default it just delegates to the existing #writeOutputFile, but implementations may choose to override if they have easy access to a ByteString. Also change some DeterministicWriter implementations that do have easy access to the ByteString. PiperOrigin-RevId: 160550028 --- .../build/lib/rules/genquery/GenQuery.java | 38 +++++++++++----------- 1 file changed, 19 insertions(+), 19 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java') diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java index fbd0943744..d967df0956 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java +++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.actions.AbstractFileWriteAction; +import com.google.devtools.build.lib.analysis.actions.ByteStringDeterministicWriter; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.ResolvedTargets; @@ -80,9 +81,8 @@ import com.google.devtools.build.skyframe.SkyKey; import com.google.devtools.build.skyframe.ValueOrException; import com.google.devtools.common.options.OptionsParser; import com.google.devtools.common.options.OptionsParsingException; -import java.io.ByteArrayOutputStream; +import com.google.protobuf.ByteString; import java.io.IOException; -import java.io.OutputStream; import java.nio.channels.ClosedByInterruptException; import java.util.Collection; import java.util.HashSet; @@ -146,7 +146,7 @@ public class GenQuery implements RuleConfiguredTargetFactory { // force relative_locations to true so it has a deterministic output across machines. queryOptions.relativeLocations = true; - final byte[] result = executeQuery(ruleContext, queryOptions, getScope(ruleContext), query); + ByteString result = executeQuery(ruleContext, queryOptions, getScope(ruleContext), query); if (result == null || ruleContext.hasErrors()) { return null; } @@ -252,8 +252,9 @@ public class GenQuery implements RuleConfiguredTargetFactory { } @Nullable - private byte[] executeQuery(RuleContext ruleContext, QueryOptions queryOptions, - Set scope, String query) throws InterruptedException { + private ByteString executeQuery( + RuleContext ruleContext, QueryOptions queryOptions, Set scope, String query) + throws InterruptedException { SkyFunction.Environment env = ruleContext.getAnalysisEnvironment().getSkyframeEnv(); Pair, ImmutableMap> closureInfo; try { @@ -277,9 +278,13 @@ public class GenQuery implements RuleConfiguredTargetFactory { @SuppressWarnings("unchecked") @Nullable - private byte[] doQuery(QueryOptions queryOptions, PackageProvider packageProvider, - Predicate