diff --git a/site/docs/configurable-attributes.md b/site/docs/configurable-attributes.md index 3cfb9411363572..7b4178a39962fb 100644 --- a/site/docs/configurable-attributes.md +++ b/site/docs/configurable-attributes.md @@ -974,7 +974,7 @@ values with `bazel config`: ```sh $ bazel config 12e23b9a2b534a -BuildConfiguration 12e23b9a2b534a +BuildConfigurationValue 12e23b9a2b534a Fragment com.google.devtools.build.lib.analysis.config.CoreOptions { cpu: darwin compilation_mode: fastbuild diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD index ccf94ebeb343b5..4606aad123c334 100644 --- a/src/main/java/com/google/devtools/build/lib/BUILD +++ b/src/main/java/com/google/devtools/build/lib/BUILD @@ -308,7 +308,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/skyframe:action_execution_inactivity_watchdog", "//src/main/java/com/google/devtools/build/lib/skyframe:actiongraph/v2/aquery_output_handler", "//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe:builder", "//src/main/java/com/google/devtools/build/lib/skyframe:configuration_phase_started_event", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key", diff --git a/src/main/java/com/google/devtools/build/lib/actions/Action.java b/src/main/java/com/google/devtools/build/lib/actions/Action.java index 1a4adb167b6e11..b286e9d995aae7 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Action.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Action.java @@ -65,10 +65,10 @@ *
  • As much as possible, make the cache key computation obvious - fully hash every field * (except input contents, but including input and output names if they appear in the command * line) in the class, and avoid referencing anything that isn't needed for action execution, - * such as {@link com.google.devtools.build.lib.analysis.config.BuildConfiguration} objects or - * even fragments thereof; if the action has a command line, err on the side of hashing the - * entire command line, even if that seems expensive. It's always safe to hash too much - the - * negative effect on incremental build times is usually negligible. + * such as {@link com.google.devtools.build.lib.analysis.config.BuildConfigurationValue} + * objects or even fragments thereof; if the action has a command line, err on the side of + * hashing the entire command line, even if that seems expensive. It's always safe to hash too + * much - the negative effect on incremental build times is usually negligible. *
  • Add test coverage for the cache key computation; use {@link * com.google.devtools.build.lib.analysis.util.ActionTester} to generate as many combinations * of field values as possible; add test coverage every time you add another field. diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java index 88a3f2e6661338..573326a9c26871 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInput.java @@ -46,7 +46,7 @@ public interface ActionInput { /** * Returns if this input's file system path includes a digest of its content. See {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}. + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths}. */ default boolean contentBasedPath() { return false; diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java index e6c55fe85ec1fb..e5e927c2456470 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java @@ -383,7 +383,7 @@ public static class DerivedArtifact extends Artifact { /** * Content-based output paths are experimental. Only derived artifacts that are explicitly opted * in by their creating rules should use them and only when {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths} + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths} * is on. */ private final boolean contentBasedPath; @@ -397,7 +397,7 @@ public static DerivedArtifact create( /** * Same as {@link #create(ArtifactRoot, PathFragment, ActionLookupKey)} but includes the option * to use a content-based path for this artifact (see {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}). + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths}). */ public static DerivedArtifact create( ArtifactRoot root, PathFragment execPath, ActionLookupKey owner, boolean contentBasedPath) { diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java index 8cd3a5f35109ac..6c5301886f70f7 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java @@ -216,7 +216,7 @@ public Artifact.DerivedArtifact getDerivedArtifact( /** * Same as {@link #getDerivedArtifact(PathFragment, ArtifactRoot, ArtifactOwner)} but includes the * option to use a content-based path for this artifact (see {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}). + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#useContentBasedOutputPaths}). */ public Artifact.DerivedArtifact getDerivedArtifact( PathFragment rootRelativePath, diff --git a/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java b/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java index d072222397cfd9..af4234ef5c9e3d 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java +++ b/src/main/java/com/google/devtools/build/lib/actions/BuildConfigurationEvent.java @@ -25,7 +25,7 @@ /** * Encapsulation of {@link BuildEvent} info associated with a {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration}. + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}. */ @AutoCodec public class BuildConfigurationEvent implements BuildEvent { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java index 300fe53ed6db29..a13e10f6db1227 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java @@ -25,7 +25,7 @@ import com.google.devtools.build.lib.actions.ArtifactRoot; import com.google.devtools.build.lib.actions.MiddlemanFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.Root; @@ -67,7 +67,7 @@ public interface AnalysisEnvironment extends ActionRegistry { /** * Same as {@link #getDerivedArtifact(PathFragment, ArtifactRoot)} but includes the option to use * a content-based path for this artifact (see {@link - * BuildConfiguration#useContentBasedOutputPaths()}). + * BuildConfigurationValue#useContentBasedOutputPaths()}). */ Artifact.DerivedArtifact getDerivedArtifact( PathFragment rootRelativePath, ArtifactRoot root, boolean contentBasedPath); @@ -178,8 +178,8 @@ Artifact.DerivedArtifact getDerivedArtifact( * @param stamp whether stamping is enabled * @param config the current build configuration. */ - ImmutableList getBuildInfo(boolean stamp, BuildInfoKey key, BuildConfiguration config) - throws InterruptedException; + ImmutableList getBuildInfo( + boolean stamp, BuildInfoKey key, BuildConfigurationValue config) throws InterruptedException; /** * Returns the set of orphan Artifacts (i.e. Artifacts without generating action). Should only be diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java index a02d4ce6347e38..0938064191bd88 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisOptions.java @@ -25,7 +25,7 @@ /** * Options that affect the mechanism of analysis. These are distinct from {@link * com.google.devtools.build.lib.analysis.config.BuildOptions}, which affect the value of a - * BuildConfiguration. + * BuildConfigurationValue. */ public class AnalysisOptions extends OptionsBase { @Option( diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java index 7be2f31b470b7f..a796ea92c02bb1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisRootCauseEvent.java @@ -16,7 +16,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.buildeventstream.BuildEvent; import com.google.devtools.build.lib.buildeventstream.BuildEventContext; import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil; @@ -35,12 +35,12 @@ * cause. It also allows UIs to collate errors by root cause. */ public class AnalysisRootCauseEvent implements BuildEventWithConfiguration { - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private final Label label; private final String errorMessage; public AnalysisRootCauseEvent( - @Nullable BuildConfiguration configuration, Label label, String errorMessage) { + @Nullable BuildConfigurationValue configuration, Label label, String errorMessage) { this.configuration = configuration; this.label = label; this.errorMessage = errorMessage; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java index 872956f521dc1e..9f79dc3a14a6ea 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisUtils.java @@ -19,8 +19,8 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.common.collect.Multimap; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver.TopLevelTargetsAndConfigsResult; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; @@ -56,7 +56,7 @@ private AnalysisUtils() { * it returns the value of the stamp attribute, or of the stamp option if the attribute value is * -1. */ - public static boolean isStampingEnabled(RuleContext ruleContext, BuildConfiguration config) { + public static boolean isStampingEnabled(RuleContext ruleContext, BuildConfigurationValue config) { if (config.isToolConfiguration()) { return false; } @@ -180,7 +180,7 @@ public static TopLevelTargetsAndConfigsResult getTargetsWithConfigs( // We use a hash set here to remove duplicate nodes; this can happen for input files and package // groups. LinkedHashSet nodes = new LinkedHashSet<>(targets.size()); - for (BuildConfiguration config : configurations.getTargetConfigurations()) { + for (BuildConfigurationValue config : configurations.getTargetConfigurations()) { for (Target target : targets) { nodes.add(new TargetAndConfiguration(target, config)); } @@ -188,16 +188,17 @@ public static TopLevelTargetsAndConfigsResult getTargetsWithConfigs( // We'll get the configs from ConfigurationsCollector#getConfigurations, which gets // configurations for deps including transitions. - Multimap asDeps = targetsToDeps(nodes, ruleClassProvider); + Multimap asDeps = + targetsToDeps(nodes, ruleClassProvider); return ConfigurationResolver.getConfigurationsFromExecutor( nodes, asDeps, eventHandler, configurationsCollector); } @VisibleForTesting - public static Multimap targetsToDeps( + public static Multimap targetsToDeps( Collection nodes, ConfiguredRuleClassProvider ruleClassProvider) { - Multimap asDeps = ArrayListMultimap.create(); + Multimap asDeps = ArrayListMultimap.create(); for (TargetAndConfiguration targetAndConfig : nodes) { ConfigurationTransition transition = TransitionResolver.evaluateTransition( diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java index f5796fa1516cf9..740a074878b361 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.buildeventstream.BuildEvent; import com.google.devtools.build.lib.buildeventstream.BuildEventContext; import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil; @@ -30,10 +30,10 @@ public class AspectConfiguredEvent implements BuildEventWithConfiguration { private final Label target; private final String aspect; - private final Collection configurations; + private final Collection configurations; AspectConfiguredEvent( - Label target, String aspect, Collection configurations) { + Label target, String aspect, Collection configurations) { this.configurations = configurations; this.target = target; this.aspect = aspect; @@ -42,7 +42,7 @@ public class AspectConfiguredEvent implements BuildEventWithConfiguration { @Override public Collection getConfigurations() { ImmutableList.Builder builder = new ImmutableList.Builder<>(); - for (BuildConfiguration config : configurations) { + for (BuildConfigurationValue config : configurations) { if (config != null) { builder.add(config.toBuildEvent()); } else { @@ -60,7 +60,7 @@ public BuildEventId getEventId() { @Override public Collection getChildrenEvents() { ImmutableList.Builder childrenBuilder = ImmutableList.builder(); - for (BuildConfiguration config : configurations) { + for (BuildConfigurationValue config : configurations) { if (config != null) { childrenBuilder.add(BuildEventIdUtil.targetCompleted(target, config.getEventId())); } else { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BUILD b/src/main/java/com/google/devtools/build/lib/analysis/BUILD index 9a29547ec6ff1d..4098ab5c123f9d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD @@ -408,7 +408,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/skyframe:aspect_creation_exception", "//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe:build_info_collection_value", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key", @@ -614,7 +614,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/pkgcache", "//src/main/java/com/google/devtools/build/lib/profiler", "//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key", "//src/main/java/com/google/devtools/build/lib/skyframe:coverage_report_value", "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster", @@ -683,7 +683,7 @@ java_library( ":config/config_matching_provider", ":transitive_info_collection", "//src/main/java/com/google/devtools/build/lib/cmdline", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/net/starlark/java/eval", "//third_party:guava", "//third_party:jsr305", @@ -1512,7 +1512,7 @@ java_library( java_library( name = "config/build_configuration", srcs = [ - "config/BuildConfiguration.java", + "config/BuildConfigurationValue.java", "config/OutputDirectories.java", ], deps = [ @@ -1533,12 +1533,14 @@ java_library( "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/events", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/starlarkbuildapi", "//src/main/java/com/google/devtools/build/lib/util", "//src/main/java/com/google/devtools/build/lib/util:os", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment", + "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", "//src/main/java/net/starlark/java/annot", "//src/main/protobuf:failure_details_java_proto", "//third_party:guava", @@ -2072,7 +2074,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/packages", "//src/main/java/com/google/devtools/build/lib/pkgcache", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/protobuf:failure_details_java_proto", "//third_party:auto_value", "//third_party:guava", diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java index 861206b86c550e..1b7fb7e9c840a0 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BaseRuleClasses.java @@ -29,7 +29,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.HostTransition; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.analysis.constraints.ConstraintConstants; @@ -121,7 +121,7 @@ public boolean resolvableWithRawAttributes() { @SerializationConstant @AutoCodec.VisibleForSerialization @VisibleForTesting static final LabelListLateBoundDefault ACTION_LISTENER = LabelListLateBoundDefault.fromTargetConfiguration( - BuildConfiguration.class, + BuildConfigurationValue.class, (rule, attributes, configuration) -> configuration.getActionListeners()); public static final String DEFAULT_COVERAGE_SUPPORT_VALUE = "//tools/test:coverage_support"; @@ -152,13 +152,13 @@ public static LabelLateBoundDefault coverageReportGeneratorAt TestConfiguration.class, defaultValue, COVERAGE_REPORT_GENERATOR_CONFIGURATION_RESOLVER); } - public static LabelLateBoundDefault getCoverageOutputGeneratorLabel() { + public static LabelLateBoundDefault getCoverageOutputGeneratorLabel() { return LabelLateBoundDefault.fromTargetConfiguration( - BuildConfiguration.class, null, COVERAGE_OUTPUT_GENERATOR_RESOLVER); + BuildConfigurationValue.class, null, COVERAGE_OUTPUT_GENERATOR_RESOLVER); } @SerializationConstant @AutoCodec.VisibleForSerialization - static final Resolver COVERAGE_OUTPUT_GENERATOR_RESOLVER = + static final Resolver COVERAGE_OUTPUT_GENERATOR_RESOLVER = (rule, attributes, configuration) -> { if (configuration.isCodeCoverageEnabled()) { return Label.parseAbsoluteUnchecked(DEFAULT_COVERAGE_OUTPUT_GENERATOR_VALUE); @@ -172,7 +172,7 @@ public static LabelLateBoundDefault getCoverageOutputGenerat @SerializationConstant @AutoCodec.VisibleForSerialization public static final LabelLateBoundDefault RUN_UNDER = LabelLateBoundDefault.fromTargetConfiguration( - BuildConfiguration.class, + BuildConfigurationValue.class, null, (rule, attributes, configuration) -> { RunUnder runUnder = configuration.getRunUnder(); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java index ea261a9ad2de5d..749a8d02d2e4a1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java @@ -36,8 +36,8 @@ import com.google.devtools.build.lib.actions.ArtifactFactory; import com.google.devtools.build.lib.actions.PackageRoots; import com.google.devtools.build.lib.actions.TotalAndConfiguredTargetOnlyMetric; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver.TopLevelTargetsAndConfigsResult; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; @@ -75,7 +75,7 @@ import com.google.devtools.build.lib.skyframe.AspectKeyCreator; import com.google.devtools.build.lib.skyframe.AspectKeyCreator.AspectKey; import com.google.devtools.build.lib.skyframe.AspectKeyCreator.TopLevelAspectsKey; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey; import com.google.devtools.build.lib.skyframe.CoverageReportValue; import com.google.devtools.build.lib.skyframe.PrepareAnalysisPhaseValue; @@ -117,7 +117,7 @@ * build. * *

    Targets are implemented by the {@link Target} hierarchy in the {@code lib.packages} code. - * Configurations are implemented by {@link BuildConfiguration}. The pair of these together is + * Configurations are implemented by {@link BuildConfigurationValue}. The pair of these together is * represented by an instance of class {@link ConfiguredTarget}; this is the root of a hierarchy * with different implementations for each kind of target: source file, derived file, rules, etc. * @@ -255,7 +255,7 @@ public AnalysisResult update( new MakeEnvironmentEvent( configurations.getTargetConfigurations().get(0).getMakeEnvironment())); } - for (BuildConfiguration targetConfig : configurations.getTargetConfigurations()) { + for (BuildConfigurationValue targetConfig : configurations.getTargetConfigurations()) { eventBus.post(targetConfig.toBuildEvent()); } @@ -263,7 +263,7 @@ public AnalysisResult update( topLevelTargetsWithConfigsResult.getTargetsAndConfigs(); // Report the generated association of targets to configurations - Multimap byLabel = ArrayListMultimap.create(); + Multimap byLabel = ArrayListMultimap.create(); for (TargetAndConfiguration pair : topLevelTargetsWithConfigs) { byLabel.put(pair.getLabel(), pair.getConfiguration()); } @@ -332,12 +332,12 @@ public AnalysisResult update( } } - Multimap, BuildConfiguration> aspectConfigurations = + Multimap, BuildConfigurationValue> aspectConfigurations = ArrayListMultimap.create(); ImmutableList aspectClasses = aspectClassesBuilder.build(); ImmutableList.Builder aspectsKeys = ImmutableList.builder(); for (TargetAndConfiguration targetSpec : topLevelTargetsWithConfigs) { - BuildConfiguration configuration = targetSpec.getConfiguration(); + BuildConfigurationValue configuration = targetSpec.getConfiguration(); for (AspectClass aspectClass : aspectClasses) { aspectConfigurations.put( Pair.of(targetSpec.getLabel(), aspectClass.getName()), configuration); @@ -360,13 +360,12 @@ public AnalysisResult update( getArtifactFactory().noteAnalysisStarting(); SkyframeAnalysisResult skyframeAnalysisResult; try { - Supplier> configurationLookupSupplier = + Supplier> configurationLookupSupplier = () -> { - Map result = new HashMap<>(); + Map result = new HashMap<>(); for (TargetAndConfiguration node : topLevelTargetsWithConfigs) { if (node.getConfiguration() != null) { - result.put( - BuildConfigurationValue.key(node.getConfiguration()), node.getConfiguration()); + result.put(node.getConfiguration().getKey(), node.getConfiguration()); } } return result; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java index aa53a09c8ec4e1..f43bbdf8689438 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java @@ -29,7 +29,7 @@ import com.google.devtools.build.lib.actions.MiddlemanFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.events.StoredEventHandler; import com.google.devtools.build.lib.packages.Target; @@ -379,7 +379,7 @@ private WorkspaceStatusValue getWorkspaceStatusValue() throws InterruptedExcepti @Override public ImmutableList getBuildInfo( - boolean stamp, BuildInfoKey key, BuildConfiguration config) throws InterruptedException { + boolean stamp, BuildInfoKey key, BuildConfigurationValue config) throws InterruptedException { BuildInfoCollectionValue collectionValue = (BuildInfoCollectionValue) skyframeEnv.getValue(BuildInfoCollectionValue.key(key, config)); if (collectionValue == null) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java index 2bf73e6d8cd553..428e764dda7ff9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationMakeVariableContext.java @@ -19,7 +19,7 @@ import com.google.common.collect.Streams; import com.google.devtools.build.lib.analysis.MakeVariableSupplier.MapBackedMakeVariableSupplier; import com.google.devtools.build.lib.analysis.MakeVariableSupplier.TemplateVariableInfoBackedMakeVariableSupplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException; import com.google.devtools.build.lib.analysis.stringtemplate.TemplateContext; import com.google.devtools.build.lib.packages.Package; @@ -68,14 +68,14 @@ private static ImmutableList getRuleTemplateVariableProvid ImmutableList.of("toolchains", ":cc_toolchain", "$toolchains"); public ConfigurationMakeVariableContext( - RuleContext ruleContext, Package pkg, BuildConfiguration configuration) { + RuleContext ruleContext, Package pkg, BuildConfigurationValue configuration) { this(ruleContext, pkg, configuration, ImmutableList.of()); } public ConfigurationMakeVariableContext( RuleContext ruleContext, Package pkg, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Iterable makeVariableSuppliers) { this( getRuleTemplateVariableProviders(ruleContext, DEFAULT_MAKE_VARIABLE_ATTRIBUTES), @@ -87,7 +87,7 @@ public ConfigurationMakeVariableContext( private ConfigurationMakeVariableContext( ImmutableList ruleTemplateVariableProviders, Package pkg, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Iterable extraMakeVariableSuppliers) { this.allMakeVariableSuppliers = ImmutableList.builder() diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java index 291673307705f1..666c109a51576d 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfigurationsResult.java @@ -15,7 +15,7 @@ import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.Multimap; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.events.ExtendedEventHandler; @@ -24,11 +24,11 @@ * registers if an error was recorded. */ public class ConfigurationsResult { - private final Multimap configurations; + private final Multimap configurations; private final boolean hasError; private ConfigurationsResult( - Multimap configurations, boolean hasError) { + Multimap configurations, boolean hasError) { this.configurations = configurations; this.hasError = hasError; } @@ -37,7 +37,7 @@ public boolean hasError() { return hasError; } - public Multimap getConfigurationMap() { + public Multimap getConfigurationMap() { return configurations; } @@ -47,11 +47,11 @@ public static Builder newBuilder() { /** Builder for {@link ConfigurationsResult} */ public static class Builder { - private final Multimap configurations = + private final Multimap configurations = ArrayListMultimap.create(); private boolean hasError = false; - public void put(DependencyKey key, BuildConfiguration value) { + public void put(DependencyKey key, BuildConfigurationValue value) { configurations.put(key, value); } 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 150a8d351664ea..bee3bc7be8655b 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 @@ -29,7 +29,7 @@ import com.google.devtools.build.lib.analysis.RuleContext.PrerequisiteValidator; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.Fragment; import com.google.devtools.build.lib.analysis.config.FragmentClassSet; @@ -158,7 +158,7 @@ public static final class Builder implements RuleDefinitionEnvironment { private final ImmutableList.Builder symlinkDefinitions = ImmutableList.builder(); private final Set reservedActionMnemonics = new TreeSet<>(); - private BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider = + private BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider = (BuildOptions options) -> ActionEnvironment.EMPTY; private ConstraintSemantics constraintSemantics = new RuleContextConstraintSemantics(); @@ -327,7 +327,7 @@ public Builder addReservedActionMnemonic(String mnemonic) { } public Builder setActionEnvironmentProvider( - BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider) { + BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider) { this.actionEnvironmentProvider = actionEnvironmentProvider; return this; } @@ -649,7 +649,7 @@ public Builder setNetworkAllowlistForTests(Label allowlist) { private final ImmutableSet reservedActionMnemonics; - private final BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider; + private final BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider; private final ImmutableMap> configurationFragmentMap; @@ -682,7 +682,7 @@ private ConfiguredRuleClassProvider( ImmutableList starlarkBootstraps, ImmutableList symlinkDefinitions, ImmutableSet reservedActionMnemonics, - BuildConfiguration.ActionEnvironmentProvider actionEnvironmentProvider, + BuildConfigurationValue.ActionEnvironmentProvider actionEnvironmentProvider, ConstraintSemantics constraintSemantics, ThirdPartyLicenseExistencePolicy thirdPartyLicenseExistencePolicy, @Nullable Label networkAllowlistForTests) { @@ -914,7 +914,7 @@ public ImmutableSet getReservedActionMnemonics() { return reservedActionMnemonics; } - public BuildConfiguration.ActionEnvironmentProvider getActionEnvironmentProvider() { + public BuildConfigurationValue.ActionEnvironmentProvider getActionEnvironmentProvider() { return actionEnvironmentProvider; } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java index b01b14fbd9e6cd..c8c600ab4d557b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTarget.java @@ -18,14 +18,15 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import javax.annotation.Nullable; import net.starlark.java.eval.Structure; /** * A {@link ConfiguredTarget} is conceptually a {@link TransitiveInfoCollection} coupled with the * {@link com.google.devtools.build.lib.packages.Target} and {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration} objects it was created from. + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue} objects it was created + * from. * *

    This interface is supposed to only be used in {@link BuildView} and above. In particular, rule * implementations should not be able to access the {@link ConfiguredTarget} objects associated with @@ -46,15 +47,16 @@ default String getConfigurationChecksum() { } /** - * Returns the {@link BuildConfigurationValue.Key} naming the {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration} for which this configured - * target is defined. Configuration is defined for all configured targets with exception of {@link + * Returns the {@link BuildConfigurationKey} naming the {@link + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue} for which this + * configured target is defined. Configuration is defined for all configured targets with + * exception of {@link * com.google.devtools.build.lib.analysis.configuredtargets.InputFileConfiguredTarget} and {@link * com.google.devtools.build.lib.analysis.configuredtargets.PackageGroupConfiguredTarget} for * which it is always null. */ @Nullable - BuildConfigurationValue.Key getConfigurationKey(); + BuildConfigurationKey getConfigurationKey(); /** Returns keys for a legacy Starlark provider. */ @Override diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java index d11739ae2b44b8..a4d52b32050ca2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java @@ -29,7 +29,7 @@ import com.google.devtools.build.lib.actions.FailAction; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.analysis.ExecGroupCollection.InvalidExecGroupException; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.Fragment; import com.google.devtools.build.lib.analysis.config.RequiredFragmentsUtil; @@ -174,8 +174,8 @@ public ConfiguredTarget createConfiguredTarget( AnalysisEnvironment analysisEnvironment, ArtifactFactory artifactFactory, Target target, - BuildConfiguration config, - BuildConfiguration hostConfig, + BuildConfigurationValue config, + BuildConfigurationValue hostConfig, ConfiguredTargetKey configuredTargetKey, OrderedSetMultimap prerequisiteMap, ConfigConditions configConditions, @@ -275,8 +275,8 @@ public ConfiguredTarget createConfiguredTarget( private ConfiguredTarget createRule( AnalysisEnvironment env, Rule rule, - BuildConfiguration configuration, - BuildConfiguration hostConfiguration, + BuildConfigurationValue configuration, + BuildConfigurationValue hostConfiguration, ConfiguredTargetKey configuredTargetKey, OrderedSetMultimap prerequisiteMap, ConfigConditions configConditions, @@ -484,8 +484,8 @@ public ConfiguredAspect createAspect( OrderedSetMultimap prerequisiteMap, ConfigConditions configConditions, @Nullable ResolvedToolchainContext toolchainContext, - BuildConfiguration aspectConfiguration, - BuildConfiguration hostConfiguration, + BuildConfigurationValue aspectConfiguration, + BuildConfigurationValue hostConfiguration, AspectKeyCreator.AspectKey aspectKey) throws InterruptedException, ActionConflictException, InvalidExecGroupException { RuleContext ruleContext = diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java index f95810383ee03f..25f62574562f12 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Dependency.java @@ -16,7 +16,7 @@ import com.google.auto.value.AutoValue; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.AspectDescriptor; @@ -46,7 +46,7 @@ public abstract static class Builder { public abstract Builder setLabel(Label label); /** Sets the configuration intended for this dependency. */ - public abstract Builder setConfiguration(BuildConfiguration configuration); + public abstract Builder setConfiguration(BuildConfigurationValue configuration); /** Explicitly set the configuration for this dependency to null. */ public Builder withNullConfiguration() { @@ -92,7 +92,7 @@ public Dependency build() { protected abstract Label getLabel(); @Nullable - protected abstract BuildConfiguration getConfiguration(); + protected abstract BuildConfigurationValue getConfiguration(); protected abstract AspectCollection getAspects(); @@ -120,7 +120,7 @@ public static Builder builder() { /** Returns the explicit configuration intended for this dependency. */ @Nullable - public abstract BuildConfiguration getConfiguration(); + public abstract BuildConfigurationValue getConfiguration(); /** * Returns the set of aspects which should be evaluated and combined with the configured target @@ -132,7 +132,7 @@ public static Builder builder() { /** Returns the configuration an aspect should be evaluated with. */ @Nullable - public BuildConfiguration getAspectConfiguration(AspectDescriptor aspect) { + public BuildConfigurationValue getAspectConfiguration(AspectDescriptor aspect) { return getConfiguration(); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java index 45554ad1ed5e44..6802a6e741b4d9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/DependencyResolver.java @@ -24,7 +24,7 @@ import com.google.devtools.build.lib.analysis.AspectCollection.AspectCycleOnPathException; import com.google.devtools.build.lib.analysis.DependencyKind.AttributeDependencyKind; import com.google.devtools.build.lib.analysis.DependencyKind.ToolchainDependencyKind; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory; import com.google.devtools.build.lib.analysis.config.Fragment; @@ -81,7 +81,7 @@ public abstract class DependencyResolver { */ // TODO(#10523): Remove this when the migration period for toolchain transitions has ended. public static boolean shouldUseToolchainTransition( - @Nullable BuildConfiguration configuration, Target target) { + @Nullable BuildConfigurationValue configuration, Target target) { return shouldUseToolchainTransition( configuration, target instanceof Rule ? (Rule) target : null); } @@ -92,7 +92,7 @@ public static boolean shouldUseToolchainTransition( */ // TODO(#10523): Remove this when the migration period for toolchain transitions has ended. public static boolean shouldUseToolchainTransition( - @Nullable BuildConfiguration configuration, @Nullable Rule rule) { + @Nullable BuildConfigurationValue configuration, @Nullable Rule rule) { // Check whether the global incompatible change flag is set. if (configuration != null) { PlatformOptions platformOptions = configuration.getOptions().get(PlatformOptions.class); @@ -181,7 +181,7 @@ public DependencyKey.Builder getDependencyKeyBuilder() { */ public final OrderedSetMultimap dependentNodeMap( TargetAndConfiguration node, - BuildConfiguration hostConfig, + BuildConfigurationValue hostConfig, @Nullable Aspect aspect, ImmutableMap configConditions, @Nullable ToolchainCollection toolchainContexts, @@ -238,7 +238,7 @@ public final OrderedSetMultimap dependentNodeMap( */ public final OrderedSetMultimap dependentNodeMap( TargetAndConfiguration node, - BuildConfiguration hostConfig, + BuildConfigurationValue hostConfig, Iterable aspects, ImmutableMap configConditions, @Nullable ToolchainCollection toolchainContexts, @@ -247,7 +247,7 @@ public final OrderedSetMultimap dependentNodeMap( @Nullable TransitionFactory trimmingTransitionFactory) throws Failure, InterruptedException, InconsistentAspectOrderException { Target target = node.getTarget(); - BuildConfiguration config = node.getConfiguration(); + BuildConfigurationValue config = node.getConfiguration(); OrderedSetMultimap outgoingLabels = OrderedSetMultimap.create(); // TODO(bazel-team): Figure out a way to implement the below (and partiallyResolveDependencies) @@ -313,7 +313,7 @@ public final OrderedSetMultimap dependentNodeMap( */ private OrderedSetMultimap partiallyResolveDependencies( - BuildConfiguration config, + BuildConfigurationValue config, OrderedSetMultimap outgoingLabels, @Nullable Rule fromRule, @Nullable ConfiguredAttributeMapper attributeMap, @@ -461,7 +461,7 @@ public final OrderedSetMultimap dependentNodeMap( private OrderedSetMultimap fullyResolveDependencies( OrderedSetMultimap partiallyResolvedDeps, Map targetMap, - BuildConfiguration originalConfiguration, + BuildConfigurationValue originalConfiguration, @Nullable TransitionFactory trimmingTransitionFactory) throws InconsistentAspectOrderException { OrderedSetMultimap outgoingEdges = OrderedSetMultimap.create(); @@ -514,14 +514,14 @@ public Location getLocation() { private void visitRule( TargetAndConfiguration node, - BuildConfiguration hostConfig, + BuildConfigurationValue hostConfig, Iterable aspects, ConfiguredAttributeMapper attributeMap, @Nullable ToolchainCollection toolchainContexts, OrderedSetMultimap outgoingLabels) throws Failure { Preconditions.checkArgument(node.getTarget() instanceof Rule, node); - BuildConfiguration ruleConfig = Preconditions.checkNotNull(node.getConfiguration(), node); + BuildConfigurationValue ruleConfig = Preconditions.checkNotNull(node.getConfiguration(), node); Rule rule = (Rule) node.getTarget(); try { @@ -589,8 +589,8 @@ private void resolveAttributes( Rule rule, ConfiguredAttributeMapper attributeMap, Iterable aspects, - BuildConfiguration ruleConfig, - BuildConfiguration hostConfig) { + BuildConfigurationValue ruleConfig, + BuildConfigurationValue hostConfig) { for (AttributeDependencyKind dependencyKind : getAttributes(rule, aspects)) { Attribute attribute = dependencyKind.getAttribute(); if (!attribute.getCondition().apply(attributeMap) @@ -634,8 +634,8 @@ private void resolveAttribute( OrderedSetMultimap outgoingLabels, Rule rule, ConfiguredAttributeMapper attributeMap, - BuildConfiguration ruleConfig, - BuildConfiguration hostConfig) { + BuildConfigurationValue ruleConfig, + BuildConfigurationValue hostConfig) { T attributeValue = null; if (attribute.isImplicit()) { // Since the attributes that come from aspects do not appear in attributeMap, we have to get @@ -679,18 +679,18 @@ public static Object resolveLateBoundDefault( Rule rule, AttributeMap attributeMap, Attribute attribute, - BuildConfiguration ruleConfig, - BuildConfiguration hostConfig) { + BuildConfigurationValue ruleConfig, + BuildConfigurationValue hostConfig) { Preconditions.checkState(!attribute.getTransitionFactory().isSplit()); @SuppressWarnings("unchecked") LateBoundDefault lateBoundDefault = (LateBoundDefault) attribute.getLateBoundDefault(); - BuildConfiguration attributeConfig = + BuildConfigurationValue attributeConfig = lateBoundDefault.useHostConfiguration() ? hostConfig : ruleConfig; Class fragmentClass = lateBoundDefault.getFragmentClass(); // TODO(b/65746853): remove this when nothing uses it anymore - if (BuildConfiguration.class.equals(fragmentClass)) { + if (BuildConfigurationValue.class.equals(fragmentClass)) { return lateBoundDefault.resolve(rule, attributeMap, fragmentClass.cast(attributeConfig)); } if (Void.class.equals(fragmentClass)) { @@ -735,7 +735,7 @@ private void addExplicitDeps( private static void collectPropagatingAspects( ImmutableList aspectsPath, String attributeName, - BuildConfiguration config, + BuildConfigurationValue config, @Nullable AspectClass aspectOwningAttribute, ImmutableList.Builder allFilteredAspects) { int aspectsNum = aspectsPath.size(); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java index 798af73ac412b3..811a73182b402e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/EmptyConfiguredTarget.java @@ -21,13 +21,13 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.Provider; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import javax.annotation.Nullable; /** A configured target that is empty. */ @Immutable public class EmptyConfiguredTarget extends AbstractConfiguredTarget { - public EmptyConfiguredTarget(Label label, BuildConfigurationValue.Key configurationKey) { + public EmptyConfiguredTarget(Label label, BuildConfigurationKey configurationKey) { super(label, configurationKey, NestedSetBuilder.emptySet(Order.STABLE_ORDER)); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java b/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java index ebe3cc23677126..85f4006d270748 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/EventHandlingErrorReporter.java @@ -13,7 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.analysis; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.packages.Attribute; @@ -105,7 +105,7 @@ private String completeAttributeMessage(String attrName, String message) { protected abstract Label getLabel(); - protected abstract BuildConfiguration getConfiguration(); + protected abstract BuildConfigurationValue getConfiguration(); protected abstract Location getRuleLocation(); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java index f8af04d9d03b0f..c846d3f8c63a95 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ExtraActionUtils.java @@ -18,7 +18,7 @@ import com.google.common.collect.Multimap; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.extra.ExtraActionMapProvider; import com.google.devtools.build.lib.analysis.extra.ExtraActionSpec; import com.google.devtools.build.lib.cmdline.Label; @@ -41,7 +41,7 @@ class ExtraActionUtils { static ExtraActionArtifactsProvider createExtraActionProvider( Set actionsWithoutExtraAction, RuleContext ruleContext) throws InterruptedException { - BuildConfiguration configuration = ruleContext.getConfiguration(); + BuildConfigurationValue configuration = ruleContext.getConfiguration(); if (configuration.isToolConfiguration()) { return ExtraActionArtifactsProvider.EMPTY; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java index d6ced49133b863..dc4de8a03b8647 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProvider.java @@ -26,7 +26,8 @@ public interface LicensesProvider extends TransitiveInfoProvider { * The set of label - license associations in the transitive closure. * *

    Always returns an empty set if {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration#checkLicenses()} is false. + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#checkLicenses()} is + * false. */ NestedSet getTransitiveLicenses(); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java index 36320ed5b2a336..98d087632ebe48 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/LicensesProviderImpl.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.analysis; import com.google.common.collect.ListMultimap; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -49,7 +49,7 @@ public static LicensesProvider of(RuleContext ruleContext) { } NestedSetBuilder builder = NestedSetBuilder.linkOrder(); - BuildConfiguration configuration = ruleContext.getConfiguration(); + BuildConfigurationValue configuration = ruleContext.getConfiguration(); Rule rule = ruleContext.getRule(); AttributeMap attributes = ruleContext.attributes(); License toolOutputLicense = rule.getToolOutputLicense(attributes); @@ -95,7 +95,8 @@ public static LicensesProvider of(RuleContext ruleContext) { return new LicensesProviderImpl(builder.build(), outputLicenses); } - private static boolean useOutputLicenses(Attribute attribute, BuildConfiguration configuration) { + private static boolean useOutputLicenses( + Attribute attribute, BuildConfigurationValue configuration) { return configuration.isToolConfiguration() || attribute.useOutputLicenses(); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java index 759110d93046fa..8fc5f9925879c4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleConfiguredTargetFactory.java @@ -14,9 +14,10 @@ package com.google.devtools.build.lib.analysis; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.RuleClass; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; /** * A shortcut class to the appropriate specialization of {@code RuleClass.ConfiguredTargetFactory}. @@ -26,12 +27,11 @@ *

    Actions (i.e. commands that are run during the build) are created by configured targets (see * {@link ConfiguredTarget}), which are a pair of a {@link * com.google.devtools.build.lib.cmdline.Label} (e.g. //src:bazel) and a {@link - * com.google.devtools.build.lib.skyframe.BuildConfigurationValue.Key}, which is a key for a {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration}, which is a blob of data that - * contains extra information about how the target should be built (for example, for which platform - * or with which C++ preprocessor definitions). Accordingly, a target can give rise to multiple - * configured targets, for example, if it needs to be built both for the host and the target - * configuration. + * BuildConfigurationKey}, which is a key for a {@link BuildConfigurationValue}, which is a blob of + * data that contains extra information about how the target should be built (for example, for which + * platform or with which C++ preprocessor definitions). Accordingly, a target can give rise to + * multiple configured targets, for example, if it needs to be built both for the host and the + * target configuration. * *

    The process of creating the appropriate {@link com.google.devtools.build.lib.actions.Action}s * for a configured target is called "analysis". The analysis of a configured target is composed of @@ -129,5 +129,5 @@ public interface RuleConfiguredTargetFactory default void addRuleImplSpecificRequiredConfigFragments( RequiredConfigFragmentsProvider.Builder requiredFragments, AttributeMap attributes, - BuildConfiguration configuration) {} + BuildConfigurationValue configuration) {} } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java index 88338bd7f1d696..7e8d23d970a8b7 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java @@ -46,7 +46,7 @@ import com.google.devtools.build.lib.analysis.ExecGroupCollection.InvalidExecGroupException; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.Fragment; @@ -158,7 +158,7 @@ void validate( private final ImmutableSet enabledFeatures; private final ImmutableSet disabledFeatures; private final String ruleClassNameForLogging; - private final BuildConfiguration hostConfiguration; + private final BuildConfigurationValue hostConfiguration; private final ConfigurationFragmentPolicy configurationFragmentPolicy; private final ConfiguredRuleClassProvider ruleClassProvider; private final RuleErrorConsumer reporter; @@ -362,7 +362,7 @@ public ImmutableMap getConfigConditions() { } /** Returns the host configuration for this rule. */ - public BuildConfiguration getHostConfiguration() { + public BuildConfigurationValue getHostConfiguration() { return hostConfiguration; } @@ -456,8 +456,8 @@ private T getFragment( String name, String additionalErrorMessage, ConfigurationTransition transition) { - // TODO(bazel-team): The fragments can also be accessed directly through BuildConfiguration. - // Can we lock that down somehow? + // TODO(bazel-team): The fragments can also be accessed directly through + // BuildConfigurationValue. Can we lock that down somehow? Preconditions.checkArgument( isLegalFragment(fragment, transition), "%s has to declare '%s' as a required fragment in %s configuration in order to access" @@ -512,7 +512,7 @@ public boolean isLegalFragment(Class fragment) { return isLegalFragment(fragment, NoTransition.INSTANCE); } - private BuildConfiguration getConfiguration(ConfigurationTransition transition) { + private BuildConfigurationValue getConfiguration(ConfigurationTransition transition) { return transition.isHostTransition() ? hostConfiguration : getConfiguration(); } @@ -531,7 +531,7 @@ public ImmutableList getBuildInfo(BuildInfoKey key) throws Interrupted public static ActionOwner createActionOwner( Rule rule, ImmutableList aspectDescriptors, - BuildConfiguration configuration, + BuildConfigurationValue configuration, ImmutableMap execProperties, @Nullable PlatformInfo executionPlatform) { return ActionOwner.create( @@ -714,7 +714,7 @@ public Artifact.DerivedArtifact getPackageRelativeArtifact( /** * Same as {@link #getPackageRelativeArtifact(PathFragment, ArtifactRoot)} but includes the option * option to use a content-based path for this artifact (see {@link - * BuildConfiguration#useContentBasedOutputPaths()}). + * BuildConfigurationValue#useContentBasedOutputPaths()}). */ private Artifact.DerivedArtifact getPackageRelativeArtifact( PathFragment relative, ArtifactRoot root, boolean contentBasedPath) { @@ -732,7 +732,7 @@ public Artifact getPackageRelativeArtifact(String relative, ArtifactRoot root) { /** * Same as {@link #getPackageRelativeArtifact(String, ArtifactRoot)} but includes the option to * use a content-based path for this artifact (see {@link - * BuildConfiguration#useContentBasedOutputPaths()}). + * BuildConfigurationValue#useContentBasedOutputPaths()}). */ private Artifact getPackageRelativeArtifact( String relative, ArtifactRoot root, boolean contentBasedPath) { @@ -762,7 +762,7 @@ public Artifact.DerivedArtifact getDerivedArtifact( /** * Same as {@link #getDerivedArtifact(PathFragment, ArtifactRoot)} but includes the option to use * a content-based path for this artifact (see {@link - * BuildConfiguration#useContentBasedOutputPaths()}). + * BuildConfigurationValue#useContentBasedOutputPaths()}). */ public Artifact.DerivedArtifact getDerivedArtifact( PathFragment rootRelativePath, ArtifactRoot root, boolean contentBasedPath) { @@ -923,15 +923,16 @@ public ConfiguredTargetAndData getPrerequisiteConfiguredTargetAndData(String att /** * For a given attribute, returns all declared provider provided by targets of that attribute. - * Each declared provider is keyed by the {@link BuildConfiguration} under which the provider was - * created. + * Each declared provider is keyed by the {@link BuildConfigurationValue} under which the provider + * was created. */ public - ImmutableListMultimap getPrerequisitesByConfiguration( + ImmutableListMultimap getPrerequisitesByConfiguration( String attributeName, BuiltinProvider provider) { checkAttributeIsDependency(attributeName); List ctatCollection = getPrerequisiteConfiguredTargets(attributeName); - ImmutableListMultimap.Builder result = ImmutableListMultimap.builder(); + ImmutableListMultimap.Builder result = + ImmutableListMultimap.builder(); for (ConfiguredTargetAndData prerequisite : ctatCollection) { C prerequisiteProvider = prerequisite.getConfiguredTarget().get(provider); if (prerequisiteProvider != null) { @@ -944,13 +945,13 @@ ImmutableListMultimap getPrerequisitesByConfiguration( /** * For a given attribute, returns all {@link TransitiveInfoCollection}s provided by targets of * that attribute. Each {@link TransitiveInfoCollection} is keyed by the {@link - * BuildConfiguration} under which the collection was created. + * BuildConfigurationValue} under which the collection was created. */ - public ImmutableListMultimap + public ImmutableListMultimap getPrerequisitesByConfiguration(String attributeName) { checkAttributeIsDependency(attributeName); List ctatCollection = getPrerequisiteConfiguredTargets(attributeName); - ImmutableListMultimap.Builder result = + ImmutableListMultimap.Builder result = ImmutableListMultimap.builder(); for (ConfiguredTargetAndData prerequisite : ctatCollection) { result.put(prerequisite.getConfiguration(), prerequisite.getConfiguredTarget()); @@ -1472,7 +1473,7 @@ public Artifact getImplicitOutputArtifact(ImplicitOutputsFunction function) /** * Same as {@link #getImplicitOutputArtifact(ImplicitOutputsFunction)} but includes the option to * use a content-based path for this artifact (see {@link - * BuildConfiguration#useContentBasedOutputPaths()}). + * BuildConfigurationValue#useContentBasedOutputPaths()}). */ public Artifact getImplicitOutputArtifact( ImplicitOutputsFunction function, boolean contentBasedPath) throws InterruptedException { @@ -1496,7 +1497,7 @@ public Artifact getImplicitOutputArtifact(String path) { /** * Same as {@link #getImplicitOutputArtifact(String)} but includes the option to use a a * content-based path for this artifact (see {@link - * BuildConfiguration#useContentBasedOutputPaths()}). + * BuildConfigurationValue#useContentBasedOutputPaths()}). */ // TODO(bazel-team): Consider removing contentBasedPath stuff, which is unused as of 18 months // after its introduction in cl/252148134. @@ -1630,10 +1631,10 @@ public static final class Builder implements RuleErrorConsumer { private final AnalysisEnvironment env; private final Target target; private final ImmutableList aspects; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private final RuleErrorConsumer reporter; private ConfiguredRuleClassProvider ruleClassProvider; - private BuildConfiguration hostConfiguration; + private BuildConfigurationValue hostConfiguration; private ConfigurationFragmentPolicy configurationFragmentPolicy; private ActionLookupKey actionOwnerSymbol; private OrderedSetMultimap prerequisiteMap; @@ -1651,7 +1652,7 @@ public Builder( AnalysisEnvironment env, Target target, ImmutableList aspects, - BuildConfiguration configuration) { + BuildConfigurationValue configuration) { this.env = Preconditions.checkNotNull(env); this.target = Preconditions.checkNotNull(target); this.aspects = Preconditions.checkNotNull(aspects); @@ -1739,7 +1740,7 @@ public Builder setRuleClassProvider(ConfiguredRuleClassProvider ruleClassProvide return this; } - public Builder setHostConfiguration(BuildConfiguration hostConfiguration) { + public Builder setHostConfiguration(BuildConfigurationValue hostConfiguration) { this.hostConfiguration = hostConfiguration; return this; } @@ -2003,7 +2004,7 @@ private String getRuleClassNameForLogging() { + target.getAssociatedRule().getRuleClass(); } - public BuildConfiguration getConfiguration() { + public BuildConfigurationValue getConfiguration() { return configuration; } @@ -2192,12 +2193,12 @@ private void validateDirectPrerequisite( private static final class ErrorReporter extends EventHandlingErrorReporter implements RuleErrorConsumer { private final Rule rule; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; ErrorReporter( AnalysisEnvironment env, Rule rule, - BuildConfiguration configuration, + BuildConfigurationValue configuration, String ruleClassNameForLogging) { super(ruleClassNameForLogging, env); this.rule = rule; @@ -2229,7 +2230,7 @@ protected Label getLabel() { } @Override - protected BuildConfiguration getConfiguration() { + protected BuildConfigurationValue getConfiguration() { return configuration; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java index d0fe247bccfb05..6fcc0e66a7cbc2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/RunfilesSupport.java @@ -23,7 +23,7 @@ import com.google.devtools.build.lib.analysis.SourceManifestAction.ManifestType; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; import com.google.devtools.build.lib.analysis.actions.SymlinkTreeAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -362,7 +362,7 @@ private static Artifact createRunfilesAction( RUNFILES_DIR_EXT); PathFragment outputManifestPath = runfilesDir.getRelative(OUTPUT_MANIFEST_BASENAME); - BuildConfiguration config = context.getConfiguration(); + BuildConfigurationValue config = context.getConfiguration(); Artifact outputManifest = context.getDerivedArtifact(outputManifestPath, context.getBinDirectory()); context diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java b/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java index c785da410e2bae..1b22abb764b649 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ShToolchain.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.analysis; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.vfs.PathFragment; /** Class to work with the shell toolchain, e.g. get the shell interpreter's path. */ @@ -25,7 +25,7 @@ public final class ShToolchain { * *

    This method checks the configuration's {@link ShellConfiguration} fragment. */ - public static PathFragment getPath(BuildConfiguration config) { + public static PathFragment getPath(BuildConfigurationValue config) { PathFragment result = PathFragment.EMPTY_FRAGMENT; ShellConfiguration configFragment = diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java index ac3d6fa10c5b8e..05bc361268118b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetAndConfiguration.java @@ -14,7 +14,7 @@ package com.google.devtools.build.lib.analysis; import com.google.common.base.Preconditions; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.Target; @@ -28,9 +28,9 @@ @Immutable public final class TargetAndConfiguration { private final Target target; - @Nullable private final BuildConfiguration configuration; + @Nullable private final BuildConfigurationValue configuration; - public TargetAndConfiguration(Target target, @Nullable BuildConfiguration configuration) { + public TargetAndConfiguration(Target target, @Nullable BuildConfigurationValue configuration) { this.target = Preconditions.checkNotNull(target); this.configuration = configuration; } @@ -75,7 +75,7 @@ public Label getLabel() { } @Nullable - public BuildConfiguration getConfiguration() { + public BuildConfigurationValue getConfiguration() { return configuration; } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java index 80132f3467886c..9c54ee9abecf59 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetCompleteEvent.java @@ -28,7 +28,7 @@ import com.google.devtools.build.lib.actions.CompletionContext.ArtifactReceiver; import com.google.devtools.build.lib.actions.EventReportingArtifacts; import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsInOutputGroup; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo; import com.google.devtools.build.lib.analysis.test.TestConfiguration; @@ -161,7 +161,7 @@ private TargetCompleteEvent( this.isTest = isTest; this.announceTargetSummary = announceTargetSummary; this.testTimeoutSeconds = isTest ? getTestTimeoutSeconds(targetAndData) : null; - BuildConfiguration configuration = targetAndData.getConfiguration(); + BuildConfigurationValue configuration = targetAndData.getConfiguration(); this.configEventId = configuration != null ? configuration.getEventId() : BuildEventIdUtil.nullConfigurationId(); this.configurationEvent = configuration != null ? configuration.toBuildEvent() : null; @@ -538,7 +538,7 @@ static ImmutableList toOutputGroupProtos( * category and configuration. */ private static Long getTestTimeoutSeconds(ConfiguredTargetAndData targetAndData) { - BuildConfiguration configuration = targetAndData.getConfiguration(); + BuildConfigurationValue configuration = targetAndData.getConfiguration(); Rule associatedRule = targetAndData.getTarget().getAssociatedRule(); TestTimeout categoricalTimeout = TestTimeout.getTestTimeout(associatedRule); return configuration diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java index 26efabcc52dd65..114e0b8c8150bd 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetConfiguredEvent.java @@ -15,7 +15,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.flogger.GoogleLogger; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.buildeventstream.BuildEvent; import com.google.devtools.build.lib.buildeventstream.BuildEventContext; import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil; @@ -36,9 +36,9 @@ public class TargetConfiguredEvent implements BuildEventWithConfiguration { private static final GoogleLogger logger = GoogleLogger.forEnclosingClass(); private final Target target; - private final Collection configurations; + private final Collection configurations; - TargetConfiguredEvent(Target target, Collection configurations) { + TargetConfiguredEvent(Target target, Collection configurations) { this.configurations = configurations; this.target = target; } @@ -46,7 +46,7 @@ public class TargetConfiguredEvent implements BuildEventWithConfiguration { @Override public Collection getConfigurations() { ImmutableList.Builder builder = new ImmutableList.Builder<>(); - for (BuildConfiguration config : configurations) { + for (BuildConfigurationValue config : configurations) { if (config != null) { builder.add(config.toBuildEvent()); } else { @@ -64,7 +64,7 @@ public BuildEventId getEventId() { @Override public Collection getChildrenEvents() { ImmutableList.Builder childrenBuilder = ImmutableList.builder(); - for (BuildConfiguration config : configurations) { + for (BuildConfigurationValue config : configurations) { if (config != null) { childrenBuilder.add( BuildEventIdUtil.targetCompleted(target.getLabel(), config.getEventId())); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java b/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java index e3042571341658..3227fb0940e707 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/TargetContext.java @@ -19,12 +19,12 @@ import com.google.common.collect.ListMultimap; import com.google.common.collect.Multimaps; import com.google.devtools.build.lib.actions.ActionKeyContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; import com.google.devtools.build.lib.packages.Target; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; import java.util.List; import java.util.Optional; @@ -44,7 +44,7 @@ public class TargetContext { private final AnalysisEnvironment env; private final Target target; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; /** * This only contains prerequisites that are not declared in rule attributes, with the exception @@ -63,7 +63,7 @@ public class TargetContext { TargetContext( AnalysisEnvironment env, Target target, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Set directPrerequisites, NestedSet visibility) { this.env = env; @@ -96,12 +96,12 @@ public Label getLabel() { * guaranteed to be non-null for rules and for output files. */ @Nullable - public BuildConfiguration getConfiguration() { + public BuildConfigurationValue getConfiguration() { return configuration; } - public BuildConfigurationValue.Key getConfigurationKey() { - return BuildConfigurationValue.key(configuration); + public BuildConfigurationKey getConfigurationKey() { + return configuration.getKey(); } public NestedSet getVisibility() { @@ -115,7 +115,7 @@ public NestedSet getVisibility() { */ @Nullable public TransitiveInfoCollection findDirectPrerequisite( - Label label, Optional config) { + Label label, Optional config) { if (directPrerequisites.containsKey(label)) { List prerequisites = directPrerequisites.get(label); // If the config is present, find the prereq with that configuration. Otherwise, return the diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Util.java b/src/main/java/com/google/devtools/build/lib/analysis/Util.java index b2dda41b78e6f7..5484214321f263 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Util.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Util.java @@ -17,7 +17,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.ListMultimap; import com.google.common.collect.Sets; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet; import com.google.devtools.build.lib.packages.AttributeMap; @@ -100,8 +100,8 @@ public static ImmutableSet findImplicitDeps(RuleContext rul if (toolchainContext != null) { // This logic should stay up to date with the dep creation logic in // DependencyResolver#partiallyResolveDependencies. - BuildConfiguration targetConfiguration = ruleContext.getConfiguration(); - BuildConfiguration hostConfiguration = ruleContext.getHostConfiguration(); + BuildConfigurationValue targetConfiguration = ruleContext.getConfiguration(); + BuildConfigurationValue hostConfiguration = ruleContext.getHostConfiguration(); for (Label toolchain : toolchainContext.resolvedToolchainLabels()) { if (DependencyResolver.shouldUseToolchainTransition( targetConfiguration, ruleContext.getRule())) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java index 2461bb3b2d2d34..d284f62ba5f104 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ActionConstructionContext.java @@ -21,7 +21,7 @@ import com.google.devtools.build.lib.actions.ArtifactRoot; import com.google.devtools.build.lib.analysis.AnalysisEnvironment; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction; import com.google.devtools.build.lib.vfs.PathFragment; @@ -58,8 +58,8 @@ public interface ActionConstructionContext { /** Returns the action key context. */ ActionKeyContext getActionKeyContext(); - /** Returns the {@link BuildConfiguration} for which the given rule is analyzed. */ - BuildConfiguration getConfiguration(); + /** Returns the {@link BuildConfigurationValue} for which the given rule is analyzed. */ + BuildConfigurationValue getConfiguration(); /** The current analysis environment. */ AnalysisEnvironment getAnalysisEnvironment(); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java index c3568932536580..43b1a450be1bf1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java @@ -60,7 +60,7 @@ import com.google.devtools.build.lib.actions.extra.SpawnInfo; import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.starlark.Args; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -696,7 +696,7 @@ public SpawnAction build(ActionConstructionContext context) { @VisibleForTesting @CheckReturnValue - public SpawnAction build(ActionOwner owner, BuildConfiguration configuration) { + public SpawnAction build(ActionOwner owner, BuildConfigurationValue configuration) { CommandLines.Builder result = CommandLines.builder(); if (executableArg != null) { result.addSingleArgument(executableArg); @@ -746,7 +746,7 @@ private SpawnAction buildSpawnAction( ActionOwner owner, CommandLines commandLines, CommandLineLimits commandLineLimits, - @Nullable BuildConfiguration configuration, + @Nullable BuildConfigurationValue configuration, ActionEnvironment env) { NestedSet tools = toolsBuilder.build(); @@ -796,7 +796,7 @@ protected SpawnAction createSpawnAction( CommandLineLimits commandLineLimits, boolean isShellCommand, ActionEnvironment env, - @Nullable BuildConfiguration configuration, + @Nullable BuildConfigurationValue configuration, ImmutableMap executionInfo, CharSequence progressMessage, RunfilesSupplier runfilesSupplier, @@ -983,7 +983,7 @@ public Builder setExecutionInfo(Map info) { * action and its value will be "baz", or whatever the corresponding {@code --client_env} flag * specified, respectively. * - * @see {@link BuildConfiguration#getLocalShellEnvironment} + * @see {@link BuildConfigurationValue#getLocalShellEnvironment} */ public Builder useDefaultShellEnvironment() { this.environment = null; diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java index 867f2ddbbe216a..5c45c24b656f3b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/StarlarkAction.java @@ -38,7 +38,7 @@ import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.SpawnResult; import com.google.devtools.build.lib.actions.UserExecException; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -372,7 +372,7 @@ protected SpawnAction createSpawnAction( CommandLineLimits commandLineLimits, boolean isShellCommand, ActionEnvironment env, - @Nullable BuildConfiguration configuration, + @Nullable BuildConfigurationValue configuration, ImmutableMap executionInfo, CharSequence progressMessage, RunfilesSupplier runfilesSupplier, diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java index 645e1f98dde648..14a06ca1511f5c 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeAction.java @@ -24,7 +24,7 @@ import com.google.devtools.build.lib.actions.ActionResult; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.Runfiles; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; @@ -63,7 +63,7 @@ public final class SymlinkTreeAction extends AbstractAction { */ public SymlinkTreeAction( ActionOwner owner, - BuildConfiguration config, + BuildConfigurationValue config, Artifact inputManifest, @Nullable Runfiles runfiles, Artifact outputManifest, @@ -82,8 +82,8 @@ public SymlinkTreeAction( /** * Creates SymlinkTreeAction instance. Prefer the constructor that takes a {@link - * BuildConfiguration} instance; it is less likely to require changes in the future if we add more - * command-line flags that affect this action. + * BuildConfigurationValue} instance; it is less likely to require changes in the future if we add + * more command-line flags that affect this action. * * @param owner action owner * @param inputManifest the input runfiles manifest diff --git a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java index 2849126ff31fce..117c61a2034650 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoFactory.java @@ -15,7 +15,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.vfs.PathFragment; import java.io.Serializable; @@ -52,7 +52,7 @@ Artifact getBuildInfoArtifact( /** Create actions and artifacts for language-specific build-info files. */ BuildInfoCollection create( BuildInfoContext context, - BuildConfiguration config, + BuildConfigurationValue config, Artifact buildInfo, Artifact buildChangelist); @@ -65,5 +65,5 @@ BuildInfoCollection create( * Returns false if this build info factory is disabled based on the configuration (usually by * checking if all required configuration fragments are present). */ - boolean isEnabled(BuildConfiguration config); + boolean isEnabled(BuildConfigurationValue config); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java index 7d1fbe2a1e4fbc..cf2539cc5c0969 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java @@ -30,20 +30,21 @@ */ @ThreadSafe public final class BuildConfigurationCollection { - private final ImmutableList targetConfigurations; - private final BuildConfiguration hostConfiguration; + private final ImmutableList targetConfigurations; + private final BuildConfigurationValue hostConfiguration; public BuildConfigurationCollection( - ImmutableList targetConfigurations, BuildConfiguration hostConfiguration) + ImmutableList targetConfigurations, + BuildConfigurationValue hostConfiguration) throws InvalidConfigurationException { this.targetConfigurations = targetConfigurations; this.hostConfiguration = hostConfiguration; // Except for the host configuration (which may be identical across target configs), the other // configurations must all have different cache keys or we will end up with problems. - HashMap cacheKeyConflictDetector = new HashMap<>(); - for (BuildConfiguration config : targetConfigurations) { - BuildConfiguration old = cacheKeyConflictDetector.put(config.checksum(), config); + HashMap cacheKeyConflictDetector = new HashMap<>(); + for (BuildConfigurationValue config : targetConfigurations) { + BuildConfigurationValue old = cacheKeyConflictDetector.put(config.checksum(), config); if (old != null) { throw new InvalidConfigurationException( "Conflicting configurations: " + config + " & " + old, Code.CONFLICTING_CONFIGURATIONS); @@ -51,7 +52,7 @@ public BuildConfigurationCollection( } } - public ImmutableList getTargetConfigurations() { + public ImmutableList getTargetConfigurations() { return targetConfigurations; } @@ -62,7 +63,7 @@ public ImmutableList getTargetConfigurations() { * entire collection. This may not be true in the future and more flexible interfaces will likely * supplant this interface anyway. */ - public BuildConfiguration getHostConfiguration() { + public BuildConfigurationValue getHostConfiguration() { return hostConfiguration; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java index 2a5d4354c1826b..2e491d095ae8a2 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationOptionDetails.java @@ -15,19 +15,19 @@ package com.google.devtools.build.lib.analysis.config; /** - * Retrieves {@link TransitiveOptionDetails} from {@link BuildConfiguration} instances. + * Retrieves {@link TransitiveOptionDetails} from {@link BuildConfigurationValue} instances. * *

    This class's existence allows for the use of Blaze visibility to limit access to option data * to only the configuration-specific rules which need to access or manipulate the configuration in * such a meta way - in most cases, there should be no need to use this class. Instead, access - * desired configuration fragments via {@link BuildConfiguration#getFragment(Class)}. + * desired configuration fragments via {@link BuildConfigurationValue#getFragment(Class)}. */ public class BuildConfigurationOptionDetails { /** Utility class - no need to instantiate. */ private BuildConfigurationOptionDetails() {} - public static TransitiveOptionDetails get(BuildConfiguration configuration) { + public static TransitiveOptionDetails get(BuildConfigurationValue configuration) { return configuration.getTransitiveOptionDetails(); } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java similarity index 90% rename from src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java rename to src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java index 578af01bb76de3..85e4556aa59084 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationValue.java @@ -35,15 +35,16 @@ import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.events.EventHandler; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.starlarkbuildapi.BuildConfigurationApi; import com.google.devtools.build.lib.util.OS; import com.google.devtools.build.lib.util.RegexFilter; import com.google.devtools.build.lib.vfs.PathFragment; +import com.google.devtools.build.skyframe.SkyValue; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.Set; import java.util.TreeMap; import java.util.function.Supplier; @@ -51,28 +52,26 @@ import net.starlark.java.annot.StarlarkBuiltin; /** - * Instances of BuildConfiguration represent a collection of context information which may affect a - * build (for example: the target platform for compilation, or whether or not debug tables are - * required). In fact, all "environmental" information (e.g. from the tool's command-line, as - * opposed to the BUILD file) that can affect the output of any build tool should be explicitly - * represented in the BuildConfiguration instance. + * Represents a collection of context information which may affect a build (for example: the target + * platform for compilation, or whether or not debug tables are required). In fact, all + * "environmental" information (e.g. from the tool's command-line, as opposed to the BUILD file) + * that can affect the output of any build tool should be explicitly represented in the {@code + * BuildConfigurationValue} instance. * *

    A single build may require building tools to run on a variety of platforms: when compiling a * server application for production, we must build the build tools (like compilers) to run on the * host platform, but cross-compile the application for the production environment. * - *

    There is always at least one BuildConfiguration instance in any build: the one representing - * the host platform. Additional instances may be created, in a cross-compilation build, for - * example. + *

    There is always at least one {@code BuildConfigurationValue} instance in any build: the one + * representing the host platform. Additional instances may be created, in a cross-compilation + * build, for example. * - *

    Instances of BuildConfiguration are canonical: + *

    Instances of {@code BuildConfigurationValue} are canonical: * *

    c1.equals(c2) <=> c1==c2.
    */ -// TODO(janakr): If overhead of fragments class names is too high, add constructor that just takes -// fragments and gets names from them. @AutoCodec -public class BuildConfiguration implements BuildConfigurationApi { +public class BuildConfigurationValue implements BuildConfigurationApi, SkyValue { private static final Interner, Fragment>> fragmentsInterner = BlazeInterners.newWeakInterner(); @@ -109,8 +108,6 @@ public interface ActionEnvironmentProvider { private final ImmutableMap commandLineBuildVariables; - private final int hashCode; // We can precompute the hash code as all its inputs are immutable. - /** Data for introspecting the options used by this configuration. */ private final TransitiveOptionDetails transitiveOptionDetails; @@ -119,34 +116,8 @@ public interface ActionEnvironmentProvider { private final boolean siblingRepositoryLayout; /** - * Returns {@code true} if this configuration is semantically equal to the other, including - * checking that both have the same sets of fragments and options. - */ - @Override - public boolean equals(Object other) { - if (this == other) { - return true; - } - if (!(other instanceof BuildConfiguration)) { - return false; - } - BuildConfiguration otherConfig = (BuildConfiguration) other; - return fragments.values().asList().equals(otherConfig.fragments.values().asList()) - && buildOptions.equals(otherConfig.buildOptions); - } - - private int computeHashCode() { - return Objects.hash(fragments, buildOptions.getNativeOptions()); - } - - @Override - public int hashCode() { - return hashCode; - } - - /** - * Validates the options for this BuildConfiguration. Issues warnings for the use of deprecated - * options, and warnings or errors for any option settings that conflict. + * Validates the options for this BuildConfigurationValue. Issues warnings for the use of + * deprecated options, and warnings or errors for any option settings that conflict. */ public void reportInvalidOptions(EventHandler reporter) { for (Fragment fragment : fragments.values()) { @@ -168,7 +139,7 @@ private ActionEnvironment setupTestEnvironment() { return ActionEnvironment.split(testEnv); } - public BuildConfiguration( + public BuildConfigurationValue( BlazeDirectories directories, ImmutableMap, Fragment> fragments, FragmentClassSet fragmentClassSet, @@ -215,25 +186,18 @@ public BuildConfiguration( TransitiveOptionDetails.forOptions( buildOptions.getNativeOptions(), buildOptions.getStarlarkOptions()); - ImmutableMap.Builder globalMakeEnvBuilder = ImmutableMap.builder(); - + // These should be documented in the build encyclopedia. // TODO(configurability-team): Deprecate TARGET_CPU in favor of platforms. - globalMakeEnvBuilder.put("TARGET_CPU", options.cpu); - globalMakeEnvBuilder.put("COMPILATION_MODE", options.compilationMode.toString()); - - /* - * Attention! Document these in the build-encyclopedia - */ - // the bin directory and the genfiles directory - // These variables will be used on Windows as well, so we need to make sure - // that paths use the correct system file-separator. - globalMakeEnvBuilder.put( - "BINDIR", getBinDirectory(RepositoryName.MAIN).getExecPath().getPathString()); - globalMakeEnvBuilder.put( - "GENDIR", getGenfilesDirectory(RepositoryName.MAIN).getExecPath().getPathString()); - globalMakeEnv = globalMakeEnvBuilder.build(); - - hashCode = computeHashCode(); + globalMakeEnv = + ImmutableMap.of( + "TARGET_CPU", + options.cpu, + "COMPILATION_MODE", + options.compilationMode.toString(), + "BINDIR", + getBinDirectory(RepositoryName.MAIN).getExecPathString(), + "GENDIR", + getGenfilesDirectory(RepositoryName.MAIN).getExecPathString()); this.reservedActionMnemonics = reservedActionMnemonics; this.buildEventSupplier = Suppliers.memoize(this::createBuildEvent); @@ -252,6 +216,17 @@ private ImmutableMap> buildIndexOfStarlarkVisi return builder.build(); } + /** + * Returns the {@link BuildConfigurationKey} for this configuration. + * + *

    Note that this method does not apply a platform mapping. It is assumed that this + * configuration was created with a platform mapping and thus its key does not need to be mapped + * again. + */ + public BuildConfigurationKey getKey() { + return BuildConfigurationKey.withoutPlatformMapping(fragmentClassSet, buildOptions); + } + /** * Retrieves the {@link TransitiveOptionDetails} containing data on this configuration's options. * @@ -396,8 +371,8 @@ public String getMainRepositoryName() { /** * Returns the configuration-dependent string for this configuration. This is also the name of the - * configuration's base output directory unless {@link CoreOptions#outputDirectoryName} overrides - * it. + * configuration's base output directory unless {@link #isHostConfiguration} is {@code true}, in + * which case the output directory is named {@code host}. */ public String getMnemonic() { return outputDirectories.getMnemonic(); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java index e5b25ce7487e73..5d7184d1b8134e 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ConfigurationResolver.java @@ -44,7 +44,7 @@ import com.google.devtools.build.lib.packages.AttributeTransitionData; import com.google.devtools.build.lib.packages.ConfiguredAttributeMapper; import com.google.devtools.build.lib.packages.Target; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.ConfiguredValueCreationException; import com.google.devtools.build.lib.skyframe.PackageValue; import com.google.devtools.build.lib.skyframe.PlatformMappingValue; @@ -87,13 +87,13 @@ public final class ConfigurationResolver { @VisibleForTesting public static final Comparator SPLIT_DEP_ORDERING = Comparator.comparing( - Functions.compose(BuildConfiguration::getMnemonic, Dependency::getConfiguration)) + Functions.compose(BuildConfigurationValue::getMnemonic, Dependency::getConfiguration)) .thenComparing( - Functions.compose(BuildConfiguration::checksum, Dependency::getConfiguration)); + Functions.compose(BuildConfigurationValue::checksum, Dependency::getConfiguration)); private final SkyFunction.Environment env; private final TargetAndConfiguration ctgValue; - private final BuildConfiguration hostConfiguration; + private final BuildConfigurationValue hostConfiguration; private final ImmutableMap configConditions; /** The key for {@link #starlarkTransitionCache}. */ @@ -172,7 +172,7 @@ private static class StarlarkTransitionCacheValue { public ConfigurationResolver( SkyFunction.Environment env, TargetAndConfiguration ctgValue, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, ImmutableMap configConditions) { this.env = env; this.ctgValue = ctgValue; @@ -180,7 +180,7 @@ public ConfigurationResolver( this.configConditions = configConditions; } - private BuildConfiguration getCurrentConfiguration() { + private BuildConfigurationValue getCurrentConfiguration() { return ctgValue.getConfiguration(); } @@ -209,8 +209,8 @@ private BuildConfiguration getCurrentConfiguration() { * * @param dependencyKeys the transition requests for each dep and each dependency kind * @return a mapping from each dependency kind in the source target to the {@link - * BuildConfiguration}s and {@link Label}s for the deps under that dependency kind . Returns - * null if not all Skyframe dependencies are available. + * BuildConfigurationValue}s and {@link Label}s for the deps under that dependency kind . + * Returns null if not all Skyframe dependencies are available. */ @Nullable public OrderedSetMultimap resolveConfigurations( @@ -334,14 +334,14 @@ private ImmutableList resolveGenericTransition( return null; // Need platform mappings from Skyframe. } - Map configurationKeys = new HashMap<>(); + Map configurationKeys = new HashMap<>(); try { for (Map.Entry optionsEntry : toOptions.entrySet()) { String transitionKey = optionsEntry.getKey(); - BuildConfigurationValue.Key buildConfigurationValueKey = - BuildConfigurationValue.keyWithPlatformMapping( + BuildConfigurationKey buildConfigurationKey = + BuildConfigurationKey.withPlatformMapping( platformMappingValue, depFragments, optionsEntry.getValue()); - configurationKeys.put(transitionKey, buildConfigurationValueKey); + configurationKeys.put(transitionKey, buildConfigurationKey); } } catch (OptionsParsingException e) { throw new ConfiguredValueCreationException(ctgValue, e.getMessage()); @@ -351,15 +351,14 @@ private ImmutableList resolveGenericTransition( env.getValuesOrThrow(configurationKeys.values(), InvalidConfigurationException.class); List dependencies = new ArrayList<>(); try { - for (Map.Entry entry : configurationKeys.entrySet()) { + for (Map.Entry entry : configurationKeys.entrySet()) { String transitionKey = entry.getKey(); ValueOrException valueOrException = depConfigValues.get(entry.getValue()); if (valueOrException.get() == null) { continue; } - BuildConfiguration configuration = - ((BuildConfigurationValue) valueOrException.get()).getConfiguration(); + BuildConfigurationValue configuration = (BuildConfigurationValue) valueOrException.get(); if (configuration != null) { Dependency resolvedDep = dependencyBuilder @@ -563,7 +562,7 @@ private static Map applyStarlarkTransition( // Keep this in sync with {@link PrepareAnalysisPhaseFunction#resolveConfigurations}. public static TopLevelTargetsAndConfigsResult getConfigurationsFromExecutor( Iterable defaultContext, - Multimap targetsToEvaluate, + Multimap targetsToEvaluate, ExtendedEventHandler eventHandler, ConfigurationsCollector configurationsCollector) throws InvalidConfigurationException, InterruptedException { @@ -579,12 +578,12 @@ public static TopLevelTargetsAndConfigsResult getConfigurationsFromExecutor( new LinkedHashMap<>(); boolean hasError = false; if (!targetsToEvaluate.isEmpty()) { - for (BuildConfiguration fromConfig : targetsToEvaluate.keySet()) { + for (BuildConfigurationValue fromConfig : targetsToEvaluate.keySet()) { ConfigurationsResult configurationsResult = configurationsCollector.getConfigurations( eventHandler, fromConfig.getOptions(), targetsToEvaluate.get(fromConfig)); hasError |= configurationsResult.hasError(); - for (Map.Entry evaluatedTarget : + for (Map.Entry evaluatedTarget : configurationsResult.getConfigurationMap().entries()) { Target target = labelsToTargets.get(evaluatedTarget.getKey().getLabel()); successfullyEvaluatedTargets.put( diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java index 744acfa7cb7890..85185e031c9789 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/CoreOptions.java @@ -39,14 +39,14 @@ import java.util.Map; /** - * Core options affecting a {@link BuildConfiguration} that don't belong in domain-specific {@link - * FragmentOptions}. All options defined here should be universal in that they affect configuration - * regardless of which languages a build uses. In other words, this should only contain options that - * aren't suitable for Starlark configuration. + * Core options affecting a {@link BuildConfigurationValue} that don't belong in domain-specific + * {@link FragmentOptions}. All options defined here should be universal in that they affect + * configuration regardless of which languages a build uses. In other words, this should only + * contain options that aren't suitable for Starlark configuration. * *

    (Note: any client that creates a view will also need to declare BuildView.Options, which * affect the mechanism of view construction, even if they don't affect the value of the - * BuildConfiguration instances.) + * BuildConfigurationValue instances.) * *

    IMPORTANT: when adding new options, be sure to consider whether those values should be * propagated to the host configuration or not. diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java index ddd7fec1f56228..86d54aee6eabb7 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java @@ -48,7 +48,7 @@ public class OutputDirectories { * Directories in the output tree. * *

    The computation of the output directory should be a non-injective mapping from - * BuildConfiguration instances to strings. The result should identify the aspects of the + * BuildConfigurationValue instances to strings. The result should identify the aspects of the * configuration that should be reflected in the output file names. Furthermore the returned * string must not contain shell metacharacters. * @@ -368,4 +368,3 @@ public static class InvalidMnemonicException extends InvalidConfigurationExcepti } } } - diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java index fd5ac26e1e1374..7d0a1bf9bff47a 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/RequiredFragmentsUtil.java @@ -82,7 +82,7 @@ public final class RequiredFragmentsUtil { @Nullable public static RequiredConfigFragmentsProvider getRuleRequiredFragmentsIfEnabled( Rule target, - BuildConfiguration configuration, + BuildConfigurationValue configuration, FragmentClassSet universallyRequiredFragments, ImmutableMap configConditions, Iterable prerequisites) { @@ -136,7 +136,7 @@ public static RequiredConfigFragmentsProvider getAspectRequiredFragmentsIfEnable Aspect aspect, ConfiguredAspectFactory aspectFactory, Rule associatedTarget, - BuildConfiguration configuration, + BuildConfigurationValue configuration, FragmentClassSet universallyRequiredFragments, ImmutableMap configConditions, Iterable prerequisites) { @@ -164,7 +164,7 @@ public static RequiredConfigFragmentsProvider getAspectRequiredFragmentsIfEnable /** Internal implementation that handles requirements common to both rules and aspects. */ private static RequiredConfigFragmentsProvider.Builder getRequiredFragments( IncludeConfigFragmentsEnum mode, - BuildConfiguration configuration, + BuildConfigurationValue configuration, FragmentClassSet universallyRequiredFragments, ConfigurationFragmentPolicy configurationFragmentPolicy, Collection configConditions, @@ -290,7 +290,8 @@ private static void addStarlarkBuildSettings( } } - private static IncludeConfigFragmentsEnum getRequiredFragmentsMode(BuildConfiguration config) { + private static IncludeConfigFragmentsEnum getRequiredFragmentsMode( + BuildConfigurationValue config) { return checkNotNull( config.getOptions().get(CoreOptions.class).includeRequiredConfigFragmentsProvider); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java index 790d600658c9a9..0350265291e945 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/SymlinkDefinition.java @@ -52,8 +52,8 @@ public interface SymlinkDefinition { */ ImmutableSet getLinkPaths( BuildRequestOptions buildRequestOptions, - Set targetConfigs, - Function configGetter, + Set targetConfigs, + Function configGetter, RepositoryName repositoryName, Path outputPath, Path execRoot); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java index a568b3a8f093b9..e166f2fde0e19b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionResolver.java @@ -50,7 +50,7 @@ public final class TransitionResolver { * @return the target's configuration(s), expressed as a diff from the original configuration. */ public static ConfigurationTransition evaluateTransition( - BuildConfiguration fromConfig, + BuildConfigurationValue fromConfig, ConfigurationTransition baseTransition, Target toTarget, @Nullable TransitionFactory trimmingTransitionFactory) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java index 1377dab2385cc3..a879896d14030f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/AbstractConfiguredTarget.java @@ -32,7 +32,7 @@ import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; import com.google.devtools.build.lib.packages.Provider; import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import java.util.function.Consumer; import javax.annotation.Nullable; import net.starlark.java.eval.Dict; @@ -47,7 +47,7 @@ */ public abstract class AbstractConfiguredTarget implements ConfiguredTarget, VisibilityProvider { private final Label label; - private final BuildConfigurationValue.Key configurationKey; + private final BuildConfigurationKey configurationKey; private final NestedSet visibility; @@ -75,13 +75,13 @@ public abstract class AbstractConfiguredTarget implements ConfiguredTarget, Visi OutputGroupInfo.STARLARK_NAME, ACTIONS_FIELD_NAME); - public AbstractConfiguredTarget(Label label, BuildConfigurationValue.Key configurationKey) { + public AbstractConfiguredTarget(Label label, BuildConfigurationKey configurationKey) { this(label, configurationKey, NestedSetBuilder.emptySet(Order.STABLE_ORDER)); } protected AbstractConfiguredTarget( Label label, - BuildConfigurationValue.Key configurationKey, + BuildConfigurationKey configurationKey, NestedSet visibility) { this.label = label; this.configurationKey = configurationKey; @@ -99,7 +99,7 @@ public final NestedSet getVisibility() { } @Override - public BuildConfigurationValue.Key getConfigurationKey() { + public BuildConfigurationKey getConfigurationKey() { return configurationKey; } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java index 79e0f1c23af6f6..bfcbacd861c565 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java @@ -35,7 +35,7 @@ import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; import com.google.devtools.build.lib.packages.Provider; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.util.FileType; import javax.annotation.Nullable; import net.starlark.java.eval.Dict; @@ -52,7 +52,7 @@ public abstract class FileConfiguredTarget extends AbstractConfiguredTarget FileConfiguredTarget( Label label, - BuildConfigurationValue.Key configurationKey, + BuildConfigurationKey configurationKey, NestedSet visibility, Artifact artifact, @Nullable InstrumentedFilesInfo instrumentedFilesInfo, diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java index 419d57ad723fb1..7bc48ca558b92f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/OutputFileConfiguredTarget.java @@ -30,7 +30,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import net.starlark.java.eval.Printer; /** A ConfiguredTarget for an OutputFile. */ @@ -56,7 +56,7 @@ public OutputFileConfiguredTarget( private OutputFileConfiguredTarget( Label label, - BuildConfigurationValue.Key configurationKey, + BuildConfigurationKey configurationKey, NestedSet visibility, Artifact artifact, ConfiguredTarget generatingRule) { diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java index 05527042ca4c4f..46f3a96b0c9c57 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/RuleConfiguredTarget.java @@ -40,7 +40,7 @@ import com.google.devtools.build.lib.packages.OutputFile; import com.google.devtools.build.lib.packages.PackageSpecification.PackageGroupContents; import com.google.devtools.build.lib.packages.Provider; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.Instantiator; @@ -85,7 +85,7 @@ public final class RuleConfiguredTarget extends AbstractConfiguredTarget { @VisibleForSerialization RuleConfiguredTarget( Label label, - BuildConfigurationValue.Key configurationKey, + BuildConfigurationKey configurationKey, NestedSet visibility, TransitiveInfoProviderMap providers, ImmutableMap configConditions, diff --git a/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java b/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java index 02119995b30390..ce4d568fe88d41 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/constraints/TopLevelConstraintSemantics.java @@ -26,7 +26,7 @@ import com.google.devtools.build.lib.analysis.IncompatiblePlatformProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.ViewCreationFailedException; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.configuredtargets.OutputFileConfiguredTarget; import com.google.devtools.build.lib.analysis.constraints.SupportedEnvironmentsProvider.RemovedEnvironmentCulprit; import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo; @@ -42,7 +42,7 @@ import com.google.devtools.build.lib.server.FailureDetails.Analysis; import com.google.devtools.build.lib.server.FailureDetails.Analysis.Code; import com.google.devtools.build.lib.server.FailureDetails.FailureDetail; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue.Key; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -63,7 +63,7 @@ public class TopLevelConstraintSemantics { private final RuleContextConstraintSemantics constraintSemantics; private final PackageManager packageManager; - private final Function configurationProvider; + private final Function configurationProvider; private final ExtendedEventHandler eventHandler; private static final String TARGET_INCOMPATIBLE_ERROR_TEMPLATE = "Target %s is incompatible and cannot be built, but was explicitly requested.%s"; @@ -79,7 +79,7 @@ public class TopLevelConstraintSemantics { public TopLevelConstraintSemantics( RuleContextConstraintSemantics constraintSemantics, PackageManager packageManager, - Function configurationProvider, + Function configurationProvider, ExtendedEventHandler eventHandler) { this.constraintSemantics = constraintSemantics; this.packageManager = packageManager; @@ -259,7 +259,8 @@ public Set checkTargetEnvironmentRestrictions( Multimap exceptionInducingTargets = ArrayListMultimap.create(); for (ConfiguredTarget topLevelTarget : topLevelTargets) { - BuildConfiguration config = configurationProvider.apply(topLevelTarget.getConfigurationKey()); + BuildConfigurationValue config = + configurationProvider.apply(topLevelTarget.getConfigurationKey()); Target target = null; try { target = packageManager.getTarget(eventHandler, topLevelTarget.getLabel()); @@ -312,11 +313,11 @@ public Set checkTargetEnvironmentRestrictions( } /** - * Helper method for {@link #checkTargetEnvironmentRestrictions} that populates inferred - * expected environments. + * Helper method for {@link #checkTargetEnvironmentRestrictions} that populates inferred expected + * environments. */ - private List

    In the event of a {@link InvalidConfigurationException}, a warning is emitted and null is * returned. */ @Nullable - private static BuildConfiguration getConfiguration( + private static BuildConfigurationValue getConfiguration( SkyframeExecutor executor, Reporter reporter, BuildOptions options) { try { return executor.getConfiguration(reporter, options, /*keepGoing=*/ false); @@ -677,7 +677,7 @@ private ImmutableList createConvenienceSymlinks( Reporter reporter = env.getReporter(); // Gather configurations to consider. - Set targetConfigurations = + Set targetConfigurations = buildRequestOptions.useTopLevelTargetsForSymlinks() ? analysisResult.getTargetsToBuild().stream() .map(ConfiguredTarget::getConfigurationKey) diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java index f249513b05f3e6..ac93bf2059f9a8 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/OutputDirectoryLinksUtils.java @@ -21,7 +21,7 @@ import com.google.common.flogger.GoogleLogger; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.SymlinkDefinition; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.ConvenienceSymlink; @@ -102,8 +102,8 @@ static ImmutableList createOutputDirectoryLinks( Path workspace, BlazeDirectories directories, EventHandler eventHandler, - Set targetConfigs, - Function configGetter, + Set targetConfigs, + Function configGetter, String productName) { Path execRoot = directories.getExecRoot(workspaceName); Path outputPath = directories.getOutputPath(workspaceName); @@ -376,14 +376,14 @@ private static void removeLink( @SuppressWarnings("deprecation") // RuleContext#get*Directory not available here. private static final ImmutableList STANDARD_LINK_DEFINITIONS = ImmutableList.of( - new ConfigSymlink("bin", BuildConfiguration::getBinDirectory), - new ConfigSymlink("testlogs", BuildConfiguration::getTestLogsDirectory), - new ConfigSymlink("genfiles", BuildConfiguration::getGenfilesDirectory) { + new ConfigSymlink("bin", BuildConfigurationValue::getBinDirectory), + new ConfigSymlink("testlogs", BuildConfigurationValue::getTestLogsDirectory), + new ConfigSymlink("genfiles", BuildConfigurationValue::getGenfilesDirectory) { @Override public ImmutableSet getLinkPaths( BuildRequestOptions buildRequestOptions, - Set targetConfigs, - Function configGetter, + Set targetConfigs, + Function configGetter, RepositoryName repositoryName, Path outputPath, Path execRoot) { @@ -410,8 +410,8 @@ public String getLinkName( @Override public ImmutableSet getLinkPaths( BuildRequestOptions buildRequestOptions, - Set targetConfigs, - Function configGetter, + Set targetConfigs, + Function configGetter, RepositoryName repositoryName, Path outputPath, Path execRoot) { @@ -429,8 +429,8 @@ public String getLinkName( @Override public ImmutableSet getLinkPaths( BuildRequestOptions buildRequestOptions, - Set targetConfigs, - Function configGetter, + Set targetConfigs, + Function configGetter, RepositoryName repositoryName, Path outputPath, Path execRoot) { diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java index 33d76d87c7f365..8093b9d0ca4b71 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/PostAnalysisQueryBuildTool.java @@ -15,7 +15,7 @@ import com.google.devtools.build.lib.analysis.AnalysisResult; import com.google.devtools.build.lib.analysis.ViewCreationFailedException; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.query2.NamedThreadSafeOutputFormatterCallback; import com.google.devtools.build.lib.query2.PostAnalysisQueryEnvironment; @@ -116,7 +116,7 @@ protected void postProcessAnalysisResult(BuildRequest request, AnalysisResult an protected abstract PostAnalysisQueryEnvironment getQueryEnvironment( BuildRequest request, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, TopLevelConfigurations topLevelConfigurations, Collection transitiveConfigurationKeys, WalkableGraph walkableGraph) @@ -124,7 +124,7 @@ protected abstract PostAnalysisQueryEnvironment getQueryEnvironment( private void doPostAnalysisQuery( BuildRequest request, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, TopLevelConfigurations topLevelConfigurations, Collection transitiveConfigurationKeys, QueryRuntimeHelper queryRuntimeHelper, diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java index febb37cdb0f57a..49f33283c57291 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java @@ -17,9 +17,9 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.TestProvider; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import java.util.Collection; import java.util.Map; import javax.annotation.concurrent.Immutable; @@ -35,7 +35,7 @@ public class TestFilteringCompleteEvent { private final Collection targets; private final Collection testTargets; private final Collection skippedTests; - private final Map configurationMap; + private final Map configurationMap; /** * Construct the event. @@ -49,7 +49,7 @@ public TestFilteringCompleteEvent( Collection targets, Collection testTargets, Collection targetsToSkip, - Map configurationMap) { + Map configurationMap) { this.targets = ImmutableList.copyOf(targets); this.testTargets = testTargets == null ? null : ImmutableList.copyOf(testTargets); this.skippedTests = ImmutableList.copyOf(targetsToSkip); @@ -83,7 +83,7 @@ public Collection getSkippedTests() { return skippedTests; } - public BuildConfiguration getConfigurationForTarget(ConfiguredTarget target) { + public BuildConfigurationValue getConfigurationForTarget(ConfiguredTarget target) { return Preconditions.checkNotNull(configurationMap.get(target.getConfigurationKey())); } } diff --git a/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java b/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java index ed6ab450ebd876..744ee4a39ebf50 100644 --- a/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java +++ b/src/main/java/com/google/devtools/build/lib/causes/AnalysisFailedCause.java @@ -22,8 +22,8 @@ import javax.annotation.Nullable; /** - * Class describing a {@link Cause} that can uniquely be described by a {@link Label} and - * {@link com.google.devtools.build.lib.analysis.config.BuildConfiguration}. Note that the + * Class describing a {@link Cause} that can uniquely be described by a {@link Label} and {@link + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}. Note that the * configuration may be null, in which case this generates an UnconfiguredLabel event. */ public class AnalysisFailedCause implements Cause { diff --git a/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java b/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java index 9c0b03fd77cd54..2f254d267f0d0e 100644 --- a/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java +++ b/src/main/java/com/google/devtools/build/lib/metrics/PostGCMemoryUseRecorder.java @@ -20,7 +20,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.flogger.GoogleLogger; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.profiler.Profiler; import com.google.devtools.build.lib.profiler.ProfilerTask; import com.google.devtools.build.lib.runtime.BlazeModule; @@ -227,7 +227,8 @@ private static final class PeakMemInfoItem extends InfoItem { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return PostGCMemoryUseRecorder.get() .getPeakPostGcHeap() .map(peak -> print(StringUtilities.prettyPrintBytes(peak.bytes()))) diff --git a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java index 5b78f0c8f55cc5..70801f5975fe5d 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java +++ b/src/main/java/com/google/devtools/build/lib/packages/AspectDefinition.java @@ -353,7 +353,7 @@ public Builder requiredAspectClasses(ImmutableSet requiredAspectCla /** * Optional predicate to conditionally propagate down an attribute based on the {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration}. + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}. * *

    This is implemented specifically to support the platform-based Android toolchain * migration. See {@link com.google.devtools.build.lib.rules.android.DexArchiveAspect} for @@ -363,7 +363,7 @@ public Builder requiredAspectClasses(ImmutableSet requiredAspectCla * @param propagateFunction {@link BiPredicate} that takes the aspect's build configuration and * name of the attribute to propagate. If it returns true, propagates down this attribute in * this configuration. We don't explicitly type with {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration} because {@link + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue} because {@link * AspectDefinition} is a loading phase class, with no access to config symbols. */ public Builder propagateViaAttribute(BiPredicate propagateFunction) { diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java index ef633e10eef641..743f4e0ca0bc1a 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java @@ -1471,7 +1471,8 @@ public ValueT resolve(Rule rule, AttributeMap attributes, FragmentT input) { } } - // TODO(b/65746853): Remove documentation about accepting BuildConfiguration when uses are cleaned + // TODO(b/65746853): Remove documentation about accepting BuildConfigurationValue when uses are + // cleaned // up. /** * Provider of values for late-bound attributes. See {@link Attribute#value(LateBoundDefault The type of value that is used to compute this value. This is usually a - * subclass of BuildConfiguration.Fragment. It may also be Void to receive null, or - * BuildConfiguration itself to receive the entire configuration. + * subclass of BuildConfigurationValue.Fragment. It may also be Void to receive null, or + * BuildConfigurationValue itself to receive the entire configuration. * @param The type of value returned by this class. Must be either {@link Void}, a {@link * Label}, or a {@link List} of {@link Label} objects. */ @@ -1550,8 +1551,9 @@ public final boolean useHostConfiguration() { *

    It may also be {@link Void} to receive null. This is rarely necessary, but can be used, * e.g., if the attribute is named to match an attribute in another rule which is late-bound. * - *

    It may also be BuildConfiguration to receive the entire configuration. This is deprecated, - * and only necessary when the default is computed from methods of BuildConfiguration itself. + *

    It may also be BuildConfigurationValue to receive the entire configuration. This is + * deprecated, and only necessary when the default is computed from methods of + * BuildConfigurationValue itself. */ public final Class getFragmentClass() { return fragmentClass; @@ -1637,8 +1639,9 @@ protected LabelLateBoundDefault( * attribute on another rule which is late-bound, use {@link #alwaysNull}. * * @param fragmentClass The fragment to receive from the target configuration. May also be - * BuildConfiguration.class to receive the entire configuration (deprecated) - in this case, - * you must only use methods of BuildConfiguration itself, and not use any fragments. + * BuildConfigurationValue.class to receive the entire configuration (deprecated) - in this + * case, you must only use methods of BuildConfigurationValue itself, and not use any + * fragments. * @param defaultValue The default {@link Label} to return at loading time, when the * configuration is not available. * @param resolver A function which will compute the actual value with the configuration. @@ -1665,10 +1668,10 @@ public static LabelLateBoundDefault fromTargetConfigurati * dependency will be analyzed in the host configuration. * * @param fragmentClass The fragment to receive from the host configuration. May also be - * BuildConfiguration.class to receive the entire configuration (deprecated) - in this case, - * you must only use methods of BuildConfiguration itself, and not use any fragments. It is - * very rare that a LateBoundDefault should need a host configuration fragment; use {@link - * #fromTargetConfiguration} in most cases. + * BuildConfigurationValue.class to receive the entire configuration (deprecated) - in this + * case, you must only use methods of BuildConfigurationValue itself, and not use any + * fragments. It is very rare that a LateBoundDefault should need a host configuration + * fragment; use {@link #fromTargetConfiguration} in most cases. * @param defaultValue The default {@link Label} to return at loading time, when the * configuration is not available. * @param resolver A function which will compute the actual value with the configuration. diff --git a/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java b/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java index 0d3526bd2ce875..ba83a0783b1aa4 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java +++ b/src/main/java/com/google/devtools/build/lib/packages/ConfigurationFragmentPolicy.java @@ -213,8 +213,8 @@ public FragmentClassSet getRequiredConfigurationFragments() { * with the naming form seen in the Starlark API. * *

    {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration#getStarlarkFragmentByName} can - * be used to convert this to Java fragment instances. + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue#getStarlarkFragmentByName} + * can be used to convert this to Java fragment instances. */ public ImmutableCollection getRequiredStarlarkFragments() { return starlarkRequiredConfigurationFragments.values(); diff --git a/src/main/java/com/google/devtools/build/lib/query2/BUILD b/src/main/java/com/google/devtools/build/lib/query2/BUILD index 32b665d0f4a294..b6aa812b07bf56 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/BUILD +++ b/src/main/java/com/google/devtools/build/lib/query2/BUILD @@ -80,7 +80,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/skyframe:actiongraph/v2/monolithic_output_handler", "//src/main/java/com/google/devtools/build/lib/skyframe:actiongraph/v2/streamed_output_handler", "//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key", "//src/main/java/com/google/devtools/build/lib/skyframe:containing_package_lookup_function", "//src/main/java/com/google/devtools/build/lib/skyframe:detailed_exceptions", diff --git a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java index 505298cefc77cb..87cd767f644282 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/query2/PostAnalysisQueryEnvironment.java @@ -24,7 +24,7 @@ import com.google.devtools.build.lib.analysis.AliasProvider; import com.google.devtools.build.lib.analysis.ConfiguredTargetValue; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget; import com.google.devtools.build.lib.cmdline.Label; @@ -103,7 +103,7 @@ public abstract class PostAnalysisQueryEnvironment extends AbstractBlazeQuery skyKey -> (ConfiguredTargetKey) skyKey.argument(); protected final TopLevelConfigurations topLevelConfigurations; - protected final BuildConfiguration hostConfiguration; + protected final BuildConfigurationValue hostConfiguration; private final PathFragment parserPrefix; private final PathPackageLocator pkgPath; private final Supplier walkableGraphSupplier; @@ -116,7 +116,7 @@ public PostAnalysisQueryEnvironment( ExtendedEventHandler eventHandler, Iterable extraFunctions, TopLevelConfigurations topLevelConfigurations, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, PathFragment parserPrefix, PathPackageLocator pkgPath, Supplier walkableGraphSupplier, @@ -135,7 +135,7 @@ public PostAnalysisQueryEnvironment( ExtendedEventHandler eventHandler, OutputStream outputStream, SkyframeExecutor skyframeExecutor, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, @Nullable TransitionFactory trimmingTransitionFactory, PackageManager packageManager) throws QueryException, InterruptedException; @@ -185,7 +185,7 @@ private void checkSettings(Set settings) throws QueryException { } } - public BuildConfiguration getHostConfiguration() { + public BuildConfigurationValue getHostConfiguration() { return hostConfiguration; } @@ -339,7 +339,7 @@ private ImmutableList getAllowedDeps(T target, Collection ImmutableList getDependencies( } @Nullable - protected abstract BuildConfiguration getConfiguration(T target); + protected abstract BuildConfigurationValue getConfiguration(T target); protected abstract ConfiguredTargetKey getSkyKey(T target); @@ -577,18 +577,18 @@ public void close() {} public static class TopLevelConfigurations { /** A map of non-null configured top-level targets sorted by configuration checksum. */ - private final ImmutableMap nonNulls; + private final ImmutableMap nonNulls; /** * {@code nonNulls} may often have many duplicate values in its value set so we store a sorted * set of all the non-null configurations here. */ - private final ImmutableSortedSet nonNullConfigs; + private final ImmutableSortedSet nonNullConfigs; /** A list of null configured top-level targets. */ private final ImmutableList

    This can also be used in cquery's {@code config} function to match against explicitly * specified configs. This, in particular, is where having user-friendly hashes is invaluable. */ - private final ImmutableMap transitiveConfigurations; + private final ImmutableMap transitiveConfigurations; @Override protected KeyExtractor @@ -114,7 +115,7 @@ public ConfiguredTargetQueryEnvironment( ExtendedEventHandler eventHandler, Iterable extraFunctions, TopLevelConfigurations topLevelConfigurations, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, Collection transitiveConfigurationKeys, PathFragment parserPrefix, PathPackageLocator pkgPath, @@ -142,7 +143,7 @@ public ConfiguredTargetQueryEnvironment( ExtendedEventHandler eventHandler, Iterable extraFunctions, TopLevelConfigurations topLevelConfigurations, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, Collection transitiveConfigurationKeys, PathFragment parserPrefix, PathPackageLocator pkgPath, @@ -175,37 +176,35 @@ private static ImmutableList getCqueryFunctions() { } /** - * Return supplied BuildConfiguration if both are equal else throw exception. + * Returns a supplied {@link BuildConfigurationValue} if both have the same build options, + * otherwise throws an exception. * - *

    Noting the background of {@link BuildConfigurationValue.Key::toComparableString}, multiple - * BuildConfigurationValue.Key can correspond to the same BuildConfiguration, especially when - * trimming is involved. - * - *

    Note that, in {@link getTransitiveConfigurations}, only interested in the values and - * throwing away the Keys. Thus, intricacies around Key fragments and options diverging not as - * relevant anyway. + *

    Noting the background of {@link BuildConfigurationKey#toComparableString}, multiple {@link + * BuildConfigurationKey} instances can correspond to the same {@link BuildConfigurationValue}, + * especially when trimming is involved. We are only interested in configurations whose options + * differ - intricacies around differing fragments can be disregarded. */ - private static BuildConfiguration mergeEqualBuildConfiguration( - BuildConfiguration left, BuildConfiguration right) { - if (!left.equals(right)) { - throw new IllegalArgumentException( - "Non-matching configurations " + left.checksum() + ", " + right.checksum()); - } + private static BuildConfigurationValue mergeEqualBuildConfiguration( + BuildConfigurationValue left, BuildConfigurationValue right) { + Preconditions.checkArgument( + left.getOptions().equals(right.getOptions()), + "Non-matching configurations: (%s, %s)", + left, + right); return left; } - private static ImmutableMap getTransitiveConfigurations( + private static ImmutableMap getTransitiveConfigurations( Collection transitiveConfigurationKeys, WalkableGraph graph) throws InterruptedException { - // mergeEqualBuildConfiguration can only fail if two BuildConfiguration have the same + // mergeEqualBuildConfiguration can only fail if two BuildConfigurationValue have the same // checksum but are not equal. This would be a black swan event. return graph.getSuccessfulValues(transitiveConfigurationKeys).values().stream() - .map(value -> (BuildConfigurationValue) value) - .map(BuildConfigurationValue::getConfiguration) - .sorted(Comparator.comparing(BuildConfiguration::checksum)) + .map(BuildConfigurationValue.class::cast) + .sorted(Comparator.comparing(BuildConfigurationValue::checksum)) .collect( toImmutableMap( - BuildConfiguration::checksum, + BuildConfigurationValue::checksum, Function.identity(), ConfiguredTargetQueryEnvironment::mergeEqualBuildConfiguration)); } @@ -217,7 +216,7 @@ private static ImmutableMap getTransitiveConfigurati ExtendedEventHandler eventHandler, OutputStream out, SkyframeExecutor skyframeExecutor, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, @Nullable TransitionFactory trimmingTransitionFactory, PackageManager packageManager) throws QueryException, InterruptedException { @@ -329,8 +328,8 @@ public QueryTaskFuture getTargetsMatchingPattern( * null. */ @Nullable - private KeyedConfiguredTarget getConfiguredTarget(Label label, BuildConfiguration configuration) - throws InterruptedException { + private KeyedConfiguredTarget getConfiguredTarget( + Label label, BuildConfigurationValue configuration) throws InterruptedException { return getValueFromKey( ConfiguredTargetKey.builder().setLabel(label).setConfiguration(configuration).build()); } @@ -352,7 +351,7 @@ protected KeyedConfiguredTarget getValueFromKey(SkyKey key) throws InterruptedEx private List getConfiguredTargetsForConfigFunction(Label label) throws InterruptedException { ImmutableList.Builder ans = ImmutableList.builder(); - for (BuildConfiguration config : transitiveConfigurations.values()) { + for (BuildConfigurationValue config : transitiveConfigurations.values()) { KeyedConfiguredTarget kct = getConfiguredTarget(label, config); if (kct != null) { ans.add(kct); @@ -487,7 +486,7 @@ protected KeyedConfiguredTarget getTargetConfiguredTarget(Label label) label, topLevelConfigurations.getConfigurationForTopLevelTarget(label)); } else { KeyedConfiguredTarget toReturn; - for (BuildConfiguration configuration : topLevelConfigurations.getConfigurations()) { + for (BuildConfigurationValue configuration : topLevelConfigurations.getConfigurations()) { toReturn = getConfiguredTarget(label, configuration); if (toReturn != null) { return toReturn; @@ -514,12 +513,11 @@ protected RuleConfiguredTarget getRuleConfiguredTarget(KeyedConfiguredTarget con @Nullable @Override - protected BuildConfiguration getConfiguration(KeyedConfiguredTarget target) { + protected BuildConfigurationValue getConfiguration(KeyedConfiguredTarget target) { try { return target.getConfigurationKey() == null ? null - : ((BuildConfigurationValue) graph.getValue(target.getConfigurationKey())) - .getConfiguration(); + : (BuildConfigurationValue) graph.getValue(target.getConfigurationKey()); } catch (InterruptedException e) { throw new IllegalStateException("Unexpected interruption during configured target query", e); } diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java index eee019ad34b06a..0d85d0db680ea7 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java +++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryOptions.java @@ -69,8 +69,8 @@ public enum Transitions { "Shows the configuration fragments required by a rule and its transitive " + "dependencies. This can be useful for evaluating how much a configured target " + "graph can be trimmed.") - // This implicitly sets the BuildConfiguration option --include_config_fragments_provider, which - // makes configured targets compute the data cquery needs to enable this feature. + // This implicitly sets the option --include_config_fragments_provider (see CoreOptions), which + // makes configured targets compute the data cquery needs to enable this feature. public IncludeConfigFragmentsEnum showRequiredConfigFragments; @Option( diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java index 9cb83bb7e9d88c..6711396310852a 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java +++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/CqueryThreadsafeCallback.java @@ -15,11 +15,11 @@ import com.google.common.annotations.VisibleForTesting; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.query2.NamedThreadSafeOutputFormatterCallback; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.TargetAccessor; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.SkyframeExecutor; import java.io.BufferedWriter; import java.io.IOException; @@ -37,8 +37,8 @@ * that is populated by child classes. * *

    Human-readable cquery outputters should output short configuration IDs via {@link - * #shortId(BuildConfiguration)} for easier reading. Machine-readable output, which are more focused - * on completeness, should output full configuration checksums. + * #shortId(BuildConfigurationValue)} for easier reading. Machine-readable output, which are more + * focused on completeness, should output full configuration checksums. */ public abstract class CqueryThreadsafeCallback extends NamedThreadSafeOutputFormatterCallback { @@ -50,7 +50,7 @@ public abstract class CqueryThreadsafeCallback // Skyframe calls incur a performance cost, even on cache hits. Consider this before exposing // direct executor access to child classes. private final SkyframeExecutor skyframeExecutor; - private final Map configCache = + private final Map configCache = new ConcurrentHashMap<>(); protected final ConfiguredTargetAccessor accessor; @@ -94,7 +94,7 @@ public void close(boolean failFast) throws InterruptedException, IOException { } } - protected BuildConfiguration getConfiguration(BuildConfigurationValue.Key configKey) { + protected BuildConfigurationValue getConfiguration(BuildConfigurationKey configKey) { // Experiments querying: // cquery --output=graph "deps(//src:main/java/com/google/devtools/build/lib:runtime)" // 10 times on a warm Blaze instance show 7% less total query time when using this cache vs. @@ -123,7 +123,7 @@ protected static String shortId(String fullId) { * Returns a user-friendly configuration identifier, using special IDs for null and host * configurations and {@link #shortId(String)} for others. */ - protected static String shortId(@Nullable BuildConfiguration config) { + protected static String shortId(@Nullable BuildConfigurationValue config) { if (config == null) { return "null"; } else if (config.isHostConfiguration()) { diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java index ed56d68c72e65c..fb14222d3df433 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/KeyedConfiguredTarget.java @@ -18,7 +18,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey; import javax.annotation.Nullable; @@ -49,7 +49,7 @@ public Label getLabel() { /** Returns the configuration key used for this KeyedConfiguredTarget. */ @Nullable - public BuildConfigurationValue.Key getConfigurationKey() { + public BuildConfigurationKey getConfigurationKey() { return getConfiguredTarget().getConfigurationKey(); } diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java index d2c8e8a2886884..f6cc51285802b2 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java +++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/StarlarkOutputFormatterCallback.java @@ -18,7 +18,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.analysis.configuredtargets.AbstractConfiguredTarget; @@ -65,7 +65,7 @@ private class CqueryDialectGlobals { @Param(name = "target"), }) public Object buildOptions(ConfiguredTarget target) { - BuildConfiguration config = getConfiguration(target.getConfigurationKey()); + BuildConfigurationValue config = getConfiguration(target.getConfigurationKey()); if (config == null) { // config is null for input file configured targets. diff --git a/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java b/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java index d3c4369a9a0c61..2cb3ea573e8e39 100644 --- a/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java +++ b/src/main/java/com/google/devtools/build/lib/query2/cquery/TransitionsOutputFormatterCallback.java @@ -26,7 +26,7 @@ import com.google.devtools.build.lib.analysis.TargetAndConfiguration; import com.google.devtools.build.lib.analysis.ToolchainCollection; import com.google.devtools.build.lib.analysis.ToolchainContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptions.OptionsDiff; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; @@ -61,7 +61,7 @@ */ class TransitionsOutputFormatterCallback extends CqueryThreadsafeCallback { - protected final BuildConfiguration hostConfiguration; + protected final BuildConfigurationValue hostConfiguration; private final HashMap partialResultMap; @Nullable private final TransitionFactory trimmingTransitionFactory; @@ -81,7 +81,7 @@ public String getName() { OutputStream out, SkyframeExecutor skyframeExecutor, TargetAccessor accessor, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, @Nullable TransitionFactory trimmingTransitionFactory) { super(eventHandler, options, out, skyframeExecutor, accessor); this.hostConfiguration = hostConfiguration; @@ -103,7 +103,8 @@ public void processOutput(Iterable partialResult) partialResult.forEach(kct -> partialResultMap.put(kct.getLabel(), accessor.getTarget(kct))); for (KeyedConfiguredTarget keyedConfiguredTarget : partialResult) { Target target = partialResultMap.get(keyedConfiguredTarget.getLabel()); - BuildConfiguration config = getConfiguration(keyedConfiguredTarget.getConfigurationKey()); + BuildConfigurationValue config = + getConfiguration(keyedConfiguredTarget.getConfigurationKey()); addResult( getRuleClassTransition(keyedConfiguredTarget.getConfiguredTarget(), target) + String.format( diff --git a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java index d4821b792d8012..123ad61b7fb781 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/rules/AliasConfiguredTarget.java @@ -28,7 +28,7 @@ import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.Info; import com.google.devtools.build.lib.packages.Provider; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; import javax.annotation.Nullable; @@ -47,7 +47,7 @@ @Immutable public final class AliasConfiguredTarget implements ConfiguredTarget, Structure { private final Label label; - private final BuildConfigurationValue.Key configurationKey; + private final BuildConfigurationKey configurationKey; private final ConfiguredTarget actual; private final ImmutableMap, TransitiveInfoProvider> overrides; @@ -69,7 +69,7 @@ public AliasConfiguredTarget( @VisibleForSerialization AliasConfiguredTarget( Label label, - BuildConfigurationValue.Key configurationKey, + BuildConfigurationKey configurationKey, ConfiguredTarget actual, ImmutableMap, TransitiveInfoProvider> overrides, ImmutableMap configConditions) { @@ -126,7 +126,7 @@ public boolean containsKey(StarlarkSemantics semantics, Object key) throws EvalE } @Override - public BuildConfigurationValue.Key getConfigurationKey() { + public BuildConfigurationKey getConfigurationKey() { // This does not return actual.getConfigurationKey() because actual might be an input file, in // which case its configurationKey is null and we don't want to have rules that have a null // configurationKey. diff --git a/src/main/java/com/google/devtools/build/lib/rules/BUILD b/src/main/java/com/google/devtools/build/lib/rules/BUILD index cbc39276b35b22..ac40eb4ffd0b16 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/BUILD +++ b/src/main/java/com/google/devtools/build/lib/rules/BUILD @@ -166,7 +166,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/concurrent", "//src/main/java/com/google/devtools/build/lib/packages", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec", "//src/main/java/com/google/devtools/build/lib/util:filetype", "//src/main/java/net/starlark/java/eval", diff --git a/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java b/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java index da58df1a6fe74d..150b05990fda2e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java +++ b/src/main/java/com/google/devtools/build/lib/rules/LabelBuildSettings.java @@ -19,7 +19,7 @@ import static com.google.devtools.build.lib.packages.RuleClass.Builder.STARLARK_BUILD_SETTING_DEFAULT_ATTR_NAME; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Attribute.LabelLateBoundDefault; import com.google.devtools.build.lib.packages.BuildSetting; @@ -50,10 +50,10 @@ */ public class LabelBuildSettings { @AutoCodec @VisibleForSerialization - // TODO(b/65746853): find a way to do this without passing the entire BuildConfiguration - static final LabelLateBoundDefault ACTUAL = + // TODO(b/65746853): find a way to do this without passing the entire BuildConfigurationValue + static final LabelLateBoundDefault ACTUAL = LabelLateBoundDefault.fromTargetConfiguration( - BuildConfiguration.class, + BuildConfigurationValue.class, null, (rule, attributes, configuration) -> { if (rule == null || configuration == null) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index baf79c053fd22d..518be545e7ff49 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -56,7 +56,7 @@ import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate; import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate.OutputPathMapper; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -126,7 +126,7 @@ public final ConfiguredTarget create(RuleContext ruleContext) public final void addRuleImplSpecificRequiredConfigFragments( RequiredConfigFragmentsProvider.Builder requiredFragments, AttributeMap attributes, - BuildConfiguration configuration) { + BuildConfigurationValue configuration) { requiredFragments.addStarlarkOptions(AndroidFeatureFlagSetProvider.getFeatureFlags(attributes)); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java index eb2750ba7b57bb..8657db8cee22ce 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLocalTestBase.java @@ -33,7 +33,7 @@ import com.google.devtools.build.lib.analysis.actions.Substitution; import com.google.devtools.build.lib.analysis.actions.Template; import com.google.devtools.build.lib.analysis.actions.TemplateExpansionAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -412,7 +412,7 @@ public ConfiguredTarget create(RuleContext ruleContext) public final void addRuleImplSpecificRequiredConfigFragments( RequiredConfigFragmentsProvider.Builder requiredFragments, AttributeMap attributes, - BuildConfiguration configuration) { + BuildConfigurationValue configuration) { requiredFragments.addStarlarkOptions(AndroidFeatureFlagSetProvider.getFeatureFlags(attributes)); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java index ce5a8451dc39ce..b95d3cd599f596 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSdkProvider.java @@ -22,7 +22,7 @@ import com.google.devtools.build.lib.analysis.ResolvedToolchainContext; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; @@ -123,7 +123,7 @@ public Provider getProvider() { * --incompatible_enable_android_toolchain_resolution=true, else, uses the legacy attribute.. */ public static AndroidSdkProvider fromRuleContext(RuleContext ruleContext) { - BuildConfiguration configuration = ruleContext.getConfiguration(); + BuildConfigurationValue configuration = ruleContext.getConfiguration(); if (configuration != null && configuration.hasFragment(AndroidConfiguration.class) && configuration diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java index f81fbd534e3be1..6f547c2e641581 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java @@ -43,7 +43,7 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg; import com.google.devtools.build.lib.analysis.actions.SpawnAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; @@ -161,7 +161,7 @@ private static boolean propagateDownLegacyToolchain(Object obj, String attrName) return true; } AndroidConfiguration androidConfig = - ((BuildConfiguration) obj).getFragment(AndroidConfiguration.class); + ((BuildConfigurationValue) obj).getFragment(AndroidConfiguration.class); return !androidConfig.incompatibleUseToolchainResolution(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java index 77784383f9a3bf..63a19517a7e97b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java @@ -23,7 +23,7 @@ import com.google.devtools.build.lib.analysis.PlatformConfiguration; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.actions.FileWriteAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; @@ -48,7 +48,7 @@ public final class NativeLibs { public static final NativeLibs EMPTY = new NativeLibs(ImmutableMap.of(), null); private static String getLibDirName(ConfiguredTargetAndData dep) { - BuildConfiguration configuration = dep.getConfiguration(); + BuildConfigurationValue configuration = dep.getConfiguration(); AndroidConfiguration androidConfiguration = configuration.getFragment(AndroidConfiguration.class); String name; diff --git a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java index 28e5db99776cf1..87db0456814d68 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java +++ b/src/main/java/com/google/devtools/build/lib/rules/config/ConfigSetting.java @@ -41,8 +41,8 @@ import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationOptionDetails; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.analysis.config.FragmentOptions.SelectRestriction; @@ -148,7 +148,7 @@ public ConfiguredTarget create(RuleContext ruleContext) public void addRuleImplSpecificRequiredConfigFragments( RequiredConfigFragmentsProvider.Builder requiredFragments, AttributeMap attributes, - BuildConfiguration configuration) { + BuildConfigurationValue configuration) { // values attributes .get(ConfigSettingRule.SETTINGS_ATTRIBUTE, Type.STRING_DICT) diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java index 5a0988018a8eb1..42873ca6d3c607 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCommon.java @@ -35,7 +35,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.actions.FileWriteAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CompilationMode; import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext; import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException; @@ -896,7 +896,7 @@ public static FeatureConfiguration configureFeaturesOrReportRuleError( public static FeatureConfiguration configureFeaturesOrReportRuleError( RuleContext ruleContext, - BuildConfiguration buildConfiguration, + BuildConfigurationValue buildConfiguration, ImmutableSet requestedFeatures, ImmutableSet unsupportedFeatures, CcToolchainProvider toolchain, diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java index 297402aaecbb97..dbfb20d0762ccb 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationContext.java @@ -27,7 +27,7 @@ import com.google.devtools.build.lib.analysis.AnalysisUtils; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.compacthashmap.CompactHashMap; import com.google.devtools.build.lib.collect.compacthashset.CompactHashSet; @@ -726,7 +726,7 @@ static class CommandLineCcCompilationContext { /** Creates a new builder for a {@link CcCompilationContext} instance. */ public static Builder builder( ActionConstructionContext actionConstructionContext, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Label label) { return new Builder(actionConstructionContext, configuration, label); } @@ -763,13 +763,13 @@ public static class Builder { /** The rule that owns the context */ private final ActionConstructionContext actionConstructionContext; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private final Label label; /** Creates a new builder for a {@link CcCompilationContext} instance. */ private Builder( ActionConstructionContext actionConstructionContext, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Label label) { this.actionConstructionContext = actionConstructionContext; this.configuration = configuration; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java index 5f547b89b26e0c..6a0b0ad71b2cce 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelper.java @@ -30,7 +30,7 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.PerLabelOptions; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector; import com.google.devtools.build.lib.cmdline.Label; @@ -231,7 +231,7 @@ public CcCompilationContext getCcCompilationContext() { } private final CppSemantics semantics; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private final ImmutableMap executionInfo; private final CppConfiguration cppConfiguration; private final boolean shouldProcessHeaders; @@ -299,7 +299,7 @@ public CcCompilationHelper( SourceCategory sourceCategory, CcToolchainProvider ccToolchain, FdoContext fdoContext, - BuildConfiguration buildConfiguration, + BuildConfigurationValue buildConfiguration, ImmutableMap executionInfo, boolean shouldProcessHeaders) { this.semantics = Preconditions.checkNotNull(semantics); @@ -2038,7 +2038,7 @@ String getOutputNameBaseWith(String base, boolean usePic) throws RuleErrorExcept /** Returns true iff code coverage is enabled for the given target. */ public static boolean isCodeCoverageEnabled(RuleContext ruleContext) { - BuildConfiguration configuration = ruleContext.getConfiguration(); + BuildConfigurationValue configuration = ruleContext.getConfiguration(); if (configuration.isCodeCoverageEnabled()) { // If rule is matched by the instrumentation filter, enable instrumentation if (InstrumentedFilesCollector.shouldIncludeLocalSources( diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java index 200330efa7862a..c7bd53eb66980d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibrary.java @@ -34,7 +34,7 @@ import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -582,7 +582,7 @@ private static Map> addLinkerOutputArtifacts( RuleContext ruleContext, CcToolchainProvider ccToolchain, CppConfiguration cppConfiguration, - BuildConfiguration configuration, + BuildConfigurationValue configuration, CcCompilationOutputs ccCompilationOutputs, FeatureConfiguration featureConfiguration) throws RuleErrorException { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java index 971f383bda5503..44beb9201a5a16 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLinkingHelper.java @@ -28,7 +28,7 @@ import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -85,7 +85,7 @@ public CcLinkingOutputs getCcLinkingOutputs() { } private final CppSemantics semantics; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private final CppConfiguration cppConfiguration; private final NestedSetBuilder additionalLinkerInputsBuilder = @@ -156,7 +156,7 @@ public CcLinkingHelper( FeatureConfiguration featureConfiguration, CcToolchainProvider ccToolchain, FdoContext fdoContext, - BuildConfiguration configuration, + BuildConfigurationValue configuration, CppConfiguration cppConfiguration, SymbolGenerator symbolGenerator, ImmutableMap executionInfo) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java index b3a5b95efa0ce7..324503bdd062e4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcModule.java @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo; import com.google.devtools.build.lib.analysis.starlark.StarlarkActionFactory; @@ -1943,7 +1943,7 @@ protected void validateOutputType(String outputType) throws EvalException { } } - private static boolean isStampingEnabled(int stamp, BuildConfiguration config) + private static boolean isStampingEnabled(int stamp, BuildConfigurationValue config) throws EvalException { if (stamp == 0) { return false; @@ -2093,7 +2093,8 @@ protected Tuple compile( SourceCategory sourceCategory = (language == Language.CPP) ? SourceCategory.CC : SourceCategory.CC_AND_OBJC; CcCommon common = new CcCommon(actions.getRuleContext(), ccToolchainProvider); - BuildConfiguration configuration = actions.getActionConstructionContext().getConfiguration(); + BuildConfigurationValue configuration = + actions.getActionConstructionContext().getConfiguration(); CcCompilationHelper helper = new CcCompilationHelper( actions.asActionRegistry(actions), diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java index a5636510095f09..f9f4b8cd1dbdb9 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProvider.java @@ -21,7 +21,7 @@ import com.google.devtools.build.lib.analysis.LicensesProvider; import com.google.devtools.build.lib.analysis.PackageSpecificationProvider; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.Depset; @@ -796,9 +796,9 @@ public String getTargetCpu() { } /** - * Returns a map of additional make variables for use by {@link BuildConfiguration}. These are to - * used to allow some build rules to avoid the limits on stack frame sizes and variable-length - * arrays. + * Returns a map of additional make variables for use by {@link BuildConfigurationValue}. These + * are to used to allow some build rules to avoid the limits on stack frame sizes and + * variable-length arrays. * *

    The returned map must contain an entry for {@code STACK_FRAME_UNLIMITED}, though the entry * may be an empty string. diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java index bc5e444c5bf2c1..5c448c9b9eba3e 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderHelper.java @@ -23,7 +23,7 @@ import com.google.devtools.build.lib.analysis.PackageSpecificationProvider; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.cmdline.Label; @@ -62,7 +62,8 @@ public class CcToolchainProviderHelper { public static CcToolchainProvider getCcToolchainProvider( RuleContext ruleContext, CcToolchainAttributesProvider attributes) throws RuleErrorException, InterruptedException { - BuildConfiguration configuration = Preconditions.checkNotNull(ruleContext.getConfiguration()); + BuildConfigurationValue configuration = + Preconditions.checkNotNull(ruleContext.getConfiguration()); CppConfiguration cppConfiguration = Preconditions.checkNotNull(configuration.getFragment(CppConfiguration.class)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java index 4939948a44c336..a82be97b07c018 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppBuildInfo.java @@ -20,7 +20,7 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -47,7 +47,7 @@ public final class CppBuildInfo implements BuildInfoFactory { @Override public BuildInfoCollection create( BuildInfoContext buildInfoContext, - BuildConfiguration config, + BuildConfigurationValue config, Artifact buildInfo, Artifact buildChangelist) { List actions = new ArrayList<>(); @@ -86,7 +86,7 @@ public BuildInfoCollection create( private WriteBuildInfoHeaderAction getHeader( BuildInfoContext buildInfoContext, - BuildConfiguration config, + BuildConfigurationValue config, PathFragment headerName, NestedSet inputs, boolean writeVolatileInfo, @@ -109,7 +109,7 @@ public BuildInfoKey getKey() { } @Override - public boolean isEnabled(BuildConfiguration config) { + public boolean isEnabled(BuildConfigurationValue config) { return config.hasFragment(CppConfiguration.class); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java index 207a8d5beb33a7..5ccf6a477f6d74 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionBuilder.java @@ -24,7 +24,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -49,7 +49,7 @@ public class CppCompileActionBuilder { private final ActionOwner owner; private boolean shareable; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private CcToolchainFeatures.FeatureConfiguration featureConfiguration; private CcToolchainVariables variables = CcToolchainVariables.EMPTY; private Artifact sourceFile; @@ -88,7 +88,7 @@ public CppCompileActionBuilder( ActionConstructionContext actionConstructionContext, @Nullable Artifact grepIncludes, CcToolchainProvider ccToolchain, - BuildConfiguration configuration) { + BuildConfigurationValue configuration) { this.owner = actionConstructionContext.getActionOwner(); this.shareable = false; this.configuration = configuration; diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java index 28146f4a4adbd4..e8a2ed342ab6b0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java @@ -20,7 +20,7 @@ import com.google.common.base.Verify; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.CompilationMode; import com.google.devtools.build.lib.analysis.config.CoreOptions; @@ -52,7 +52,7 @@ import net.starlark.java.eval.StarlarkThread; /** - * This class represents the C/C++ parts of the {@link BuildConfiguration}, including the host + * This class represents the C/C++ parts of the {@link BuildConfigurationValue}, including the host * architecture, target architecture, compiler version, and a standard library version. */ @Immutable diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java index 1a374f500c87d1..2c32ffdd249d65 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java @@ -46,7 +46,7 @@ import com.google.devtools.build.lib.analysis.actions.FileWriteAction; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CompilationMode; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; @@ -462,7 +462,7 @@ public static final Function runfilesFunctio public static Artifact getLinkedArtifact( RuleContext ruleContext, CcToolchainProvider ccToolchain, - BuildConfiguration config, + BuildConfigurationValue config, LinkTargetType linkType) throws RuleErrorException { return getLinkedArtifact( @@ -473,7 +473,7 @@ public static Artifact getLinkedArtifact( public static Artifact getLinkedArtifact( RuleContext ruleContext, CcToolchainProvider ccToolchain, - BuildConfiguration config, + BuildConfigurationValue config, LinkTargetType linkType, String linkedArtifactNameSuffix) throws RuleErrorException { @@ -506,7 +506,7 @@ public static Artifact getLinkedArtifact( Label label, ActionConstructionContext actionConstructionContext, ArtifactRoot artifactRoot, - BuildConfiguration config, + BuildConfigurationValue config, LinkTargetType linkType, String linkedArtifactNameSuffix, PathFragment name) { @@ -535,7 +535,7 @@ public static Artifact getLinkedArtifact( private static Artifact getLinuxLinkedArtifact( Label label, ActionConstructionContext actionConstructionContext, - BuildConfiguration config, + BuildConfigurationValue config, LinkTargetType linkType, String linkedArtifactNameSuffix) { PathFragment name = PathFragment.create(label.getName()); @@ -591,7 +591,7 @@ public static boolean usePicForBinaries( */ public static CppModuleMap createDefaultCppModuleMap( ActionConstructionContext actionConstructionContext, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Label label) { // Create the module map artifact as a genfile. Artifact mapFile = @@ -722,7 +722,7 @@ static Artifact getCompileOutputArtifact( ActionConstructionContext actionConstructionContext, Label label, String outputName, - BuildConfiguration config) { + BuildConfigurationValue config) { PathFragment objectDir = getObjDirectory(label, config.isSiblingRepositoryLayout()); return actionConstructionContext.getDerivedArtifact( objectDir.getRelative(outputName), config.getBinDirectory(label.getRepository())); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java index e5a43dd72974bb..fed62b017ab590 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkAction.java @@ -45,7 +45,7 @@ import com.google.devtools.build.lib.actions.extra.CppLinkInfo; import com.google.devtools.build.lib.actions.extra.ExtraActionInfo; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.starlark.Args; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -89,7 +89,7 @@ public interface LinkArtifactFactory { Artifact create( ActionConstructionContext actionConstructionContext, RepositoryName repositoryName, - BuildConfiguration configuration, + BuildConfigurationValue configuration, PathFragment rootRelativePath); } @@ -103,7 +103,7 @@ Artifact create( public Artifact create( ActionConstructionContext actionConstructionContext, RepositoryName repositoryName, - BuildConfiguration configuration, + BuildConfigurationValue configuration, PathFragment rootRelativePath) { return actionConstructionContext.getDerivedArtifact( rootRelativePath, configuration.getBinDirectory(repositoryName)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java index d807f2e6bba5c8..232187eaf42100 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionBuilder.java @@ -29,7 +29,7 @@ import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.PerLabelOptions; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.RepositoryName; @@ -78,7 +78,7 @@ public class CppLinkActionBuilder { public Artifact create( ActionConstructionContext actionConstructionContext, RepositoryName repositoryName, - BuildConfiguration configuration, + BuildConfigurationValue configuration, PathFragment rootRelativePath) { return actionConstructionContext.getShareableArtifact( rootRelativePath, configuration.getBinDirectory(repositoryName)); @@ -98,7 +98,7 @@ public Artifact create( /** Directory where toolchain stores language-runtime libraries (libstdc++, libc++ ...) */ private PathFragment toolchainLibrariesSolibDir; - protected final BuildConfiguration configuration; + protected final BuildConfigurationValue configuration; private final CppConfiguration cppConfiguration; private FeatureConfiguration featureConfiguration; @@ -164,7 +164,7 @@ public CppLinkActionBuilder( ActionConstructionContext actionConstructionContext, Label label, Artifact output, - BuildConfiguration configuration, + BuildConfigurationValue configuration, CcToolchainProvider toolchain, FdoContext fdoContext, FeatureConfiguration featureConfiguration, @@ -1114,7 +1114,7 @@ public static ImmutableMap mapLinkstampsToOutputs( ImmutableSet linkstamps, ActionConstructionContext actionConstructionContext, RepositoryName repositoryName, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Artifact outputBinary, LinkArtifactFactory linkArtifactFactory) { ImmutableMap.Builder mapBuilder = ImmutableMap.builder(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java index 18e576193eb244..a13b80d006a4ce 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppLinkstampCompileHelper.java @@ -21,7 +21,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -43,7 +43,7 @@ public static CppCompileAction createLinkstampCompileAction( RuleErrorConsumer ruleErrorConsumer, ActionConstructionContext actionConstructionContext, @Nullable Artifact grepIncludes, - BuildConfiguration configuration, + BuildConfigurationValue configuration, Artifact sourceFile, Artifact outputFile, NestedSet compilationInputs, diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java index aa8a3ba0f97e95..19eb66171ed30d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppSemantics.java @@ -18,7 +18,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.StructImpl; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration; @@ -34,7 +34,7 @@ public interface CppSemantics extends StarlarkValue { * minute. */ void finalizeCompileActionBuilder( - BuildConfiguration configuration, + BuildConfigurationValue configuration, FeatureConfiguration featureConfiguration, CppCompileActionBuilder actionBuilder, RuleErrorConsumer ruleErrorConsumer); @@ -54,7 +54,7 @@ HeadersCheckingMode determineStarlarkHeadersCheckingMode( boolean allowIncludeScanning(); /** Returns true iff this build should perform .d input pruning. */ - boolean needsDotdInputPruning(BuildConfiguration configuration); + boolean needsDotdInputPruning(BuildConfigurationValue configuration); void validateAttributes(RuleContext ruleContext); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java index 72067af5ffca0d..1330f91fe8317c 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/FdoHelper.java @@ -21,7 +21,7 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CompilationMode; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; @@ -40,7 +40,7 @@ public class FdoHelper { public static FdoContext getFdoContext( RuleContext ruleContext, CcToolchainAttributesProvider attributes, - BuildConfiguration configuration, + BuildConfigurationValue configuration, CppConfiguration cppConfiguration, ImmutableMap toolPaths) throws InterruptedException, RuleErrorException { diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java index e1620c4a5deb48..6acc1e61d2139b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendAction.java @@ -31,7 +31,7 @@ import com.google.devtools.build.lib.actions.ResourceSetOrBuilder; import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.analysis.actions.SpawnAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; @@ -265,7 +265,7 @@ protected SpawnAction createSpawnAction( CommandLineLimits commandLineLimits, boolean isShellCommand, ActionEnvironment env, - @Nullable BuildConfiguration configuration, + @Nullable BuildConfigurationValue configuration, ImmutableMap executionInfo, CharSequence progressMessage, RunfilesSupplier runfilesSupplier, diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java index 245bac5bc84640..10b4fa4ceaa5b4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/LtoBackendArtifacts.java @@ -24,7 +24,7 @@ import com.google.devtools.build.lib.actions.CommandLineExpansionException; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; @@ -91,7 +91,7 @@ public final class LtoBackendArtifacts implements LtoBackendArtifactsApi userCompileFlags, @Nullable BitcodeFiles bitcodeFiles) diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java index e15df2c960b4d1..a002ac52d27693 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/ObjcCppSemantics.java @@ -19,7 +19,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.StructImpl; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration; @@ -35,7 +35,7 @@ private ObjcCppSemantics() {} @Override public void finalizeCompileActionBuilder( - BuildConfiguration configuration, + BuildConfigurationValue configuration, FeatureConfiguration featureConfiguration, CppCompileActionBuilder actionBuilder, RuleErrorConsumer ruleErrorConsumer) { @@ -96,7 +96,7 @@ public boolean allowIncludeScanning() { } @Override - public boolean needsDotdInputPruning(BuildConfiguration configuration) { + public boolean needsDotdInputPruning(BuildConfigurationValue configuration) { return configuration.getFragment(CppConfiguration.class).objcShouldGenerateDotdFiles(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java index bfd2ce27aecef7..c5371aed1efef4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java +++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java @@ -28,7 +28,7 @@ import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo; @@ -53,7 +53,7 @@ public class Filegroup implements RuleConfiguredTargetFactory { public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException, RuleErrorException, ActionConflictException { String outputGroupName = ruleContext.attributes().get("output_group", Type.STRING); - BuildConfiguration configuration = checkNotNull(ruleContext.getConfiguration()); + BuildConfigurationValue configuration = checkNotNull(ruleContext.getConfiguration()); if (outputGroupName.endsWith(INTERNAL_SUFFIX)) { ruleContext.throwWithAttributeError( "output_group", String.format(ILLEGAL_OUTPUT_GROUP_ERROR, outputGroupName)); diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java index 0098c67d7306eb..b0b8c5b2cfeca7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBuildInfoFactory.java @@ -21,7 +21,7 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -71,7 +71,7 @@ public String format(long timestamp) { @Override public final BuildInfoCollection create( BuildInfoContext context, - BuildConfiguration config, + BuildConfigurationValue config, Artifact stableStatus, Artifact volatileStatus) { WriteBuildInfoPropertiesAction redactedInfo = @@ -130,7 +130,7 @@ protected TimestampFormatter getTimestampFormatter() { private WriteBuildInfoPropertiesAction getHeader( BuildInfoContext context, - BuildConfiguration config, + BuildConfigurationValue config, PathFragment propertyFileName, NestedSet inputs, BuildInfoPropertiesTranslator translator, @@ -154,7 +154,7 @@ public final BuildInfoKey getKey() { } @Override - public boolean isEnabled(BuildConfiguration config) { + public boolean isEnabled(BuildConfigurationValue config) { return config.hasFragment(JavaConfiguration.class); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java index f0e140715fef46..86f0388f00d9ce 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompilationHelper.java @@ -30,7 +30,7 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.LazyWritePathsFileAction; import com.google.devtools.build.lib.analysis.actions.SpawnAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CoreOptionConverters.StrictDepsMode; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector; import com.google.devtools.build.lib.cmdline.Label; @@ -139,7 +139,7 @@ private AnalysisEnvironment getAnalysisEnvironment() { return ruleContext.getAnalysisEnvironment(); } - private BuildConfiguration getConfiguration() { + private BuildConfigurationValue getConfiguration() { return ruleContext.getConfiguration(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java index 84fffad5602f58..9b2fb11cc22b5d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCompileAction.java @@ -57,7 +57,7 @@ import com.google.devtools.build.lib.actions.SpawnResult; import com.google.devtools.build.lib.actions.extra.ExtraActionInfo; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.starlark.Args; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -126,7 +126,7 @@ enum CompilationType { private final ImmutableMap executionInfo; private final CommandLine executableLine; private final CommandLine flagLine; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private final OnDemandString progressMessage; private final NestedSet directJars; @@ -153,7 +153,7 @@ public JavaCompileAction( ExtraActionInfoSupplier extraActionInfoSupplier, CommandLine executableLine, CommandLine flagLine, - BuildConfiguration configuration, + BuildConfigurationValue configuration, NestedSet dependencyArtifacts, Artifact outputDepsProto, JavaClasspathMode classpathMode) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java index 58301d0b5fd8b9..86c3228f06dc58 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuntime.java @@ -27,7 +27,7 @@ import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.TemplateVariableInfo; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -38,14 +38,14 @@ /** Implementation for the {@code java_runtime} rule. */ public class JavaRuntime implements RuleConfiguredTargetFactory { // TODO(lberki): This is incorrect but that what the Jvm configuration fragment did. We'd have the - // the ability to do better if we knew what OS the BuildConfiguration refers to. + // the ability to do better if we knew what OS the BuildConfigurationValue refers to. private static final String BIN_JAVA = "bin/java" + OsUtils.executableExtension(); @Override public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException, RuleErrorException, ActionConflictException { NestedSetBuilder filesBuilder = NestedSetBuilder.stableOrder(); - BuildConfiguration configuration = checkNotNull(ruleContext.getConfiguration()); + BuildConfigurationValue configuration = checkNotNull(ruleContext.getConfiguration()); filesBuilder.addTransitive(PrerequisiteArtifacts.nestedSet(ruleContext, "srcs")); boolean siblingRepositoryLayout = configuration.isSiblingRepositoryLayout(); PathFragment javaHome = defaultJavaHome(ruleContext.getLabel(), siblingRepositoryLayout); diff --git a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java index d9647ebc5615d3..4edb1a7c47d778 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/nativedeps/NativeDepsHelper.java @@ -29,7 +29,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.RuleClass.ConfiguredTargetFactory.RuleErrorException; @@ -83,7 +83,7 @@ public abstract class NativeDepsHelper { public Artifact create( ActionConstructionContext actionConstructionContext, RepositoryName repositoryName, - BuildConfiguration configuration, + BuildConfigurationValue configuration, PathFragment rootRelativePath) { return actionConstructionContext.getShareableArtifact( rootRelativePath, configuration.getBinDirectory(repositoryName)); @@ -119,7 +119,7 @@ private NativeDepsHelper() {} public static Artifact linkAndroidNativeDepsIfPresent( final RuleContext ruleContext, CcInfo ccInfo, - final BuildConfiguration configuration, + final BuildConfigurationValue configuration, CcToolchainProvider toolchain, CppSemantics cppSemantics) throws InterruptedException, RuleErrorException { @@ -183,7 +183,7 @@ public static NativeDepsRunfiles createNativeDepsAction( final RuleContext ruleContext, CcInfo ccInfo, Collection extraLinkOpts, - BuildConfiguration configuration, + BuildConfigurationValue configuration, CcToolchainProvider toolchain, Artifact nativeDeps, ArtifactRoot bindirIfShared, diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java index 8598d83f13ece2..1575b32cf435c6 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleBinary.java @@ -33,7 +33,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -198,7 +198,7 @@ public static AppleLinkingOutputs linkMultiArchBinary( ImmutableListMultimap cpuToDepsCollectionMap = MultiArchBinarySupport.transformMap(ruleContext.getPrerequisitesByConfiguration("deps")); - ImmutableMap childConfigurationsAndToolchains = + ImmutableMap childConfigurationsAndToolchains = MultiArchBinarySupport.getChildConfigurationsAndToolchains(ruleContext); MultiArchBinarySupport multiArchBinarySupport = new MultiArchBinarySupport(ruleContext, cppSemantics); @@ -220,10 +220,10 @@ public static AppleLinkingOutputs linkMultiArchBinary( allLinkInputs.addAll(extraLinkInputs); allLinkopts.addAll(extraLinkopts); - ImmutableListMultimap buildConfigToCcInfoMap = + ImmutableListMultimap buildConfigToCcInfoMap = ruleContext.getPrerequisitesByConfiguration("deps", CcInfo.PROVIDER); NestedSetBuilder headerTokens = NestedSetBuilder.stableOrder(); - for (Map.Entry entry : buildConfigToCcInfoMap.entries()) { + for (Map.Entry entry : buildConfigToCcInfoMap.entries()) { CcInfo dep = entry.getValue(); headerTokens.addTransitive(dep.getCcCompilationContext().getHeaderTokens()); } @@ -244,7 +244,7 @@ public static AppleLinkingOutputs linkMultiArchBinary( for (DependencySpecificConfiguration dependencySpecificConfiguration : dependencySpecificConfigurations) { - BuildConfiguration childConfig = dependencySpecificConfiguration.config(); + BuildConfigurationValue childConfig = dependencySpecificConfiguration.config(); String configCpu = childConfig.getCpu(); AppleConfiguration childAppleConfig = childConfig.getFragment(AppleConfiguration.class); CppConfiguration childCppConfig = childConfig.getFragment(CppConfiguration.class); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java index 5ba06e9f58f467..701286beb520b8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStarlarkCommon.java @@ -22,7 +22,7 @@ import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.transitions.StarlarkExposedRuleTransitionFactory; import com.google.devtools.build.lib.analysis.platform.ConstraintValueInfo; import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleContext; @@ -357,7 +357,7 @@ private StructImpl createStarlarkLinkingOutputs( return StarlarkInfo.create(linkingOutputsConstructor, fields.build(), Location.BUILTIN); } - private static boolean isStampingEnabled(int stamp, BuildConfiguration config) + private static boolean isStampingEnabled(int stamp, BuildConfigurationValue config) throws EvalException { if (stamp == 0) { return false; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java index dcd1d094b07bc6..2cb24fd88876ed 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibrary.java @@ -25,7 +25,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.rules.apple.AppleConfiguration; @@ -81,7 +81,7 @@ public final ConfiguredTarget create(RuleContext ruleContext) MultiArchBinarySupport.transformMap( ruleContext.getPrerequisitesByConfiguration(AVOID_DEPS_ATTR_NAME, CcInfo.PROVIDER)); - Map childConfigurationsAndToolchains = + Map childConfigurationsAndToolchains = MultiArchBinarySupport.getChildConfigurationsAndToolchains(ruleContext); IntermediateArtifacts ruleIntermediateArtifacts = ObjcRuleClasses.intermediateArtifacts(ruleContext); @@ -96,9 +96,9 @@ public final ConfiguredTarget create(RuleContext ruleContext) new ObjcProvider.Builder(ruleContext.getAnalysisEnvironment().getStarlarkSemantics()); Map> outputGroupCollector = new TreeMap<>(); - for (Map.Entry entry : + for (Map.Entry entry : childConfigurationsAndToolchains.entrySet()) { - BuildConfiguration childToolchainConfig = entry.getKey(); + BuildConfigurationValue childToolchainConfig = entry.getKey(); String childCpu = entry.getKey().getCpu(); CcToolchainProvider childToolchain = entry.getValue(); @@ -134,10 +134,10 @@ public final ConfiguredTarget create(RuleContext ruleContext) addTransitivePropagatedKeys(objcProviderBuilder, objcProvider); } - ImmutableListMultimap buildConfigToCcInfoMap = + ImmutableListMultimap buildConfigToCcInfoMap = ruleContext.getPrerequisitesByConfiguration("deps", CcInfo.PROVIDER); NestedSetBuilder headerTokens = NestedSetBuilder.stableOrder(); - for (Map.Entry entry : buildConfigToCcInfoMap.entries()) { + for (Map.Entry entry : buildConfigToCcInfoMap.entries()) { CcInfo dep = entry.getValue(); headerTokens.addTransitive(dep.getCcCompilationContext().getHeaderTokens()); } @@ -184,7 +184,7 @@ private void addTransitivePropagatedKeys(ObjcProvider.Builder objcProviderBuilde private ObjcCommon common( RuleContext ruleContext, - BuildConfiguration buildConfiguration, + BuildConfigurationValue buildConfiguration, IntermediateArtifacts intermediateArtifacts, List propagatedDeps) throws InterruptedException { diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java index 49d8f0b0ba7ab1..007c35cc4368d8 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/CompilationSupport.java @@ -55,7 +55,7 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg; import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.InstrumentationSpec; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesCollector.LocalMetadataCollector; @@ -179,7 +179,7 @@ public static final FilesToRunProvider xcrunwrapper(RuleContext ruleContext) { private FeatureConfiguration getFeatureConfiguration( RuleContext ruleContext, CcToolchainProvider ccToolchain, - BuildConfiguration configuration, + BuildConfigurationValue configuration, CppSemantics cppSemantics) { ImmutableSet.Builder activatedCrosstoolSelectables = ImmutableSet.builder() @@ -287,7 +287,7 @@ static ImmutableList frameworkLibrarySearchPaths(ObjcProvider provider) } private final RuleContext ruleContext; - private final BuildConfiguration buildConfiguration; + private final BuildConfigurationValue buildConfiguration; private final ObjcConfiguration objcConfiguration; private final AppleConfiguration appleConfiguration; private final CppSemantics cppSemantics; @@ -319,7 +319,7 @@ public CcCompilationContext getCcCompilationContext() { */ private CompilationSupport( RuleContext ruleContext, - BuildConfiguration buildConfiguration, + BuildConfigurationValue buildConfiguration, CppSemantics cppSemantics, IntermediateArtifacts intermediateArtifacts, CompilationAttributes compilationAttributes, @@ -356,7 +356,7 @@ private CompilationSupport( public static class Builder { private final RuleContext ruleContext; private final CppSemantics cppSemantics; - private BuildConfiguration buildConfiguration; + private BuildConfigurationValue buildConfiguration; private IntermediateArtifacts intermediateArtifacts; private CompilationAttributes compilationAttributes; private CcToolchainProvider toolchain; @@ -368,8 +368,8 @@ public Builder(RuleContext ruleContext, CppSemantics cppSemantics) { this.cppSemantics = cppSemantics; } - /** Sets the {@link BuildConfiguration} for the calling target. */ - public Builder setConfig(BuildConfiguration buildConfiguration) { + /** Sets the {@link BuildConfigurationValue} for the calling target. */ + public Builder setConfig(BuildConfigurationValue buildConfiguration) { this.buildConfiguration = buildConfiguration; return this; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java index 017f1e5525de3c..01cea42c3a82da 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/IntermediateArtifacts.java @@ -19,7 +19,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Type; import com.google.devtools.build.lib.rules.cpp.CppModuleMap; @@ -36,7 +36,7 @@ public final class IntermediateArtifacts implements StarlarkValue { static final String LINKMAP_SUFFIX = ".linkmap"; private final RuleContext ruleContext; - private final BuildConfiguration buildConfiguration; + private final BuildConfigurationValue buildConfiguration; private final String archiveFileNameSuffix; private final String outputPrefix; private final UmbrellaHeaderStrategy umbrellaHeaderStrategy; @@ -76,7 +76,7 @@ public final class IntermediateArtifacts implements StarlarkValue { RuleContext ruleContext, String archiveFileNameSuffix, String outputPrefix, - BuildConfiguration buildConfiguration) { + BuildConfigurationValue buildConfiguration) { this( ruleContext, archiveFileNameSuffix, @@ -89,7 +89,7 @@ public final class IntermediateArtifacts implements StarlarkValue { RuleContext ruleContext, String archiveFileNameSuffix, String outputPrefix, - BuildConfiguration buildConfiguration, + BuildConfigurationValue buildConfiguration, UmbrellaHeaderStrategy umbrellaHeaderStrategy) { this.ruleContext = ruleContext; this.buildConfiguration = buildConfiguration; diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java index 62151913cf458b..e520ea15512a26 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/MultiArchBinarySupport.java @@ -27,7 +27,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.BuiltinProvider; import com.google.devtools.build.lib.packages.Info; @@ -49,14 +49,15 @@ public class MultiArchBinarySupport { * Returns all child configurations for this multi-arch target, mapped to the toolchains that they * should use. */ - static ImmutableMap getChildConfigurationsAndToolchains( - RuleContext ruleContext) { - ImmutableListMultimap configToProvider = + static ImmutableMap + getChildConfigurationsAndToolchains(RuleContext ruleContext) { + ImmutableListMultimap configToProvider = ruleContext.getPrerequisitesByConfiguration( ObjcRuleClasses.CHILD_CONFIG_ATTR, CcToolchainProvider.PROVIDER); - ImmutableMap.Builder result = ImmutableMap.builder(); - for (BuildConfiguration config : configToProvider.keySet()) { + ImmutableMap.Builder result = + ImmutableMap.builder(); + for (BuildConfigurationValue config : configToProvider.keySet()) { CcToolchainProvider toolchain = Iterables.getOnlyElement(configToProvider.get(config)); result.put(config, toolchain); } @@ -64,9 +65,10 @@ static ImmutableMap getChildConfigurati return result.build(); } - static ImmutableListMultimap transformMap(Multimap input) { + static ImmutableListMultimap transformMap( + Multimap input) { ImmutableListMultimap.Builder result = ImmutableListMultimap.builder(); - for (Map.Entry entry : input.entries()) { + for (Map.Entry entry : input.entries()) { result.put(entry.getKey().getCpu(), entry.getValue()); } @@ -77,7 +79,7 @@ static ImmutableListMultimap transformMap(Multimap getDependencySpecificConfigurations( - Map childConfigurationsAndToolchains, + Map childConfigurationsAndToolchains, ImmutableListMultimap cpuToDepsCollectionMap, ImmutableList dylibProviders) throws RuleErrorException, InterruptedException { Iterable dylibObjcProviders = getDylibObjcProviders(dylibProviders); ImmutableSet.Builder childInfoBuilder = ImmutableSet.builder(); - for (BuildConfiguration childToolchainConfig : childConfigurationsAndToolchains.keySet()) { + for (BuildConfigurationValue childToolchainConfig : childConfigurationsAndToolchains.keySet()) { String childCpu = childToolchainConfig.getCpu(); IntermediateArtifacts intermediateArtifacts = @@ -247,7 +249,7 @@ private static Iterable getDylibObjcProviders( private ObjcCommon common( RuleContext ruleContext, - BuildConfiguration buildConfiguration, + BuildConfigurationValue buildConfiguration, IntermediateArtifacts intermediateArtifacts, List propagatedDeps, Iterable additionalDepProviders) diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java index a1a4214ddd6299..ac3c044753de57 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcCommon.java @@ -41,7 +41,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.packages.BuiltinProvider; @@ -98,7 +98,7 @@ static class Builder { private final Purpose purpose; private final RuleContext context; private final StarlarkSemantics semantics; - private final BuildConfiguration buildConfiguration; + private final BuildConfigurationValue buildConfiguration; private Optional compilationAttributes = Optional.absent(); private Optional compilationArtifacts = Optional.absent(); private Iterable objcProviders = ImmutableList.of(); @@ -129,7 +129,7 @@ static class Builder { * configuration data from the given configuration object for use in situations where a single * target's outputs are under multiple configurations. */ - Builder(Purpose purpose, RuleContext context, BuildConfiguration buildConfiguration) + Builder(Purpose purpose, RuleContext context, BuildConfigurationValue buildConfiguration) throws InterruptedException { this.purpose = purpose; this.context = Preconditions.checkNotNull(context); diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java index d7f370b7a57506..9bb5c82c8c8306 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcRuleClasses.java @@ -35,7 +35,7 @@ import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.actions.SpawnAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.HostTransition; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction; @@ -67,12 +67,12 @@ private ObjcRuleClasses() { } /** - * Creates and returns an {@link IntermediateArtifacts} object, using the given rule context - * for fetching current-rule attributes, and using the given build configuration to determine - * the appropriate output directory in which to root artifacts. + * Creates and returns an {@link IntermediateArtifacts} object, using the given rule context for + * fetching current-rule attributes, and using the given build configuration to determine the + * appropriate output directory in which to root artifacts. */ - public static IntermediateArtifacts intermediateArtifacts(RuleContext ruleContext, - BuildConfiguration buildConfiguration) { + public static IntermediateArtifacts intermediateArtifacts( + RuleContext ruleContext, BuildConfigurationValue buildConfiguration) { return new IntermediateArtifacts(ruleContext, /*archiveFileNameSuffix*/ "", /*outputPrefix*/ "", buildConfiguration); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java index e4007ce6378ce1..e1b02dd898f9be 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ObjcVariablesExtension.java @@ -24,7 +24,7 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.packages.BuildType; import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables; import com.google.devtools.build.lib.rules.cpp.CcToolchainVariables.VariablesExtension; @@ -68,7 +68,7 @@ class ObjcVariablesExtension implements VariablesExtension { private final ObjcProvider objcProvider; private final Artifact fullyLinkArchive; private final IntermediateArtifacts intermediateArtifacts; - private final BuildConfiguration buildConfiguration; + private final BuildConfigurationValue buildConfiguration; private final ImmutableList frameworkSearchPaths; private final Set frameworkNames; private final ImmutableList libraryNames; @@ -85,7 +85,7 @@ private ObjcVariablesExtension( ObjcProvider objcProvider, Artifact fullyLinkArchive, IntermediateArtifacts intermediateArtifacts, - BuildConfiguration buildConfiguration, + BuildConfigurationValue buildConfiguration, ImmutableList frameworkSearchPaths, Set frameworkNames, ImmutableList libraryNames, @@ -246,7 +246,7 @@ static class Builder { private ObjcProvider objcProvider; private Artifact fullyLinkArchive; private IntermediateArtifacts intermediateArtifacts; - private BuildConfiguration buildConfiguration; + private BuildConfigurationValue buildConfiguration; private ImmutableList frameworkSearchPaths; private Set frameworkNames; private ImmutableSet forceLoadArtifacts; @@ -285,7 +285,7 @@ public Builder setIntermediateArtifacts(IntermediateArtifacts intermediateArtifa } /** Sets the configuration for this extension. */ - public Builder setConfiguration(BuildConfiguration buildConfiguration) { + public Builder setConfiguration(BuildConfigurationValue buildConfiguration) { this.buildConfiguration = Preconditions.checkNotNull(buildConfiguration); return this; } @@ -356,7 +356,7 @@ public ObjcVariablesExtension build() { activeVariableCategoriesBuilder.build(); Preconditions.checkNotNull(ruleContext, "missing RuleContext"); - Preconditions.checkNotNull(buildConfiguration, "missing BuildConfiguration"); + Preconditions.checkNotNull(buildConfiguration, "missing BuildConfigurationValue"); Preconditions.checkNotNull(intermediateArtifacts, "missing IntermediateArtifacts"); if (activeVariableCategories.contains(VariableCategory.FULLY_LINK_VARIABLES)) { Preconditions.checkNotNull(objcProvider, "missing ObjcProvider"); diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java index 0a848f7721d080..82b57231eae0cf 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyRuleClasses.java @@ -18,7 +18,7 @@ import com.google.common.base.Ascii; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableSet; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.SymlinkDefinition; @@ -124,8 +124,8 @@ public String getLinkName(String symlinkPrefix, String productName, String works @Override public ImmutableSet getLinkPaths( BuildRequestOptions buildRequestOptions, - Set targetConfigs, - Function configGetter, + Set targetConfigs, + Function configGetter, RepositoryName repositoryName, Path outputPath, Path execRoot) { diff --git a/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java b/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java index 5866e1dc97ce3f..ff719cae31b746 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/CommandLogModule.java @@ -17,7 +17,7 @@ import com.google.common.base.Supplier; import com.google.common.flogger.GoogleLogger; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.util.AbruptExitException; import com.google.devtools.build.lib.util.io.OutErr; @@ -112,7 +112,8 @@ public CommandLogInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) throws AbruptExitException { checkNotNull(env); return print(getCommandLogPath(env.getRuntime().getWorkspace().getOutputBase())); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java index dddc2a00333374..1de9ea093bda41 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/InfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.util.AbruptExitException; import java.io.ByteArrayOutputStream; import java.io.OutputStreamWriter; @@ -60,7 +60,7 @@ public boolean isHidden() { /** Returns the value of the info key. The return value is directly printed to stdout. */ public abstract byte[] get( - Supplier configurationSupplier, CommandEnvironment env) + Supplier configurationSupplier, CommandEnvironment env) throws AbruptExitException, InterruptedException; protected static byte[] print(Object value) { diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java b/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java index d8c420878ff439..497479d40e0a84 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/TestResultAggregator.java @@ -20,7 +20,7 @@ import com.google.devtools.build.lib.analysis.AliasProvider; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.TestAttempt; import com.google.devtools.build.lib.analysis.test.TestProvider; import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams; @@ -60,7 +60,7 @@ static final class AggregationPolicy { TestResultAggregator( ConfiguredTarget target, - BuildConfiguration configuration, + BuildConfigurationValue configuration, AggregationPolicy policy, boolean skippedThisTest) { this.policy = policy; diff --git a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java index 000ffdff8e34c2..6237955ceace66 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/TestSummary.java @@ -22,7 +22,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.AliasProvider; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.TestProvider; import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams; import com.google.devtools.build.lib.buildeventstream.BuildEvent.LocalFile.LocalFileType; @@ -122,7 +122,7 @@ private void checkMutation(Object value) { checkMutation(); } - public Builder setConfiguration(BuildConfiguration configuration) { + public Builder setConfiguration(BuildConfigurationValue configuration) { checkMutation(configuration); summary.configuration = checkNotNull(configuration, summary); return this; @@ -365,7 +365,7 @@ private void makeSummaryImmutable() { // Currently only populated if --runs_per_test_detects_flakes is enabled. private final ImmutableList> shardRunStatuses; - private BuildConfiguration configuration; + private BuildConfigurationValue configuration; private BlazeTestStatus status; private boolean skipped; private final int[] shardAttempts; @@ -416,7 +416,7 @@ public ConfiguredTarget getTarget() { return target; } - public BuildConfiguration getConfiguration() { + public BuildConfigurationValue getConfiguration() { return configuration; } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD b/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD index dd2f4c8257acc4..0eda387114de92 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/BUILD @@ -69,7 +69,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/runtime/commands/info", "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key", "//src/main/java/com/google/devtools/build/lib/skyframe:loading_phase_started_event", "//src/main/java/com/google/devtools/build/lib/skyframe:package_progress_receiver", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java index 38f73612c0a111..d95a8569813b86 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommand.java @@ -32,7 +32,7 @@ import com.google.common.collect.Ordering; import com.google.common.collect.Sets; import com.google.common.collect.Table; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CoreOptions; import com.google.devtools.build.lib.analysis.config.Fragment; import com.google.devtools.build.lib.analysis.config.FragmentClassSet; @@ -51,7 +51,7 @@ import com.google.devtools.build.lib.server.FailureDetails; import com.google.devtools.build.lib.server.FailureDetails.ConfigCommand.Code; import com.google.devtools.build.lib.server.FailureDetails.FailureDetail; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.SkyFunctions; import com.google.devtools.build.lib.util.Pair; import com.google.devtools.build.skyframe.InMemoryMemoizingEvaluator; @@ -119,7 +119,8 @@ public OutputTypeConverter() { } /** - * Data structure defining a {@link BuildConfiguration} for the purpose of this command's output. + * Data structure defining a {@link BuildConfigurationValue} for the purpose of this command's + * output. * *

    Includes all data representing a "configuration" and defines their relative structure and * list order. @@ -258,8 +259,8 @@ public int hashCode() { } /** - * Data structure defining the difference between two {@link BuildConfiguration}s from the point - * of this command's output. + * Data structure defining the difference between two {@link BuildConfigurationValue}s from the + * point of this command's output. * *

    See {@link ConfigurationForOutput} for further details. */ @@ -293,7 +294,7 @@ public int hashCode() { } /** - * Data structure defining the difference between two {@link BuildConfiguration}s for a given + * Data structure defining the difference between two {@link BuildConfigurationValue}s for a given * {@link FragmentOptions}from the point of this command's output. * *

    See {@link ConfigurationForOutput} for further details. @@ -330,7 +331,7 @@ public int hashCode() { */ @Override public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult options) { - ImmutableSortedMap configurations = + ImmutableSortedMap configurations = findConfigurations(env); try (PrintWriter writer = @@ -375,10 +376,10 @@ public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult opti } /** - * Returns all {@link BuildConfiguration}s in Skyframe as a map from their {@link - * BuildConfigurationValue.Key} to instance. + * Returns all {@link BuildConfigurationValue}s in Skyframe as a map from their {@link + * BuildConfigurationKey} to instance. */ - private static ImmutableSortedMap + private static ImmutableSortedMap findConfigurations(CommandEnvironment env) { InMemoryMemoizingEvaluator evaluator = (InMemoryMemoizingEvaluator) @@ -387,9 +388,9 @@ public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult opti .filter(e -> SkyFunctions.BUILD_CONFIGURATION.equals(e.getKey().functionName())) .collect( toImmutableSortedMap( - comparing(BuildConfigurationValue.Key::toComparableString), - e -> (BuildConfigurationValue.Key) e.getKey(), - e -> ((BuildConfigurationValue) e.getValue()).getConfiguration())); + comparing(BuildConfigurationKey::toComparableString), + e -> (BuildConfigurationKey) e.getKey(), + e -> (BuildConfigurationValue) e.getValue())); } /** @@ -397,8 +398,8 @@ public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult opti * runtime. * *

    These are the fragments that Blaze "knows about", not necessarily the fragments in a {@link - * BuildConfiguration}. Trimming, in particular, strips fragments out of actual configurations. - * It's safe to assume untrimmed configuration have all fragments listed here. + * BuildConfigurationValue}. Trimming, in particular, strips fragments out of actual + * configurations. It's safe to assume untrimmed configuration have all fragments listed here. */ private static ImmutableSortedMap< Class, ImmutableSortedSet>> @@ -418,16 +419,15 @@ public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult opti * instances. */ private static ImmutableSortedSet forOutput( - ImmutableSortedMap asSkyKeyMap, + ImmutableSortedMap asSkyKeyMap, ImmutableSortedMap< Class, ImmutableSortedSet>> fragmentDefs) { ImmutableSortedSet.Builder ans = ImmutableSortedSet.orderedBy(comparing(e -> e.configHash)); - for (Map.Entry entry : - asSkyKeyMap.entrySet()) { - BuildConfigurationValue.Key key = entry.getKey(); - BuildConfiguration config = entry.getValue(); + for (Map.Entry entry : asSkyKeyMap.entrySet()) { + BuildConfigurationKey key = entry.getKey(); + BuildConfigurationValue config = entry.getValue(); ans.add(getConfigurationForOutput(key, config.checksum(), config, fragmentDefs)); } return ans.build(); @@ -435,9 +435,9 @@ private static ImmutableSortedSet forOutput( /** Constructs a {@link ConfigurationForOutput} from the given input daata. */ private static ConfigurationForOutput getConfigurationForOutput( - BuildConfigurationValue.Key skyKey, + BuildConfigurationKey skyKey, String configHash, - BuildConfiguration config, + BuildConfigurationValue config, ImmutableSortedMap< Class, ImmutableSortedSet>> fragmentDefs) { @@ -547,7 +547,7 @@ private static ImmutableSortedMap getOrderedNativeOptions( * output from interpreting them more deeply than we want for simple "name=value" output. */ private static ImmutableSortedMap getOrderedUserDefinedOptions( - BuildConfiguration config) { + BuildConfigurationValue config) { ImmutableSortedMap.Builder ans = ImmutableSortedMap.naturalOrder(); // Starlark-defined options: diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java index 66cde8769406a0..69c635f661089f 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandOutputFormatter.java @@ -73,7 +73,7 @@ public void writeConfigurationIDs(Iterable configuration @Override public void writeConfiguration(ConfigurationForOutput configuration) { - writer.println("BuildConfiguration " + configuration.configHash + ":"); + writer.println("BuildConfigurationValue " + configuration.configHash + ":"); writer.println("Skyframe Key: " + configuration.skyKey); StringBuilder fragments = new StringBuilder(); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java index f6fe3912663ba8..4694d92960f117 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/CoverageCommand.java @@ -71,8 +71,8 @@ * set of inputs of test actions if coverage mode is enabled (otherwise the set of metadata files is * empty). * - *

    Whether or not coverage is being collected is stored in the {@code BuildConfiguration}. This - * is handy because then we have an easy way to change the test action and the action graph + *

    Whether or not coverage is being collected is stored in the {@code BuildConfigurationValue}. + * This is handy because then we have an easy way to change the test action and the action graph * depending on this bit, but it also means that if this bit is flipped, all targets need to be * re-analyzed (note that some languages, e.g. C++ require different compiler options to emit code * that can collect coverage, which dominates the time required for analysis). diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java index 281933e9c399fd..ea56a7f8047712 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/InfoCommand.java @@ -19,7 +19,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.analysis.NoBuildEvent; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.profiler.Profiler; @@ -37,7 +37,7 @@ import com.google.devtools.build.lib.runtime.commands.info.BuildLanguageInfoItem; import com.google.devtools.build.lib.runtime.commands.info.CharacterEncodingInfoItem; import com.google.devtools.build.lib.runtime.commands.info.ClientEnv; -import com.google.devtools.build.lib.runtime.commands.info.CommitedHeapSizeInfoItem; +import com.google.devtools.build.lib.runtime.commands.info.CommittedHeapSizeInfoItem; import com.google.devtools.build.lib.runtime.commands.info.DefaultPackagePathInfoItem; import com.google.devtools.build.lib.runtime.commands.info.DefaultsPackageInfoItem; import com.google.devtools.build.lib.runtime.commands.info.ExecutionRootInfoItem; @@ -148,13 +148,15 @@ public BlazeCommandResult exec( env.getReporter().switchToAnsiAllowingHandler(); Options infoOptions = optionsParsingResult.getOptions(Options.class); OutErr outErr = env.getReporter().getOutErr(); - // Creating a BuildConfiguration is expensive and often unnecessary. Delay the creation until + // Creating a BuildConfigurationValue is expensive and often unnecessary. Delay the creation + // until // it is needed. We memoize so that it's cached intra-command (it's still created freshly on // every command since the configuration can change across commands). - Supplier configurationSupplier = + Supplier configurationSupplier = Suppliers.memoize( () -> { - try (SilentCloseable c = Profiler.instance().profile("Creating BuildConfiguration")) { + try (SilentCloseable c = + Profiler.instance().profile("Creating BuildConfigurationValue")) { // In order to be able to answer configuration-specific queries, we need to set up // the package path. Since info inherits all the build options, all the necessary // information is available here. @@ -291,7 +293,7 @@ private static Map getHardwiredInfoItemMap( new PackagePathInfoItem(commandOptions), new UsedHeapSizeInfoItem(), new UsedHeapSizeAfterGcInfoItem(), - new CommitedHeapSizeInfoItem(), + new CommittedHeapSizeInfoItem(), new MaxHeapSizeInfoItem(), new GcTimeInfoItem(), new GcCountInfoItem(), diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java index ef5d1bb51ff502..a38cb9c3dd1f64 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/RunCommand.java @@ -33,7 +33,7 @@ import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.RunfilesSupport; import com.google.devtools.build.lib.analysis.ShToolchain; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CoreOptions; import com.google.devtools.build.lib.analysis.config.RunUnder; import com.google.devtools.build.lib.analysis.test.TestConfiguration; @@ -194,7 +194,7 @@ private void constructCommandLine( List cmdLine, List prettyCmdLine, CommandEnvironment env, - BuildConfiguration configuration, + BuildConfigurationValue configuration, ConfiguredTarget targetToRun, ConfiguredTarget runUnderTarget, List args) @@ -353,7 +353,7 @@ public BlazeCommandResult exec(CommandEnvironment env, OptionsParsingResult opti return reportAndCreateFailureResult(env, NO_TARGET_MESSAGE, Code.NO_TARGET_SPECIFIED); } - BuildConfiguration configuration = + BuildConfigurationValue configuration = env.getSkyframeExecutor() .getConfiguration(env.getReporter(), targetToRun.getConfigurationKey()); if (configuration == null) { @@ -606,7 +606,9 @@ private static BlazeCommandResult reportAndCreateFailureResult( * otherwise builds them. */ private static Path ensureRunfilesBuilt( - CommandEnvironment env, RunfilesSupport runfilesSupport, BuildConfiguration configuration) + CommandEnvironment env, + RunfilesSupport runfilesSupport, + BuildConfigurationValue configuration) throws RunfilesException, InterruptedException { Artifact manifest = Preconditions.checkNotNull(runfilesSupport.getRunfilesManifest()); PathFragment runfilesDir = runfilesSupport.getRunfilesDirectoryExecPath(); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java index b5a7a3bc5286fd..92ba7ce9ceb52b 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeBinInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -32,7 +32,8 @@ public BlazeBinInfoItem(String productName) { // corresponding paths contain the short name. Maybe we should recommend using the symlinks // or make them hidden by default? @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(configurationSupplier); return print(configurationSupplier.get().getBinDirectory(RepositoryName.MAIN).getRoot()); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java index b2c2f84f926c70..d317a6173dd88b 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeGenfilesInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -33,7 +33,8 @@ public BlazeGenfilesInfoItem(String productName) { // corresponding paths contain the short name. Maybe we should recommend using the symlinks // or make them hidden by default? @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(configurationSupplier); return print(configurationSupplier.get().getGenfilesDirectory(RepositoryName.MAIN).getRoot()); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java index 863c4b1d869c65..012141df5ab986 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BlazeTestlogsInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -35,7 +35,8 @@ public BlazeTestlogsInfoItem(String productName) { // corresponding paths contain the short name. Maybe we should recommend using the symlinks // or make them hidden by default? @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(configurationSupplier); return print(configurationSupplier.get().getTestLogsDirectory(RepositoryName.MAIN).getRoot()); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java index 8d3560e5c304f1..4d5517f7cadde6 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/BuildLanguageInfoItem.java @@ -21,7 +21,7 @@ import com.google.common.base.Supplier; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.packages.Attribute; import com.google.devtools.build.lib.packages.Attribute.StarlarkComputedDefaultTemplate; import com.google.devtools.build.lib.packages.BuildType; @@ -55,7 +55,8 @@ public BuildLanguageInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(env); return print(getBuildLanguageDefinition(env.getRuntime().getRuleClassProvider())); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java index 8d7f3b50a50af8..c6a6ba7a197039 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CharacterEncodingInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import java.nio.charset.Charset; @@ -30,7 +30,8 @@ public CharacterEncodingInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print( String.format( "file.encoding = %s, defaultCharset = %s", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java index 2a0534d1aa2960..65e07cd7fd804c 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ClientEnv.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import java.util.Map; @@ -31,7 +31,8 @@ public ClientEnv() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { String result = ""; for (Map.Entry entry : env.getAllowlistedActionEnv().entrySet()) { // TODO(bazel-team): as the syntax of our rc-files does not support to express new-lines in diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommitedHeapSizeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommittedHeapSizeInfoItem.java similarity index 84% rename from src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommitedHeapSizeInfoItem.java rename to src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommittedHeapSizeInfoItem.java index 010a9a13f3522e..ac95a736068bd8 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommitedHeapSizeInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/CommittedHeapSizeInfoItem.java @@ -15,14 +15,15 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import com.google.devtools.build.lib.util.StringUtilities; /** Info item for the committed heap size. */ -public final class CommitedHeapSizeInfoItem extends InfoItem { - public CommitedHeapSizeInfoItem() { +public final class CommittedHeapSizeInfoItem extends InfoItem { + + public CommittedHeapSizeInfoItem() { super( "committed-heap-size", "The amount of memory in bytes that is committed for the Java virtual machine to use", @@ -30,7 +31,8 @@ public CommitedHeapSizeInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getCommitted())); } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java index 93d6c452adc29b..23b282ed2792a9 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultPackagePathInfoItem.java @@ -18,7 +18,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.pkgcache.PackageOptions; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -41,7 +41,8 @@ public DefaultPackagePathInfoItem(OptionsParsingResult commandOptions) { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(commandOptions); return print(JOINER.join(commandOptions.getOptions(PackageOptions.class).packagePath)); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java index 8b46854a8ed306..b438bd8d02eb1b 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/DefaultsPackageInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -34,7 +34,8 @@ public DefaultsPackageInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(env); return print(""); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java index efd54815382788..2d34190bc8a5dc 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ExecutionRootInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -31,7 +31,8 @@ public ExecutionRootInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(env); return print( env.getDirectories().getExecRoot(configurationSupplier.get().getMainRepositoryName())); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java index 5e94fe427fe38f..866db3b23fc0bc 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcCountInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import java.lang.management.GarbageCollectorMXBean; @@ -28,7 +28,8 @@ public GcCountInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { // The documentation is not very clear on what it means to have more than // one GC MXBean, so we just sum them up. long gcCount = 0; diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java index 6f9ec1090e306d..55ffb2802d220e 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/GcTimeInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import java.lang.management.GarbageCollectorMXBean; @@ -28,7 +28,8 @@ public GcTimeInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { // The documentation is not very clear on what it means to have more than // one GC MXBean, so we just sum them up. long gcTime = 0; diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java index 302ec4f177da24..3b11351e114a05 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/InstallBaseInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -28,7 +28,8 @@ public InstallBaseInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(env); return print(env.getRuntime().getWorkspace().getInstallBase()); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java index e0c3d0d42a41e2..7a147b7e32c0a7 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaHomeInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import com.google.devtools.build.lib.vfs.Path; @@ -27,7 +27,8 @@ public JavaHomeInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { String javaHome = System.getProperty("java.home"); if (javaHome == null) { return print("unknown"); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java index 98419d1696b954..cb4c728997d332 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaRuntimeInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -26,7 +26,8 @@ public JavaRuntimeInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print( String.format( "%s (build %s) by %s", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java index bc229274c1f1b4..4a437374573b05 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/JavaVirtualMachineInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -26,7 +26,8 @@ public JavaVirtualMachineInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print( String.format( "%s (build %s, %s) by %s", diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java index 48bf4edd6d1eb6..dde7ced99e5cd0 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MakeInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -31,7 +31,8 @@ public String getDescription() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print(description); } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java index 5ea468e410fd55..0dd8e4fce03de1 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/MaxHeapSizeInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import com.google.devtools.build.lib.util.StringUtilities; @@ -30,7 +30,8 @@ public MaxHeapSizeInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getMax())); } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java index 584e9e7efe6456..8c946c16d15bb7 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputBaseInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -33,7 +33,8 @@ public OutputBaseInfoItem(String productName) { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(env); return print(env.getRuntime().getWorkspace().getOutputBase()); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java index 8135a3f151ed9f..d3577baf81b153 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/OutputPathInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -28,7 +28,8 @@ public OutputPathInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(env); return print( env.getDirectories().getOutputPath(configurationSupplier.get().getMainRepositoryName())); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java index 29a4e71079fda4..f2a49b191ec040 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/PackagePathInfoItem.java @@ -18,7 +18,7 @@ import com.google.common.base.Joiner; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.pkgcache.PackageOptions; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -34,7 +34,8 @@ public PackagePathInfoItem(OptionsParsingResult commandOptions) { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(commandOptions); PackageOptions packageOptions = commandOptions.getOptions(PackageOptions.class); return print(Joiner.on(":").join(packageOptions.packagePath)); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java index fc4f0363fa6e75..b182f924abcb89 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ReleaseInfoItem.java @@ -16,7 +16,7 @@ import com.google.common.base.Supplier; import com.google.devtools.build.lib.analysis.BlazeVersionInfo; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -27,7 +27,8 @@ public ReleaseInfoItem(String productName) { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print(BlazeVersionInfo.instance().getReleaseName()); } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java index 0c986498b16d0c..5e31d900e59dc9 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerLogInfoItem.java @@ -16,7 +16,7 @@ import com.google.common.base.Supplier; import com.google.common.flogger.GoogleLogger; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import com.google.devtools.build.lib.util.AbruptExitException; @@ -37,7 +37,7 @@ public ServerLogInfoItem(String productName) { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) + public byte[] get(Supplier configurationSupplier, CommandEnvironment env) throws AbruptExitException { try { return print(DebugLoggerConfigurator.getServerLogPath().orElse("")); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java index ac8e904d410a3d..aa4207e6e18ed4 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/ServerPidInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import com.google.devtools.build.lib.util.ProcessUtils; @@ -27,7 +27,8 @@ public ServerPidInfoItem(String productName) { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print(ProcessUtils.getpid()); } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java index b0f39c9712c93c..65de0c670118bd 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/StarlarkSemanticsInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.packages.semantics.BuildLanguageOptions; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -40,7 +40,8 @@ public StarlarkSemanticsInfoItem(OptionsParsingResult commandOptions) { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { BuildLanguageOptions buildLanguageOptions = commandOptions.getOptions(BuildLanguageOptions.class); SkyframeExecutor skyframeExecutor = env.getBlazeWorkspace().getSkyframeExecutor(); diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java index 55ca121a9be929..84d8cbd716608b 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeAfterGcInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import com.google.devtools.build.lib.util.StringUtilities; @@ -30,7 +30,8 @@ public UsedHeapSizeAfterGcInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { System.gc(); return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getUsed())); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java index 33e76693cb4e06..eabcf1c8a8b568 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/UsedHeapSizeInfoItem.java @@ -15,7 +15,7 @@ package com.google.devtools.build.lib.runtime.commands.info; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; import com.google.devtools.build.lib.util.StringUtilities; @@ -32,7 +32,8 @@ public UsedHeapSizeInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { return print(StringUtilities.prettyPrintBytes(InfoItemUtils.getMemoryUsage().getUsed())); } } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java index 9a0ba849960d7f..2fcf5660695d4e 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/commands/info/WorkspaceInfoItem.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.common.base.Supplier; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.runtime.CommandEnvironment; import com.google.devtools.build.lib.runtime.InfoItem; @@ -28,7 +28,8 @@ public WorkspaceInfoItem() { } @Override - public byte[] get(Supplier configurationSupplier, CommandEnvironment env) { + public byte[] get( + Supplier configurationSupplier, CommandEnvironment env) { checkNotNull(env); return print(env.getRuntime().getWorkspace().getWorkspace()); } diff --git a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java index 0f2585752c5c94..21e90c0a93f089 100644 --- a/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java +++ b/src/main/java/com/google/devtools/build/lib/runtime/mobileinstall/MobileInstallCommand.java @@ -20,7 +20,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.configuredtargets.AbstractConfiguredTarget; import com.google.devtools.build.lib.analysis.test.TestConfiguration.TestOptions; import com.google.devtools.build.lib.buildtool.BuildRequest; @@ -272,7 +272,7 @@ private FailureDetail doMobileInstall( List cmdLine = new ArrayList<>(); // TODO(bazel-team): Get the executable path from the filesToRun provider from the aspect. - BuildConfiguration configuration = + BuildConfigurationValue configuration = env.getSkyframeExecutor() .getConfiguration(env.getReporter(), targetToRun.getConfigurationKey()); cmdLine.add( diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java index e189f4534d79a3..4f13033b0f87ec 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCompletor.java @@ -20,6 +20,7 @@ import com.google.devtools.build.lib.analysis.AspectValue; import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsInOutputGroup; import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsToBuild; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.bugreport.BugReporter; import com.google.devtools.build.lib.buildeventstream.BuildEventIdUtil; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId; @@ -92,8 +93,8 @@ public ExtendedEventHandler.Postable createFailed( } @Nullable - private BuildEventId getConfigurationEventIdFromAspectKey(AspectKey aspectKey, Environment env) - throws InterruptedException { + private static BuildEventId getConfigurationEventIdFromAspectKey( + AspectKey aspectKey, Environment env) throws InterruptedException { if (aspectKey.getBaseConfiguredTargetKey().getConfigurationKey() == null) { return BuildEventIdUtil.nullConfigurationId(); } else { @@ -103,7 +104,7 @@ private BuildEventId getConfigurationEventIdFromAspectKey(AspectKey aspectKey, E if (buildConfigurationValue == null) { return null; } - return buildConfigurationValue.getConfiguration().getEventId(); + return buildConfigurationValue.getEventId(); } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java index 89897d6ac9affc..e70a0e1a6541b4 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectCreationException.java @@ -13,7 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId; import com.google.devtools.build.lib.causes.AnalysisFailedCause; import com.google.devtools.build.lib.causes.Cause; @@ -29,7 +29,7 @@ /** An exception indicating that there was a problem creating an aspect. */ public final class AspectCreationException extends Exception implements SaneAnalysisException { - private static ConfigurationId toId(BuildConfiguration config) { + private static ConfigurationId toId(BuildConfigurationValue config) { return config == null ? null : config.getEventId().getConfiguration(); } @@ -48,7 +48,7 @@ public AspectCreationException( public AspectCreationException( String message, Label currentTarget, - @Nullable BuildConfiguration configuration, + @Nullable BuildConfigurationValue configuration, DetailedExitCode detailedExitCode) { this( message, @@ -59,7 +59,7 @@ public AspectCreationException( } public AspectCreationException( - String message, Label currentTarget, @Nullable BuildConfiguration configuration) { + String message, Label currentTarget, @Nullable BuildConfigurationValue configuration) { this( message, currentTarget, diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java index 2633d473afdea4..a8f56d5a47faaa 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/AspectFunction.java @@ -41,7 +41,7 @@ import com.google.devtools.build.lib.analysis.ResolvedToolchainContext; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; import com.google.devtools.build.lib.analysis.ToolchainCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; import com.google.devtools.build.lib.analysis.config.DependencyEvaluationException; @@ -235,7 +235,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) } ConfiguredTargetValue baseConfiguredTargetValue; - BuildConfiguration aspectConfiguration = null; + BuildConfigurationValue aspectConfiguration = null; try { baseConfiguredTargetValue = @@ -248,9 +248,8 @@ public SkyValue compute(SkyKey skyKey, Environment env) if (aspectHasConfiguration) { try { aspectConfiguration = - ((BuildConfigurationValue) - baseAndAspectValues.get(key.getAspectConfigurationKey()).get()) - .getConfiguration(); + (BuildConfigurationValue) + baseAndAspectValues.get(key.getAspectConfigurationKey()).get(); } catch (ConfiguredValueCreationException e) { throw new IllegalStateException("Unexpected exception from BuildConfigurationFunction when " + "computing " + key.getAspectConfigurationKey(), e); @@ -260,7 +259,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) ConfiguredTarget associatedTarget = baseConfiguredTargetValue.getConfiguredTarget(); Package targetPkg; - BuildConfiguration configuration = null; + BuildConfigurationValue configuration = null; PackageValue.Key packageKey = PackageValue.key(associatedTarget.getOriginalLabel().getPackageIdentifier()); if (associatedTarget.getConfigurationKey() == null) { @@ -280,9 +279,7 @@ public SkyValue compute(SkyKey skyKey, Environment env) return null; } targetPkg = ((PackageValue) result.get(packageKey)).getPackage(); - configuration = - ((BuildConfigurationValue) result.get(associatedTarget.getConfigurationKey())) - .getConfiguration(); + configuration = (BuildConfigurationValue) result.get(associatedTarget.getConfigurationKey()); } Target target; @@ -518,7 +515,10 @@ public SkyValue compute(SkyKey skyKey, Environment env) @Nullable private static UnloadedToolchainContext getUnloadedToolchainContext( - Environment env, AspectKey key, Aspect aspect, @Nullable BuildConfiguration configuration) + Environment env, + AspectKey key, + Aspect aspect, + @Nullable BuildConfigurationValue configuration) throws InterruptedException, AspectCreationException { // Determine what toolchains are needed by this target. UnloadedToolchainContext unloadedToolchainContext = null; @@ -531,7 +531,7 @@ private static UnloadedToolchainContext getUnloadedToolchainContext( (UnloadedToolchainContext) env.getValueOrThrow( ToolchainContextKey.key() - .configurationKey(BuildConfigurationValue.key(configuration)) + .configurationKey(configuration.getKey()) .requiredToolchainTypeLabels(requiredToolchains) .build(), ToolchainException.class); @@ -553,7 +553,7 @@ private static UnloadedToolchainContext getUnloadedToolchainContext( */ // TODO(#10523): Remove this when the migration period for toolchain transitions has ended. private static boolean shouldUseToolchainTransition( - @Nullable BuildConfiguration configuration, AspectDefinition definition) { + @Nullable BuildConfigurationValue configuration, AspectDefinition definition) { // Check whether the global incompatible change flag is set. if (configuration != null) { PlatformOptions platformOptions = configuration.getOptions().get(PlatformOptions.class); @@ -624,11 +624,11 @@ private static void buildSkyKeys( @Nullable private AspectValue createAliasAspect( Environment env, - BuildConfiguration hostConfiguration, + BuildConfigurationValue hostConfiguration, TargetAndConfiguration originalTarget, Aspect aspect, AspectKey originalKey, - BuildConfiguration aspectConfiguration, + BuildConfigurationValue aspectConfiguration, ConfiguredTarget configuredTarget) throws AspectFunctionException, InterruptedException { ImmutableList

    Callers are responsible for applying the platform mapping or ascertaining that a platform + * mapping is not required. + * + * @param fragments the fragments the configuration should contain + * @param options the {@link BuildOptions} object the {@link BuildOptions} should be rebuilt from + */ + @AutoCodec.Instantiator + public static BuildConfigurationKey withoutPlatformMapping( + FragmentClassSet fragments, BuildOptions options) { + return interner.intern(new BuildConfigurationKey(fragments, options)); + } + + private static final Interner interner = BlazeInterners.newWeakInterner(); + + private final FragmentClassSet fragments; + private final BuildOptions options; + private final int hashCode; + + private BuildConfigurationKey(FragmentClassSet fragments, BuildOptions options) { + this.fragments = Preconditions.checkNotNull(fragments); + this.options = Preconditions.checkNotNull(options); + this.hashCode = Objects.hash(fragments, options); + } + + public FragmentClassSet getFragments() { + return fragments; + } + + public BuildOptions getOptions() { + return options; + } + + @Override + public SkyFunctionName functionName() { + return SkyFunctions.BUILD_CONFIGURATION; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (!(o instanceof BuildConfigurationKey)) { + return false; + } + BuildConfigurationKey otherConfig = (BuildConfigurationKey) o; + return options.equals(otherConfig.options) && fragments.equals(otherConfig.fragments); + } + + @Override + public int hashCode() { + return hashCode; + } + + @Override + public String toString() { + // This format is depended on by integration tests. + // TODO(blaze-configurability-team): This should at least include the length of fragments. + // to at least remind devs that this Key has TWO key parts. + return "BuildConfigurationKey[" + options.checksum() + "]"; + } + + /** + * Returns a string representation that can be safely used for comparison purposes. + * + *

    Unlike toString, which is short and good for printing in debug contexts, this is long + * because it includes sufficient information in options and fragments. toString alone is + * insufficient because multiple Keys can have the same options checksum (and thus same toString) + * but different fragments. + * + *

    This function is meant to address two potential, trimming-related scenarios: 1. If trimming + * by only trimming BuildOptions (e.g. --trim_test_configuration), then after the initial + * trimming, fragments has extra classes (corresponding to those trimmed). Notably, dependencies + * of trimmed targets will create Keys with a properly trimmed set of fragments. Thus, will easily + * have two Keys with the same (trimmed) BuildOptions but different fragments yet corresponding to + * the same (trimmed) BuildConfigurationValue. + * + *

    2. If trimming by only trimming fragments (at time of this comment, unsure whether this is + * ever done in active code), then BuildOptions has extra classes. The returned + * BuildConfigurationValue is properly trimmed (with the extra classes BuildOptions removed) + * although notably with a different checksum compared to the Key checksum. Note that given a + * target that is doing trimming like this, the reverse dependency of the target (i.e. without + * trimming) could easily involve a Key with the same (untrimmed!) BuildOptions but different + * fragments. However, unlike in case 1, they will correspond to different + * BuildConfigurationValue. + */ + public String toComparableString() { + return "BuildConfigurationKey[" + options.checksum() + ", " + fragments + "]"; + } +} diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java deleted file mode 100644 index ef3588c99b0de8..00000000000000 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildConfigurationValue.java +++ /dev/null @@ -1,180 +0,0 @@ -// Copyright 2015 The Bazel Authors. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -package com.google.devtools.build.lib.skyframe; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Interner; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildOptions; -import com.google.devtools.build.lib.analysis.config.FragmentClassSet; -import com.google.devtools.build.lib.concurrent.BlazeInterners; -import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; -import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization; -import com.google.devtools.build.skyframe.SkyFunctionName; -import com.google.devtools.build.skyframe.SkyKey; -import com.google.devtools.build.skyframe.SkyValue; -import com.google.devtools.common.options.OptionsParsingException; -import java.io.Serializable; -import java.util.Objects; - -/** A Skyframe value representing a {@link BuildConfiguration}. */ -// TODO(bazel-team): mark this immutable when BuildConfiguration is immutable. -// @Immutable -@AutoCodec -@ThreadSafe -public class BuildConfigurationValue implements SkyValue { - private final BuildConfiguration configuration; - - BuildConfigurationValue(BuildConfiguration configuration) { - this.configuration = configuration; - } - - public BuildConfiguration getConfiguration() { - return configuration; - } - - /** - * Creates a new configuration key based on the given options, after applying a platform mapping - * transformation. - * - * @param platformMappingValue sky value that can transform a configuration key based on a - * platform mapping - * @param fragments set of options fragments this configuration should cover - * @param options the desired configuration - * @throws OptionsParsingException if the platform mapping cannot be parsed - */ - public static Key keyWithPlatformMapping( - PlatformMappingValue platformMappingValue, - FragmentClassSet fragments, - BuildOptions options) - throws OptionsParsingException { - return platformMappingValue.map(keyWithoutPlatformMapping(fragments, options)); - } - - /** - * Returns the key for a requested configuration. - * - *

    Callers are responsible for applying the platform mapping or ascertaining that a platform - * mapping is not required. - * - * @param fragments the fragments the configuration should contain - * @param options the {@link BuildOptions} object the {@link BuildOptions} should be rebuilt from - */ - public static Key keyWithoutPlatformMapping(FragmentClassSet fragments, BuildOptions options) { - return Key.create(fragments, options); - } - - /** - * Returns a configuration key for the given configuration. - * - *

    Note that this key creation method does not apply a platform mapping, it is assumed that the - * passed configuration was created with one such and thus its key does not need to be mapped - * again. - * - * @param buildConfiguration configuration whose key is requested - */ - public static Key key(BuildConfiguration buildConfiguration) { - return keyWithoutPlatformMapping( - buildConfiguration.fragmentClasses(), buildConfiguration.getOptions()); - } - - /** {@link SkyKey} for {@link BuildConfigurationValue}. */ - @AutoCodec - public static final class Key implements SkyKey, Serializable { - private static final Interner keyInterner = BlazeInterners.newWeakInterner(); - - private final FragmentClassSet fragments; - private final BuildOptions options; - private final int hashCode; - - @AutoCodec.Instantiator - @VisibleForSerialization - static Key create(FragmentClassSet fragments, BuildOptions options) { - return keyInterner.intern(new Key(fragments, options)); - } - - private Key(FragmentClassSet fragments, BuildOptions options) { - this.fragments = Preconditions.checkNotNull(fragments); - this.options = Preconditions.checkNotNull(options); - this.hashCode = Objects.hash(fragments, options); - } - - public FragmentClassSet getFragments() { - return fragments; - } - - public BuildOptions getOptions() { - return options; - } - - @Override - public SkyFunctionName functionName() { - return SkyFunctions.BUILD_CONFIGURATION; - } - - @Override - public boolean equals(Object o) { - if (this == o) { - return true; - } - if (!(o instanceof Key)) { - return false; - } - Key otherConfig = (Key) o; - return options.equals(otherConfig.options) && fragments.equals(otherConfig.fragments); - } - - @Override - public int hashCode() { - return hashCode; - } - - @Override - public String toString() { - // This format is depended on by integration tests. - // TODO(blaze-configurability-team): This should at least include the length of fragments. - // to at least remind devs that this Key has TWO key parts. - return "BuildConfigurationValue.Key[" + options.checksum() + "]"; - } - - /** - * Return a string representation that can be safely used for comparison purposes. - * - *

    Unlike toString, which is short and good for printing in debug contexts, this is long - * because it includes sufficient information in options and fragments. toString alone is - * insufficient because multiple Keys can have the same options checksum (and thus same - * toString) but different fragments. - * - *

    This function is meant to address two potential, trimming-related scenarios: 1. If - * trimming by only trimming BuildOptions (e.g. --trim_test_configuration), then after the - * initial trimming, fragments has extra classes (corresponding to those trimmed). Notably, - * dependencies of trimmed targets will create Keys with a properly trimmed set of fragments. - * Thus, will easily have two Keys with the same (trimmed) BuildOptions but different fragments - * yet corresponding to the same (trimmed) BuildConfigurationValue. - * - *

    2. If trimming by only trimming fragments (at time of this comment, unsure whether this is - * ever done in active code), then BuildOptions has extra classes. The returned - * BuildConfigurationValue is properly trimmed (with the extra classes BuildOptions removed) - * although notably with a different checksum compared to the Key checksum. Note that given a - * target that is doing trimming like this, the reverse dependency of the target (i.e. without - * trimming) could easily involve a Key with the same (untrimmed!) BuildOptions but different - * fragments. However, unlike in case 1, they will correspond to different - * BuildConfigurationValue. - */ - public String toComparableString() { - return "BuildConfigurationValue.Key[" + options.checksum() + ", " + fragments + "]"; - } - } -} diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java index dda34ba81a66d7..bf97a1f7b98826 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionFunction.java @@ -25,7 +25,7 @@ import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoContext; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoType; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.skyframe.BuildInfoCollectionValue.BuildInfoKeyAndConfig; import com.google.devtools.build.lib.skyframe.PrecomputedValue.Precomputed; import com.google.devtools.build.skyframe.SkyFunction; @@ -65,8 +65,8 @@ public SkyValue compute(SkyKey skyKey, Environment env) throws InterruptedExcept WorkspaceStatusValue infoArtifactValue = (WorkspaceStatusValue) result.get(WorkspaceStatusValue.BUILD_INFO_KEY); - BuildConfiguration config = - ((BuildConfigurationValue) result.get(keyAndConfig.getConfigKey())).getConfiguration(); + BuildConfigurationValue config = + (BuildConfigurationValue) result.get(keyAndConfig.getConfigKey()); Map buildInfoFactories = BUILD_INFO_FACTORIES.get(env); BuildInfoFactory buildInfoFactory = buildInfoFactories.get(keyAndConfig.getInfoKey()); Preconditions.checkState(buildInfoFactory.isEnabled(config)); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java index 79588e260d24e5..76dc915a1d3784 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildInfoCollectionValue.java @@ -20,7 +20,7 @@ import com.google.devtools.build.lib.actions.BasicActionLookupValue; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoCollection; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.BlazeInterners; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; @@ -50,9 +50,9 @@ public String toString() { return getStringHelper().add("collection", collection).toString(); } - public static BuildInfoKeyAndConfig key(BuildInfoKey key, @Nullable BuildConfiguration config) { - return BuildInfoKeyAndConfig.create( - key, config == null ? null : BuildConfigurationValue.key(config)); + public static BuildInfoKeyAndConfig key( + BuildInfoKey key, @Nullable BuildConfigurationValue config) { + return BuildInfoKeyAndConfig.create(key, config == null ? null : config.getKey()); } /** Key for BuildInfoCollectionValues. */ @@ -62,16 +62,15 @@ public static final class BuildInfoKeyAndConfig implements ActionLookupKey { BlazeInterners.newWeakInterner(); private final BuildInfoKey infoKey; - private final BuildConfigurationValue.Key configKey; + private final BuildConfigurationKey configKey; - private BuildInfoKeyAndConfig(BuildInfoKey key, BuildConfigurationValue.Key configKey) { + private BuildInfoKeyAndConfig(BuildInfoKey key, BuildConfigurationKey configKey) { this.infoKey = Preconditions.checkNotNull(key, configKey); this.configKey = Preconditions.checkNotNull(configKey, key); } @AutoCodec.Instantiator - static BuildInfoKeyAndConfig create( - BuildInfoKey infoKey, BuildConfigurationValue.Key configKey) { + static BuildInfoKeyAndConfig create(BuildInfoKey infoKey, BuildConfigurationKey configKey) { return keyInterner.intern(new BuildInfoKeyAndConfig(infoKey, configKey)); } @@ -84,7 +83,7 @@ BuildInfoKey getInfoKey() { return infoKey; } - BuildConfigurationValue.Key getConfigKey() { + BuildConfigurationKey getConfigKey() { return configKey; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java index 1d0622830ddaf7..00fef49bdd27f0 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetAndData.java @@ -19,7 +19,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.packages.NoSuchTargetException; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.skyframe.SkyFunction; @@ -30,25 +30,26 @@ /** * A container class for a {@link ConfiguredTarget} and associated data, {@link Target}, {@link - * BuildConfiguration}, and transition keys. In the future, {@link ConfiguredTarget} objects will no - * longer contain their associated {@link BuildConfiguration}. Consumers that need the {@link - * Target} or {@link BuildConfiguration} must therefore have access to one of these objects. + * BuildConfigurationValue}, and transition keys. In the future, {@link ConfiguredTarget} objects + * will no longer contain their associated {@link BuildConfigurationValue}. Consumers that need the + * {@link Target} or {@link BuildConfigurationValue} must therefore have access to one of these + * objects. * *

    These objects are intended to be short-lived, never stored in Skyframe, since they pair three * heavyweight objects, a {@link ConfiguredTarget}, a {@link Target} (which holds a {@link - * com.google.devtools.build.lib.packages.Package}), and a {@link BuildConfiguration}. + * com.google.devtools.build.lib.packages.Package}), and a {@link BuildConfigurationValue}. */ public class ConfiguredTargetAndData { private final ConfiguredTarget configuredTarget; private final Target target; - private final BuildConfiguration configuration; + private final BuildConfigurationValue configuration; private final ImmutableList transitionKeys; @VisibleForTesting public ConfiguredTargetAndData( ConfiguredTarget configuredTarget, Target target, - BuildConfiguration configuration, + BuildConfigurationValue configuration, ImmutableList transitionKeys) { this.configuredTarget = configuredTarget; this.target = target; @@ -60,7 +61,7 @@ public ConfiguredTargetAndData( + " ConfiguredTarget's label %s is not equal to Target's label %s", configuredTarget.getLabel(), target.getLabel()); - BuildConfigurationValue.Key innerConfigurationKey = configuredTarget.getConfigurationKey(); + BuildConfigurationKey innerConfigurationKey = configuredTarget.getConfigurationKey(); if (configuration == null) { Preconditions.checkState( innerConfigurationKey == null, @@ -68,7 +69,7 @@ public ConfiguredTargetAndData( configuredTarget, target); } else { - BuildConfigurationValue.Key configurationKey = BuildConfigurationValue.key(configuration); + BuildConfigurationKey configurationKey = configuration.getKey(); Preconditions.checkState( innerConfigurationKey.equals(configurationKey), "Configurations don't match: %s %s %s (%s %s)", @@ -83,10 +84,10 @@ public ConfiguredTargetAndData( @Nullable static ConfiguredTargetAndData fromConfiguredTargetInSkyframe( ConfiguredTarget ct, SkyFunction.Environment env) throws InterruptedException { - BuildConfiguration configuration = null; + BuildConfigurationValue configuration = null; ImmutableSet packageAndMaybeConfiguration; PackageValue.Key packageKey = PackageValue.key(ct.getLabel().getPackageIdentifier()); - BuildConfigurationValue.Key configurationKeyMaybe = ct.getConfigurationKey(); + BuildConfigurationKey configurationKeyMaybe = ct.getConfigurationKey(); if (configurationKeyMaybe == null) { packageAndMaybeConfiguration = ImmutableSet.of(packageKey); } else { @@ -100,12 +101,11 @@ static ConfiguredTargetAndData fromConfiguredTargetInSkyframe( return null; } if (configurationKeyMaybe != null) { - BuildConfigurationValue buildConfigurationValue = + configuration = (BuildConfigurationValue) packageAndMaybeConfigurationValues.get(configurationKeyMaybe); - if (buildConfigurationValue == null) { + if (configuration == null) { return null; } - configuration = buildConfigurationValue.getConfiguration(); } try { return new ConfiguredTargetAndData( @@ -130,7 +130,7 @@ public Target getTarget() { return target; } - public BuildConfiguration getConfiguration() { + public BuildConfigurationValue getConfiguration() { return configuration; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java index 7bdd7a74387f99..4ee1e3790e8356 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java @@ -45,7 +45,7 @@ import com.google.devtools.build.lib.analysis.TargetAndConfiguration; import com.google.devtools.build.lib.analysis.ToolchainCollection; import com.google.devtools.build.lib.analysis.ToolchainContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.ConfigConditions; @@ -199,7 +199,7 @@ public SkyValue compute(SkyKey key, Environment env) ConfiguredTargetKey configuredTargetKey = (ConfiguredTargetKey) key.argument(); Label label = configuredTargetKey.getLabel(); - BuildConfiguration configuration = null; + BuildConfigurationValue configuration = null; ImmutableSet packageAndMaybeConfiguration; SkyKey packageKey = PackageValue.key(label.getPackageIdentifier()); SkyKey configurationKeyMaybe = configuredTargetKey.getConfigurationKey(); @@ -216,8 +216,7 @@ public SkyValue compute(SkyKey key, Environment env) PackageValue packageValue = (PackageValue) packageAndMaybeConfigurationValues.get(packageKey); if (configurationKeyMaybe != null) { configuration = - ((BuildConfigurationValue) packageAndMaybeConfigurationValues.get(configurationKeyMaybe)) - .getConfiguration(); + (BuildConfigurationValue) packageAndMaybeConfigurationValues.get(configurationKeyMaybe); } // TODO(ulfjack): This tries to match the logic in TransitiveTargetFunction / @@ -470,7 +469,7 @@ public static ComputedToolchainContexts computeUnloadedToolchainContexts( return new ComputedToolchainContexts(); } Rule rule = ((Rule) targetAndConfig.getTarget()); - BuildConfiguration configuration = targetAndConfig.getConfiguration(); + BuildConfigurationValue configuration = targetAndConfig.getConfiguration(); ImmutableSet

    In practice, a ({@link Label}, canonical and post-transition {@link - * BuildConfigurationValue.Key}) pair plus a possible execution platform override {@link Label} with - * special constraints. To elaborate, in order of highest to lowest potential for concern: + *

    In practice, a ({@link Label}, canonical and post-transition {@link BuildConfigurationKey}) + * pair plus a possible execution platform override {@link Label} with special constraints. To + * elaborate, in order of highest to lowest potential for concern: * - *

    1. The {@link BuildConfigurationValue.Key} must be post-transition and thus ready for - * immediate use in dependency resolution and analysis. In practice, this means that if the rule has - * an incoming-edge transition (cfg in {@link RuleClass}) or there are global trimming transitions, + *

    1. The {@link BuildConfigurationKey} must be post-transition and thus ready for immediate use + * in dependency resolution and analysis. In practice, this means that if the rule has an + * incoming-edge transition (cfg in {@link RuleClass}) or there are global trimming transitions, * THOSE TRANSITIONS MUST ALREADY BE DONE before creating the key. Failure to do so will lead to - * build graphs with ConfiguredTarget that have seemingly impossible {@link BuildConfiguration} (due - * to the skipped transitions). + * build graphs with ConfiguredTarget that have seemingly impossible {@link BuildConfigurationValue} + * (due to the skipped transitions). * - *

    2. The {@link BuildConfigurationValue.Key} must be canonical. Multiple keys can correspond to - * the same {@link BuildConfiguration}. The canonical key is the one returned by {@link - * BuildConfigurationValue.key}. Failure to use a canonical key can result in build graphs with + *

    2. The {@link BuildConfigurationKey} must be canonical. Multiple keys can correspond to the + * same {@link BuildConfigurationValue}. The canonical key is the one returned by {@link + * BuildConfigurationValue#getKey}. Failure to use a canonical key can result in build graphs with * multiple seemingly-identical ConfiguredTarget that have the same ({@link Label}, {@link - * BuildConfiguration}) pair. This is non-performant in all cases and incorrect if those + * BuildConfigurationValue}) pair. This is non-performant in all cases and incorrect if those * duplications lead to action conflicts due to unsharable actions. * - *

    3. A build should not request keys with equal ({@link Label}, {@link BuildConfiguration}) + *

    3. A build should not request keys with equal ({@link Label}, {@link BuildConfigurationValue}) * pairs but different execution platform override {@link Label} if the invoked rule will register * actions. (This is potentially OK if all outputs of all registered actions incorporate the * execution platform in their name unless the build also requests keys without an override that * happen to resolve to the same execution platform.) In practice, this issue has not been seen in * any 'real' builds; however, pathologically failure could lead to multiple (potentially different) - * ConfiguredTarget that have the same ({@link Label}, {@link BuildConfiguration}) pair. + * ConfiguredTarget that have the same ({@link Label}, {@link BuildConfigurationValue}) pair. * *

    Note that this key may be used to look up the generating action of an artifact. */ @@ -69,12 +69,11 @@ public class ConfiguredTargetKey implements ActionLookupKey { private static final Interner interner = BlazeInterners.newWeakInterner(); private final Label label; - @Nullable private final BuildConfigurationValue.Key configurationKey; + @Nullable private final BuildConfigurationKey configurationKey; private final transient int hashCode; - ConfiguredTargetKey( - Label label, @Nullable BuildConfigurationValue.Key configurationKey, int hashCode) { + ConfiguredTargetKey(Label label, @Nullable BuildConfigurationKey configurationKey, int hashCode) { this.label = checkNotNull(label); this.configurationKey = configurationKey; this.hashCode = hashCode; @@ -82,8 +81,7 @@ public class ConfiguredTargetKey implements ActionLookupKey { @AutoCodec.VisibleForSerialization @AutoCodec.Instantiator - static ConfiguredTargetKey create( - Label label, @Nullable BuildConfigurationValue.Key configurationKey) { + static ConfiguredTargetKey create(Label label, @Nullable BuildConfigurationKey configurationKey) { int hashCode = computeHashCode(label, configurationKey, /*executionPlatformLabel=*/ null); return interner.intern(new ConfiguredTargetKey(label, configurationKey, hashCode)); } @@ -106,7 +104,7 @@ public final SkyFunctionName functionName() { } @Nullable - public final BuildConfigurationValue.Key getConfigurationKey() { + public final BuildConfigurationKey getConfigurationKey() { return configurationKey; } @@ -122,7 +120,7 @@ public final int hashCode() { private static int computeHashCode( Label label, - @Nullable BuildConfigurationValue.Key configurationKey, + @Nullable BuildConfigurationKey configurationKey, @Nullable Label executionPlatformLabel) { int configVal = configurationKey == null ? 79 : configurationKey.hashCode(); int executionPlatformLabelVal = @@ -175,7 +173,7 @@ static class ToolchainDependencyConfiguredTargetKey extends ConfiguredTargetKey private ToolchainDependencyConfiguredTargetKey( Label label, - @Nullable BuildConfigurationValue.Key configurationKey, + @Nullable BuildConfigurationKey configurationKey, int hashCode, Label executionPlatformLabel) { super(label, configurationKey, hashCode); @@ -186,7 +184,7 @@ private ToolchainDependencyConfiguredTargetKey( @AutoCodec.Instantiator static ToolchainDependencyConfiguredTargetKey create( Label label, - @Nullable BuildConfigurationValue.Key configurationKey, + @Nullable BuildConfigurationKey configurationKey, Label executionPlatformLabel) { int hashCode = computeHashCode(label, configurationKey, executionPlatformLabel); return toolchainDependencyConfiguredTargetKeyInterner.intern( @@ -208,7 +206,7 @@ public static Builder builder() { /** A helper class to create instances of {@link ConfiguredTargetKey}. */ public static final class Builder { private Label label = null; - private BuildConfigurationValue.Key configurationKey = null; + private BuildConfigurationKey configurationKey = null; private Label executionPlatformLabel = null; private Builder() {} @@ -232,17 +230,13 @@ public Builder setConfiguredTarget(ConfiguredTarget configuredTarget) { return this; } - /** Sets the {@link BuildConfiguration} for the configured target. */ - public Builder setConfiguration(@Nullable BuildConfiguration buildConfiguration) { - if (buildConfiguration == null) { - return setConfigurationKey(null); - } else { - return setConfigurationKey(BuildConfigurationValue.key(buildConfiguration)); - } + /** Sets the {@link BuildConfigurationValue} for the configured target. */ + public Builder setConfiguration(@Nullable BuildConfigurationValue buildConfiguration) { + return setConfigurationKey(buildConfiguration == null ? null : buildConfiguration.getKey()); } /** Sets the configuration key for the configured target. */ - public Builder setConfigurationKey(@Nullable BuildConfigurationValue.Key configurationKey) { + public Builder setConfigurationKey(@Nullable BuildConfigurationKey configurationKey) { this.configurationKey = configurationKey; return this; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java index d2d56877e5eeb6..2f614ae504ec48 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PlatformMappingValue.java @@ -48,7 +48,7 @@ /** * Stores contents of a platforms/flags mapping file for transforming one {@link - * BuildConfigurationValue.Key} into another. + * BuildConfigurationKey} into another. * *

    See * the design for more details on how the mapping can be defined and the desired logic on how it @@ -140,7 +140,7 @@ public String toString() { private final ImmutableMap, Label> flagsToPlatforms; private final ImmutableSet> optionsClasses; private final LoadingCache, OptionsParsingResult> parserCache; - private final LoadingCache mappingCache; + private final LoadingCache mappingCache; /** * Creates a new mapping value which will match on the given platforms (if a target platform is @@ -167,7 +167,7 @@ public String toString() { } /** - * Maps one {@link BuildConfigurationValue.Key} to another by way of mappings provided in a file. + * Maps one {@link BuildConfigurationKey} to another by way of mappings provided in a file. * *

    The * full design contains the details for the mapping logic but in short: @@ -186,8 +186,7 @@ public String toString() { * @throws IllegalArgumentException if the original does not contain a {@link PlatformOptions} * fragment */ - public BuildConfigurationValue.Key map(BuildConfigurationValue.Key original) - throws OptionsParsingException { + public BuildConfigurationKey map(BuildConfigurationKey original) throws OptionsParsingException { try { return mappingCache.get(original); } catch (CompletionException e) { @@ -196,7 +195,7 @@ public BuildConfigurationValue.Key map(BuildConfigurationValue.Key original) } } - private BuildConfigurationValue.Key computeMapping(BuildConfigurationValue.Key original) + private BuildConfigurationKey computeMapping(BuildConfigurationKey original) throws OptionsParsingException { BuildOptions originalOptions = original.getOptions(); @@ -238,8 +237,7 @@ private BuildConfigurationValue.Key computeMapping(BuildConfigurationValue.Key o } } - return BuildConfigurationValue.keyWithoutPlatformMapping( - original.getFragments(), modifiedOptions); + return BuildConfigurationKey.withoutPlatformMapping(original.getFragments(), modifiedOptions); } private OptionsParsingResult parseWithCache(ImmutableSet args) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java index 1a92d5ea9b25e8..45a462978ee332 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseFunction.java @@ -22,7 +22,7 @@ import com.google.devtools.build.lib.analysis.DependencyKey; import com.google.devtools.build.lib.analysis.PlatformOptions; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; @@ -93,17 +93,17 @@ public PrepareAnalysisPhaseValue compute(SkyKey key, Environment env) List topLevelBuildOptions = getTopLevelBuildOptions(targetOptions, options.getMultiCpu()); - ImmutableList.Builder targetConfigurationKeysBuilder = + ImmutableList.Builder targetConfigurationKeysBuilder = ImmutableList.builderWithExpectedSize(topLevelBuildOptions.size()); - BuildConfigurationValue.Key hostConfigurationKey; + BuildConfigurationKey hostConfigurationKey; try { hostConfigurationKey = - BuildConfigurationValue.keyWithPlatformMapping( + BuildConfigurationKey.withPlatformMapping( platformMappingValue, allFragments, hostOptions); for (BuildOptions buildOptions : getTopLevelBuildOptions(targetOptions, options.getMultiCpu())) { targetConfigurationKeysBuilder.add( - BuildConfigurationValue.keyWithPlatformMapping( + BuildConfigurationKey.withPlatformMapping( platformMappingValue, allFragments, buildOptions)); } } catch (OptionsParsingException e) { @@ -117,7 +117,7 @@ public PrepareAnalysisPhaseValue compute(SkyKey key, Environment env) throw new PrepareAnalysisPhaseFunctionException(e); } - ImmutableList targetConfigurationKeys = + ImmutableList targetConfigurationKeys = targetConfigurationKeysBuilder.build(); Map configs = env.getValues(targetConfigurationKeys); @@ -127,7 +127,7 @@ public PrepareAnalysisPhaseValue compute(SkyKey key, Environment env) targetConfigurationKeys.stream() .map(configs::get) .filter(Objects::nonNull) - .map(v -> ((BuildConfigurationValue) v).getConfiguration()) + .map(BuildConfigurationValue.class::cast) .forEach(config -> config.reportInvalidOptions(nosyEventHandler)); if (nosyEventHandler.hasErrors()) { throw new PrepareAnalysisPhaseFunctionException( @@ -148,9 +148,8 @@ public PrepareAnalysisPhaseValue compute(SkyKey key, Environment env) // groups. LinkedHashSet nodes = new LinkedHashSet<>(targets.size()); for (Target target : targets) { - for (BuildConfigurationValue.Key configKey : targetConfigurationKeys) { - BuildConfiguration config = - ((BuildConfigurationValue) configs.get(configKey)).getConfiguration(); + for (BuildConfigurationKey configKey : targetConfigurationKeys) { + BuildConfigurationValue config = (BuildConfigurationValue) configs.get(configKey); nodes.add(new TargetAndConfiguration(target, config)); } } @@ -160,7 +159,7 @@ public PrepareAnalysisPhaseValue compute(SkyKey key, Environment env) // for now, to satisfy its API we resolve transitions and repackage each target as a Dependency // (with a NONE transition if necessary). // Keep this in sync with AnalysisUtils#getTargetsWithConfigs. - Multimap asDeps = + Multimap asDeps = AnalysisUtils.targetsToDeps(nodes, ruleClassProvider); LinkedHashSet topLevelTargetsWithConfigs; try { @@ -212,7 +211,7 @@ static List getTopLevelBuildOptions( private LinkedHashSet resolveConfigurations( SkyFunction.Environment env, Iterable nodes, - Multimap asDeps) + Multimap asDeps) throws InterruptedException, TransitionException, OptionsParsingException { Map labelsToTargets = new LinkedHashMap<>(); for (TargetAndConfiguration node : nodes) { @@ -223,13 +222,14 @@ private LinkedHashSet resolveConfigurations( // could be successfully Skyframe-evaluated. Map successfullyEvaluatedTargets = new LinkedHashMap<>(); - for (BuildConfiguration fromConfig : asDeps.keySet()) { - Multimap trimmedTargets = + for (BuildConfigurationValue fromConfig : asDeps.keySet()) { + Multimap trimmedTargets = getConfigurations(env, fromConfig.getOptions(), asDeps.get(fromConfig)); if (trimmedTargets == null) { continue; } - for (Map.Entry trimmedTarget : trimmedTargets.entries()) { + for (Map.Entry trimmedTarget : + trimmedTargets.entries()) { Target target = labelsToTargets.get(trimmedTarget.getKey().getLabel()); successfullyEvaluatedTargets.put( new TargetAndConfiguration(target, fromConfig), @@ -251,10 +251,10 @@ private LinkedHashSet resolveConfigurations( // Keep in sync with {@link SkyframeExecutor#getConfigurations}. // Note: this implementation runs inside Skyframe, so it has access to SkyFunction.Environment. - private Multimap getConfigurations( + private Multimap getConfigurations( SkyFunction.Environment env, BuildOptions fromOptions, Iterable keys) throws InterruptedException, TransitionException, OptionsParsingException { - Multimap builder = ArrayListMultimap.create(); + Multimap builder = ArrayListMultimap.create(); FragmentClassSet allFragments = ruleClassProvider.getFragmentRegistry().getAllFragments(); @@ -284,7 +284,7 @@ private Multimap getConfigurations( .values(); for (BuildOptions toOption : toOptions) { configSkyKeys.add( - BuildConfigurationValue.keyWithPlatformMapping( + BuildConfigurationKey.withPlatformMapping( platformMappingValue, allFragments, toOption)); } } @@ -310,14 +310,13 @@ private Multimap getConfigurations( .values(); for (BuildOptions toOption : toOptions) { SkyKey configKey = - BuildConfigurationValue.keyWithPlatformMapping( - platformMappingValue, allFragments, toOption); + BuildConfigurationKey.withPlatformMapping(platformMappingValue, allFragments, toOption); BuildConfigurationValue configValue = - ((BuildConfigurationValue) configsResult.get(configKey)); + (BuildConfigurationValue) configsResult.get(configKey); // configValue will be null here if there was an exception thrown during configuration // creation. This will be reported elsewhere. if (configValue != null) { - builder.put(key, configValue.getConfiguration()); + builder.put(key, configValue); } } } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java index 2556a898e33f42..d72200704baa2c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/PrepareAnalysisPhaseValue.java @@ -20,8 +20,8 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSortedSet; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver.TopLevelTargetsAndConfigsResult; import com.google.devtools.build.lib.analysis.config.FragmentClassSet; @@ -63,13 +63,13 @@ @ThreadSafe @AutoCodec public final class PrepareAnalysisPhaseValue implements SkyValue { - private final BuildConfigurationValue.Key hostConfigurationKey; - private final ImmutableList targetConfigurationKeys; + private final BuildConfigurationKey hostConfigurationKey; + private final ImmutableList targetConfigurationKeys; private final ImmutableList topLevelCtKeys; PrepareAnalysisPhaseValue( - BuildConfigurationValue.Key hostConfigurationKey, - ImmutableList targetConfigurationKeys, + BuildConfigurationKey hostConfigurationKey, + ImmutableList targetConfigurationKeys, ImmutableList topLevelCtKeys) { this.hostConfigurationKey = Preconditions.checkNotNull(hostConfigurationKey); this.targetConfigurationKeys = Preconditions.checkNotNull(targetConfigurationKeys); @@ -83,9 +83,9 @@ public final class PrepareAnalysisPhaseValue implements SkyValue { public BuildConfigurationCollection getConfigurations( ExtendedEventHandler eventHandler, SkyframeExecutor skyframeExecutor) throws InvalidConfigurationException { - BuildConfiguration hostConfiguration = + BuildConfigurationValue hostConfiguration = skyframeExecutor.getConfiguration(eventHandler, hostConfigurationKey); - ImmutableList targetConfigurations = + ImmutableList targetConfigurations = ImmutableList.copyOf( skyframeExecutor.getConfigurations(eventHandler, targetConfigurationKeys).values()); return new BuildConfigurationCollection(targetConfigurations, hostConfiguration); @@ -102,7 +102,7 @@ public BuildConfigurationCollection getConfigurations( public TopLevelTargetsAndConfigsResult getTopLevelCts( ExtendedEventHandler eventHandler, SkyframeExecutor skyframeExecutor) { List result = new ArrayList<>(); - Map configs = + Map configs = skyframeExecutor.getConfigurations( eventHandler, topLevelCtKeys.stream() @@ -124,7 +124,7 @@ public TopLevelTargetsAndConfigsResult getTopLevelCts( hasError = true; continue; } - BuildConfiguration config = + BuildConfigurationValue config = key.getConfigurationKey() == null ? null : configs.get(key.getConfigurationKey()); result.add(new TargetAndConfiguration(target, config)); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java index 60d6ca23b26575..cc47b00733820c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/RegisteredExecutionPlatformsFunction.java @@ -21,7 +21,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.ConfiguredTargetValue; import com.google.devtools.build.lib.analysis.PlatformConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.platform.PlatformProviderUtils; import com.google.devtools.build.lib.bazel.bzlmod.BazelModuleResolutionValue; @@ -67,7 +67,7 @@ public class RegisteredExecutionPlatformsFunction implements SkyFunction { public SkyValue compute(SkyKey skyKey, Environment env) throws RegisteredExecutionPlatformsFunctionException, InterruptedException { - BuildConfigurationValue buildConfigurationValue = + BuildConfigurationValue configuration = (BuildConfigurationValue) env.getValue(((RegisteredExecutionPlatformsValue.Key) skyKey).getConfigurationKey()); RepositoryMappingValue mainRepoMapping = @@ -75,7 +75,6 @@ public SkyValue compute(SkyKey skyKey, Environment env) if (env.valuesMissing()) { return null; } - BuildConfiguration configuration = buildConfigurationValue.getConfiguration(); TargetPattern.Parser mainRepoParser = new TargetPattern.Parser( @@ -186,7 +185,7 @@ private static ImmutableList getBzlmodExecutionPlatforms(Environm } private static ImmutableList configureRegisteredExecutionPlatforms( - Environment env, BuildConfiguration configuration, List

    Visible only for use by tests via {@link - * SkyframeExecutor#getConfiguredTargetMapForTesting(ExtendedEventHandler, BuildConfiguration, - * Iterable)}. When called there, {@code eventBus} must be null to indicate that this is a test, - * and so there may be additional {@link SkyKey}s in the {@code result} that are not {@link - * AspectKeyCreator}s or {@link ConfiguredTargetKey}s. Those keys will be ignored. + * SkyframeExecutor#getConfiguredTargetMapForTesting(ExtendedEventHandler, + * BuildConfigurationValue, Iterable)}. When called there, {@code eventBus} must be null to + * indicate that this is a test, and so there may be additional {@link SkyKey}s in the {@code + * result} that are not {@link AspectKeyCreator}s or {@link ConfiguredTargetKey}s. Those keys will + * be ignored. */ static Pair processErrors( EvaluationResult result, - Supplier> configurationLookupSupplier, + Supplier> configurationLookupSupplier, SkyframeExecutor skyframeExecutor, ExtendedEventHandler eventHandler, boolean keepGoing, @@ -897,7 +899,7 @@ static Pair processErrors( } else if (cause instanceof NoSuchPackageException) { // This branch is only taken in --nokeep_going builds. In a --keep_going build, the // AnalysisFailedCause is properly reported through the ConfiguredValueCreationException. - BuildConfiguration configuration = + BuildConfigurationValue configuration = configurationLookupSupplier.get().get(label.getConfigurationKey()); ConfigurationId configId = configuration.getEventId().getConfiguration(); AnalysisFailedCause analysisFailedCause = @@ -922,7 +924,7 @@ static Pair processErrors( } if (!inTest) { - BuildConfiguration configuration = + BuildConfigurationValue configuration = configurationLookupSupplier.get().get(label.getConfigurationKey()); eventBus.post( new AnalysisFailureEvent( @@ -1067,7 +1069,7 @@ CachingAnalysisEnvironment createAnalysisEnvironment( ActionLookupKey owner, ExtendedEventHandler eventHandler, Environment env, - BuildConfiguration config, + BuildConfigurationValue config, StarlarkBuiltinsValue starlarkBuiltinsValue) { boolean extendedSanityChecks = config != null && config.extendedSanityChecks(); boolean allowAnalysisFailures = config != null && config.allowAnalysisFailures(); @@ -1092,7 +1094,7 @@ CachingAnalysisEnvironment createAnalysisEnvironment( @Nullable ConfiguredTarget createConfiguredTarget( Target target, - BuildConfiguration configuration, + BuildConfigurationValue configuration, CachingAnalysisEnvironment analysisEnvironment, ConfiguredTargetKey configuredTargetKey, OrderedSetMultimap prerequisiteMap, @@ -1124,7 +1126,7 @@ ConfiguredTarget createConfiguredTarget( *

    This may only be called after {@link #setTopLevelHostConfiguration} has set the correct host * configuration at the top-level. */ - public BuildConfiguration getHostConfiguration() { + public BuildConfigurationValue getHostConfiguration() { return topLevelHostConfiguration; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java index c1761284b90b7d..bc7cd4840a9991 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeDependencyResolver.java @@ -20,7 +20,7 @@ import com.google.devtools.build.lib.analysis.DependencyKind; import com.google.devtools.build.lib.analysis.DependencyResolver; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.buildeventstream.BuildEventStreamProtos.BuildEventId.ConfigurationId; import com.google.devtools.build.lib.causes.AnalysisFailedCause; import com.google.devtools.build.lib.causes.Cause; @@ -145,7 +145,7 @@ protected Map getTargets( fromTarget.getLabel(), label, label.getRepository(), e.getMessage()))); continue; } - @Nullable BuildConfiguration configuration = fromNode.getConfiguration(); + @Nullable BuildConfigurationValue configuration = fromNode.getConfiguration(); @Nullable ConfigurationId configId = null; if (configuration != null) { configId = configuration.getEventId().getConfiguration(); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index da36b1d9996e56..2bb0fd1fc721fb 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -13,13 +13,16 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; +import static com.google.common.collect.ImmutableList.toImmutableList; import static com.google.devtools.build.lib.concurrent.Uninterruptibles.callUninterruptibly; import static com.google.devtools.build.lib.skyframe.ArtifactConflictFinder.ACTION_CONFLICTS; import static com.google.devtools.build.lib.skyframe.ArtifactConflictFinder.NUM_JOBS; +import static java.util.stream.Collectors.toMap; import com.github.benmanes.caffeine.cache.Cache; import com.github.benmanes.caffeine.cache.Caffeine; import com.google.common.annotations.VisibleForTesting; +import com.google.common.base.Functions; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Predicates; @@ -85,8 +88,8 @@ import com.google.devtools.build.lib.analysis.TopLevelArtifactContext; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction.Factory; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; @@ -230,7 +233,6 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import java.util.function.Supplier; -import java.util.stream.Collectors; import javax.annotation.Nullable; import net.starlark.java.eval.StarlarkSemantics; @@ -1141,14 +1143,14 @@ private static boolean basicAnalysisInvalidatingPredicateWithActions(SkyKey key) return basicAnalysisInvalidatingPredicate(key) || key instanceof ActionLookupData; } - // We may also want to remove BuildConfigurationValue.Keys to fix a minor memory leak there. + // We may also want to remove BuildConfigurationKey to fix a minor memory leak there. private static boolean fullAnalysisInvalidatingPredicate(SkyKey key) { - return basicAnalysisInvalidatingPredicate(key) || key instanceof BuildConfigurationValue.Key; + return basicAnalysisInvalidatingPredicate(key) || key instanceof BuildConfigurationKey; } private static boolean fullAnalysisInvalidatingPredicateWithActions(SkyKey key) { return basicAnalysisInvalidatingPredicateWithActions(key) - || key instanceof BuildConfigurationValue.Key; + || key instanceof BuildConfigurationKey; } private WorkspaceStatusAction makeWorkspaceStatusAction(String workspaceName) { @@ -1538,14 +1540,14 @@ public BuildConfigurationCollection createConfigurations( configuredTargetProgress.reset(); } - ImmutableList topLevelTargetConfigs = + ImmutableList topLevelTargetConfigs = getConfigurations( eventHandler, PrepareAnalysisPhaseFunction.getTopLevelBuildOptions(buildOptions, multiCpu), buildOptions, keepGoing); - BuildConfiguration firstTargetConfig = topLevelTargetConfigs.get(0); + BuildConfigurationValue firstTargetConfig = topLevelTargetConfigs.get(0); BuildOptions targetOptions = firstTargetConfig.getOptions(); BuildOptionsView hostTransitionOptionsView = @@ -1555,7 +1557,7 @@ public BuildConfigurationCollection createConfigurations( targetOptions.get(CoreOptions.class).useDistinctHostConfiguration ? HostTransition.INSTANCE.patch(hostTransitionOptionsView, eventHandler) : targetOptions; - BuildConfiguration hostConfig = getConfiguration(eventHandler, hostOptions, keepGoing); + BuildConfigurationValue hostConfig = getConfiguration(eventHandler, hostOptions, keepGoing); // TODO(gregce): cache invalid option errors in BuildConfigurationFunction, then use a dedicated // accessor (i.e. not the event handler) to trigger the exception below. @@ -1759,7 +1761,7 @@ EvaluationResult targetPatterns( @ThreadSafety.ThreadSafe public ImmutableList getConfiguredTargetsForTesting( ExtendedEventHandler eventHandler, - BuildConfiguration originalConfig, + BuildConfigurationValue originalConfig, Iterable keys) throws TransitionException, InvalidConfigurationException, InterruptedException { return getConfiguredTargetMapForTesting(eventHandler, originalConfig, keys).values().asList(); @@ -1777,7 +1779,7 @@ public ImmutableList getConfiguredTargetsForTesting( @ThreadSafety.ThreadSafe public ImmutableMultimap getConfiguredTargetMapForTesting( ExtendedEventHandler eventHandler, - BuildConfigurationValue.Key originalConfig, + BuildConfigurationKey originalConfig, Iterable keys) throws InvalidConfigurationException, InterruptedException { return getConfiguredTargetMapForTesting( @@ -1797,12 +1799,12 @@ public ImmutableMultimap getConfiguredTa private ImmutableMultimap getConfiguredTargetMapForTesting( ExtendedEventHandler eventHandler, - BuildConfiguration originalConfig, + BuildConfigurationValue originalConfig, Iterable keys) throws InvalidConfigurationException, InterruptedException { checkActive(); - Multimap configs; + Multimap configs; if (originalConfig != null) { configs = getConfigurations(eventHandler, originalConfig.getOptions(), keys).getConfigurationMap(); @@ -1820,7 +1822,7 @@ public ImmutableMultimap getConfiguredTa // it couldn't be loaded). Exclude it from the results. continue; } - for (BuildConfiguration depConfig : configs.get(key)) { + for (BuildConfigurationValue depConfig : configs.get(key)) { skyKeys.add( ConfiguredTargetKey.builder() .setLabel(key.getLabel()) @@ -1853,7 +1855,7 @@ public ImmutableMultimap getConfiguredTa // it couldn't be loaded). Exclude it from the results. continue; } - for (BuildConfiguration depConfig : configs.get(key)) { + for (BuildConfigurationValue depConfig : configs.get(key)) { SkyKey configuredTargetKey = ConfiguredTargetKey.builder() .setLabel(key.getLabel()) @@ -1896,13 +1898,13 @@ public ImmutableMultimap getConfiguredTa try { ConfiguredTarget mergedTarget = MergedConfiguredTarget.of(configuredTarget, configuredAspects); - BuildConfigurationValue.Key configKey = mergedTarget.getConfigurationKey(); - BuildConfiguration resolvedConfig = depConfig; + BuildConfigurationKey configKey = mergedTarget.getConfigurationKey(); + BuildConfigurationValue resolvedConfig = depConfig; if (configKey == null) { // Unfortunately, it's possible to get a configured target with a null configuration // when depConfig is non-null, so we need to explicitly override it in that case. resolvedConfig = null; - } else if (!configKey.equals(BuildConfigurationValue.key(depConfig))) { + } else if (!configKey.equals(depConfig.getKey())) { resolvedConfig = getConfiguration(eventHandler, mergedTarget.getConfigurationKey()); } cts.put( @@ -1924,12 +1926,10 @@ public ImmutableMultimap getConfiguredTa aliasPackageValues = evaluateSkyKeys(eventHandler, aliasPackagesToFetch); keysToProcess = aliasKeysToRedo; } - Supplier> configurationLookupSupplier = + Supplier> configurationLookupSupplier = () -> configs.values().stream() - .collect( - Collectors.toMap( - BuildConfigurationValue::key, java.util.function.Function.identity())); + .collect(toMap(BuildConfigurationValue::getKey, Functions.identity())); // We ignore the return value here because tests effectively run with --keep_going, and the // loading-phase-error bit is only needed if we're constructing a SkyframeAnalysisResult. SkyframeBuildView.processErrors( @@ -1949,31 +1949,29 @@ public ImmutableMultimap getConfiguredTa * @throws InvalidConfigurationException if the build options produces an invalid configuration */ @Deprecated - public BuildConfiguration getConfiguration( + public BuildConfigurationValue getConfiguration( ExtendedEventHandler eventHandler, BuildOptions options, boolean keepGoing) throws InvalidConfigurationException { return Iterables.getOnlyElement( getConfigurations(eventHandler, ImmutableList.of(options), options, keepGoing)); } - public BuildConfiguration getConfiguration( - ExtendedEventHandler eventHandler, BuildConfigurationValue.Key configurationKey) { + public BuildConfigurationValue getConfiguration( + ExtendedEventHandler eventHandler, BuildConfigurationKey configurationKey) { if (configurationKey == null) { return null; } - return ((BuildConfigurationValue) - evaluateSkyKeys(eventHandler, ImmutableList.of(configurationKey)).get(configurationKey)) - .getConfiguration(); + return (BuildConfigurationValue) + evaluateSkyKeys(eventHandler, ImmutableList.of(configurationKey)).get(configurationKey); } - public Map getConfigurations( - ExtendedEventHandler eventHandler, Collection keys) { + public Map getConfigurations( + ExtendedEventHandler eventHandler, Collection keys) { EvaluationResult evaluationResult = evaluateSkyKeys(eventHandler, keys); return keys.stream() .collect( - Collectors.toMap( - java.util.function.Function.identity(), - (key) -> ((BuildConfigurationValue) evaluationResult.get(key)).getConfiguration())); + toMap( + Functions.identity(), key -> (BuildConfigurationValue) evaluationResult.get(key))); } /** * Returns the configurations corresponding to the given sets of build options. Output order is @@ -1982,7 +1980,7 @@ public Map getConfigurations( * @throws InvalidConfigurationException if any build options produces an invalid configuration */ // TODO(ulfjack): Remove this legacy method after switching to the Skyframe-based implementation. - private ImmutableList getConfigurations( + private ImmutableList getConfigurations( ExtendedEventHandler eventHandler, List optionsList, BuildOptions referenceBuildOptions, @@ -2028,8 +2026,8 @@ private ImmutableList getConfigurations( // Prepare and return the results. return configSkyKeys.stream() - .map(key -> ((BuildConfigurationValue) evalResult.get(key)).getConfiguration()) - .collect(ImmutableList.toImmutableList()); + .map(key -> (BuildConfigurationValue) evalResult.get(key)) + .collect(toImmutableList()); } /** @@ -2096,12 +2094,12 @@ public ConfigurationsResult getConfigurations( } for (BuildOptions toOption : toOptions) { - BuildConfigurationValue.Key configKey = + BuildConfigurationKey configKey = toConfigurationKey(platformMappingValue, allFragments, toOption); BuildConfigurationValue configValue = (BuildConfigurationValue) configsResult.get(configKey); if (configValue != null) { - builder.put(key, configValue.getConfiguration()); + builder.put(key, configValue); } else if (configsResult.errorMap().containsKey(configKey)) { ErrorInfo configError = configsResult.getError(configKey); if (configError.getException() instanceof InvalidConfigurationException) { @@ -2117,11 +2115,11 @@ public ConfigurationsResult getConfigurations( return builder.build(); } - /** Returns every {@link BuildConfigurationValue.Key} in the graph. */ + /** Returns every {@link BuildConfigurationKey} in the graph. */ public Collection getTransitiveConfigurationKeys() { return memoizingEvaluator.getDoneValues().keySet().stream() .filter(key -> SkyFunctions.BUILD_CONFIGURATION.equals(key.functionName())) - .collect(ImmutableList.toImmutableList()); + .collect(toImmutableList()); } private PlatformMappingValue getPlatformMappingValue( @@ -2141,13 +2139,13 @@ private PlatformMappingValue getPlatformMappingValue( return (PlatformMappingValue) evaluationResult.get(platformMappingKey); } - private static BuildConfigurationValue.Key toConfigurationKey( + private static BuildConfigurationKey toConfigurationKey( PlatformMappingValue platformMappingValue, FragmentClassSet depFragments, BuildOptions toOption) throws InvalidConfigurationException { try { - return BuildConfigurationValue.keyWithPlatformMapping( + return BuildConfigurationKey.withPlatformMapping( platformMappingValue, depFragments, toOption); } catch (OptionsParsingException e) { throw new InvalidConfigurationException(Code.INVALID_BUILD_OPTIONS, e); @@ -2241,28 +2239,26 @@ EvaluationResult evaluateSkyKeys( * options. */ @VisibleForTesting - public BuildConfiguration getConfigurationForTesting( + public BuildConfigurationValue getConfigurationForTesting( ExtendedEventHandler eventHandler, FragmentClassSet fragments, BuildOptions options) throws InterruptedException, OptionsParsingException, InvalidConfigurationException { SkyKey key = - BuildConfigurationValue.keyWithPlatformMapping( + BuildConfigurationKey.withPlatformMapping( getPlatformMappingValue(eventHandler, options), fragments, options); - BuildConfigurationValue result = - (BuildConfigurationValue) - evaluate( - ImmutableList.of(key), - /*keepGoing=*/ false, - /*numThreads=*/ DEFAULT_THREAD_COUNT, - eventHandler) - .get(key); - return result.getConfiguration(); + return (BuildConfigurationValue) + evaluate( + ImmutableList.of(key), + /*keepGoing=*/ false, + /*numThreads=*/ DEFAULT_THREAD_COUNT, + eventHandler) + .get(key); } /** Returns a particular configured target. */ @VisibleForTesting @Nullable public ConfiguredTarget getConfiguredTargetForTesting( - ExtendedEventHandler eventHandler, Label label, BuildConfiguration configuration) + ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue configuration) throws TransitionException, InvalidConfigurationException, InterruptedException { return getConfiguredTargetForTesting(eventHandler, label, configuration, NoTransition.INSTANCE); } @@ -2273,7 +2269,7 @@ public ConfiguredTarget getConfiguredTargetForTesting( public ConfiguredTarget getConfiguredTargetForTesting( ExtendedEventHandler eventHandler, Label label, - BuildConfiguration configuration, + BuildConfigurationValue configuration, ConfigurationTransition transition) throws TransitionException, InvalidConfigurationException, InterruptedException { ConfiguredTargetAndData configuredTargetAndData = @@ -2286,7 +2282,7 @@ public ConfiguredTarget getConfiguredTargetForTesting( public ConfiguredTargetAndData getConfiguredTargetAndDataForTesting( ExtendedEventHandler eventHandler, Label label, - BuildConfiguration configuration, + BuildConfigurationValue configuration, ConfigurationTransition transition) throws TransitionException, InvalidConfigurationException, InterruptedException { @@ -2303,7 +2299,7 @@ public ConfiguredTargetAndData getConfiguredTargetAndDataForTesting( @VisibleForTesting @Nullable public ConfiguredTargetAndData getConfiguredTargetAndDataForTesting( - ExtendedEventHandler eventHandler, Label label, BuildConfiguration configuration) + ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue configuration) throws TransitionException, InvalidConfigurationException, InterruptedException { return getConfiguredTargetAndDataForTesting( eventHandler, label, configuration, NoTransition.INSTANCE); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java index 3033a02c5d9e30..786b3bda4ff2cf 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ToolchainContextKey.java @@ -42,7 +42,7 @@ public SkyFunctionName functionName() { return SkyFunctions.TOOLCHAIN_RESOLUTION; } - abstract BuildConfigurationValue.Key configurationKey(); + abstract BuildConfigurationKey configurationKey(); abstract ImmutableSet

    One consequence of this is that requesting a config that would be a Skyframe cache hit - * can still produce a distinct instance. Meaning you can get cases where {@code + *

    One consequence of this is that requesting a config that would be a Skyframe cache hit can + * still produce a distinct instance. Meaning you can get cases where {@code * config1.equals(config2) && config1 != config2}. * *

    This test checks for such a case: perform three consecutive Bazel builds. The first builds * with default options, producing top-level host config H1 and configured target - * . The second builds with {@code --host_copt=a=b}, - * producing host config H2 (and clearing the top-level host config cache since the host config - * changed). The third builds back with default options. This once again clears the host config - * cache, since the host config changed again. So that cache creates a new config H3 where - * H3.equals(H1) and instantiates new configured target . It then requests - * dependency from Skyframe, but the Skyframe SkyKey interner - * reduces this to the previously seen and returns that - * instead. + * . The second builds with {@code --host_copt=a=b}, producing + * host config H2 (and clearing the top-level host config cache since the host config changed). + * The third builds back with default options. This once again clears the host config cache, since + * the host config changed again. So that cache creates a new config H3 where H3.equals(H1) and + * instantiates new configured target . It then requests dependency + * from Skyframe, but the Skyframe SkyKey interner reduces this + * to the previously seen and returns that instead. * *

    This produces the expected scenario where the output file's config is value-equal but not * reference-equal to its generating rule's config. */ @Test public void hostConfigSwitch() throws Exception { - scratch.file("foo/BUILD", + scratch.file( + "foo/BUILD", "genrule(", " name = 'host_generated_file_producer',", " srcs = [],", @@ -107,7 +107,7 @@ public void hostConfigSwitch() throws Exception { ((OutputFileConfiguredTarget) hostSrc3.getConfiguredTarget()).getGeneratingRule(); assertThat(hostSrc3.getConfiguration()).isEqualTo(getConfiguration(hostGeneratedFileConsumer3)); // TODO(gregce): enable below for Bazel tests, which for some reason realize the same instance -// assertThat(hostSrc3.getConfiguration()) -// .isNotSameAs(hostGeneratedFileConsumer3.getConfiguration()); + // assertThat(hostSrc3.getConfiguration()) + // .isNotSameAs(hostGeneratedFileConsumer3.getConfiguration()); } } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkExecGroupTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkExecGroupTest.java index 8a9c24c537ea9d..51940255afe6ef 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkExecGroupTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkExecGroupTest.java @@ -19,7 +19,7 @@ import static com.google.devtools.build.lib.packages.ExecGroup.DEFAULT_EXEC_GROUP_NAME; import com.google.common.collect.ImmutableMap; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.Provider; @@ -143,9 +143,9 @@ public void testExecGroupTransition() throws Exception { Provider.Key key = new StarlarkProvider.Key( Label.parseAbsolute("//test:defs.bzl", ImmutableMap.of()), "MyInfo"); - BuildConfiguration dep = + BuildConfigurationValue dep = getConfiguration((ConfiguredTarget) ((StructImpl) target.get(key)).getValue("dep")); - BuildConfiguration execGroupDep = + BuildConfigurationValue execGroupDep = getConfiguration( (ConfiguredTarget) ((StructImpl) target.get(key)).getValue("exec_group_dep")); diff --git a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java index d93d501ee1714a..5108994ade527b 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/StarlarkRuleTransitionProviderTest.java @@ -17,7 +17,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.transitions.ConfigurationTransition; import com.google.devtools.build.lib.analysis.test.TestConfiguration.TestOptions; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; @@ -114,7 +114,7 @@ public void testOutputOnlyTransition() throws Exception { useConfiguration("--foo=pre-transition"); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat(configuration.getOptions().get(DummyTestOptions.class).foo) .isEqualTo("post-transition"); } @@ -151,7 +151,7 @@ public void testInputAndOutputTransition() throws Exception { useConfiguration("--foo=pre-transition"); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat(configuration.getOptions().get(DummyTestOptions.class).foo) .isEqualTo("pre-transition->post-transition"); } @@ -332,7 +332,7 @@ public void testLabelTypedAttrReturnsLabelNotDep() throws Exception { useConfiguration("--foo=pre-transition"); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat(configuration.getOptions().get(DummyTestOptions.class).foo) .isEqualTo("post-transition"); } @@ -387,7 +387,7 @@ public void testTransitionOnBuildSetting_fromDefault() throws Exception { ")"); writeRulesBuildSettingsAndBUILDforBuildSettingTransitionTests(); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat( configuration .getOptions() @@ -411,7 +411,7 @@ public void testTransitionOnBuildSetting_fromCommandLine() throws Exception { useConfiguration(ImmutableMap.of("//test:cute-animal-fact", "cats can't taste sugar")); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat( configuration .getOptions() @@ -538,7 +538,7 @@ public void testTransitionOnBuildSetting_dontStoreDefault() throws Exception { useConfiguration(ImmutableMap.of("//test:cute-animal-fact", "cats can't taste sugar")); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat(configuration.getOptions().getStarlarkOptions()) .doesNotContainKey(Label.parseAbsoluteUnchecked("//test:cute-animal-fact")); } @@ -556,7 +556,7 @@ public void testTransitionReadsBuildSetting_fromDefault() throws Exception { ")"); writeRulesBuildSettingsAndBUILDforBuildSettingTransitionTests(); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat( configuration .getOptions() @@ -580,7 +580,7 @@ public void testTransitionReadsBuildSetting_fromCommandLine() throws Exception { useConfiguration(ImmutableMap.of("//test:cute-animal-fact", "rats are ticklish")); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat( configuration .getOptions() @@ -713,7 +713,7 @@ public void testAliasedBuildSetting_chainedAliases() throws Exception { useConfiguration(ImmutableMap.of("//test:cute-animal-fact", "rats are ticklish")); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat( configuration .getOptions() @@ -982,7 +982,7 @@ public void testNoNullOptionValues() throws Exception { useConfiguration("--nullable_option=", "--foo=pre-transition"); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat(configuration.getOptions().get(DummyTestOptions.class).foo) .isEqualTo("post-transition"); } @@ -1015,7 +1015,8 @@ public void testAllowlistOnRuleNotTargets() throws Exception { scratch.file("test/BUILD"); useConfiguration("--foo=pre-transition"); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//neverland:test")); + BuildConfigurationValue configuration = + getConfiguration(getConfiguredTarget("//neverland:test")); assertThat(configuration.getOptions().get(DummyTestOptions.class).foo) .isEqualTo("post-transition"); } @@ -1050,7 +1051,7 @@ public void testAllowlistOnTargetsStillWorks() throws Exception { scratch.file("neverland/BUILD"); useConfiguration("--foo=pre-transition"); - BuildConfiguration configuration = getConfiguration(getConfiguredTarget("//test")); + BuildConfigurationValue configuration = getConfiguration(getConfiguredTarget("//test")); assertThat(configuration.getOptions().get(DummyTestOptions.class).foo) .isEqualTo("post-transition"); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationStarlarkTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationStarlarkTest.java index 0388980f096935..464640e1f2aab4 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationStarlarkTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationStarlarkTest.java @@ -27,7 +27,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** Tests for {@link BuildConfiguration}'s integration with Starlark. */ +/** Tests for {@link BuildConfigurationValue}'s integration with Starlark. */ @RunWith(JUnit4.class) public final class BuildConfigurationStarlarkTest extends BuildViewTestCase { diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java index 53cc4fb8e92dcf..01f0c0e590726a 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java @@ -28,7 +28,6 @@ import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; import com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.common.options.Options; @@ -36,9 +35,7 @@ import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -/** - * Tests for {@link BuildConfiguration}. - */ +/** Tests for {@link BuildConfigurationValue}. */ @RunWith(JUnit4.class) public class BuildConfigurationTest extends ConfigurationTestCase { @@ -48,7 +45,7 @@ public void testBasics() throws Exception { return; } - BuildConfiguration config = create("--cpu=piii"); + BuildConfigurationValue config = create("--cpu=piii"); String outputDirPrefix = outputBase + "/execroot/" + config.getMainRepositoryName() + "/blaze-out/.*piii-fastbuild"; @@ -68,7 +65,7 @@ public void testPlatformSuffix() throws Exception { return; } - BuildConfiguration config = create("--platform_suffix=test"); + BuildConfigurationValue config = create("--platform_suffix=test"); assertThat(config.getOutputDirectory(RepositoryName.MAIN).getRoot().toString()) .matches( outputBase @@ -96,11 +93,11 @@ public void testHostCrosstoolTop() throws Exception { } BuildConfigurationCollection configs = createCollection("--cpu=piii"); - BuildConfiguration config = Iterables.getOnlyElement(configs.getTargetConfigurations()); + BuildConfigurationValue config = Iterables.getOnlyElement(configs.getTargetConfigurations()); assertThat(config.getFragment(CppConfiguration.class).getRuleProvidingCcToolchainProvider()) .isEqualTo(Label.parseAbsoluteUnchecked("//tools/cpp:toolchain")); - BuildConfiguration hostConfig = configs.getHostConfiguration(); + BuildConfigurationValue hostConfig = configs.getHostConfiguration(); assertThat(hostConfig.getFragment(CppConfiguration.class).getRuleProvidingCcToolchainProvider()) .isEqualTo(Label.parseAbsoluteUnchecked("//tools/cpp:toolchain")); } @@ -159,25 +156,25 @@ public void testMultiCpuSorting() throws Exception { @Test public void testTargetEnvironment() throws Exception { - BuildConfiguration oneEnvConfig = create("--target_environment=//foo"); + BuildConfigurationValue oneEnvConfig = create("--target_environment=//foo"); assertThat(oneEnvConfig.getTargetEnvironments()) .containsExactly(Label.parseAbsolute("//foo", ImmutableMap.of())); - BuildConfiguration twoEnvsConfig = + BuildConfigurationValue twoEnvsConfig = create("--target_environment=//foo", "--target_environment=//bar"); assertThat(twoEnvsConfig.getTargetEnvironments()) .containsExactly( Label.parseAbsolute("//foo", ImmutableMap.of()), Label.parseAbsolute("//bar", ImmutableMap.of())); - BuildConfiguration noEnvsConfig = create(); + BuildConfigurationValue noEnvsConfig = create(); assertThat(noEnvsConfig.getTargetEnvironments()).isEmpty(); } @Test public void testGlobalMakeVariableOverride() throws Exception { assertThat(create().getMakeEnvironment()).containsEntry("COMPILATION_MODE", "fastbuild"); - BuildConfiguration config = create("--define", "COMPILATION_MODE=fluttershy"); + BuildConfigurationValue config = create("--define", "COMPILATION_MODE=fluttershy"); assertThat(config.getMakeEnvironment()).containsEntry("COMPILATION_MODE", "fluttershy"); } @@ -203,9 +200,9 @@ public void testGetTransitiveOptionDetails() throws Exception { public void testConfigFragmentsAreShareableAcrossConfigurations() throws Exception { // Note we can't use any fragments that load files (e.g. CROSSTOOL) because those get // Skyframe-invalidated between create() calls. - BuildConfiguration config1 = create("--javacopt=foo"); - BuildConfiguration config2 = create("--javacopt=bar"); - BuildConfiguration config3 = create("--j2objc_translation_flags=baz"); + BuildConfigurationValue config1 = create("--javacopt=foo"); + BuildConfigurationValue config2 = create("--javacopt=bar"); + BuildConfigurationValue config3 = create("--j2objc_translation_flags=baz"); // Shared because all j2objc options are the same: assertThat(config1.getFragment(J2ObjcConfiguration.class)) .isSameInstanceAs(config2.getFragment(J2ObjcConfiguration.class)); @@ -216,8 +213,8 @@ public void testConfigFragmentsAreShareableAcrossConfigurations() throws Excepti @Test public void testCommandLineVariables() throws Exception { - BuildConfiguration config = create( - "--define", "a=b/c:d", "--define", "b=FOO", "--define", "DEFUN=Nope"); + BuildConfigurationValue config = + create("--define", "a=b/c:d", "--define", "b=FOO", "--define", "DEFUN=Nope"); assertThat(config.getCommandLineBuildVariables().get("a")).isEqualTo("b/c:d"); assertThat(config.getCommandLineBuildVariables().get("b")).isEqualTo("FOO"); assertThat(config.getCommandLineBuildVariables().get("DEFUN")).isEqualTo("Nope"); @@ -227,14 +224,14 @@ public void testCommandLineVariables() throws Exception { // "--define in blazerc overrides --define from command line" @Test public void testCommandLineVariablesOverride() throws Exception { - BuildConfiguration config = create("--define", "a=b", "--define", "a=c"); + BuildConfigurationValue config = create("--define", "a=b", "--define", "a=c"); assertThat(config.getCommandLineBuildVariables().get("a")).isEqualTo("c"); } @Test public void testNormalization_definesWithSameName_collapseDuplicateDefinesDisabled() throws Exception { - BuildConfiguration config = + BuildConfigurationValue config = create("--nocollapse_duplicate_defines", "--define", "a=1", "--define", "a=2"); CoreOptions options = config.getOptions().get(CoreOptions.class); assertThat(ImmutableListMultimap.copyOf(options.commandLineBuildVariables)) @@ -245,7 +242,7 @@ public void testNormalization_definesWithSameName_collapseDuplicateDefinesDisabl @Test public void testNormalization_definesWithDifferentNames() throws Exception { - BuildConfiguration config = + BuildConfigurationValue config = create("--collapse_duplicate_defines", "--define", "a=1", "--define", "b=2"); CoreOptions options = config.getOptions().get(CoreOptions.class); assertThat(ImmutableMap.copyOf(options.commandLineBuildVariables)) @@ -254,7 +251,7 @@ public void testNormalization_definesWithDifferentNames() throws Exception { @Test public void testNormalization_definesWithSameName() throws Exception { - BuildConfiguration config = + BuildConfigurationValue config = create("--collapse_duplicate_defines", "--define", "a=1", "--define", "a=2"); CoreOptions options = config.getOptions().get(CoreOptions.class); assertThat(ImmutableMap.copyOf(options.commandLineBuildVariables)).containsExactly("a", "2"); @@ -265,13 +262,14 @@ public void testNormalization_definesWithSameName() throws Exception { // semantics. @Test public void testCommandLineVariablesWithFunnyCharacters() throws Exception { - BuildConfiguration config = create( - "--define", "foo=#foo", - "--define", "comma=a,b", - "--define", "space=foo bar", - "--define", "thing=a \"quoted\" thing", - "--define", "qspace=a\\ quoted\\ space", - "--define", "#a=pounda"); + BuildConfigurationValue config = + create( + "--define", "foo=#foo", + "--define", "comma=a,b", + "--define", "space=foo bar", + "--define", "thing=a \"quoted\" thing", + "--define", "qspace=a\\ quoted\\ space", + "--define", "#a=pounda"); assertThat(config.getCommandLineBuildVariables().get("foo")).isEqualTo("#foo"); assertThat(config.getCommandLineBuildVariables().get("comma")).isEqualTo("a,b"); assertThat(config.getCommandLineBuildVariables().get("space")).isEqualTo("foo bar"); @@ -282,33 +280,33 @@ public void testCommandLineVariablesWithFunnyCharacters() throws Exception { @Test public void testHostDefine() throws Exception { - BuildConfiguration cfg = createHost("--define=foo=bar"); + BuildConfigurationValue cfg = createHost("--define=foo=bar"); assertThat(cfg.getCommandLineBuildVariables().get("foo")).isEqualTo("bar"); } @Test public void testHostCompilationModeDefault() throws Exception { - BuildConfiguration cfg = createHost(); + BuildConfigurationValue cfg = createHost(); assertThat(cfg.getCompilationMode()).isEqualTo(CompilationMode.OPT); } @Test public void testHostCompilationModeNonDefault() throws Exception { - BuildConfiguration cfg = createHost("--host_compilation_mode=dbg"); + BuildConfigurationValue cfg = createHost("--host_compilation_mode=dbg"); assertThat(cfg.getCompilationMode()).isEqualTo(CompilationMode.DBG); } @Test public void testIncompatibleMergeGenfilesDirectory() throws Exception { - BuildConfiguration target = create("--incompatible_merge_genfiles_directory"); - BuildConfiguration host = createHost("--incompatible_merge_genfiles_directory"); + BuildConfigurationValue target = create("--incompatible_merge_genfiles_directory"); + BuildConfigurationValue host = createHost("--incompatible_merge_genfiles_directory"); assertThat(target.getGenfilesDirectory(RepositoryName.MAIN)) .isEqualTo(target.getBinDirectory(RepositoryName.MAIN)); assertThat(host.getGenfilesDirectory(RepositoryName.MAIN)) .isEqualTo(host.getBinDirectory(RepositoryName.MAIN)); } - private ImmutableList getTestConfigurations() throws Exception { + private ImmutableList getTestConfigurations() throws Exception { return ImmutableList.of( create(), create("--cpu=piii"), @@ -361,7 +359,7 @@ public void testCodec() throws Exception { public void testKeyCodec() throws Exception { new SerializationTester( getTestConfigurations().stream() - .map(BuildConfigurationValue::key) + .map(BuildConfigurationValue::getKey) .collect(ImmutableList.toImmutableList())) .addDependency(OptionsChecksumCache.class, new MapBackedChecksumCache()) .runTests(); @@ -369,7 +367,7 @@ public void testKeyCodec() throws Exception { @Test public void testPlatformInOutputDir_defaultPlatform() throws Exception { - BuildConfiguration config = create("--experimental_platform_in_output_dir", "--cpu=k8"); + BuildConfigurationValue config = create("--experimental_platform_in_output_dir", "--cpu=k8"); assertThat(config.getOutputDirectory(RepositoryName.MAIN).getRoot().toString()) .matches(".*/[^/]+-out/k8-fastbuild"); @@ -377,7 +375,7 @@ public void testPlatformInOutputDir_defaultPlatform() throws Exception { @Test public void testPlatformInOutputDir() throws Exception { - BuildConfiguration config = + BuildConfigurationValue config = create("--experimental_platform_in_output_dir", "--platforms=//platform:alpha"); assertThat(config.getOutputDirectory(RepositoryName.MAIN).getRoot().toString()) @@ -385,13 +383,14 @@ public void testPlatformInOutputDir() throws Exception { } /** - * Partial verification of deserialized BuildConfiguration. + * Partial verification of deserialized BuildConfigurationValue. * *

    Direct comparison of deserialized to subject doesn't work because Fragment classes do not - * implement equals. This runs the part of BuildConfiguration.equals that has equals definitions. + * implement equals. This runs the part of BuildConfigurationValue.equals that has equals + * definitions. */ private static void verifyDeserialized( - BuildConfiguration subject, BuildConfiguration deserialized) { + BuildConfigurationValue subject, BuildConfigurationValue deserialized) { assertThat(deserialized.getOptions()).isEqualTo(subject.getOptions()); } } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java index dbd36b5f5d5fd8..22800334cbf420 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java @@ -41,8 +41,8 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.ServerDirectories; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.config.TransitionResolver; @@ -322,11 +322,11 @@ protected BuildConfigurationCollection getBuildConfigurationCollection() { * Returns the target configuration for the most recent build, as created in Blaze's primary * configuration creation phase. */ - protected BuildConfiguration getTargetConfiguration() throws InterruptedException { + protected BuildConfigurationValue getTargetConfiguration() throws InterruptedException { return Iterables.getOnlyElement(universeConfig.getTargetConfigurations()); } - protected BuildConfiguration getHostConfiguration() { + protected BuildConfigurationValue getHostConfiguration() { return universeConfig.getHostConfiguration(); } @@ -444,7 +444,7 @@ protected ConfiguredTargetAndData getConfiguredTargetAndTarget(String label) } protected ConfiguredTargetAndData getConfiguredTargetAndTarget( - String label, BuildConfiguration config) { + String label, BuildConfigurationValue config) { ensureUpdateWasCalled(); Label parsedLabel; try { @@ -471,7 +471,7 @@ protected Target getTarget(String label) throws InterruptedException { } protected final ConfiguredTargetAndData getConfiguredTargetAndData( - String label, BuildConfiguration configuration) { + String label, BuildConfigurationValue configuration) { ensureUpdateWasCalled(); return getConfiguredTargetForSkyframe(label, configuration); } @@ -482,7 +482,7 @@ protected final ConfiguredTargetAndData getConfiguredTargetAndData(String label) } protected final ConfiguredTarget getConfiguredTarget( - String label, BuildConfiguration configuration) { + String label, BuildConfigurationValue configuration) { ConfiguredTargetAndData result = getConfiguredTargetAndData(label, configuration); return result == null ? null : result.getConfiguredTarget(); } @@ -496,7 +496,7 @@ protected ConfiguredTarget getConfiguredTarget(String label) throws InterruptedE } private ConfiguredTargetAndData getConfiguredTargetForSkyframe( - String label, BuildConfiguration configuration) { + String label, BuildConfigurationValue configuration) { Label parsedLabel; try { parsedLabel = Label.parseAbsolute(label, ImmutableMap.of()); @@ -524,7 +524,7 @@ private ConfiguredTargetAndData getConfiguredTargetForSkyframe( } } - protected final BuildConfiguration getConfiguration(ConfiguredTarget ct) { + protected final BuildConfigurationValue getConfiguration(ConfiguredTarget ct) { return skyframeExecutor.getConfiguration(reporter, ct.getConfigurationKey()); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java index b1340efc99cc90..4c2e6c90696765 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestUtil.java @@ -43,8 +43,8 @@ import com.google.devtools.build.lib.analysis.WorkspaceStatusAction.Key; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction.Options; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -206,7 +206,8 @@ public Artifact getVolatileWorkspaceStatusArtifact() throws InterruptedException @Override public ImmutableList getBuildInfo( - boolean stamp, BuildInfoKey key, BuildConfiguration config) throws InterruptedException { + boolean stamp, BuildInfoKey key, BuildConfigurationValue config) + throws InterruptedException { return original.getBuildInfo(stamp, key, config); } @@ -441,7 +442,7 @@ public Artifact getVolatileWorkspaceStatusArtifact() { @Override public ImmutableList getBuildInfo( - boolean stamp, BuildInfoKey key, BuildConfiguration config) { + boolean stamp, BuildInfoKey key, BuildConfigurationValue config) { return ImmutableList.of(); } @@ -508,9 +509,9 @@ private static U computeRootPaths(ArtifactRoot artifactRoot, Function artifactsToStrings( BuildConfigurationCollection configurations, Iterable artifacts) { - BuildConfiguration targetConfiguration = + BuildConfigurationValue targetConfiguration = Iterables.getOnlyElement(configurations.getTargetConfigurations()); - BuildConfiguration hostConfiguration = configurations.getHostConfiguration(); + BuildConfigurationValue hostConfiguration = configurations.getHostConfiguration(); return artifactsToStrings(targetConfiguration, hostConfiguration, artifacts); } @@ -521,8 +522,8 @@ public static Set artifactsToStrings( *

    The returned set preserves the order of the input. */ public static Set artifactsToStrings( - BuildConfiguration targetConfiguration, - BuildConfiguration hostConfiguration, + BuildConfigurationValue targetConfiguration, + BuildConfigurationValue hostConfiguration, Iterable artifacts) { Map rootMap = new HashMap<>(); computeRootPaths( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD index 65c8b002629696..17478d4cb59d8b 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD @@ -98,7 +98,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/rules/java:java-compilation", "//src/main/java/com/google/devtools/build/lib/shell", "//src/main/java/com/google/devtools/build/lib/skyframe:aspect_key_creator", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_and_data", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key", "//src/main/java/com/google/devtools/build/lib/skyframe:managed_directories_knowledge", diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java index eeea1aa0a54546..a691c2b18d81d7 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java @@ -62,8 +62,8 @@ import com.google.devtools.build.lib.analysis.ToolchainContext; import com.google.devtools.build.lib.analysis.TopLevelArtifactContext; import com.google.devtools.build.lib.analysis.ViewCreationFailedException; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; @@ -97,7 +97,6 @@ import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.skyframe.AspectKeyCreator; import com.google.devtools.build.lib.skyframe.AspectKeyCreator.AspectKey; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction; import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction.ComputedToolchainContexts; @@ -238,8 +237,8 @@ public ArtifactFactory getArtifactFactory() { * *

    Unconditionally includes all fragments. */ - public BuildConfiguration getConfigurationForTesting( - Target target, BuildConfiguration config, ExtendedEventHandler eventHandler) + public BuildConfigurationValue getConfigurationForTesting( + Target target, BuildConfigurationValue config, ExtendedEventHandler eventHandler) throws InvalidConfigurationException, InterruptedException { List node = ImmutableList.of(new TargetAndConfiguration(target, config)); @@ -328,11 +327,9 @@ private static ConfiguredTargetAndData getConfiguredTarget( ConfiguredTargetValue value = (ConfiguredTargetValue) graph.getValue(key); if (value != null) { ConfiguredTarget ct = value.getConfiguredTarget(); - BuildConfiguration config = null; + BuildConfigurationValue config = null; if (ct.getConfigurationKey() != null) { - config = - ((BuildConfigurationValue) graph.getValue(ct.getConfigurationKey())) - .getConfiguration(); + config = (BuildConfigurationValue) graph.getValue(ct.getConfigurationKey()); } PackageValue packageValue = (PackageValue) graph.getValue(PackageValue.key(ct.getLabel().getPackageIdentifier())); @@ -365,7 +362,7 @@ protected static ConfiguredTargetAndData mergeAspects( // Collect the aspects. try { - BuildConfiguration config = ctd.getConfiguration(); + BuildConfigurationValue config = ctd.getConfiguration(); List aspectKeys = dependencyKey.getAspects().getUsedAspects().stream() .map( @@ -435,7 +432,7 @@ protected Map getTargets( } DependencyResolver dependencyResolver = new SilentDependencyResolver(); - BuildConfiguration configuration = + BuildConfigurationValue configuration = skyframeExecutor.getConfiguration(eventHandler, ct.getConfigurationKey()); TargetAndConfiguration ctgNode = new TargetAndConfiguration(target, configuration); return dependencyResolver.dependentNodeMap( @@ -513,7 +510,7 @@ private OrderedSetMultimap getPrerequis } private ConfigurationTransition getTopLevelTransitionForTarget( - Label label, BuildConfiguration config, ExtendedEventHandler handler) { + Label label, BuildConfigurationValue config, ExtendedEventHandler handler) { Target target; try { target = skyframeExecutor.getPackageManager().getTarget(handler, label); @@ -544,7 +541,7 @@ private ConfigurationTransition getTopLevelTransitionForTarget( *

    Returns {@code null} if something goes wrong. */ public ConfiguredTarget getConfiguredTargetForTesting( - ExtendedEventHandler eventHandler, Label label, BuildConfiguration config) + ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue config) throws StarlarkTransition.TransitionException, InvalidConfigurationException, InterruptedException { ConfigurationTransition transition = @@ -556,7 +553,7 @@ public ConfiguredTarget getConfiguredTargetForTesting( } ConfiguredTargetAndData getConfiguredTargetAndDataForTesting( - ExtendedEventHandler eventHandler, Label label, BuildConfiguration config) + ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue config) throws StarlarkTransition.TransitionException, InvalidConfigurationException, InterruptedException { ConfigurationTransition transition = @@ -578,7 +575,7 @@ public RuleContext getRuleContextForTesting( throws DependencyResolver.Failure, InvalidConfigurationException, InterruptedException, InconsistentAspectOrderException, ToolchainException, StarlarkTransition.TransitionException, InvalidExecGroupException { - BuildConfiguration targetConfig = + BuildConfigurationValue targetConfig = skyframeExecutor.getConfiguration(eventHandler, target.getConfigurationKey()); SkyFunction.Environment skyframeEnv = skyframeExecutor.getSkyFunctionEnvironmentForTesting(eventHandler); @@ -613,7 +610,7 @@ public RuleContext getRuleContextForTesting( throws DependencyResolver.Failure, InvalidConfigurationException, InterruptedException, InconsistentAspectOrderException, ToolchainException, StarlarkTransition.TransitionException, InvalidExecGroupException { - BuildConfiguration targetConfig = + BuildConfigurationValue targetConfig = skyframeExecutor.getConfiguration(eventHandler, configuredTarget.getConfigurationKey()); Target target; try { diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java index 106515e5f7f21e..3eeecc47c9cb24 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java @@ -88,8 +88,8 @@ import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoKey; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.FragmentOptions; @@ -146,7 +146,7 @@ import com.google.devtools.build.lib.skyframe.AspectKeyCreator; import com.google.devtools.build.lib.skyframe.AspectKeyCreator.AspectKey; import com.google.devtools.build.lib.skyframe.BazelSkyframeExecutorConstants; -import com.google.devtools.build.lib.skyframe.BuildConfigurationValue; +import com.google.devtools.build.lib.skyframe.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.BuildInfoCollectionFunction; import com.google.devtools.build.lib.skyframe.BzlLoadFunction; import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData; @@ -219,7 +219,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { // Note that these configurations are virtual (they use only VFS) protected BuildConfigurationCollection masterConfig; - protected BuildConfiguration targetConfig; // "target" or "build" config + protected BuildConfigurationValue targetConfig; // "target" or "build" config private List configurationArgs; protected OptionsParser optionsParser; @@ -234,7 +234,7 @@ public abstract class BuildViewTestCase extends FoundationTestCase { private MutableActionGraph mutableActionGraph; private LoadingOptions customLoadingOptions = null; - protected BuildConfigurationValue.Key targetConfigKey; + protected BuildConfigurationKey targetConfigKey; private ActionLogBufferPathGenerator actionLogBufferPathGenerator; @@ -613,7 +613,7 @@ protected void useConfiguration(ImmutableMap starlarkOptions, St masterConfig = createConfigurations(starlarkOptions, actualArgs.toArray(new String[0])); targetConfig = getTargetConfiguration(); - targetConfigKey = BuildConfigurationValue.key(targetConfig); + targetConfigKey = targetConfig.getKey(); configurationArgs = actualArgs; createBuildView(); } @@ -725,8 +725,8 @@ private static BuildOptions trimConfiguration( * contained within the {@link BuildOptions} inside the given configurations. */ protected static void assertConfigurationsEqual( - BuildConfiguration config1, - BuildConfiguration config2, + BuildConfigurationValue config1, + BuildConfigurationValue config2, Set> excludeFragmentOptions) { // BuildOptions and crosstool files determine a configuration's content. Within the context // of these tests only the former actually change. @@ -736,7 +736,7 @@ protected static void assertConfigurationsEqual( } protected static void assertConfigurationsEqual( - BuildConfiguration config1, BuildConfiguration config2) { + BuildConfigurationValue config1, BuildConfigurationValue config2) { assertConfigurationsEqual(config1, config2, /*excludeFragmentOptions=*/ ImmutableSet.of()); } @@ -973,7 +973,7 @@ protected MutableActionGraph getMutableActionGraph() { * configuration. If the label corresponds to a target with a top-level configuration transition, * that transition is applied to the given config in the returned ConfiguredTarget. * - *

    May return null on error; see {@link #getConfiguredTarget(Label, BuildConfiguration)}. + *

    May return null on error; see {@link #getConfiguredTarget(Label, BuildConfigurationValue)}. */ @Nullable public ConfiguredTarget getConfiguredTarget(String label) throws LabelSyntaxException { @@ -985,10 +985,10 @@ public ConfiguredTarget getConfiguredTarget(String label) throws LabelSyntaxExce * the label corresponds to a target with a top-level configuration transition, that transition is * applied to the given config in the returned ConfiguredTarget. * - *

    May return null on error; see {@link #getConfiguredTarget(Label, BuildConfiguration)}. + *

    May return null on error; see {@link #getConfiguredTarget(Label, BuildConfigurationValue)}. */ @Nullable - protected ConfiguredTarget getConfiguredTarget(String label, BuildConfiguration config) + protected ConfiguredTarget getConfiguredTarget(String label, BuildConfigurationValue config) throws LabelSyntaxException { return getConfiguredTarget(Label.parseAbsolute(label, ImmutableMap.of()), config); } @@ -1008,7 +1008,7 @@ protected ConfiguredTarget getConfiguredTarget(String label, BuildConfiguration // TODO(bazel-team): Should we work around b/26382502 by asserting here that the result is not // null? @Nullable - protected ConfiguredTarget getConfiguredTarget(Label label, BuildConfiguration config) { + protected ConfiguredTarget getConfiguredTarget(Label label, BuildConfigurationValue config) { try { return view.getConfiguredTargetForTesting( reporter, BlazeTestUtils.convertLabel(label), config); @@ -1023,7 +1023,7 @@ protected ConfiguredTarget getConfiguredTarget(Label label, BuildConfiguration c * Returns a ConfiguredTargetAndData for the specified label, using the given build configuration. */ protected ConfiguredTargetAndData getConfiguredTargetAndData( - Label label, BuildConfiguration config) + Label label, BuildConfigurationValue config) throws StarlarkTransition.TransitionException, InvalidConfigurationException, InterruptedException { return view.getConfiguredTargetAndDataForTesting(reporter, label, config); @@ -1116,7 +1116,7 @@ protected ConfiguredTarget scratchConfiguredTarget( * @return the configured target instance for the created rule. */ protected ConfiguredTarget scratchConfiguredTarget( - String packageName, String ruleName, BuildConfiguration config, String... lines) + String packageName, String ruleName, BuildConfigurationValue config, String... lines) throws Exception { ConfiguredTargetAndData ctad = scratchConfiguredTargetAndData(packageName, ruleName, config, lines); @@ -1146,7 +1146,7 @@ protected ConfiguredTargetAndData scratchConfiguredTargetAndData( * @return the ConfiguredTargetAndData instance for the created rule. */ protected ConfiguredTargetAndData scratchConfiguredTargetAndData( - String packageName, String ruleName, BuildConfiguration config, String... lines) + String packageName, String ruleName, BuildConfigurationValue config, String... lines) throws Exception { Target rule = scratchRule(packageName, ruleName, lines); return view.getConfiguredTargetAndDataForTesting(reporter, rule.getLabel(), config); @@ -1386,7 +1386,7 @@ protected final Artifact.DerivedArtifact getDerivedArtifact( /** * Gets a Tree Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getBinDirectory} corresponding to the package of {@code owner}. So to + * BuildConfigurationValue#getBinDirectory} corresponding to the package of {@code owner}. So to * specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be * "foo.o". */ @@ -1430,10 +1430,10 @@ protected static List getInputs(Action owner, Collection execP } /** - * Gets a derived Artifact for testing in the {@link BuildConfiguration#getBinDirectory}. This - * method should only be used for tests that do no analysis, and so there is no ConfiguredTarget - * to own this artifact. If the test runs the analysis phase, {@link #getBinArtifact(String, - * ConfiguredTarget)} or its convenience methods should be used instead. + * Gets a derived Artifact for testing in the {@link BuildConfigurationValue#getBinDirectory}. + * This method should only be used for tests that do no analysis, and so there is no + * ConfiguredTarget to own this artifact. If the test runs the analysis phase, {@link + * #getBinArtifact(String, ConfiguredTarget)} or its convenience methods should be used instead. */ protected Artifact.DerivedArtifact getBinArtifactWithNoOwner(String rootRelativePath) { return getDerivedArtifact( @@ -1444,7 +1444,7 @@ protected Artifact.DerivedArtifact getBinArtifactWithNoOwner(String rootRelative /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getBinDirectory} corresponding to the package of {@code owner}. So to + * BuildConfigurationValue#getBinDirectory} corresponding to the package of {@code owner}. So to * specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be * "foo.o". */ @@ -1461,8 +1461,8 @@ protected final Artifact getBinArtifact(String packageRelativePath, ConfiguredTa /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getBinDirectory} corresponding to the package of {@code owner}, where the - * given artifact belongs to the given ConfiguredTarget together with the given Aspect. So to + * BuildConfigurationValue#getBinDirectory} corresponding to the package of {@code owner}, where + * the given artifact belongs to the given ConfiguredTarget together with the given Aspect. So to * specify a file foo/foo.o owned by target //foo:foo with an aspect from FooAspect, {@code * packageRelativePath} should just be "foo.o", and aspectOfOwner should be FooAspect.class. This * method is necessary when an Aspect of the target, not the target itself, is creating an @@ -1476,8 +1476,8 @@ protected Artifact getBinArtifact( /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getBinDirectory} corresponding to the package of {@code owner}, where the - * given artifact belongs to the given ConfiguredTarget together with the given Aspect. So to + * BuildConfigurationValue#getBinDirectory} corresponding to the package of {@code owner}, where + * the given artifact belongs to the given ConfiguredTarget together with the given Aspect. So to * specify a file foo/foo.o owned by target //foo:foo with an aspect from FooAspect, {@code * packageRelativePath} should just be "foo.o", and aspectOfOwner should be FooAspect.class. This * method is necessary when an Aspect of the target, not the target itself, is creating an @@ -1501,11 +1501,11 @@ protected Artifact getBinArtifact( } /** - * Gets a derived Artifact for testing in the {@link BuildConfiguration#getGenfilesDirectory}. - * This method should only be used for tests that do no analysis, and so there is no - * ConfiguredTarget to own this artifact. If the test runs the analysis phase, {@link - * #getGenfilesArtifact(String, ConfiguredTarget)} or its convenience methods should be used - * instead. + * Gets a derived Artifact for testing in the {@link + * BuildConfigurationValue#getGenfilesDirectory}. This method should only be used for tests that + * do no analysis, and so there is no ConfiguredTarget to own this artifact. If the test runs the + * analysis phase, {@link #getGenfilesArtifact(String, ConfiguredTarget)} or its convenience + * methods should be used instead. */ protected Artifact getGenfilesArtifactWithNoOwner(String rootRelativePath) { return getDerivedArtifact( @@ -1516,12 +1516,12 @@ protected Artifact getGenfilesArtifactWithNoOwner(String rootRelativePath) { /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getGenfilesDirectory} corresponding to the package of {@code owner}. So to - * specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be - * "foo.o". + * BuildConfigurationValue#getGenfilesDirectory} corresponding to the package of {@code owner}. So + * to specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just + * be "foo.o". */ protected Artifact getGenfilesArtifact(String packageRelativePath, String owner) { - BuildConfiguration config = getConfiguration(owner); + BuildConfigurationValue config = getConfiguration(owner); return getGenfilesArtifact( packageRelativePath, ConfiguredTargetKey.builder() @@ -1533,12 +1533,12 @@ protected Artifact getGenfilesArtifact(String packageRelativePath, String owner) /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getGenfilesDirectory} corresponding to the package of {@code owner}. So to - * specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be - * "foo.o". + * BuildConfigurationValue#getGenfilesDirectory} corresponding to the package of {@code owner}. So + * to specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just + * be "foo.o". */ protected Artifact getGenfilesArtifact(String packageRelativePath, ConfiguredTarget owner) { - BuildConfiguration configuration = + BuildConfigurationValue configuration = skyframeExecutor.getConfiguration(reporter, owner.getConfigurationKey()); ConfiguredTargetKey configKey = ConfiguredTargetKey.builder() @@ -1550,9 +1550,9 @@ protected Artifact getGenfilesArtifact(String packageRelativePath, ConfiguredTar /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getGenfilesDirectory} corresponding to the package of {@code owner}, where - * the given artifact belongs to the given ConfiguredTarget together with the given Aspect. So to - * specify a file foo/foo.o owned by target //foo:foo with an apsect from FooAspect, {@code + * BuildConfigurationValue#getGenfilesDirectory} corresponding to the package of {@code owner}, + * where the given artifact belongs to the given ConfiguredTarget together with the given Aspect. + * So to specify a file foo/foo.o owned by target //foo:foo with an apsect from FooAspect, {@code * packageRelativePath} should just be "foo.o", and aspectOfOwner should be FooAspect.class. This * method is necessary when an Apsect of the target, not the target itself, is creating an * Artifact. @@ -1576,12 +1576,12 @@ protected Artifact getGenfilesArtifact( /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getGenfilesDirectory} corresponding to the package of {@code owner}. So to - * specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be - * "foo.o". + * BuildConfigurationValue#getGenfilesDirectory} corresponding to the package of {@code owner}. So + * to specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just + * be "foo.o". */ private Artifact getGenfilesArtifact( - String packageRelativePath, ArtifactOwner owner, BuildConfiguration config) { + String packageRelativePath, ArtifactOwner owner, BuildConfigurationValue config) { return getPackageRelativeDerivedArtifact( packageRelativePath, config.getGenfilesDirectory(RepositoryName.MAIN), owner); } @@ -1599,9 +1599,9 @@ protected AspectKey getOwnerForAspect( /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getIncludeDirectory} corresponding to the package of {@code owner}. So to - * specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be - * "foo.h". + * BuildConfigurationValue#getIncludeDirectory} corresponding to the package of {@code owner}. So + * to specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just + * be "foo.h". */ protected Artifact getIncludeArtifact(String packageRelativePath, String owner) { return getIncludeArtifact(packageRelativePath, makeConfiguredTargetKey(owner)); @@ -1609,9 +1609,9 @@ protected Artifact getIncludeArtifact(String packageRelativePath, String owner) /** * Gets a derived Artifact for testing in the subdirectory of the {@link - * BuildConfiguration#getIncludeDirectory} corresponding to the package of {@code owner}. So to - * specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just be - * "foo.h". + * BuildConfigurationValue#getIncludeDirectory} corresponding to the package of {@code owner}. So + * to specify a file foo/foo.o owned by target //foo:foo, {@code packageRelativePath} should just + * be "foo.h". */ protected Artifact getIncludeArtifact(String packageRelativePath, ArtifactOwner owner) { return getPackageRelativeDerivedArtifact( @@ -1891,11 +1891,11 @@ protected static Runfiles getDataRunfiles(ConfiguredTarget target) { return target.getProvider(RunfilesProvider.class).getDataRunfiles(); } - protected BuildConfiguration getTargetConfiguration() { + protected BuildConfigurationValue getTargetConfiguration() { return Iterables.getOnlyElement(masterConfig.getTargetConfigurations()); } - protected BuildConfiguration getHostConfiguration() { + protected BuildConfigurationValue getHostConfiguration() { return masterConfig.getHostConfiguration(); } @@ -1904,8 +1904,8 @@ protected BuildConfiguration getHostConfiguration() { * * @throws AssertionError if the transition couldn't be evaluated */ - protected BuildConfiguration getConfiguration( - BuildConfiguration fromConfig, PatchTransition transition) throws InterruptedException { + protected BuildConfigurationValue getConfiguration( + BuildConfigurationValue fromConfig, PatchTransition transition) throws InterruptedException { if (transition == NoTransition.INSTANCE) { return fromConfig; } else if (transition == NullTransition.INSTANCE) { @@ -1924,8 +1924,8 @@ protected BuildConfiguration getConfiguration( } } - private BuildConfiguration getConfiguration(String label) { - BuildConfiguration config; + private BuildConfigurationValue getConfiguration(String label) { + BuildConfigurationValue config; try { config = getConfiguration(getConfiguredTarget(label)); config = view.getConfigurationForTesting(getTarget(label), config, reporter); @@ -1938,12 +1938,11 @@ private BuildConfiguration getConfiguration(String label) { return config; } - protected final BuildConfiguration getConfiguration( - BuildConfigurationValue.Key configurationKey) { + protected final BuildConfigurationValue getConfiguration(BuildConfigurationKey configurationKey) { return skyframeExecutor.getConfiguration(reporter, configurationKey); } - protected final BuildConfiguration getConfiguration(ConfiguredTarget ct) { + protected final BuildConfigurationValue getConfiguration(ConfiguredTarget ct) { return skyframeExecutor.getConfiguration(reporter, ct.getConfigurationKey()); } @@ -2225,7 +2224,7 @@ public Artifact getVolatileWorkspaceStatusArtifact() { @Override public ImmutableList getBuildInfo( - boolean stamp, BuildInfoKey key, BuildConfiguration config) { + boolean stamp, BuildInfoKey key, BuildConfigurationValue config) { throw new UnsupportedOperationException(); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java index a66384931fc106..be4eab94518cac 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java @@ -25,8 +25,8 @@ import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; import com.google.devtools.build.lib.analysis.ServerDirectories; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.FragmentOptions; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; @@ -205,11 +205,11 @@ protected BuildConfigurationCollection createCollection( } /** - * Returns a target {@link BuildConfiguration} with the given non-default options. + * Returns a target {@link BuildConfigurationValue} with the given non-default options. * * @param args native option name/pair descriptions in command line form (e.g. "--cpu=k8") */ - protected BuildConfiguration create(String... args) throws Exception { + protected BuildConfigurationValue create(String... args) throws Exception { return Iterables.getOnlyElement(createCollection(args).getTargetConfigurations()); } @@ -220,27 +220,27 @@ protected BuildConfiguration create(String... args) throws Exception { * form of label-like strings) and the values are option values * @param args native option name/pair descriptions in command line form (e.g. "--cpu=k8") */ - protected BuildConfiguration create(ImmutableMap starlarkOptions, String... args) - throws Exception { + protected BuildConfigurationValue create( + ImmutableMap starlarkOptions, String... args) throws Exception { return Iterables.getOnlyElement( createCollection(starlarkOptions, args).getTargetConfigurations()); } /** - * Returns a host {@link BuildConfiguration} derived from a target configuration with the given - * non-default options. + * Returns a host {@link BuildConfigurationValue} derived from a target configuration with the + * given non-default options. * * @param args native option name/pair descriptions in command line form (e.g. "--cpu=k8") */ - protected BuildConfiguration createHost(String... args) throws Exception { + protected BuildConfigurationValue createHost(String... args) throws Exception { return createCollection(args).getHostConfiguration(); } public static void assertConfigurationsHaveUniqueOutputDirectories( BuildConfigurationCollection configCollection) { - Map outputPaths = new HashMap<>(); - for (BuildConfiguration config : configCollection.getTargetConfigurations()) { - BuildConfiguration otherConfig = + Map outputPaths = new HashMap<>(); + for (BuildConfigurationValue config : configCollection.getTargetConfigurations()) { + BuildConfigurationValue otherConfig = outputPaths.get(config.getOutputDirectory(RepositoryName.MAIN)); if (otherConfig != null) { throw new IllegalStateException( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ScratchAttributeWriter.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ScratchAttributeWriter.java index 4f0ed6054e33ce..d50ed66a9e6c50 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/ScratchAttributeWriter.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ScratchAttributeWriter.java @@ -17,7 +17,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.testutil.Scratch; import java.io.IOException; @@ -154,7 +154,7 @@ public static ScratchAttributeWriter fromLabelString( * Writes this scratch target to this ScratchAttributeWriter's Scratch instance, and returns the * target in the given configuration. */ - public ConfiguredTarget write(BuildConfiguration config) throws Exception { + public ConfiguredTarget write(BuildConfigurationValue config) throws Exception { Scratch scratch = testCase.getScratch(); buildString.append(")"); diff --git a/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java index fda82d36dfb24a..9432c1bf60eb12 100644 --- a/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java +++ b/src/test/java/com/google/devtools/build/lib/bazel/rules/genrule/GenRuleConfiguredTargetTest.java @@ -39,7 +39,7 @@ /** Tests of {@link BazelGenRule}. */ @RunWith(JUnit4.class) -public class GenRuleConfiguredTargetTest extends BuildViewTestCase { +public final class GenRuleConfiguredTargetTest extends BuildViewTestCase { private static final Pattern SETUP_COMMAND_PATTERN = Pattern.compile(".*/genrule-setup.sh;\\s+(?.*)"); @@ -417,7 +417,7 @@ public void testToolsAreHostConfiguration() throws Exception { foundSrc = true; break; case "tool": - assertThat(getHostConfiguration()).isEqualTo(getConfiguration(prereq)); + assertConfigurationsEqual(getHostConfiguration(), getConfiguration(prereq)); foundTool = true; break; case GENRULE_SETUP_PATH: diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/util/BuildIntegrationTestCase.java b/src/test/java/com/google/devtools/build/lib/buildtool/util/BuildIntegrationTestCase.java index f34baf96c0ffe7..009da04dfd8880 100644 --- a/src/test/java/com/google/devtools/build/lib/buildtool/util/BuildIntegrationTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/buildtool/util/BuildIntegrationTestCase.java @@ -43,8 +43,8 @@ import com.google.devtools.build.lib.analysis.TopLevelArtifactContext; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; import com.google.devtools.build.lib.analysis.config.BuildConfigurationCollection; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.starlark.StarlarkTransition.TransitionException; import com.google.devtools.build.lib.analysis.util.AnalysisMock; @@ -582,7 +582,7 @@ protected ConfiguredTarget getConfiguredTarget(String target) } protected ConfiguredTarget getConfiguredTarget( - ExtendedEventHandler eventHandler, Label label, BuildConfiguration config) + ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue config) throws TransitionException, InvalidConfigurationException, InterruptedException { return getSkyframeExecutor().getConfiguredTargetForTesting(eventHandler, label, config); } @@ -616,14 +616,14 @@ protected BuildConfigurationCollection getConfigurationCollection() { * If they used multiple different configurations, or if none of them had a configuration, then * falls back to the base top-level configuration. */ - protected BuildConfiguration getTargetConfiguration() { - BuildConfiguration baseConfiguration = + protected BuildConfigurationValue getTargetConfiguration() { + BuildConfigurationValue baseConfiguration = Iterables.getOnlyElement(getConfigurationCollection().getTargetConfigurations()); BuildResult result = getResult(); if (result == null) { return baseConfiguration; } - Set topLevelTargetConfigurations = + Set topLevelTargetConfigurations = result.getActualTargets().stream() .map(this::getConfiguration) .filter(Objects::nonNull) @@ -634,7 +634,7 @@ protected BuildConfiguration getTargetConfiguration() { return Iterables.getOnlyElement(topLevelTargetConfigurations); } - protected BuildConfiguration getHostConfiguration() { + protected BuildConfigurationValue getHostConfiguration() { return getConfigurationCollection().getHostConfiguration(); } @@ -852,7 +852,7 @@ protected NestedSet getFilesToBuild(TransitiveInfoCollection target) { return target.getProvider(FileProvider.class).getFilesToBuild(); } - protected final BuildConfiguration getConfiguration(ConfiguredTarget ct) { + protected final BuildConfigurationValue getConfiguration(ConfiguredTarget ct) { return getSkyframeExecutor() .getConfiguration(NullEventHandler.INSTANCE, ct.getConfigurationKey()); } @@ -883,7 +883,7 @@ protected BlazeWorkspace getBlazeWorkspace() { } protected ConfiguredTargetAndData getConfiguredTargetAndTarget( - ExtendedEventHandler eventHandler, Label label, BuildConfiguration config) + ExtendedEventHandler eventHandler, Label label, BuildConfigurationValue config) throws TransitionException, InvalidConfigurationException, InterruptedException { return getSkyframeExecutor().getConfiguredTargetAndDataForTesting(eventHandler, label, config); } diff --git a/src/test/java/com/google/devtools/build/lib/packages/BazelDocumentationTest.java b/src/test/java/com/google/devtools/build/lib/packages/BazelDocumentationTest.java index aa5cb57e6c0f3a..05a63d3a060d9c 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/BazelDocumentationTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/BazelDocumentationTest.java @@ -31,9 +31,10 @@ */ @RunWith(JUnit4.class) public class BazelDocumentationTest { + /** * Checks that the user-manual is in sync with the {@link - * com.google.devtools.build.lib.analysis.config.BuildConfiguration}. + * com.google.devtools.build.lib.analysis.config.BuildConfigurationValue}. */ @Test public void testBazelUserManual() throws Exception { diff --git a/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryTest.java index 53c403ae1775fa..1a5575aa553d29 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryTest.java +++ b/src/test/java/com/google/devtools/build/lib/query2/aquery/ActionGraphQueryTest.java @@ -17,7 +17,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredTargetValue; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.query2.engine.QueryEnvironment.QueryFunction; import com.google.devtools.build.lib.query2.testutil.PostAnalysisQueryTest; import java.util.HashMap; @@ -45,7 +45,7 @@ protected HashMap getDefaultFunctions() { } @Override - protected BuildConfiguration getConfiguration(ConfiguredTargetValue configuredTargetValue) { + protected BuildConfigurationValue getConfiguration(ConfiguredTargetValue configuredTargetValue) { return getHelper() .getSkyframeExecutor() .getConfiguration( diff --git a/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQuerySemanticsTest.java b/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQuerySemanticsTest.java index ecedd9c7fc9d42..233521aeb30968 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQuerySemanticsTest.java +++ b/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQuerySemanticsTest.java @@ -23,7 +23,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.ExecutionTransitionFactory; @@ -348,7 +348,7 @@ public void testConfig_target() throws Exception { assertConfigurableQueryCode( execResult.getFailureDetail(), ConfigurableQuery.Code.TARGET_MISSING); - BuildConfiguration configuration = + BuildConfigurationValue configuration = getConfiguration(Iterables.getOnlyElement(eval("config(//test:dep, target)"))); assertThat(configuration).isNotNull(); @@ -375,7 +375,7 @@ public void testConfig_hostTransition() throws Exception { assertConfigurableQueryCode( hostResult.getFailureDetail(), ConfigurableQuery.Code.TARGET_MISSING); - BuildConfiguration configuration = + BuildConfigurationValue configuration = getConfiguration(Iterables.getOnlyElement(eval("config(//test:dep, host)"))); assertThat(configuration).isNotNull(); @@ -417,8 +417,9 @@ public void testConfig_configHash() throws Exception { ImmutableList stableOrderList = ImmutableList.copyOf(result); int myDepIndex = stableOrderList.get(0).getLabel().toString().equals("//test:mydep") ? 0 : 1; - BuildConfiguration myDepConfig = getConfiguration(stableOrderList.get(myDepIndex)); - BuildConfiguration stringFlagConfig = getConfiguration(stableOrderList.get(1 - myDepIndex)); + BuildConfigurationValue myDepConfig = getConfiguration(stableOrderList.get(myDepIndex)); + BuildConfigurationValue stringFlagConfig = + getConfiguration(stableOrderList.get(1 - myDepIndex)); // Note: eval() resets the universe scope after each call. We have to xplicitly set it again. helper.setUniverseScope("//test:buildme"); diff --git a/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryTest.java index 27f8ae11bf6133..ba0dc51bb90b21 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryTest.java +++ b/src/test/java/com/google/devtools/build/lib/query2/cquery/ConfiguredTargetQueryTest.java @@ -18,7 +18,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.FragmentOptions; @@ -61,7 +61,7 @@ public HashMap getDefaultFunctions() { } @Override - protected final BuildConfiguration getConfiguration(KeyedConfiguredTarget kct) { + protected final BuildConfigurationValue getConfiguration(KeyedConfiguredTarget kct) { return getHelper() .getSkyframeExecutor() .getConfiguration(getHelper().getReporter(), kct.getConfigurationKey()); diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryHelper.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryHelper.java index 4444b984279846..856443d519d061 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryHelper.java +++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryHelper.java @@ -19,7 +19,7 @@ import com.google.common.collect.Lists; import com.google.devtools.build.lib.analysis.AnalysisResult; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.AnalysisTestCase; import com.google.devtools.build.lib.events.Reporter; import com.google.devtools.build.lib.packages.util.MockObjcSupport; @@ -304,12 +304,12 @@ protected Reporter getReporter() { } @Override - protected BuildConfiguration getTargetConfiguration() throws InterruptedException { + protected BuildConfigurationValue getTargetConfiguration() throws InterruptedException { return super.getTargetConfiguration(); } @Override - public BuildConfiguration getHostConfiguration() { + public BuildConfigurationValue getHostConfiguration() { return super.getHostConfiguration(); } diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java index 7951cb792862ec..5c474b7c69dbce 100644 --- a/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java +++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java @@ -21,7 +21,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.FragmentOptions; @@ -134,7 +134,7 @@ private void maybeParseUniverseScope(String query) throws Exception { protected abstract HashMap getDefaultFunctions(); - protected abstract BuildConfiguration getConfiguration(T target); + protected abstract BuildConfigurationValue getConfiguration(T target); @Override protected boolean testConfigurableAttributes() { diff --git a/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java b/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java index 48fde6a06460b1..679061f6d53b63 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/AliasTest.java @@ -27,7 +27,7 @@ import com.google.devtools.build.lib.analysis.LicensesProvider; import com.google.devtools.build.lib.analysis.LicensesProvider.TargetLicense; import com.google.devtools.build.lib.analysis.RunfilesProvider; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -189,8 +189,8 @@ public void testAspectPropagation() throws Exception { assertThat(actualKey.getBaseConfiguredTargetKey().getConfigurationKey()) .isEqualTo(actualTarget.getConfigurationKey()); assertThat(getMyInfoFromTarget(aspect).getValue("origin")).isEqualTo("aspect"); - BuildConfiguration actualConfig = - (BuildConfiguration) getMyInfoFromTarget(aspect).getValue("config"); + BuildConfigurationValue actualConfig = + (BuildConfigurationValue) getMyInfoFromTarget(aspect).getValue("config"); assertThat(actualKey.getBaseConfiguredTargetKey().getConfigurationKey().getOptions().checksum()) .isEqualTo(actualConfig.checksum()); diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java index 547d3c454e8118..b198219a13e5b1 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBuildViewTestCase.java @@ -33,7 +33,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.FileProvider; import com.google.devtools.build.lib.analysis.actions.SpawnAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.configuredtargets.OutputFileConfiguredTarget; import com.google.devtools.build.lib.analysis.util.AnalysisTestUtil; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; @@ -130,7 +130,9 @@ protected Label getGeneratingLabelForArtifact(Artifact artifact) { } protected void assertNativeLibrariesCopiedNotLinked( - ConfiguredTarget target, BuildConfiguration targetConfiguration, String... expectedLibNames) { + ConfiguredTarget target, + BuildConfigurationValue targetConfiguration, + String... expectedLibNames) { Iterable copiedLibs = getNativeLibrariesInApk(target); for (Artifact copiedLib : copiedLibs) { assertWithMessage("Native libraries were linked to produce " + copiedLib) diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/AppleRulesTest.java b/src/test/java/com/google/devtools/build/lib/rules/apple/AppleRulesTest.java index 7dba21b7aa636d..db1a95ff028dbd 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/apple/AppleRulesTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/apple/AppleRulesTest.java @@ -23,7 +23,7 @@ import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.analysis.AnalysisResult; import com.google.devtools.build.lib.analysis.ConfiguredAspect; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.AnalysisTestCase; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.packages.StarlarkProvider; @@ -181,7 +181,7 @@ public void dottedVersionOptionIsReadableFromStarlarkTransition() throws Excepti useConfiguration("--ios_minimum_os=10.0"); AnalysisResult result = update("//transition:xxx"); - BuildConfiguration configuration = + BuildConfigurationValue configuration = Iterables.getOnlyElement(result.getTopLevelTargetsWithConfigs()).getConfiguration(); AppleCommandLineOptions appleOptions = configuration.getOptions().get(AppleCommandLineOptions.class); diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/FeatureFlagManualTrimmingTest.java b/src/test/java/com/google/devtools/build/lib/rules/config/FeatureFlagManualTrimmingTest.java index 41996d408fc626..e29964a551787b 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/config/FeatureFlagManualTrimmingTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/config/FeatureFlagManualTrimmingTest.java @@ -29,7 +29,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.actions.FileWriteAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition; @@ -99,8 +99,8 @@ public void setUpHostTransitionRule() throws Exception { ")"); } - private ImmutableSortedMap getFlagMapFromConfiguration(BuildConfiguration config) - throws Exception { + private ImmutableSortedMap getFlagMapFromConfiguration( + BuildConfigurationValue config) throws Exception { return FeatureFlagValue.getFlagValues(config.getOptions()); } @@ -542,7 +542,7 @@ public void featureFlagTarget_IsTrimmedToOnlyItself() throws Exception { ConfiguredTarget target = getConfiguredTarget("//test:target"); RuleContext ruleContext = getRuleContext(target); - BuildConfiguration childConfiguration = + BuildConfigurationValue childConfiguration = Iterables.getOnlyElement(ruleContext.getPrerequisiteConfiguredTargets("exports_flag")) .getConfiguration(); diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelperTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelperTest.java index bab76e0e4817b1..a30f3d5be98efc 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelperTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcCompilationHelperTest.java @@ -22,7 +22,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.rules.cpp.CcCompilationHelper.SourceCategory; @@ -50,7 +50,7 @@ public void testConstructorThrowsNPE() throws Exception { .setDefault(CcCommon.class, new CcCommon(ruleContext)) .setDefault(CppSemantics.class, MockCppSemantics.INSTANCE) .setDefault(CcToolchainProvider.class, ccToolchain) - .setDefault(BuildConfiguration.class, ruleContext.getConfiguration()) + .setDefault(BuildConfigurationValue.class, ruleContext.getConfiguration()) .setDefault(FdoContext.class, fdoContext) .setDefault(Label.class, ruleContext.getLabel()) .setDefault(Artifact.class, grepIncludes) diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppSysrootTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppSysrootTest.java index 2bad023098f778..3772b6c7224483 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppSysrootTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppSysrootTest.java @@ -20,7 +20,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.analysis.ConfigurationMakeVariableContext; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.AnalysisMock; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.Label; @@ -39,8 +39,8 @@ public void writeDummyLibrary() throws Exception { scratch.file("dummy/BUILD", "cc_library(name='library')"); } - void testCCFlagsContainsSysroot(BuildConfiguration config, String sysroot, boolean shouldContain) - throws Exception { + void testCCFlagsContainsSysroot( + BuildConfigurationValue config, String sysroot, boolean shouldContain) throws Exception { RuleContext ruleContext = getRuleContext( @@ -58,7 +58,8 @@ void testCCFlagsContainsSysroot(BuildConfiguration config, String sysroot, boole } } - CcToolchainProvider getCcToolchainProvider(BuildConfiguration configuration) throws Exception { + CcToolchainProvider getCcToolchainProvider(BuildConfigurationValue configuration) + throws Exception { CppConfiguration cppConfiguration = configuration.getFragment(CppConfiguration.class); return Preconditions.checkNotNull( getConfiguredTarget(cppConfiguration.getRuleProvidingCcToolchainProvider(), configuration) @@ -69,9 +70,9 @@ CcToolchainProvider getCcToolchainProvider(BuildConfiguration configuration) thr public void testHostGrteTop() throws Exception { scratch.file("a/grte/top/BUILD", "filegroup(name='everything')", "cc_library(name='library')"); useConfiguration("--host_grte_top=//a/grte/top"); - BuildConfiguration target = getTargetConfiguration(); + BuildConfigurationValue target = getTargetConfiguration(); CcToolchainProvider targetCcProvider = getCcToolchainProvider(target); - BuildConfiguration host = getHostConfiguration(); + BuildConfigurationValue host = getHostConfiguration(); CcToolchainProvider hostCcProvider = getCcToolchainProvider(host); testCCFlagsContainsSysroot(host, "a/grte/top", true); @@ -83,9 +84,9 @@ public void testOverrideHostGrteTop() throws Exception { scratch.file("a/grte/top/BUILD", "filegroup(name='everything')"); scratch.file("b/grte/top/BUILD", "filegroup(name='everything')"); useConfiguration("--grte_top=//a/grte/top", "--host_grte_top=//b/grte/top"); - BuildConfiguration target = getTargetConfiguration(); + BuildConfigurationValue target = getTargetConfiguration(); CcToolchainProvider targetCcProvider = getCcToolchainProvider(target); - BuildConfiguration host = getHostConfiguration(); + BuildConfigurationValue host = getHostConfiguration(); CcToolchainProvider hostCcProvider = getCcToolchainProvider(host); assertThat(targetCcProvider.getSysroot()).isEqualTo("a/grte/top"); @@ -102,7 +103,7 @@ public void testGrteTopAlias() throws Exception { scratch.file("a/grte/top/BUILD", "filegroup(name='everything')"); scratch.file("b/grte/top/BUILD", "alias(name='everything', actual='//a/grte/top:everything')"); useConfiguration("--grte_top=//b/grte/top"); - BuildConfiguration target = getTargetConfiguration(); + BuildConfigurationValue target = getTargetConfiguration(); CcToolchainProvider targetCcProvider = getCcToolchainProvider(target); assertThat(targetCcProvider.getSysroot()).isEqualTo("a/grte/top"); @@ -113,13 +114,13 @@ public void testGrteTopAlias() throws Exception { @Test public void testSysroot() throws Exception { - // BuildConfiguration shouldn't provide a sysroot option by default. + // BuildConfigurationValue shouldn't provide a sysroot option by default. useConfiguration("--cpu=k8"); - BuildConfiguration config = getTargetConfiguration(); + BuildConfigurationValue config = getTargetConfiguration(); testCCFlagsContainsSysroot(config, "/usr/grte/v1", true); scratch.file("a/grte/top/BUILD", "filegroup(name='everything')"); - // BuildConfiguration should work with label grte_top options. + // BuildConfigurationValue should work with label grte_top options. useConfiguration("--cpu=k8", "--grte_top=//a/grte/top:everything"); config = getTargetConfiguration(); testCCFlagsContainsSysroot(config, "a/grte/top", true); @@ -151,17 +152,17 @@ public void testSysrootInFeatureConfigBlocksLegacySysroot() throws Exception { @Test public void testSysrootWithHostConfig() throws Exception { - // The host BuildConfiguration shouldn't provide a sysroot option by default. + // The host BuildConfigurationValue shouldn't provide a sysroot option by default. for (String cpu : new String[] {"piii", "k8"}) { useConfiguration("--cpu=" + cpu); - BuildConfiguration config = getHostConfiguration(); + BuildConfigurationValue config = getHostConfiguration(); testCCFlagsContainsSysroot(config, "/usr/grte/v1", true); } - // The host BuildConfiguration should work with label grte_top options. + // The host BuildConfigurationValue should work with label grte_top options. scratch.file("a/grte/top/BUILD", "filegroup(name='everything')"); for (String cpu : new String[] {"piii", "k8"}) { useConfiguration("--cpu=" + cpu, "--host_grte_top=//a/grte/top"); - BuildConfiguration config = getHostConfiguration(); + BuildConfigurationValue config = getHostConfiguration(); testCCFlagsContainsSysroot(config, "a/grte/top", true); // "--grte_top" does *not* set the host grte_top, diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java index e72ef9716aa727..3c9721e15aeb66 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/MockCppSemantics.java @@ -18,7 +18,7 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.RuleErrorConsumer; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.packages.AspectDescriptor; import com.google.devtools.build.lib.packages.StructImpl; @@ -38,7 +38,7 @@ private MockCppSemantics() {} @Override public void finalizeCompileActionBuilder( - BuildConfiguration configuration, + BuildConfigurationValue configuration, FeatureConfiguration featureConfiguration, CppCompileActionBuilder actionBuilder, RuleErrorConsumer ruleErrorConsumer) {} @@ -60,7 +60,7 @@ public HeadersCheckingMode determineStarlarkHeadersCheckingMode( } @Override - public boolean needsDotdInputPruning(BuildConfiguration configuration) { + public boolean needsDotdInputPruning(BuildConfigurationValue configuration) { return true; } diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java index 678d4acf97f524..9ddcf7db11d575 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java @@ -21,7 +21,7 @@ import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.CommandAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.ScratchAttributeWriter; import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher; import com.google.devtools.build.lib.rules.cpp.CppConfiguration; @@ -37,7 +37,7 @@ public class AppleToolchainSelectionTest extends ObjcRuleTestCase { @Test public void testToolchainSelectionDefault() throws Exception { createLibraryTargetWriter("//a:lib").write(); - BuildConfiguration config = getAppleCrosstoolConfiguration(); + BuildConfigurationValue config = getAppleCrosstoolConfiguration(); CppConfiguration cppConfig = config.getFragment(CppConfiguration.class); assertThat(cppConfig.getRuleProvidingCcToolchainProvider().toString()) @@ -49,7 +49,7 @@ public void testToolchainSelectionDefault() throws Exception { public void testToolchainSelectionIosDevice() throws Exception { useConfiguration("--apple_platform_type=ios", "--cpu=ios_armv7"); createLibraryTargetWriter("//a:lib").write(); - BuildConfiguration config = getAppleCrosstoolConfiguration(); + BuildConfigurationValue config = getAppleCrosstoolConfiguration(); CppConfiguration cppConfig = config.getFragment(CppConfiguration.class); assertThat(cppConfig.getRuleProvidingCcToolchainProvider().toString()) diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java index 8a2b18cce1c3cc..5a0bfb118cfea7 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java @@ -39,7 +39,7 @@ import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.actions.SpawnAction; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.NativeAspectClass; @@ -81,7 +81,7 @@ protected NativeAspectClass getJ2ObjcAspect() { */ private ConfiguredTarget getConfiguredTargetInAppleBinaryTransition(String label) throws Exception { - BuildConfiguration childConfig = + BuildConfigurationValue childConfig = Iterables.getOnlyElement( getSplitConfigurations( targetConfig, diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java index cbe9ee3b622079..f6896f1cf8f28e 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java @@ -47,7 +47,7 @@ import com.google.devtools.build.lib.analysis.FilesToRunProvider; import com.google.devtools.build.lib.analysis.OutputGroupInfo; import com.google.devtools.build.lib.analysis.RunfilesProvider; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CompilationMode; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget; import com.google.devtools.build.lib.analysis.util.AnalysisMock; @@ -1516,7 +1516,7 @@ public void testIncludesIquoteFlagForGenFilesRoot() throws Exception { .setAndCreateFiles("srcs", "a.m", "b.m", "private.h") .write(); CommandAction compileAction = compileAction("//lib:lib", "a.o"); - BuildConfiguration config = getAppleCrosstoolConfiguration(); + BuildConfigurationValue config = getAppleCrosstoolConfiguration(); assertContainsSublist( removeConfigFragment(compileAction.getArguments()), ImmutableList.of( diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java index 0f99f8c1a2c946..bae7b68d0f7661 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java @@ -37,7 +37,7 @@ import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.OutputGroupInfo; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.BuildOptionsView; import com.google.devtools.build.lib.analysis.config.CompilationMode; @@ -89,7 +89,7 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase { * Returns the configuration obtained by applying the apple crosstool configuration transtion to * this {@code BuildViewTestCase}'s target configuration. */ - protected BuildConfiguration getAppleCrosstoolConfiguration() throws InterruptedException { + protected BuildConfigurationValue getAppleCrosstoolConfiguration() throws InterruptedException { return getConfiguration(targetConfig, AppleCrosstoolTransition.APPLE_CROSSTOOL_TRANSITION); } @@ -303,10 +303,10 @@ protected List moduleMapArtifactArguments(String packagePath, String tar * Returns all child configurations resulting from a given split transition on a given * configuration. */ - protected List getSplitConfigurations( - BuildConfiguration configuration, SplitTransition splitTransition) + protected List getSplitConfigurations( + BuildConfigurationValue configuration, SplitTransition splitTransition) throws InterruptedException, OptionsParsingException, InvalidConfigurationException { - ImmutableList.Builder splitConfigs = ImmutableList.builder(); + ImmutableList.Builder splitConfigs = ImmutableList.builder(); BuildOptionsView fragmentRestrictedOptions = new BuildOptionsView(configuration.getOptions(), splitTransition.requiresOptionFragments()); @@ -714,7 +714,7 @@ protected Action actionProducingArtifact(String targetLabel, } protected List rootedIncludePaths( - BuildConfiguration configuration, String... unrootedPaths) { + BuildConfigurationValue configuration, String... unrootedPaths) { ImmutableList.Builder rootedPaths = new ImmutableList.Builder<>(); for (String unrootedPath : unrootedPaths) { rootedPaths diff --git a/src/test/java/com/google/devtools/build/lib/rules/python/PythonConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/rules/python/PythonConfigurationTest.java index b3240800602ef2..a009109e565b49 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/python/PythonConfigurationTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/python/PythonConfigurationTest.java @@ -18,7 +18,7 @@ import static com.google.devtools.build.lib.rules.python.PythonTestUtils.assumesDefaultIsPY2; import static org.junit.Assert.assertThrows; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.util.ConfigurationTestCase; import com.google.devtools.common.options.Options; import com.google.devtools.common.options.OptionsParsingException; @@ -33,7 +33,7 @@ public class PythonConfigurationTest extends ConfigurationTestCase { // Do not mutate the returned PythonOptions - it will poison skyframe caches. private PythonOptions parsePythonOptions(String... cmdline) throws Exception { - BuildConfiguration config = create(cmdline); + BuildConfigurationValue config = create(cmdline); return config.getOptions().get(PythonOptions.class); } diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java index 083cd93c6ec47b..aa193017128405 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/BuildEventStreamerTest.java @@ -39,7 +39,7 @@ import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ServerDirectories; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.CoreOptions; import com.google.devtools.build.lib.analysis.config.FragmentClassSet; @@ -941,8 +941,8 @@ public void testReportedConfigurations() throws Exception { BuildEvent startEvent = new GenericBuildEvent( testId("Initial"), ImmutableSet.of(ProgressEvent.INITIAL_PROGRESS_UPDATE)); - BuildConfiguration configuration = - new BuildConfiguration( + BuildConfigurationValue configuration = + new BuildConfigurationValue( new BlazeDirectories( new ServerDirectories(outputBase, outputBase, outputBase), rootDirectory, diff --git a/src/test/java/com/google/devtools/build/lib/runtime/TestResultAggregatorTest.java b/src/test/java/com/google/devtools/build/lib/runtime/TestResultAggregatorTest.java index a816bae3aef907..9b2ae8f8f1cc80 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/TestResultAggregatorTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/TestResultAggregatorTest.java @@ -23,7 +23,7 @@ import com.google.common.eventbus.EventBus; import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.TestProvider; import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams; import com.google.devtools.build.lib.analysis.test.TestResult; @@ -243,7 +243,7 @@ private TestResultAggregator createAggregatorWithTestRuns(int testRuns) { return new TestResultAggregator( mockTarget, - mock(BuildConfiguration.class), + mock(BuildConfigurationValue.class), new AggregationPolicy( new EventBus(), /*testCheckUpToDate=*/ false, /*testVerboseTimeoutWarnings=*/ false), /*skippedThisTest=*/ false); diff --git a/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java b/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java index 7df867f0cb38d8..2bb030773ab723 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/TestSummaryTest.java @@ -28,7 +28,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.test.TestProvider; import com.google.devtools.build.lib.analysis.test.TestProvider.TestParams; import com.google.devtools.build.lib.buildeventstream.BuildEventContext; @@ -82,7 +82,7 @@ public final void createFileSystem() throws Exception { } private TestSummary.Builder getTemplateBuilder() { - BuildConfiguration configuration = Mockito.mock(BuildConfiguration.class); + BuildConfigurationValue configuration = Mockito.mock(BuildConfigurationValue.class); when(configuration.checksum()).thenReturn("abcdef"); return TestSummary.newBuilder(stubTarget) .setConfiguration(configuration) diff --git a/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java b/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java index bc7e069a9c0bfe..bf618fbb2495e4 100644 --- a/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java +++ b/src/test/java/com/google/devtools/build/lib/runtime/commands/ConfigCommandTest.java @@ -168,8 +168,7 @@ public void showSingleConfig() throws Exception { assertThat(config).isNotNull(); // Verify config metadata: assertThat(config.configHash).isEqualTo(configHash1); - assertThat(config.skyKey) - .isEqualTo(String.format("BuildConfigurationValue.Key[%s]", configHash1)); + assertThat(config.skyKey).isEqualTo(String.format("BuildConfigurationKey[%s]", configHash1)); // Verify the existence of a couple of expected fragments: assertThat( config.fragments.stream() diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD index e900a849361b99..b2802fd4d7102f 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD @@ -189,7 +189,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib/skyframe:bzl_compile", "//src/main/java/com/google/devtools/build/lib/skyframe:ignored_package_prefixes_function", "//src/main/java/com/google/devtools/build/lib/skyframe:broken_diff_awareness_exception", - "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration_value", + "//src/main/java/com/google/devtools/build/lib/skyframe:build_configuration", "//src/main/java/com/google/devtools/build/lib/skyframe:builder", "//src/main/java/com/google/devtools/build/lib/skyframe:bzl_load_value", "//src/main/java/com/google/devtools/build/lib/skyframe:cached_bzl_load_value_and_deps", diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java index 4feefff3652e28..5080367a7786b5 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ConfigurationsForTargetsTest.java @@ -28,7 +28,7 @@ import com.google.devtools.build.lib.analysis.DependencyKind; import com.google.devtools.build.lib.analysis.DependencyResolver; import com.google.devtools.build.lib.analysis.TargetAndConfiguration; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.analysis.config.CompilationMode; import com.google.devtools.build.lib.analysis.config.ConfigurationResolver; import com.google.devtools.build.lib.analysis.util.AnalysisMock; @@ -52,20 +52,20 @@ import org.junit.runners.JUnit4; /** - * Tests {@link ConfiguredTargetFunction}'s logic for determining each target's - * {@link BuildConfiguration}. + * Tests {@link ConfiguredTargetFunction}'s logic for determining each target's {@link + * BuildConfigurationValue}. * - *

    This is essentially an integration test for - * {@link ConfiguredTargetFunction#computeDependencies} and {@link DependencyResolver}. These - * methods form the core logic that figures out what a target's deps are, how their configurations - * should differ from their parent, and how to instantiate those configurations as tangible - * {@link BuildConfiguration} objects. + *

    This is essentially an integration test for {@link + * ConfiguredTargetFunction#computeDependencies} and {@link DependencyResolver}. These methods form + * the core logic that figures out what a target's deps are, how their configurations should differ + * from their parent, and how to instantiate those configurations as tangible {@link + * BuildConfigurationValue} objects. * *

    {@link ConfiguredTargetFunction} is a complicated class that does a lot of things. This test - * focuses purely on the task of determining configurations for deps. So instead of evaluating - * full {@link ConfiguredTargetFunction} instances, it evaluates a mock {@link SkyFunction} that - * just wraps the {@link ConfiguredTargetFunction#computeDependencies} part. This keeps focus tight - * and integration dependencies narrow. + * focuses purely on the task of determining configurations for deps. So instead of evaluating full + * {@link ConfiguredTargetFunction} instances, it evaluates a mock {@link SkyFunction} that just + * wraps the {@link ConfiguredTargetFunction#computeDependencies} part. This keeps focus tight and + * integration dependencies narrow. * *

    We can't just call {@link ConfiguredTargetFunction#computeDependencies} directly because that * method needs a {@link SkyFunction.Environment} and Blaze's test infrastructure doesn't support @@ -88,8 +88,8 @@ private static class ComputeDependenciesFunction implements SkyFunction { this.stateProvider = lateBoundStateProvider; } - /** Returns a {@link SkyKey} for a given pair. */ - private static Key key(Target target, BuildConfiguration config) { + /** Returns a {@link SkyKey} for a given pair. */ + private static Key key(Target target, BuildConfigurationValue config) { return new Key(new TargetAndConfiguration(target, config)); } @@ -160,7 +160,8 @@ private final class LateBoundStateProvider { RuleClassProvider lateBoundRuleClassProvider() { return ruleClassProvider; } - BuildConfiguration lateBoundHostConfig() { + + BuildConfigurationValue lateBoundHostConfig() { return getHostConfiguration(); } } @@ -258,7 +259,7 @@ public void targetDeps() throws Exception { "cc_binary(name = 'binary', srcs = ['main.cc'], deps = [':dep1', ':dep2'])"); List deps = getConfiguredDeps("//a:binary", "deps"); assertThat(deps).hasSize(2); - BuildConfiguration topLevelConfiguration = + BuildConfigurationValue topLevelConfiguration = getConfiguration(Iterables.getOnlyElement(update("//a:binary").getTargetsToBuild())); for (ConfiguredTarget dep : deps) { assertThat(topLevelConfiguration).isEqualTo(getConfiguration(dep)); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingFunctionTest.java index 3c19e2048da518..b259597364e580 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingFunctionTest.java @@ -81,11 +81,10 @@ public void testMappingFileDoesNotExistDefaultLocation() throws Exception { PlatformMappingValue platformMappingValue = executeFunction(PlatformMappingValue.Key.create(null)); - BuildConfigurationValue.Key key = - BuildConfigurationValue.keyWithoutPlatformMapping( - PLATFORM_FRAGMENT_CLASS, defaultBuildOptions); + BuildConfigurationKey key = + BuildConfigurationKey.withoutPlatformMapping(PLATFORM_FRAGMENT_CLASS, defaultBuildOptions); - BuildConfigurationValue.Key mapped = platformMappingValue.map(key); + BuildConfigurationKey mapped = platformMappingValue.map(key); assertThat(mapped.getOptions().get(PlatformOptions.class).platforms) .containsExactly(DEFAULT_TARGET_PLATFORM); @@ -116,7 +115,7 @@ public void testMappingFileIsRead() throws Exception { BuildOptions modifiedOptions = defaultBuildOptions.clone(); modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1); - BuildConfigurationValue.Key mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(CoreOptions.class).cpu).isEqualTo("one"); } @@ -138,7 +137,7 @@ public void testMappingFileIsRead_fromAlternatePackagePath() throws Exception { BuildOptions modifiedOptions = defaultBuildOptions.clone(); modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1); - BuildConfigurationValue.Key mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(CoreOptions.class).cpu).isEqualTo("one"); } @@ -158,7 +157,7 @@ public void handlesNoWorkspaceFile() throws Exception { BuildOptions modifiedOptions = defaultBuildOptions.clone(); modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1); - BuildConfigurationValue.Key mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(CoreOptions.class).cpu).isEqualTo("one"); } @@ -179,7 +178,7 @@ public void multiplePackagePaths() throws Exception { BuildOptions modifiedOptions = defaultBuildOptions.clone(); modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1); - BuildConfigurationValue.Key mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(CoreOptions.class).cpu).isEqualTo("one"); } @@ -205,7 +204,7 @@ public void multiplePackagePathsFirstWins() throws Exception { BuildOptions modifiedOptions = defaultBuildOptions.clone(); modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1); - BuildConfigurationValue.Key mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(CoreOptions.class).cpu).isEqualTo("one"); } @@ -226,7 +225,7 @@ public void ableToChangeInternalOption() throws Exception { BuildOptions modifiedOptions = defaultBuildOptions.clone(); modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1); - BuildConfigurationValue.Key mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = platformMappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(CoreOptions.class).transitionDirectoryNameFragment) .isEqualTo("updated_output_dir"); @@ -247,8 +246,7 @@ private PlatformMappingValue executeFunction(PlatformMappingValue.Key key) throw return result.get(key); } - private static BuildConfigurationValue.Key keyForOptions(BuildOptions modifiedOptions) { - return BuildConfigurationValue.keyWithoutPlatformMapping( - PLATFORM_FRAGMENT_CLASS, modifiedOptions); + private static BuildConfigurationKey keyForOptions(BuildOptions modifiedOptions) { + return BuildConfigurationKey.withoutPlatformMapping(PLATFORM_FRAGMENT_CLASS, modifiedOptions); } } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingValueTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingValueTest.java index 3af6d55dcae2fb..91d1c8558b5c61 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingValueTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PlatformMappingValueTest.java @@ -60,11 +60,11 @@ public void testMapNoMappings() throws OptionsParsingException { new PlatformMappingValue( ImmutableMap.of(), ImmutableMap.of(), BUILD_CONFIG_PLATFORM_OPTIONS); - BuildConfigurationValue.Key key = - BuildConfigurationValue.keyWithoutPlatformMapping( + BuildConfigurationKey key = + BuildConfigurationKey.withoutPlatformMapping( PLATFORM_FRAGMENT_CLASS, DEFAULT_BUILD_CONFIG_PLATFORM_OPTIONS); - BuildConfigurationValue.Key mapped = mappingValue.map(key); + BuildConfigurationKey mapped = mappingValue.map(key); assertThat(mapped.getOptions().get(PlatformOptions.class).platforms) .containsExactly(DEFAULT_TARGET_PLATFORM); @@ -82,7 +82,7 @@ public void testMapPlatformToFlags() throws Exception { BuildOptions modifiedOptions = DEFAULT_BUILD_CONFIG_PLATFORM_OPTIONS.clone(); modifiedOptions.get(PlatformOptions.class).platforms = ImmutableList.of(PLATFORM1); - BuildConfigurationValue.Key mapped = mappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = mappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getFragments()).isEqualTo(PLATFORM_FRAGMENT_CLASS); @@ -102,7 +102,7 @@ public void testMapFlagsToPlatform() throws Exception { modifiedOptions.get(CoreOptions.class).cpu = "one"; modifiedOptions.get(CoreOptions.class).compilationMode = CompilationMode.DBG; - BuildConfigurationValue.Key mapped = mappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = mappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getFragments()).isEqualTo(PLATFORM_FRAGMENT_CLASS); @@ -123,7 +123,7 @@ public void testMapFlagsToPlatformPriority() throws Exception { BuildOptions modifiedOptions = DEFAULT_BUILD_CONFIG_PLATFORM_OPTIONS.clone(); modifiedOptions.get(CoreOptions.class).cpu = "foo"; - BuildConfigurationValue.Key mapped = mappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = mappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(PlatformOptions.class).platforms).containsExactly(PLATFORM2); } @@ -140,7 +140,7 @@ public void testMapFlagsToPlatformNoneMatching() throws Exception { BuildOptions modifiedOptions = DEFAULT_BUILD_CONFIG_PLATFORM_OPTIONS.clone(); modifiedOptions.get(CoreOptions.class).cpu = "bar"; - BuildConfigurationValue.Key mapped = mappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = mappingValue.map(keyForOptions(modifiedOptions)); assertThat(mapped.getOptions().get(PlatformOptions.class).platforms) .containsExactly(DEFAULT_TARGET_PLATFORM); @@ -174,7 +174,7 @@ public void testMapNoMappingIfPlatformIsSetButNotMatching() throws Exception { PlatformMappingValue mappingValue = new PlatformMappingValue(platformsToFlags, flagsToPlatforms, BUILD_CONFIG_PLATFORM_OPTIONS); - BuildConfigurationValue.Key mapped = mappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = mappingValue.map(keyForOptions(modifiedOptions)); assertThat(keyForOptions(modifiedOptions)).isEqualTo(mapped); } @@ -192,7 +192,7 @@ public void testMapNoMappingIfPlatformIsSetAndNoPlatformMapping() throws Excepti new PlatformMappingValue( ImmutableMap.of(), flagsToPlatforms, BUILD_CONFIG_PLATFORM_OPTIONS); - BuildConfigurationValue.Key mapped = mappingValue.map(keyForOptions(modifiedOptions)); + BuildConfigurationKey mapped = mappingValue.map(keyForOptions(modifiedOptions)); assertThat(keyForOptions(modifiedOptions)).isEqualTo(mapped); } @@ -214,8 +214,7 @@ public void testCustomKey() { assertThat(key.wasExplicitlySetByUser()).isTrue(); } - private static BuildConfigurationValue.Key keyForOptions(BuildOptions modifiedOptions) { - return BuildConfigurationValue.keyWithoutPlatformMapping( - PLATFORM_FRAGMENT_CLASS, modifiedOptions); + private static BuildConfigurationKey keyForOptions(BuildOptions modifiedOptions) { + return BuildConfigurationKey.withoutPlatformMapping(PLATFORM_FRAGMENT_CLASS, modifiedOptions); } } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunctionTest.java index 35160242041db2..3b619258ca558b 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SingleToolchainResolutionFunctionTest.java @@ -210,7 +210,7 @@ public Label getLabel() { @Nullable @Override - public BuildConfigurationValue.Key getConfigurationKey() { + public BuildConfigurationKey getConfigurationKey() { return null; } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TargetCycleReporterTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TargetCycleReporterTest.java index 095afc7f74cb70..53585e072c8f28 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TargetCycleReporterTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TargetCycleReporterTest.java @@ -64,7 +64,7 @@ public void loadingPhaseCycleWithDifferentTopLevelKeyTypes() throws Exception { SkyKey aspectKey = AspectKeyCreator.AspectKey.createAspectKey( - ctKey, ImmutableList.of(), null, BuildConfigurationValue.key(targetConfig)); + ctKey, ImmutableList.of(), null, targetConfig.getKey()); assertThat(cycleReporter.getAdditionalMessageAboutCycle(reporter, aspectKey, cycle)) .contains( "The cycle is caused by a visibility edge from //foo:b to the non-package_group " diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainsForTargetsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainsForTargetsTest.java index 76c6a9a2694de6..1bac8d5e6a3c4e 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainsForTargetsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ToolchainsForTargetsTest.java @@ -58,7 +58,7 @@ */ @RunWith(JUnit4.class) public class ToolchainsForTargetsTest extends AnalysisTestCase { - /** Returns a {@link SkyKey} for a given pair. */ + /** Returns a {@link SkyKey} for a given pair. */ private static Key key( TargetAndConfiguration targetAndConfiguration, ConfiguredTargetKey configuredTargetKey) { return new AutoValue_ToolchainsForTargetsTest_Key(targetAndConfiguration, configuredTargetKey); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java index fc2b52b52dd756..e8e58b5cd5fed4 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/util/SkyframeExecutorTestUtils.java @@ -20,7 +20,7 @@ import com.google.common.collect.Maps; import com.google.devtools.build.lib.analysis.ConfiguredTarget; import com.google.devtools.build.lib.analysis.ConfiguredTargetValue; -import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.analysis.config.BuildConfigurationValue; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.events.ExtendedEventHandler; import com.google.devtools.build.lib.packages.NoSuchTargetException; @@ -87,7 +87,7 @@ public static EvaluationResult evaluate( */ @Nullable public static ConfiguredTargetValue getExistingConfiguredTargetValue( - SkyframeExecutor skyframeExecutor, Label label, BuildConfiguration config) + SkyframeExecutor skyframeExecutor, Label label, BuildConfigurationValue config) throws InterruptedException { SkyKey key = ConfiguredTargetKey.builder().setLabel(label).setConfiguration(config).build(); return (ConfiguredTargetValue) getExistingValue(skyframeExecutor, key); @@ -101,7 +101,7 @@ public static ConfiguredTargetValue getExistingConfiguredTargetValue( */ @Nullable public static ConfiguredTarget getExistingConfiguredTarget( - SkyframeExecutor skyframeExecutor, Label label, BuildConfiguration config) + SkyframeExecutor skyframeExecutor, Label label, BuildConfigurationValue config) throws InterruptedException { ConfiguredTargetValue value = getExistingConfiguredTargetValue(skyframeExecutor, label, config); if (value == null) { @@ -113,8 +113,8 @@ public static ConfiguredTarget getExistingConfiguredTarget( /** * Returns all configured targets currently in the graph with the given label. * - *

    Unlike {@link #getExistingConfiguredTarget(SkyframeExecutor, Label, BuildConfiguration)}, - * this doesn't make the caller request a specific configuration. + *

    Unlike {@link #getExistingConfiguredTarget(SkyframeExecutor, Label, + * BuildConfigurationValue)}, this doesn't make the caller request a specific configuration. */ public static Iterable getExistingConfiguredTargets( SkyframeExecutor skyframeExecutor, final Label label) {