diff options
author | felly <felly@google.com> | 2018-08-09 14:28:14 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-09 14:29:50 -0700 |
commit | 39974a43abdd32e3a1acbc7da945b08da9983e4e (patch) | |
tree | 34ddeab6c7bbe9d129f7c0dbe2c456c6cadab881 /src/main/java/com/google/devtools/build/lib/analysis | |
parent | 943a9c792032c75b25a1665e7143409fe3950041 (diff) |
Allow skyframe-aware actions to pass partial results through ActionExecutionContext.
Remove FilesetProvider.
PiperOrigin-RevId: 208111251
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
5 files changed, 4 insertions, 131 deletions
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 30861cd3ac..dbce56b589 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 @@ -31,11 +31,9 @@ import com.google.devtools.build.lib.analysis.config.BuildConfiguration.Fragment import com.google.devtools.build.lib.analysis.config.BuildOptions; import com.google.devtools.build.lib.analysis.config.ConfigMatchingProvider; import com.google.devtools.build.lib.analysis.configuredtargets.EnvironmentGroupConfiguredTarget; -import com.google.devtools.build.lib.analysis.configuredtargets.FilesetOutputConfiguredTarget; import com.google.devtools.build.lib.analysis.configuredtargets.InputFileConfiguredTarget; import com.google.devtools.build.lib.analysis.configuredtargets.OutputFileConfiguredTarget; import com.google.devtools.build.lib.analysis.configuredtargets.PackageGroupConfiguredTarget; -import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; import com.google.devtools.build.lib.analysis.skylark.SkylarkRuleConfiguredTargetUtil; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -232,16 +230,7 @@ public final class ConfiguredTargetFactory { } TransitiveInfoCollection rule = targetContext.findDirectPrerequisite( outputFile.getGeneratingRule().getLabel(), config); - if (isFileset) { - return new FilesetOutputConfiguredTarget( - targetContext, - outputFile, - rule, - artifact, - rule.getProvider(FilesetProvider.class).getTraversals()); - } else { return new OutputFileConfiguredTarget(targetContext, outputFile, rule, artifact); - } } else if (target instanceof InputFile) { InputFile inputFile = (InputFile) target; SourceArtifact artifact = 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 3eebb2d037..0cccfb8345 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 @@ -55,7 +55,6 @@ import com.google.devtools.build.lib.analysis.config.transitions.PatchTransition import com.google.devtools.build.lib.analysis.config.transitions.SplitTransition; import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.constraints.ConstraintSemantics; -import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; import com.google.devtools.build.lib.analysis.platform.PlatformInfo; import com.google.devtools.build.lib.analysis.stringtemplate.TemplateContext; import com.google.devtools.build.lib.cmdline.Label; @@ -1555,9 +1554,12 @@ public final class RuleContext extends TargetContext } private boolean validateFilesetEntry(FilesetEntry filesetEntry, ConfiguredTargetAndData src) { - if (src.getConfiguredTarget().getProvider(FilesetProvider.class) != null) { + NestedSet<Artifact> filesToBuild = + src.getConfiguredTarget().getProvider(FileProvider.class).getFilesToBuild(); + if (filesToBuild.isSingleton() && Iterables.getOnlyElement(filesToBuild).isFileset()) { return true; } + if (filesetEntry.isSourceFileset()) { return true; } 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 2fec10f91e..cd959fa858 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 @@ -23,7 +23,6 @@ import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMap; import com.google.devtools.build.lib.analysis.TransitiveInfoProviderMapBuilder; import com.google.devtools.build.lib.analysis.VisibilityProvider; -import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -62,9 +61,6 @@ public abstract class FileConfiguredTarget extends AbstractConfiguredTarget .put(LicensesProvider.class, this) .add(fileProvider) .add(filesToRunProvider); - if (this instanceof FilesetProvider) { - builder.put(FilesetProvider.class, this); - } if (this instanceof InstrumentedFilesProvider) { builder.put(InstrumentedFilesProvider.class, this); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java deleted file mode 100644 index 08dc1ac78e..0000000000 --- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java +++ /dev/null @@ -1,84 +0,0 @@ -// Copyright 2014 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.analysis.configuredtargets; - -import com.google.common.base.Preconditions; -import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.actions.FilesetTraversalParams; -import com.google.devtools.build.lib.analysis.TargetContext; -import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; -import com.google.devtools.build.lib.analysis.fileset.FilesetProvider; -import com.google.devtools.build.lib.cmdline.Label; -import com.google.devtools.build.lib.collect.nestedset.NestedSet; -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.serialization.autocodec.AutoCodec; - -/** - * A configured target for output files generated by {@code Fileset} rules. They are almost the same - * thing as output files except that they implement {@link FilesetProvider} so that {@code Fileset} - * can figure out the link tree behind them. - * - * <p>In an ideal world, this would not be needed: Filesets would depend on other Filesets and not - * their output directories. However, sometimes a Fileset depends on the output directory of another - * Fileset. Thus, we need this hack. - */ -@AutoCodec -public final class FilesetOutputConfiguredTarget extends OutputFileConfiguredTarget - implements FilesetProvider { - private final ImmutableList<FilesetTraversalParams> filesetTraversals; - - public FilesetOutputConfiguredTarget( - TargetContext targetContext, - OutputFile outputFile, - TransitiveInfoCollection generatingRule, - Artifact outputArtifact, - ImmutableList<FilesetTraversalParams> traversals) { - this( - targetContext.getLabel(), - targetContext.getConfigurationKey(), - targetContext.getVisibility(), - generatingRule, - outputArtifact, - traversals); - Preconditions.checkState( - outputFile.getLabel().equals(targetContext.getLabel()), - "mismatch: %s %s", - outputFile, - targetContext); - } - - @AutoCodec.VisibleForSerialization - @AutoCodec.Instantiator - FilesetOutputConfiguredTarget( - Label label, - BuildConfigurationValue.Key configurationKey, - NestedSet<PackageGroupContents> visibility, - TransitiveInfoCollection generatingRule, - Artifact artifact, - ImmutableList<FilesetTraversalParams> traversals) { - super(label, configurationKey, visibility, artifact, generatingRule); - FilesetProvider provider = generatingRule.getProvider(FilesetProvider.class); - Preconditions.checkArgument(provider != null); - filesetTraversals = traversals; - } - - @Override - public ImmutableList<FilesetTraversalParams> getTraversals() { - return filesetTraversals; - } -} diff --git a/src/main/java/com/google/devtools/build/lib/analysis/fileset/FilesetProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/fileset/FilesetProvider.java deleted file mode 100644 index 225a40eb42..0000000000 --- a/src/main/java/com/google/devtools/build/lib/analysis/fileset/FilesetProvider.java +++ /dev/null @@ -1,30 +0,0 @@ -// Copyright 2014 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.analysis.fileset; - -import com.google.common.collect.ImmutableList; -import com.google.devtools.build.lib.actions.FilesetTraversalParams; -import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; - -/** - * Information needed by a Fileset to do the right thing when it depends on another Fileset. - */ -public interface FilesetProvider extends TransitiveInfoProvider { - /** - * Returns a list of the traversals that went into this Fileset. Only used by Skyframe-native - * filesets, so will be null if Skyframe-native filesets are not enabled. - */ - ImmutableList<FilesetTraversalParams> getTraversals(); -} |