Report the first rule error as a root cause event

This is not fool-proof. In particular, it is missing all errors
generated in the ConfiguredTargetFunction. However, it should give
us significantly better coverage being a more generic mechanism.

We might want to consider either adding an index to the root cause
events so we can report multiple, or collecting all error messages into
a single root cause event for each target.

PiperOrigin-RevId: 268639983
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 5bcaf64..ded8ede 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -1607,7 +1607,9 @@
       if (configuration.allowAnalysisFailures()) {
         reporter = new SuppressingErrorReporter();
       } else {
-        reporter = new ErrorReporter(env, target.getAssociatedRule(), getRuleClassNameForLogging());
+        reporter =
+            new ErrorReporter(
+                env, target.getAssociatedRule(), configuration, getRuleClassNameForLogging());
       }
     }
 
@@ -2124,10 +2126,16 @@
   private static final class ErrorReporter extends EventHandlingErrorReporter
       implements RuleErrorConsumer {
     private final Rule rule;
+    private final BuildConfiguration configuration;
 
-    ErrorReporter(AnalysisEnvironment env, Rule rule, String ruleClassNameForLogging) {
+    ErrorReporter(
+        AnalysisEnvironment env,
+        Rule rule,
+        BuildConfiguration configuration,
+        String ruleClassNameForLogging) {
       super(ruleClassNameForLogging, env);
       this.rule = rule;
+      this.configuration = configuration;
     }
 
     @Override
@@ -2150,6 +2158,11 @@
     }
 
     @Override
+    protected BuildConfiguration getConfiguration() {
+      return configuration;
+    }
+
+    @Override
     protected Location getRuleLocation() {
       return rule.getLocation();
     }