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()); }