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 93c6d170e51c02..5e46eb419af313 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/main/java/com/google/devtools/build/lib/analysis/BUILD @@ -622,6 +622,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/actions:artifacts", "//src/main/java/com/google/devtools/build/lib/actions:package_roots", "//src/main/java/com/google/devtools/build/lib/actions:resource_manager", + "//src/main/java/com/google/devtools/build/lib/analysis/platform", "//src/main/java/com/google/devtools/build/lib/bugreport", "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", @@ -2673,6 +2674,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/actions", "//src/main/java/com/google/devtools/build/lib/actions:action_lookup_key", "//src/main/java/com/google/devtools/build/lib/actions:artifacts", + "//src/main/java/com/google/devtools/build/lib/analysis/platform", "//src/main/java/com/google/devtools/build/lib/collect/nestedset", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/skyframe:coverage_report_value", 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 c3d2c9e6770b1b..71cf76c7fd52bf 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 @@ -43,6 +43,7 @@ import com.google.devtools.build.lib.analysis.constraints.PlatformRestrictionsResult; import com.google.devtools.build.lib.analysis.constraints.RuleContextConstraintSemantics; import com.google.devtools.build.lib.analysis.constraints.TopLevelConstraintSemantics; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory; import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory.CoverageReportActionsWrapper; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo; @@ -301,9 +302,14 @@ public AnalysisResult update( bugReporter, Preconditions.checkNotNull(resourceManager), // non-null for skymeld. Preconditions.checkNotNull(buildResultListener), // non-null for skymeld. - (configuredTargets, allTargetsToTest) -> + (configuredTargets, allTargetsToTest, hostPlatformInfo) -> memoizedGetCoverageArtifactsHelper( - configuredTargets, allTargetsToTest, eventHandler, eventBus, loadingResult), + configuredTargets, + allTargetsToTest, + hostPlatformInfo, + eventHandler, + eventBus, + loadingResult), keepGoing, skipIncompatibleExplicitTargets, targetOptions.get(CoreOptions.class).strictConflictChecks, @@ -538,7 +544,7 @@ private AnalysisResult createResult( // Coverage artifactsToBuild.addAll( memoizedGetCoverageArtifactsHelper( - configuredTargets, allTargetsToTest, eventHandler, eventBus, loadingResult)); + configuredTargets, allTargetsToTest, null, eventHandler, eventBus, loadingResult)); // TODO(cparsons): If extra actions are ever removed, this filtering step can probably be // removed as well: the only concern would be action conflicts involving coverage artifacts, @@ -835,6 +841,7 @@ private static void pollInterruptedStatus() throws InterruptedException { private ImmutableSet memoizedGetCoverageArtifactsHelper( Set configuredTargets, Set allTargetsToTest, + PlatformInfo hostPlatformInfo, EventHandler eventHandler, EventBus eventBus, TargetPatternPhaseValue loadingResult) @@ -854,6 +861,7 @@ private ImmutableSet memoizedGetCoverageArtifactsHelper( eventBus, directories, allTargetsToTest, + hostPlatformInfo, baselineCoverageArtifacts, getArtifactFactory(), skyframeExecutor.getActionKeyContext(), diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java index eba4903bbef5e8..b669c4b2fd4ebc 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/CoverageReportActionFactory.java @@ -25,6 +25,7 @@ import com.google.devtools.build.lib.actions.MutableActionGraph; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.events.EventHandler; import com.google.devtools.build.lib.skyframe.CoverageReportValue; @@ -85,6 +86,7 @@ CoverageReportActionsWrapper createCoverageReportActionsWrapper( EventBus eventBus, BlazeDirectories directories, Collection targetsToTest, + PlatformInfo hostPlatformInfo, NestedSet baselineCoverageArtifacts, ArtifactFactory artifactFactory, ActionKeyContext actionKeyContext, diff --git a/src/main/java/com/google/devtools/build/lib/bazel/coverage/BUILD b/src/main/java/com/google/devtools/build/lib/bazel/coverage/BUILD index 67e095e132b533..41983def94f33e 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/coverage/BUILD +++ b/src/main/java/com/google/devtools/build/lib/bazel/coverage/BUILD @@ -30,6 +30,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/analysis:incompatible_platform_provider", "//src/main/java/com/google/devtools/build/lib/analysis:test/coverage_report", "//src/main/java/com/google/devtools/build/lib/analysis:test/coverage_report_action_factory", + "//src/main/java/com/google/devtools/build/lib/analysis/platform", "//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/events", diff --git a/src/main/java/com/google/devtools/build/lib/bazel/coverage/BazelCoverageReportModule.java b/src/main/java/com/google/devtools/build/lib/bazel/coverage/BazelCoverageReportModule.java index 5ae67604883d5b..bedfb201efe6f7 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/coverage/BazelCoverageReportModule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/coverage/BazelCoverageReportModule.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.ArtifactFactory; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.events.EventHandler; @@ -86,6 +87,7 @@ public CoverageReportActionsWrapper createCoverageReportActionsWrapper( EventBus eventBus, BlazeDirectories directories, Collection targetsToTest, + PlatformInfo hostPlatformInfo, NestedSet baselineCoverageArtifacts, ArtifactFactory artifactFactory, ActionKeyContext actionKeyContext, @@ -101,6 +103,7 @@ public CoverageReportActionsWrapper createCoverageReportActionsWrapper( eventHandler, directories, targetsToTest, + hostPlatformInfo, baselineCoverageArtifacts, artifactFactory, actionKeyContext, @@ -108,7 +111,7 @@ public CoverageReportActionsWrapper createCoverageReportActionsWrapper( workspaceName, this::getArgs, this::getLocationMessage, - /*htmlReport=*/ false); + /* htmlReport= */ false); } private ImmutableList getArgs(CoverageArgs args) { diff --git a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageArgs.java b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageArgs.java index 1e964d08ec10e0..21987bf343fede 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageArgs.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageArgs.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.analysis.FilesToRunProvider; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.bazel.coverage.CoverageReportActionBuilder.ArgsFunc; import com.google.devtools.build.lib.bazel.coverage.CoverageReportActionBuilder.LocationFunc; import com.google.devtools.build.lib.vfs.PathFragment; @@ -37,8 +38,13 @@ public abstract class CoverageArgs { public abstract ImmutableList coverageArtifacts(); public abstract Artifact lcovArtifact(); public abstract ArtifactFactory factory(); + public abstract ArtifactOwner artifactOwner(); + + public abstract PlatformInfo hostPlatformInfo(); + public abstract FilesToRunProvider reportGenerator(); + public abstract String workspaceName(); public abstract boolean htmlReport(); @Nullable @@ -52,13 +58,22 @@ public static CoverageArgs create( Artifact lcovArtifact, ArtifactFactory factory, ArtifactOwner artifactOwner, + PlatformInfo hostPlatformInfo, FilesToRunProvider reportGenerator, String workspaceName, boolean htmlReport) { - return new AutoValue_CoverageArgs(directories, coverageArtifacts, lcovArtifact, factory, - artifactOwner, reportGenerator, workspaceName, htmlReport, - /*coverageDir=*/ null, - /*lcovOutput=*/ null); + return new AutoValue_CoverageArgs( + directories, + coverageArtifacts, + lcovArtifact, + factory, + artifactOwner, + hostPlatformInfo, + reportGenerator, + workspaceName, + htmlReport, + /* coverageDir= */ null, + /* lcovOutput= */ null); } public static CoverageArgs createCopyWithCoverageDirAndLcovOutput( @@ -66,8 +81,16 @@ public static CoverageArgs createCopyWithCoverageDirAndLcovOutput( PathFragment coverageDir, Artifact lcovOutput) { return new AutoValue_CoverageArgs( - args.directories(), args.coverageArtifacts(), args.lcovArtifact(), - args.factory(), args.artifactOwner(), args.reportGenerator(), args.workspaceName(), - args.htmlReport(), coverageDir, lcovOutput); + args.directories(), + args.coverageArtifacts(), + args.lcovArtifact(), + args.factory(), + args.artifactOwner(), + args.hostPlatformInfo(), + args.reportGenerator(), + args.workspaceName(), + args.htmlReport(), + coverageDir, + lcovOutput); } } diff --git a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java index 90ec1531ba54af..f578a02074ec60 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/coverage/CoverageReportActionBuilder.java @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.AbstractAction; import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionExecutionContext; @@ -48,6 +49,7 @@ import com.google.devtools.build.lib.analysis.RunfilesSupport; import com.google.devtools.build.lib.analysis.actions.Compression; import com.google.devtools.build.lib.analysis.actions.FileWriteAction; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.test.CoverageReport; import com.google.devtools.build.lib.analysis.test.CoverageReportActionFactory.CoverageReportActionsWrapper; import com.google.devtools.build.lib.analysis.test.TestProvider; @@ -98,8 +100,6 @@ public final class CoverageReportActionBuilder { private static final ResourceSet LOCAL_RESOURCES = ResourceSet.createWithRamCpu(/* memoryMb= */ 750, /* cpuUsage= */ 1); - private static final ActionOwner ACTION_OWNER = ActionOwner.SYSTEM_ACTION_OWNER; - // SpawnActions can't be used because they need the AnalysisEnvironment and this action is // created specially at the very end of the analysis phase when we don't have it anymore. @Immutable @@ -190,6 +190,7 @@ public CoverageReportActionsWrapper createCoverageActionsWrapper( EventHandler reporter, BlazeDirectories directories, Collection targetsToTest, + PlatformInfo hostPlatformInfo, NestedSet baselineCoverageArtifacts, ArtifactFactory factory, ActionKeyContext actionKeyContext, @@ -225,15 +226,26 @@ public CoverageReportActionsWrapper createCoverageActionsWrapper( ImmutableList coverageArtifacts = builder.build(); if (!coverageArtifacts.isEmpty()) { PathFragment coverageDir = TestRunnerAction.COVERAGE_TMP_ROOT; - Artifact lcovArtifact = factory.getDerivedArtifact( - coverageDir.getRelative("lcov_files.tmp"), - directories.getBuildDataDirectory(workspaceName), - artifactOwner); + Artifact lcovArtifact = + factory.getDerivedArtifact( + coverageDir.getRelative("lcov_files.tmp"), + directories.getBuildDataDirectory(workspaceName), + artifactOwner); Action lcovFileAction = generateLcovFileWriteAction(lcovArtifact, coverageArtifacts); - Action coverageReportAction = generateCoverageReportAction( - CoverageArgs.create(directories, coverageArtifacts, lcovArtifact, factory, artifactOwner, - reportGenerator, workspaceName, htmlReport), - argsFunction, locationFunc); + Action coverageReportAction = + generateCoverageReportAction( + CoverageArgs.create( + directories, + coverageArtifacts, + lcovArtifact, + factory, + artifactOwner, + hostPlatformInfo, + reportGenerator, + workspaceName, + htmlReport), + argsFunction, + locationFunc); return new CoverageReportActionsWrapper( lcovFileAction, coverageReportAction, actionKeyContext); } else { @@ -250,7 +262,7 @@ private static FileWriteAction generateLcovFileWriteAction( filepaths.add(artifact.getExecPathString()); } return FileWriteAction.create( - ACTION_OWNER, + ActionOwner.SYSTEM_ACTION_OWNER, lcovArtifact, Joiner.on('\n').join(filepaths), /* makeExecutable= */ false, @@ -290,8 +302,17 @@ private static CoverageReportAction generateCoverageReportAction( if (runfilesSupport != null) { inputsBuilder.add(runfilesSupport.getRunfilesMiddleman()); } + ActionOwner actionOwner = + ActionOwner.create( + ActionOwner.SYSTEM_ACTION_OWNER.getLabel(), + ActionOwner.SYSTEM_ACTION_OWNER.getLocation(), + ActionOwner.SYSTEM_ACTION_OWNER.getTargetKind(), + ActionOwner.SYSTEM_ACTION_OWNER.getBuildConfigurationInfo(), + args.hostPlatformInfo(), + ActionOwner.SYSTEM_ACTION_OWNER.getAspectDescriptors(), + ActionOwner.SYSTEM_ACTION_OWNER.getExecProperties()); return new CoverageReportAction( - ACTION_OWNER, + actionOwner, inputsBuilder.build(), ImmutableSet.of(lcovOutput), actionArgs, diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java index b09aec29985645..c2bca692badac8 100644 --- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java +++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildRequestOptions.java @@ -375,7 +375,7 @@ public String getSymlinkPrefix(String productName) { */ @Option( name = "experimental_merged_skyframe_analysis_execution", - defaultValue = "false", + defaultValue = "true", documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, metadataTags = OptionMetadataTag.EXPERIMENTAL, effectTags = {OptionEffectTag.LOADING_AND_ANALYSIS, OptionEffectTag.EXECUTION}, diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD index 7ca27bc9e02890..ff39b9752b7288 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BUILD @@ -918,9 +918,11 @@ java_library( deps = [ ":aspect_key_creator", ":configured_target_key", + ":host_platform_info_event", ":top_level_status_events", "//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster", "//src/main/java/com/google/devtools/build/lib/analysis:configured_target", + "//src/main/java/com/google/devtools/build/lib/analysis/platform", "//src/main/java/com/google/devtools/build/lib/concurrent", "//third_party:guava", ], @@ -2940,3 +2942,14 @@ java_library( "//third_party:jsr305", ], ) + +java_library( + name = "host_platform_info_event", + srcs = ["HostPlatformInfoEvent.java"], + deps = [ + "//src/main/java/com/google/devtools/build/lib/analysis/platform", + "//src/main/java/com/google/devtools/build/lib/events", + "//src/main/java/com/google/devtools/build/skyframe", + "//third_party:auto_value", + ], +) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/BuildResultListener.java b/src/main/java/com/google/devtools/build/lib/skyframe/BuildResultListener.java index 73e5b7d5cfa73c..51d36d1c95f99b 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/BuildResultListener.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/BuildResultListener.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.skyframe; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Maps; @@ -20,6 +21,7 @@ import com.google.common.eventbus.Subscribe; import com.google.devtools.build.lib.analysis.ConfiguredAspect; import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.concurrent.ThreadSafety; import com.google.devtools.build.lib.skyframe.AspectKeyCreator.AspectKey; import com.google.devtools.build.lib.skyframe.TopLevelStatusEvents.AspectAnalyzedEvent; @@ -28,9 +30,12 @@ import com.google.devtools.build.lib.skyframe.TopLevelStatusEvents.TopLevelTargetAnalyzedEvent; import com.google.devtools.build.lib.skyframe.TopLevelStatusEvents.TopLevelTargetBuiltEvent; import com.google.devtools.build.lib.skyframe.TopLevelStatusEvents.TopLevelTargetSkippedEvent; + +import javax.annotation.Nullable; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.atomic.AtomicReference; /** * Listens to the various status events of the top level targets/aspects. @@ -49,6 +54,7 @@ public class BuildResultListener { // Also includes test targets. private final Set builtTargets = ConcurrentHashMap.newKeySet(); private final Set builtAspects = ConcurrentHashMap.newKeySet(); + private final AtomicReference hostPlatformInfo = new AtomicReference<>(); @Subscribe @AllowConcurrentEvents @@ -86,6 +92,12 @@ public void addBuiltAspect(AspectBuiltEvent event) { builtAspects.add(event.aspectKey()); } + @Subscribe + @AllowConcurrentEvents + public void setHostPlatformInfo(HostPlatformInfoEvent hostPlatformInfoEvent) { + hostPlatformInfo.compareAndSet(null, hostPlatformInfoEvent.hostPlatformInfo()); + } + public ImmutableSet getAnalyzedTargets() { return ImmutableSet.copyOf(analyzedTargets); } @@ -106,6 +118,10 @@ public ImmutableSet getBuiltTargets() { return ImmutableSet.copyOf(builtTargets); } + public PlatformInfo getHostPlatformInfo() { + return Preconditions.checkNotNull(hostPlatformInfo.get()); + } + public ImmutableSet getBuiltAspects() { return ImmutableSet.copyOf(builtAspects); } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/HostPlatformInfoEvent.java b/src/main/java/com/google/devtools/build/lib/skyframe/HostPlatformInfoEvent.java new file mode 100644 index 00000000000000..a2a14d687a15e3 --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/skyframe/HostPlatformInfoEvent.java @@ -0,0 +1,20 @@ +package com.google.devtools.build.lib.skyframe; + +import com.google.auto.value.AutoValue; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; +import com.google.devtools.build.lib.events.ExtendedEventHandler; + +@AutoValue +public abstract class HostPlatformInfoEvent implements ExtendedEventHandler.Postable { + + public abstract PlatformInfo hostPlatformInfo(); + + public static HostPlatformInfoEvent create(PlatformInfo hostPlatformInfo) { + return new AutoValue_HostPlatformInfoEvent(hostPlatformInfo); + } + + @Override + public boolean storeForReplay() { + return true; + } +} diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java index 26ad3d0da0cdf8..4d0906916669d8 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeBuildView.java @@ -67,6 +67,7 @@ import com.google.devtools.build.lib.analysis.config.ConfigConditions; import com.google.devtools.build.lib.analysis.config.InvalidConfigurationException; import com.google.devtools.build.lib.analysis.config.StarlarkTransitionCache; +import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.test.AnalysisFailurePropagationException; import com.google.devtools.build.lib.analysis.test.CoverageActionFinishedEvent; import com.google.devtools.build.lib.analysis.test.CoverageArtifactsKnownEvent; @@ -726,7 +727,9 @@ public SkyframeAnalysisResult analyzeAndExecuteTargets( // combined report that matters. ImmutableSet coverageArtifacts = coverageReportActionsWrapperSupplier.getCoverageArtifacts( - buildResultListener.getAnalyzedTargets(), buildResultListener.getAnalyzedTests()); + buildResultListener.getAnalyzedTargets(), + buildResultListener.getAnalyzedTests(), + buildResultListener.getHostPlatformInfo()); eventBus.post(CoverageArtifactsKnownEvent.create(coverageArtifacts)); additionalArtifactsResult = skyframeExecutor.evaluateSkyKeys( @@ -1443,7 +1446,9 @@ public void reset() { @FunctionalInterface public interface CoverageReportActionsWrapperSupplier { ImmutableSet getCoverageArtifacts( - Set configuredTargets, Set allTargetsToTest) + Set configuredTargets, + Set allTargetsToTest, + PlatformInfo hostPlatformInfo) throws InterruptedException; } diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/BUILD b/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/BUILD index 15c3c703e1d64f..9a9f5b5d429705 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/BUILD +++ b/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/BUILD @@ -295,6 +295,7 @@ java_library( "//src/main/java/com/google/devtools/build/lib/cmdline", "//src/main/java/com/google/devtools/build/lib/events", "//src/main/java/com/google/devtools/build/lib/skyframe:configured_target_key", + "//src/main/java/com/google/devtools/build/lib/skyframe:host_platform_info_event", "//src/main/java/com/google/devtools/build/lib/skyframe/config", "//src/main/java/com/google/devtools/build/skyframe", "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects", diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/ToolchainResolutionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/ToolchainResolutionFunction.java index ebcf2e033d764a..f8dce682006918 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/ToolchainResolutionFunction.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/toolchains/ToolchainResolutionFunction.java @@ -35,6 +35,7 @@ import com.google.devtools.build.lib.events.Event; import com.google.devtools.build.lib.server.FailureDetails.Toolchain.Code; import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey; +import com.google.devtools.build.lib.skyframe.HostPlatformInfoEvent; import com.google.devtools.build.lib.skyframe.config.BuildConfigurationKey; import com.google.devtools.build.lib.skyframe.toolchains.ConstraintValueLookupUtil.InvalidConstraintValueException; import com.google.devtools.build.lib.skyframe.toolchains.PlatformLookupUtil.InvalidPlatformException; @@ -286,12 +287,14 @@ private static PlatformKeys loadPlatformKeys( .build(); // Load the host and target platforms early, to check for errors. - var unused = + var hostAndTargetPlatform = PlatformLookupUtil.getPlatformInfo( ImmutableList.of(hostPlatformKey, targetPlatformKey), environment); if (environment.valuesMissing()) { throw new ValueMissingException(); } + PlatformInfo hostPlatformInfo = hostAndTargetPlatform.get(hostPlatformKey); + environment.getListener().post(HostPlatformInfoEvent.create(hostPlatformInfo)); ImmutableList executionPlatformKeys = loadExecutionPlatformKeys(