Skip to content

Commit

Permalink
Use BuildConfigurationKeyFunction to create BuildConfigurationKey ins…
Browse files Browse the repository at this point in the history
…tances.

This removes duplication of logic.

Work towards platform-based flags: #19409.

PiperOrigin-RevId: 599862509
Change-Id: Ib0c17a90ad9fd475d758dff3be68994202bb8d98
  • Loading branch information
katre authored and copybara-github committed Jan 19, 2024
1 parent d1c812c commit c411fa9
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
*
* <p>The output preserves the iteration order of the input.
*/
// Logic here must be kept in sync with SkyframeExecutor.createBuildConfigurationKey.
public class BuildConfigurationKeyProducer
implements StateMachine, ValueOrExceptionSink<PlatformMappingException> {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,6 @@
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ConfiguredTargetValue;
import com.google.devtools.build.lib.analysis.InconsistentNullConfigException;
import com.google.devtools.build.lib.analysis.PlatformOptions;
import com.google.devtools.build.lib.analysis.TargetAndConfiguration;
import com.google.devtools.build.lib.analysis.TargetConfiguredEvent;
import com.google.devtools.build.lib.analysis.TopLevelArtifactContext;
Expand Down Expand Up @@ -191,8 +190,8 @@
import com.google.devtools.build.lib.skyframe.config.BuildConfigurationFunction;
import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKey;
import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKeyFunction;
import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKeyValue;
import com.google.devtools.build.lib.skyframe.config.PlatformMappingFunction;
import com.google.devtools.build.lib.skyframe.config.PlatformMappingValue;
import com.google.devtools.build.lib.skyframe.rewinding.ActionRewindStrategy;
import com.google.devtools.build.lib.skyframe.toolchains.RegisteredExecutionPlatformsFunction;
import com.google.devtools.build.lib.skyframe.toolchains.RegisteredToolchainsCycleReporter;
Expand Down Expand Up @@ -245,7 +244,6 @@
import com.google.devtools.build.skyframe.state.StateMachineEvaluatorForTesting;
import com.google.devtools.common.options.Options;
import com.google.devtools.common.options.OptionsBase;
import com.google.devtools.common.options.OptionsParsingException;
import com.google.devtools.common.options.OptionsProvider;
import com.google.devtools.common.options.ParsedOptionDescription;
import com.google.errorprone.annotations.CanIgnoreReturnValue;
Expand Down Expand Up @@ -1842,33 +1840,18 @@ public StarlarkAttributeTransitionProvider getStarlarkExecTransitionForTesting(
private BuildConfigurationKey createBuildConfigurationKey(
ExtendedEventHandler eventHandler, BuildOptions buildOptions)
throws InvalidConfigurationException {
// Logic here must be kept in sync with BuildConfigurationKeyProducer.

// Determine the platform mapping to use.
PathFragment platformMappingPath =
buildOptions.hasNoConfig()
? null
: buildOptions.get(PlatformOptions.class).platformMappings;

PlatformMappingValue.Key platformMappingKey =
PlatformMappingValue.Key.create(platformMappingPath);
BuildConfigurationKeyValue.Key key = BuildConfigurationKeyValue.Key.create(buildOptions);
EvaluationResult<SkyValue> evaluationResult =
evaluateSkyKeys(eventHandler, ImmutableSet.of(platformMappingKey));
// Handle all possible errors with the platform mapping by reporting them to the user.
evaluateSkyKeys(eventHandler, ImmutableSet.of(key));
// Handle all possible errors by reporting them to the user.
if (evaluationResult.hasError()) {
throw new InvalidConfigurationException(
Code.PLATFORM_MAPPING_EVALUATION_FAILURE, evaluationResult.getError().getException());
}
PlatformMappingValue platformMappingValue =
(PlatformMappingValue) evaluationResult.get(platformMappingKey);

// Create the build configuration key.
try {
BuildOptions mappedOptions = platformMappingValue.map(buildOptions);
return BuildConfigurationKey.create(mappedOptions);
} catch (OptionsParsingException e) {
throw new InvalidConfigurationException(Code.INVALID_BUILD_OPTIONS, e);
}
BuildConfigurationKeyValue buildConfigurationKeyValue =
(BuildConfigurationKeyValue) evaluationResult.get(key);
return buildConfigurationKeyValue.buildConfigurationKey();
}

/**
Expand Down

0 comments on commit c411fa9

Please sign in to comment.