aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar kaipi <kaipi@google.com>2018-03-21 14:49:11 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-21 14:50:56 -0700
commit28a999cff60fa5a8c9ca045ab2b202d83a0e0583 (patch)
treea3352c9072556b02f1147b6758bdadd6b5387742 /src
parent96ca6272fe207a5007fec5474817efda287c54d7 (diff)
Stop objc_proto_library from returning the generated sources.
PiperOrigin-RevId: 189971511
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java80
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java44
2 files changed, 55 insertions, 69 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
index b3c6d7e93c..3ae8e83d10 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java
@@ -26,7 +26,6 @@ import com.google.common.collect.Sets;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
-import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.Builder;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
@@ -165,13 +164,18 @@ final class ProtobufSupport {
public ProtobufSupport registerGenerationActions() {
int actionId = 0;
+ boolean isLinkingTarget = isLinkingTarget();
for (ImmutableSet<Artifact> inputProtos : orderedInputOutputKeySet()) {
Iterable<Artifact> outputProtos = inputsToOutputsMap.get(inputProtos);
- registerGenerationAction(outputProtos, inputProtos, getUniqueBundledProtosSuffix(actionId));
+ registerGenerationAction(
+ outputProtos,
+ inputProtos,
+ getUniqueBundledProtosSuffix(actionId),
+ /* includeSources */ isLinkingTarget);
actionId++;
}
- if (!isLinkingTarget()) {
+ if (!isLinkingTarget) {
registerModuleMapGenerationAction();
}
@@ -236,24 +240,10 @@ final class ProtobufSupport {
public ProtobufSupport addFilesToBuild(NestedSetBuilder<Artifact> filesToBuild) {
for (ImmutableSet<Artifact> inputProtoFiles : inputsToOutputsMap.keySet()) {
ImmutableSet<Artifact> outputProtoFiles = inputsToOutputsMap.get(inputProtoFiles);
- Iterable<Artifact> generatedSources = getProtoSourceFilesForCompilation(outputProtoFiles);
- Iterable<Artifact> generatedHeaders = getGeneratedProtoOutputs(outputProtoFiles,
- HEADER_SUFFIX);
+ Iterable<Artifact> generatedHeaders =
+ getGeneratedProtoOutputs(outputProtoFiles, HEADER_SUFFIX);
- filesToBuild.addAll(generatedSources).addAll(generatedHeaders);
- }
-
- int actionId = 0;
- for (ImmutableSet<Artifact> inputProtos : orderedInputOutputKeySet()) {
- ImmutableSet<Artifact> outputProtos = inputsToOutputsMap.get(inputProtos);
- IntermediateArtifacts intermediateArtifacts = getUniqueIntermediateArtifacts(actionId);
-
- CompilationArtifacts compilationArtifacts =
- getCompilationArtifacts(intermediateArtifacts, inputProtos, outputProtos);
-
- ObjcCommon common = getCommon(intermediateArtifacts, compilationArtifacts);
- filesToBuild.addAll(common.getCompiledArchive().asSet());
- actionId++;
+ filesToBuild.addAll(generatedHeaders);
}
return this;
@@ -454,14 +444,17 @@ final class ProtobufSupport {
}
private void registerGenerationAction(
- Iterable<Artifact> outputProtos, Iterable<Artifact> inputProtos, String protoFileSuffix) {
+ Iterable<Artifact> outputProtos,
+ Iterable<Artifact> inputProtos,
+ String protoFileSuffix,
+ boolean includeSources) {
Artifact protoInputsFile = getProtoInputsFile(protoFileSuffix);
ruleContext.registerAction(
FileWriteAction.create(
ruleContext, protoInputsFile, getProtoInputsFileContents(outputProtos), false));
- ruleContext.registerAction(
+ SpawnAction.Builder actionBuilder =
new SpawnAction.Builder()
.setMnemonic("GenObjcBundledProtos")
.addInput(attributes.getProtoCompiler())
@@ -470,10 +463,14 @@ final class ProtobufSupport {
.addInput(protoInputsFile)
.addInputs(inputProtos)
.addOutputs(getGeneratedProtoOutputs(outputProtos, HEADER_SUFFIX))
- .addOutputs(getProtoSourceFilesForCompilation(outputProtos))
.setExecutable(attributes.getProtoCompiler().getExecPath())
- .addCommandLine(getGenerationCommandLine(protoInputsFile))
- .build(ruleContext));
+ .addCommandLine(getGenerationCommandLine(protoInputsFile, includeSources));
+
+ if (includeSources) {
+ actionBuilder.addOutputs(getProtoSourceFilesForCompilation(outputProtos));
+ }
+
+ ruleContext.registerAction(actionBuilder.build(ruleContext));
}
private Artifact getProtoInputsFile(String suffix) {
@@ -490,19 +487,26 @@ final class ProtobufSupport {
return Artifact.joinRootRelativePaths("\n", sorted);
}
- private CustomCommandLine getGenerationCommandLine(Artifact protoInputsFile) {
- return new Builder()
- .add("--input-file-list")
- .addExecPath(protoInputsFile)
- .add("--output-dir")
- .addDynamicString(getWorkspaceRelativeOutputDir().getSafePathString())
- .add("--force")
- .add("--proto-root-dir")
- .addDynamicString(getGenfilesPathString())
- .add("--proto-root-dir")
- .add(".")
- .addExecPaths(VectorArg.addBefore("--config").each(portableProtoFilters))
- .build();
+ private CustomCommandLine getGenerationCommandLine(
+ Artifact protoInputsFile, boolean includeSources) {
+ CustomCommandLine.Builder commandBuilder =
+ new CustomCommandLine.Builder()
+ .add("--input-file-list")
+ .addExecPath(protoInputsFile)
+ .add("--output-dir")
+ .addDynamicString(getWorkspaceRelativeOutputDir().getSafePathString())
+ .add("--force")
+ .add("--proto-root-dir")
+ .addDynamicString(getGenfilesPathString())
+ .add("--proto-root-dir")
+ .add(".")
+ .addExecPaths(VectorArg.addBefore("--config").each(portableProtoFilters));
+
+ if (!includeSources) {
+ commandBuilder.add("--headers-only");
+ }
+
+ return commandBuilder.build();
}
private String getGenfilesPathString() {
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
index 2dbd7db711..8b24e74985 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProtoLibraryTest.java
@@ -175,9 +175,7 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
assertThat(Artifact.toRootRelativePaths(filesToBuild))
.containsAllOf(
"package/_generated_protos/opl_protobuf/package/FileA.pbobjc.h",
- "package/_generated_protos/opl_protobuf/package/FileA.pbobjc.m",
"package/_generated_protos/opl_protobuf/package/dir/FileB.pbobjc.h",
- "package/_generated_protos/opl_protobuf/package/dir/FileB.pbobjc.m",
"package/_generated_protos/opl_protobuf/dep/File.pbobjc.h");
}
@@ -187,9 +185,7 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
assertThat(Artifact.toRootRelativePaths(filesToBuild))
.containsAllOf(
"package/_generated_protos/nested_opl/package/FileA.pbobjc.h",
- "package/_generated_protos/nested_opl/package/FileA.pbobjc.m",
- "package/_generated_protos/nested_opl/package/dir/FileB.pbobjc.h",
- "package/_generated_protos/nested_opl/package/dir/FileB.pbobjc.m");
+ "package/_generated_protos/nested_opl/package/dir/FileB.pbobjc.h");
}
@Test
@@ -201,9 +197,7 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
assertThat(Artifact.toRootRelativePaths(filesToBuild))
.containsAllOf(
"package/_generated_protos/opl_protobuf/package/FileA.pbobjc.h",
- "package/_generated_protos/opl_protobuf/package/FileA.pbobjc.m",
"package/_generated_protos/opl_protobuf/package/dir/FileB.pbobjc.h",
- "package/_generated_protos/opl_protobuf/package/dir/FileB.pbobjc.m",
"package/_generated_protos/opl_protobuf/dep/File.pbobjc.h");
}
@@ -215,21 +209,13 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
assertThat(Artifact.toRootRelativePaths(filesToBuild))
.containsAllOf(
outputPath + "J2ObjcDescriptor.pbobjc.h",
- outputPath + "J2ObjcDescriptor.pbobjc.m",
outputPath + "HTTP.pbobjc.h",
- outputPath + "HTTP.pbobjc.m",
outputPath + "HTTPS.pbobjc.h",
- outputPath + "HTTPS.pbobjc.m",
outputPath + "SomeURLBlah.pbobjc.h",
- outputPath + "SomeURLBlah.pbobjc.m",
outputPath + "ThumbnailURL.pbobjc.h",
- outputPath + "ThumbnailURL.pbobjc.m",
outputPath + "URL.pbobjc.h",
- outputPath + "URL.pbobjc.m",
outputPath + "URL2HTTPS.pbobjc.h",
- outputPath + "URL2HTTPS.pbobjc.m",
- outputPath + "Urlbar.pbobjc.h",
- outputPath + "Urlbar.pbobjc.m");
+ outputPath + "Urlbar.pbobjc.h");
}
@Test
@@ -237,31 +223,26 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
NestedSet<Artifact> filesToBuild =
getFilesToBuild(getConfiguredTarget("//package:opl_protobuf_well_known_types"));
assertThat(Artifact.toRootRelativePaths(filesToBuild))
- .containsAllOf(
- "package/_generated_protos/opl_protobuf_well_known_types/package/FileA.pbobjc.h",
- "package/_generated_protos/opl_protobuf_well_known_types/package/FileA.pbobjc.m");
+ .contains(
+ "package/_generated_protos/opl_protobuf_well_known_types/package/FileA.pbobjc.h");
assertThat(Artifact.toRootRelativePaths(filesToBuild))
.doesNotContain(
"package/_generated_protos/opl_protobuf_well_known_types/objcproto/WellKnownType.pbobjc.h");
- assertThat(Artifact.toRootRelativePaths(filesToBuild))
- .doesNotContain(
- "package/_generated_protos/opl_protobuf_well_known_types/objcproto/WellKnownType.pbobjc.m");
}
@Test
public void testOutputsGenfile() throws Exception {
NestedSet<Artifact> filesToBuild = getFilesToBuild(getConfiguredTarget("//package:gen_opl"));
assertThat(Artifact.toRootRelativePaths(filesToBuild))
- .containsAllOf(
- "package/_generated_protos/gen_opl/package/FileAGenfile.pbobjc.h",
- "package/_generated_protos/gen_opl/package/FileAGenfile.pbobjc.m");
+ .contains(
+ "package/_generated_protos/gen_opl/package/FileAGenfile.pbobjc.h");
}
@Test
- public void testSourceGenerationAction() throws Exception {
+ public void testHeaderGenerationAction() throws Exception {
Artifact sourceFile =
ActionsTestUtil.getFirstArtifactEndingWith(
- getFilesToBuild(getConfiguredTarget("//package:opl_protobuf")), "/FileA.pbobjc.m");
+ getFilesToBuild(getConfiguredTarget("//package:opl_protobuf")), "/FileA.pbobjc.h");
SpawnAction action = (SpawnAction) getGeneratingAction(sourceFile);
Artifact inputFileList =
@@ -290,7 +271,8 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
"--config",
"package/proto_filter2.txt",
"--config",
- "package/proto_filter3.txt")
+ "package/proto_filter3.txt",
+ "--headers-only")
.inOrder();
assertThat(Artifact.toRootRelativePaths(action.getInputs()))
.containsAllOf(
@@ -306,11 +288,11 @@ public class ObjcProtoLibraryTest extends ObjcRuleTestCase {
@Test
public void testWellKnownTypesProtoListInput() throws Exception {
- Artifact sourceFile =
+ Artifact headerFile =
ActionsTestUtil.getFirstArtifactEndingWith(
getFilesToBuild(getConfiguredTarget("//package:opl_protobuf_well_known_types")),
- "/FileA.pbobjc.m");
- SpawnAction action = (SpawnAction) getGeneratingAction(sourceFile);
+ "/FileA.pbobjc.h");
+ SpawnAction action = (SpawnAction) getGeneratingAction(headerFile);
Artifact inputFileList =
ActionsTestUtil.getFirstArtifactEndingWith(