Skip to content

Commit

Permalink
Add the ToolchainContext to AttributeTransitionData.
Browse files Browse the repository at this point in the history
Part of work on execution transitions, bazelbuild#7935.
  • Loading branch information
katre committed Apr 3, 2019
1 parent ce52573 commit 9ff0661
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -844,7 +844,8 @@ public List<ConfiguredTargetAndData> getPrerequisiteConfiguredTargetAndTargets(
.getTransitionFactory()
.create(
AttributeTransitionData.create(
ConfiguredAttributeMapper.of(rule, configConditions)));
ConfiguredAttributeMapper.of(rule, configConditions),
getToolchainContext().executionPlatform().label()));
BuildOptions fromOptions = getConfiguration().getOptions();
List<BuildOptions> splitOptions = transition.split(fromOptions);
List<ConfiguredTargetAndData> deps = getConfiguredTargetAndTargetDeps(attributeName);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,33 @@

import com.google.auto.value.AutoValue;
import com.google.devtools.build.lib.analysis.config.transitions.TransitionFactory;
import com.google.devtools.build.lib.cmdline.Label;
import javax.annotation.Nullable;

/**
* Helper class which contains data used by a {@link TransitionFactory} to create a transition for
* attributes.
*/
// This class is in lib.packages in order to access AttributeMap, which is not available to
// the lib.analysis.config.transitions package.
@AutoValue
public abstract class AttributeTransitionData {
/** Returns the {@link AttributeMap} which can be used to create a transition. */
public abstract AttributeMap attributes();

// TODO(https://github.com/bazelbuild/bazel/issues/7814): Add further data fields as needed by
// transition factory instances.
/**
* Returns the {@link Label} of the execution platform used by the configured target this
* transition factory is part of.
*/
@Nullable
public abstract Label executionPlatform();

/** Returns a new {@link AttributeTransitionData} instance. */
public static AttributeTransitionData create(AttributeMap attributes) {
return new AutoValue_AttributeTransitionData(attributes);
return create(attributes, null);
}

/** Returns a new {@link AttributeTransitionData} instance. */
public static AttributeTransitionData create(
AttributeMap attributes, @Nullable Label executionPlatform) {
return new AutoValue_AttributeTransitionData(attributes, executionPlatform);
}
}

0 comments on commit 9ff0661

Please sign in to comment.