Add `--incompatible_no_package_distribs` flag to disable `package(distribs=...)`.

This flag guards only package(distribs).  The distribs() top level rule is still allowed.

RELNOTES: NONE
PiperOrigin-RevId: 561349658
Change-Id: I7e284792a576e725cabd0c4adee033ba0b471395
diff --git a/src/main/java/com/google/devtools/build/lib/packages/PackageCallable.java b/src/main/java/com/google/devtools/build/lib/packages/PackageCallable.java
index 3fae8da..50280a0 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/PackageCallable.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/PackageCallable.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.packages;
 
+import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions;
 import java.util.Map;
 import net.starlark.java.annot.Param;
 import net.starlark.java.annot.StarlarkMethod;
@@ -49,8 +50,15 @@
     }
 
     PackageArgs.Builder pkgArgsBuilder = PackageArgs.builder();
+    boolean disallowDistribs =
+        thread.getSemantics().getBool(BuildLanguageOptions.INCOMPATIBLE_NO_PACKAGE_DISTRIBS);
     for (Map.Entry<String, Object> kwarg : kwargs.entrySet()) {
       String name = kwarg.getKey();
+      if (disallowDistribs && name.equals("distribs")) {
+        throw Starlark.errorf(
+            "'package(distribs=...)' is not allowed when --incompatible_no_package_distribs is"
+                + " set");
+      }
       Object rawValue = kwarg.getValue();
       processParam(name, rawValue, pkgBuilder, pkgArgsBuilder);
     }
@@ -65,6 +73,7 @@
   protected void processParam(
       String name, Object rawValue, Package.Builder pkgBuilder, PackageArgs.Builder pkgArgsBuilder)
       throws EvalException {
+
     PackageArgs.processParam(
         name,
         rawValue,