Simplify RuleClassProvider; it kept two identical lists for no purpose.
Also update HelpCommand to output the configuration options in the hmtl
output.
--
MOS_MIGRATED_REVID=125570665
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 be01445..a0ed7a4 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
@@ -24,7 +24,6 @@
import com.google.common.collect.ImmutableBiMap;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Lists;
import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
@@ -106,7 +105,6 @@
private ImmutableMap<String, Object> skylarkAccessibleTopLevels = ImmutableMap.of();
private ImmutableList.Builder<Class<?>> skylarkModules =
ImmutableList.<Class<?>>builder().addAll(SkylarkModules.MODULES);
- private final List<Class<? extends FragmentOptions>> buildOptions = Lists.newArrayList();
private ImmutableBiMap<String, Class<? extends TransitiveInfoProvider>>
registeredSkylarkProviders = ImmutableBiMap.of();
@@ -130,11 +128,6 @@
return this;
}
- public Builder addBuildOptions(Collection<Class<? extends FragmentOptions>> optionsClasses) {
- buildOptions.addAll(optionsClasses);
- return this;
- }
-
public Builder setRunfilesPrefix(String runfilesPrefix) {
this.runfilesPrefix = runfilesPrefix;
return this;
@@ -176,6 +169,12 @@
return this;
}
+ public Builder addConfigurationOptions(
+ Collection<Class<? extends FragmentOptions>> optionsClasses) {
+ this.configurationOptions.addAll(optionsClasses);
+ return this;
+ }
+
public Builder addConfigurationFragment(ConfigurationFragmentFactory factory) {
configurationFragments.add(factory);
return this;
@@ -288,7 +287,6 @@
prerequisiteValidator,
skylarkAccessibleTopLevels,
skylarkModules.build(),
- buildOptions,
registeredSkylarkProviders);
}
@@ -387,8 +385,6 @@
private final Environment.Frame globals;
- private final List<Class<? extends FragmentOptions>> buildOptions;
-
private final ImmutableBiMap<String, Class<? extends TransitiveInfoProvider>>
registeredSkylarkProviders;
@@ -409,7 +405,6 @@
PrerequisiteValidator prerequisiteValidator,
ImmutableMap<String, Object> skylarkAccessibleJavaClasses,
ImmutableList<Class<?>> skylarkModules,
- List<Class<? extends FragmentOptions>> buildOptions,
ImmutableBiMap<String, Class<? extends TransitiveInfoProvider>> registeredSkylarkProviders) {
this.preludeLabel = preludeLabel;
this.runfilesPrefix = runfilesPrefix;
@@ -426,7 +421,6 @@
this.universalFragment = universalFragment;
this.prerequisiteValidator = prerequisiteValidator;
this.globals = createGlobals(skylarkAccessibleJavaClasses, skylarkModules);
- this.buildOptions = buildOptions;
this.registeredSkylarkProviders = registeredSkylarkProviders;
}
@@ -522,10 +516,6 @@
BuildOptions.of(configurationOptions, optionsProvider));
}
- public ImmutableList<Class<? extends FragmentOptions>> getOptionFragments() {
- return ImmutableList.copyOf(buildOptions);
- }
-
/**
* Returns a map that indicates which keys in structs returned by skylark rules should be
* interpreted as native TransitiveInfoProvider instances of type (map value).
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index df63b8a..3f9172b 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -276,11 +276,7 @@
.setSkylarkAccessibleTopLevels(SKYLARK_BUILT_IN_JAVA_OBJECTS)
.setSkylarkProviderRegistry(SKYLARK_PROVIDERS_TO_REGISTER);
- builder.addBuildOptions(BUILD_OPTIONS);
-
- for (Class<? extends FragmentOptions> fragmentOptions : BUILD_OPTIONS) {
- builder.addConfigurationOptions(fragmentOptions);
- }
+ builder.addConfigurationOptions(BUILD_OPTIONS);
AndroidNeverlinkAspect androidNeverlinkAspect = new AndroidNeverlinkAspect();
DexArchiveAspect dexArchiveAspect = new DexArchiveAspect(TOOLS_REPOSITORY);
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
index f6bc840..7a647cb4 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BuildCommand.java
@@ -14,7 +14,6 @@
package com.google.devtools.build.lib.runtime.commands;
import com.google.devtools.build.lib.analysis.BuildView;
-import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.buildtool.BuildRequest;
import com.google.devtools.build.lib.buildtool.BuildRequest.BuildRequestOptions;
import com.google.devtools.build.lib.buildtool.BuildTool;
@@ -43,7 +42,6 @@
PackageCacheOptions.class,
BuildView.Options.class,
LoadingOptions.class,
- BuildConfiguration.Options.class,
},
usesConfigurationOptions = true,
shortDescription = "Builds the specified targets.",
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java
index 79875d8..f6caea0 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/HelpCommand.java
@@ -384,6 +384,18 @@
}
appendOptionsHtml(result, options);
result.append("\n");
+
+ // For now, we print all the configuration options in a list after all the non-configuration
+ // options. Note that usesConfigurationOptions is only true for the build command right now.
+ if (annotation.usesConfigurationOptions()) {
+ options.clear();
+ Collections.addAll(options, annotation.options());
+ if (annotation.usesConfigurationOptions()) {
+ options.addAll(runtime.getRuleClassProvider().getConfigurationOptions());
+ }
+ appendOptionsHtml(result, options);
+ result.append("\n");
+ }
}
outErr.printOut(result.toString());
}