aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java5
3 files changed, 25 insertions, 13 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
index efe4573976..6c29411930 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java
@@ -41,6 +41,7 @@ import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClassProvider;
import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.rules.SkylarkModules;
+import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.syntax.Environment;
import com.google.devtools.build.lib.syntax.Environment.Extension;
import com.google.devtools.build.lib.syntax.Mutability;
@@ -476,8 +477,8 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider {
/**
* Returns the defaults package for the default settings.
*/
- public String getDefaultsPackageContent() {
- return DefaultsPackage.getDefaultsPackageContent(configurationOptions);
+ public String getDefaultsPackageContent(InvocationPolicy invocationPolicy) {
+ return DefaultsPackage.getDefaultsPackageContent(configurationOptions, invocationPolicy);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
index ff3d0dae83..9272188cd7 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java
@@ -22,9 +22,10 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.ListMultimap;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.flags.InvocationPolicyEnforcer;
import com.google.devtools.build.lib.packages.Attribute.SplitTransition;
+import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.util.Preconditions;
-import com.google.devtools.common.options.Options;
import com.google.devtools.common.options.OptionsBase;
import com.google.devtools.common.options.OptionsClassProvider;
import com.google.devtools.common.options.OptionsParser;
@@ -47,14 +48,23 @@ import javax.annotation.Nullable;
*/
public final class BuildOptions implements Cloneable, Serializable {
/**
- * Creates a BuildOptions object with all options set to their default values.
+ * Creates a BuildOptions object with all options set to their default values, processed by the
+ * given {@code invocationPolicy}.
*/
- public static BuildOptions createDefaults(Iterable<Class<? extends FragmentOptions>> options) {
- Builder builder = builder();
- for (Class<? extends FragmentOptions> optionsClass : options) {
- builder.add(Options.getDefaults(optionsClass));
+ static BuildOptions createDefaults(
+ Iterable<Class<? extends FragmentOptions>> options, InvocationPolicy invocationPolicy) {
+ return of(options, createDefaultParser(options, invocationPolicy));
+ }
+
+ private static OptionsParser createDefaultParser(
+ Iterable<Class<? extends FragmentOptions>> options, InvocationPolicy invocationPolicy) {
+ OptionsParser optionsParser = OptionsParser.newOptionsParser(options);
+ try {
+ new InvocationPolicyEnforcer(invocationPolicy).enforce(optionsParser);
+ } catch (OptionsParsingException e) {
+ throw new IllegalStateException(e);
}
- return builder.build();
+ return optionsParser;
}
/**
@@ -102,8 +112,8 @@ public final class BuildOptions implements Cloneable, Serializable {
* Creates a BuildOptions class by taking the option values from an options provider
* (eg. an OptionsParser).
*/
- public static BuildOptions of(List<Class<? extends FragmentOptions>> optionsList,
- OptionsClassProvider provider) {
+ public static BuildOptions of(
+ Iterable<Class<? extends FragmentOptions>> optionsList, OptionsClassProvider provider) {
Builder builder = builder();
for (Class<? extends FragmentOptions> optionsClass : optionsList) {
builder.add(provider.getOptions(optionsClass));
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java b/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java
index 9c5f624f4e..6c29937576 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/DefaultsPackage.java
@@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
+import com.google.devtools.build.lib.runtime.proto.InvocationPolicyOuterClass.InvocationPolicy;
import com.google.devtools.build.lib.util.Preconditions;
import java.util.Locale;
@@ -137,8 +138,8 @@ public final class DefaultsPackage {
* Returns the defaults package for the default settings.
*/
public static String getDefaultsPackageContent(
- Iterable<Class<? extends FragmentOptions>> options) {
- return getDefaultsPackageContent(BuildOptions.createDefaults(options));
+ Iterable<Class<? extends FragmentOptions>> options, InvocationPolicy invocationPolicy) {
+ return getDefaultsPackageContent(BuildOptions.createDefaults(options, invocationPolicy));
}
/**