diff options
author | 2015-08-04 09:07:56 +0000 | |
---|---|---|
committer | 2015-08-04 20:25:20 +0000 | |
commit | 928e52ff01187a94e41d4ce58993f375c08679d5 (patch) | |
tree | 88c6039e7793cb99ef0f3a9a67ead1d5105d14f0 /src/main/java | |
parent | ae9b95f9f216d96d4caf775e5fd6f83bc6444042 (diff) |
Description redacted.
--
MOS_MIGRATED_REVID=99804135
Diffstat (limited to 'src/main/java')
4 files changed, 61 insertions, 15 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 1d2eb5bf58..f582cb62c8 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 @@ -43,6 +43,7 @@ import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleVisibility; import com.google.devtools.build.lib.packages.Target; import com.google.devtools.build.lib.rules.SkylarkRuleConfiguredTargetBuilder; +import com.google.devtools.build.lib.rules.fileset.FilesetProvider; import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey; import com.google.devtools.build.lib.syntax.Label; import com.google.devtools.build.lib.vfs.PathFragment; @@ -178,7 +179,12 @@ public final class ConfiguredTargetFactory { TransitiveInfoCollection rule = targetContext.findDirectPrerequisite( outputFile.getGeneratingRule().getLabel(), config); if (isFileset) { - return new FilesetOutputConfiguredTarget(targetContext, outputFile, rule, artifact); + return new FilesetOutputConfiguredTarget( + targetContext, + outputFile, + rule, + artifact, + rule.getProvider(FilesetProvider.class).getTraversals()); } else { return new OutputFileConfiguredTarget(targetContext, outputFile, rule, artifact); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java index 860024d52d..993da82fd5 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/FilesetOutputConfiguredTarget.java @@ -15,7 +15,9 @@ package com.google.devtools.build.lib.analysis; 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.packages.OutputFile; import com.google.devtools.build.lib.rules.fileset.FilesetProvider; import com.google.devtools.build.lib.vfs.PathFragment; @@ -33,14 +35,20 @@ public final class FilesetOutputConfiguredTarget extends OutputFileConfiguredTar implements FilesetProvider { private final Artifact filesetInputManifest; private final PathFragment filesetLinkDir; + private final ImmutableList<FilesetTraversalParams> filesetTraversals; - FilesetOutputConfiguredTarget(TargetContext targetContext, OutputFile outputFile, - TransitiveInfoCollection generatingRule, Artifact outputArtifact) { + FilesetOutputConfiguredTarget( + TargetContext targetContext, + OutputFile outputFile, + TransitiveInfoCollection generatingRule, + Artifact outputArtifact, + ImmutableList<FilesetTraversalParams> traversals) { super(targetContext, outputFile, generatingRule, outputArtifact); FilesetProvider provider = generatingRule.getProvider(FilesetProvider.class); Preconditions.checkArgument(provider != null); filesetInputManifest = provider.getFilesetInputManifest(); filesetLinkDir = provider.getFilesetLinkDir(); + filesetTraversals = traversals; } @Override @@ -52,4 +60,9 @@ public final class FilesetOutputConfiguredTarget extends OutputFileConfiguredTar public PathFragment getFilesetLinkDir() { return filesetLinkDir; } + + @Override + public ImmutableList<FilesetTraversalParams> getTraversals() { + return filesetTraversals; + } } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java index 849b7785d2..b5291a1de9 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfiguration.java @@ -694,18 +694,33 @@ public final class BuildConfiguration implements ClassObject { + "subdirectory which has not been traversed.") public boolean checkFilesetDependenciesRecursively; - @Option(name = "run_under", - category = "run", - defaultValue = "null", - converter = RunUnderConverter.class, - help = "Prefix to insert in front of command before running. " - + "Examples:\n" - + "\t--run_under=valgrind\n" - + "\t--run_under=strace\n" - + "\t--run_under='strace -c'\n" - + "\t--run_under='valgrind --quiet --num-callers=20'\n" - + "\t--run_under=//package:target\n" - + "\t--run_under='//package:target --options'\n") + @Option( + name = "experimental_skyframe_native_filesets", + defaultValue = "false", + category = "experimental", + help = + "If true, Blaze will use the skyframe-native implementation of the Fileset rule." + + " This offers improved performance in incremental builds of Filesets as well as" + + " correct incremental behavior, but is not yet stable. The default is false," + + " meaning Blaze uses the legacy impelementation of Fileset." + ) + public boolean skyframeNativeFileset; + + @Option( + name = "run_under", + category = "run", + defaultValue = "null", + converter = RunUnderConverter.class, + help = + "Prefix to insert in front of command before running. " + + "Examples:\n" + + "\t--run_under=valgrind\n" + + "\t--run_under=strace\n" + + "\t--run_under='strace -c'\n" + + "\t--run_under='valgrind --quiet --num-callers=20'\n" + + "\t--run_under=//package:target\n" + + "\t--run_under='//package:target --options'\n" + ) public RunUnder runUnder; @Option(name = "distinct_host_configuration", @@ -830,6 +845,9 @@ public final class BuildConfiguration implements ClassObject { // === Licenses === host.checkLicenses = checkLicenses; + // === Fileset === + host.skyframeNativeFileset = skyframeNativeFileset; + // === Allow runtime_deps to depend on neverlink Java libraries. host.allowRuntimeDepsOnNeverLink = allowRuntimeDepsOnNeverLink; @@ -1696,6 +1714,10 @@ public final class BuildConfiguration implements ClassObject { return options.checkFilesetDependenciesRecursively; } + public boolean getSkyframeNativeFileset() { + return options.skyframeNativeFileset; + } + public List<String> getTestArguments() { return options.testArguments; } diff --git a/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java b/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java index 6b70aab267..ec0de4641b 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java +++ b/src/main/java/com/google/devtools/build/lib/rules/fileset/FilesetProvider.java @@ -14,7 +14,9 @@ package com.google.devtools.build.lib.rules.fileset; +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.TransitiveInfoProvider; import com.google.devtools.build.lib.vfs.PathFragment; @@ -24,4 +26,7 @@ import com.google.devtools.build.lib.vfs.PathFragment; public interface FilesetProvider extends TransitiveInfoProvider { Artifact getFilesetInputManifest(); PathFragment getFilesetLinkDir(); + + /** Returns a list of the traversals that went into this Fileset.*/ + ImmutableList<FilesetTraversalParams> getTraversals(); } |