Automated rollback of commit 30c40fbf0fb97efb5deb9fa291e095bba921fe5e.
*** Reason for rollback ***
Breaks thousands of targets in the latest nightlies.
Example: []
b/124656899
*** Original change description ***
Remove getQuoteIncludes hook from CppSemantics
It's no longer needed.
RELNOTES: None
PiperOrigin-RevId: 234482492
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
index 657275d..f266fee 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/cpp/BazelCppSemantics.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.bazel.rules.cpp;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -27,6 +28,8 @@
import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
import com.google.devtools.build.lib.rules.cpp.NoProcessing;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.vfs.PathFragment;
+import java.util.List;
/** C++ compilation semantics. */
public class BazelCppSemantics implements AspectLegalCppSemantics {
@@ -51,6 +54,11 @@
}
@Override
+ public List<PathFragment> getQuoteIncludes(RuleContext ruleContext) {
+ return ImmutableList.of();
+ }
+
+ @Override
public NestedSet<Artifact> getAdditionalPrunableIncludes() {
return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
}
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 1cdcb4b..311ac76 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
@@ -332,6 +332,7 @@
.addCcCompilationContexts(CppHelper.getCompilationContextsFromDeps(deps))
.addCcCompilationContexts(
ImmutableList.of(CcCompilationHelper.getStlCcCompilationContext(ruleContext)))
+ .addQuoteIncludeDirs(semantics.getQuoteIncludes(ruleContext))
.setHeadersCheckingMode(semantics.determineHeadersCheckingMode(ruleContext))
.setCodeCoverageEnabled(CcCompilationHelper.isCodeCoverageEnabled(ruleContext))
.setFake(fake);
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
index 6863f52..f1bab33 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcImport.java
@@ -166,6 +166,7 @@
ccToolchain.getFdoContext())
.addPublicHeaders(common.getHeaders())
.setHeadersCheckingMode(HeadersCheckingMode.STRICT)
+ .addQuoteIncludeDirs(semantics.getQuoteIncludes(ruleContext))
.setCodeCoverageEnabled(CcCompilationHelper.isCodeCoverageEnabled(ruleContext))
.compile();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
index ba53de7..4a5b1e6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java
@@ -161,6 +161,7 @@
.collect(ImmutableList.toImmutableList()))
.addCcCompilationContexts(
ImmutableList.of(CcCompilationHelper.getStlCcCompilationContext(ruleContext)))
+ .addQuoteIncludeDirs(semantics.getQuoteIncludes(ruleContext))
.setHeadersCheckingMode(semantics.determineHeadersCheckingMode(ruleContext));
CcLinkingHelper linkingHelper =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
index ba7e48e..3e3bd45 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java
@@ -624,6 +624,7 @@
.addCcCompilationContexts(
ImmutableList.of(CcCompilationHelper.getStlCcCompilationContext(ruleContext)))
.setCodeCoverageEnabled(CcCompilationHelper.isCodeCoverageEnabled(ruleContext))
+ .addQuoteIncludeDirs(cppSemantics.getQuoteIncludes(ruleContext))
.setPurpose(convertFromNoneable(purpose, null));
SkylarkNestedSet additionalCompilationInputs =
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
index 37c20d1..4760a53 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java
@@ -20,6 +20,8 @@
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
+import com.google.devtools.build.lib.vfs.PathFragment;
+import java.util.List;
/** Pluggable C++ compilation semantics. */
public interface CppSemantics {
@@ -35,6 +37,14 @@
CppCompileActionBuilder actionBuilder);
/**
+ * Called before {@link CcCompilationContext}s are finalized.
+ *
+ * <p>Gives the semantics implementation the opportunity to change what the C++ rule propagates to
+ * dependent rules.
+ */
+ List<PathFragment> getQuoteIncludes(RuleContext ruleContext);
+
+ /**
* Returns the set of includes which are not mandatory and may be pruned by include processing.
*/
NestedSet<Artifact> getAdditionalPrunableIncludes();
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
index 893b550..ba9510b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/proto/CcProtoAspect.java
@@ -308,7 +308,8 @@
toolchain.getFdoContext())
.addCcCompilationContexts(CppHelper.getCompilationContextsFromDeps(deps))
.addCcCompilationContexts(
- ImmutableList.of(CcCompilationHelper.getStlCcCompilationContext(ruleContext)));
+ ImmutableList.of(CcCompilationHelper.getStlCcCompilationContext(ruleContext)))
+ .addQuoteIncludeDirs(cppSemantics.getQuoteIncludes(ruleContext));
// Don't instrument the generated C++ files even when --collect_code_coverage is set.
helper.setCodeCoverageEnabled(false);
return helper;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
index 0dc1df8..a442a59 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java
@@ -343,8 +343,7 @@
.setPropagateModuleMapToCompileAction(false)
.addVariableExtension(extension)
.setPurpose(purpose)
- .addQuoteIncludeDirs(
- ObjcCommon.userHeaderSearchPaths(objcProvider, ruleContext.getConfiguration()))
+ .addQuoteIncludeDirs(semantics.getQuoteIncludes(ruleContext))
.setCodeCoverageEnabled(CcCompilationHelper.isCodeCoverageEnabled(ruleContext));
if (pchHdr != null) {
@@ -455,8 +454,7 @@
nonObjcArcCompilationInfo.getCcCompilationContext()));
ccCompilationContextBuilder.setPurpose(
String.format("%s_merged_arc_non_arc_objc", semantics.getPurpose()));
- ccCompilationContextBuilder.addQuoteIncludeDirs(
- ObjcCommon.userHeaderSearchPaths(objcProvider, ruleContext.getConfiguration()));
+ ccCompilationContextBuilder.addQuoteIncludeDirs(semantics.getQuoteIncludes(ruleContext));
CcCompilationOutputs precompiledFilesObjects =
new CcCompilationOutputs.Builder()
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
index 14c5865..592ef09 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCppSemantics.java
@@ -33,6 +33,8 @@
import com.google.devtools.build.lib.rules.cpp.HeaderDiscovery.DotdPruningMode;
import com.google.devtools.build.lib.rules.cpp.IncludeProcessing;
import com.google.devtools.build.lib.util.FileTypeSet;
+import com.google.devtools.build.lib.vfs.PathFragment;
+import java.util.List;
/**
* CppSemantics for objc builds.
@@ -121,6 +123,15 @@
}
@Override
+ public List<PathFragment> getQuoteIncludes(RuleContext ruleContext) {
+ ImmutableList.Builder<PathFragment> quoteIncludes = ImmutableList.builder();
+ // The genfiles root of each child configuration must be added to the compile action so that
+ // generated headers can be resolved.
+ return ImmutableList.copyOf(
+ ObjcCommon.userHeaderSearchPaths(objcProvider, ruleContext.getConfiguration()));
+ }
+
+ @Override
public NestedSet<Artifact> getAdditionalPrunableIncludes() {
return objcProvider.get(HEADER);
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java
index 8311cc6..b929c40 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.cpp;
+import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
@@ -24,6 +25,8 @@
import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.HeadersCheckingMode;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
+import com.google.devtools.build.lib.vfs.PathFragment;
+import java.util.List;
/**
* Null-object like {@link CppSemantics} implementation. Only to be used in tests that don't depend
@@ -42,6 +45,11 @@
CppCompileActionBuilder actionBuilder) {}
@Override
+ public List<PathFragment> getQuoteIncludes(RuleContext ruleContext) {
+ return ImmutableList.of();
+ }
+
+ @Override
public NestedSet<Artifact> getAdditionalPrunableIncludes() {
return NestedSetBuilder.emptySet(Order.STABLE_ORDER);
}