Make parse_header a validation action Move header tokens of cc_binary to validation, so that building targets that depend on the cc_binary will trigger header validation. This way, parse_headers will trigger properly for android. RELNOTES: None PiperOrigin-RevId: 324866557
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java index 46ea2d2..59267e9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcBinary.java
@@ -1104,10 +1104,7 @@ CcNativeLibraryProvider.class, new CcNativeLibraryProvider(collectTransitiveCcNativeLibraries(ruleContext, libraries))) .addNativeDeclaredProvider(instrumentedFilesProvider) - // For CcBinary targets, we only want to ensure that we process headers in dependencies and - // thus only add header tokens to HIDDEN_TOP_LEVEL. If we add all HIDDEN_TOP_LEVEL artifacts - // from dependent CcLibrary targets, we'd be building .pic.o files in nopic builds. - .addOutputGroup(OutputGroupInfo.HIDDEN_TOP_LEVEL, headerTokens) + .addOutputGroup(OutputGroupInfo.VALIDATION, headerTokens) .addOutputGroups(outputGroups); CppHelper.maybeAddStaticLinkMarkerProvider(builder, ruleContext);
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java index 498ec4b..3599266 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -1104,8 +1104,10 @@ "cc_library(name = 'z', srcs = ['z.cc'])"); String hiddenTopLevel = ActionsTestUtil.baseNamesOf(getOutputGroup(x, OutputGroupInfo.HIDDEN_TOP_LEVEL)); - assertThat(hiddenTopLevel).contains("y.h.processed"); + assertThat(hiddenTopLevel).doesNotContain("y.h.processed"); assertThat(hiddenTopLevel).doesNotContain("z.pic.o"); + String validation = ActionsTestUtil.baseNamesOf(getOutputGroup(x, OutputGroupInfo.VALIDATION)); + assertThat(validation).contains("y.h.processed"); } @Test
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java index 983bd02..35d7649 100644 --- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java +++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java
@@ -341,7 +341,8 @@ OutputGroupInfo.HIDDEN_TOP_LEVEL, OutputGroupInfo.COMPILATION_PREREQUISITES, OutputGroupInfo.FILES_TO_COMPILE, - OutputGroupInfo.TEMP_FILES); + OutputGroupInfo.TEMP_FILES, + OutputGroupInfo.VALIDATION); } @Test