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,