aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis
diff options
context:
space:
mode:
authorGravatar felly <felly@google.com>2018-08-09 14:28:14 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-09 14:29:50 -0700
commit39974a43abdd32e3a1acbc7da945b08da9983e4e (patch)
tree34ddeab6c7bbe9d129f7c0dbe2c456c6cadab881 /src/main/java/com/google/devtools/build/lib/analysis
parent943a9c792032c75b25a1665e7143409fe3950041 (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')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/ConfiguredTargetFactory.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FileConfiguredTarget.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/FilesetOutputConfiguredTarget.java84
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/fileset/FilesetProvider.java30
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();
-}