Automated rollback of commit 4b6f8017cd3f6e7152ced7d1d10d3a4fadb24c56.

*** Reason for rollback ***

Looks like this cl broke Blaze_ProdTest, specifically testStripImportPrefix in //devtools/blaze/integration:proto_library_regtest. See b/231918950 and
[]

*** Original change description ***

Use ProtoCommon.declareGeneratedFiles in cc_proto_library.

PiperOrigin-RevId: 447481260
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 4a44ed7..c30d309 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
@@ -408,11 +408,12 @@
           ccToolchainType);
     }
 
-    private ImmutableSet<Artifact> getOutputFiles(Iterable<String> suffixes)
-        throws RuleErrorException, InterruptedException {
+    private ImmutableSet<Artifact> getOutputFiles(Iterable<String> suffixes) {
       ImmutableSet.Builder<Artifact> result = ImmutableSet.builder();
       for (String suffix : suffixes) {
-        result.addAll(ProtoCommon.declareGeneratedFiles(ruleContext, protoTarget, suffix));
+        result.addAll(
+            ProtoCommon.getGeneratedOutputs(
+                ruleContext, protoInfo.getDirectProtoSources(), suffix));
       }
       return result.build();
     }
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java
index d1c48ac..916219e 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCommon.java
@@ -19,6 +19,7 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Interner;
 import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.ArtifactRoot;
 import com.google.devtools.build.lib.analysis.ConfiguredTarget;
 import com.google.devtools.build.lib.analysis.FilesToRunProvider;
 import com.google.devtools.build.lib.analysis.RuleContext;
@@ -33,6 +34,7 @@
 import com.google.devtools.build.lib.concurrent.BlazeInterners;
 import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException;
 import com.google.devtools.build.lib.packages.StarlarkInfo;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import javax.annotation.Nullable;
 import net.starlark.java.eval.Dict;
@@ -78,6 +80,31 @@
   // Protocol compiler invocation stuff.
 
   /**
+   * Each language-specific initialization method will call this to construct Artifacts representing
+   * its protocol compiler outputs.
+   *
+   * @param extension Remove ".proto" and replace it with this to produce the output file name, e.g.
+   *     ".pb.cc".
+   */
+  public static ImmutableList<Artifact> getGeneratedOutputs(
+      RuleContext ruleContext, ImmutableList<Artifact> protoSources, String extension) {
+    ImmutableList.Builder<Artifact> outputsBuilder = new ImmutableList.Builder<>();
+    ArtifactRoot genfiles = ruleContext.getGenfilesDirectory();
+    for (Artifact src : protoSources) {
+      PathFragment srcPath =
+          src.getOutputDirRelativePath(ruleContext.getConfiguration().isSiblingRepositoryLayout());
+
+      // Note that two proto_library rules can have the same source file, so this is actually a
+      // shared action. NB: This can probably result in action conflicts if the proto_library rules
+      // are not the same.
+      outputsBuilder.add(
+          ruleContext.getShareableArtifact(
+              FileSystemUtils.replaceExtension(srcPath, extension), genfiles));
+    }
+    return outputsBuilder.build();
+  }
+
+  /**
    * Decides whether this proto_library should check for strict proto deps.
    *
    * <p>Only takes into account the command-line flag --strict_proto_deps.
diff --git a/src/main/starlark/builtins_bzl/common/proto/proto_common.bzl b/src/main/starlark/builtins_bzl/common/proto/proto_common.bzl
index 608c1fb..d966725 100644
--- a/src/main/starlark/builtins_bzl/common/proto/proto_common.bzl
+++ b/src/main/starlark/builtins_bzl/common/proto/proto_common.bzl
@@ -293,7 +293,6 @@
 proto_common = struct(
     create_proto_compile_action = _create_proto_compile_action,
     incompatible_py_uses_bindir = True,
-    incompatible_cc_uses_bindir = True,
 )
 
 proto_common_do_not_use = struct(