diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build')
12 files changed, 59 insertions, 47 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java index 0f2c387102..f7a9e0734a 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ActionInputHelper.java @@ -22,6 +22,7 @@ import com.google.common.collect.Collections2; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.ArrayList; @@ -138,18 +139,18 @@ public final class ActionInputHelper { } /** - * Instantiates a concrete TreeFileArtifact with the given parent Artifact and path - * relative to that Artifact. + * Instantiates a concrete TreeFileArtifact with the given parent Artifact and path relative to + * that Artifact. */ public static TreeFileArtifact treeFileArtifact( - Artifact parent, PathFragment relativePath) { + SpecialArtifact parent, PathFragment relativePath) { Preconditions.checkState(parent.isTreeArtifact(), "Given parent %s must be a TreeArtifact", parent); return new TreeFileArtifact(parent, relativePath); } public static TreeFileArtifact treeFileArtifact( - Artifact parent, PathFragment relativePath, ArtifactOwner artifactOwner) { + SpecialArtifact parent, PathFragment relativePath, ArtifactOwner artifactOwner) { Preconditions.checkState(parent.isTreeArtifact(), "Given parent %s must be a TreeArtifact", parent); return new TreeFileArtifact( @@ -159,16 +160,16 @@ public final class ActionInputHelper { } /** - * Instantiates a concrete TreeFileArtifact with the given parent Artifact and path - * relative to that Artifact. + * Instantiates a concrete TreeFileArtifact with the given parent Artifact and path relative to + * that Artifact. */ - public static TreeFileArtifact treeFileArtifact(Artifact parent, String relativePath) { + public static TreeFileArtifact treeFileArtifact(SpecialArtifact parent, String relativePath) { return treeFileArtifact(parent, PathFragment.create(relativePath)); } /** Returns an Iterable of TreeFileArtifacts with the given parent and parent relative paths. */ public static Iterable<TreeFileArtifact> asTreeFileArtifacts( - final Artifact parent, Iterable<? extends PathFragment> parentRelativePaths) { + final SpecialArtifact parent, Iterable<? extends PathFragment> parentRelativePaths) { Preconditions.checkState(parent.isTreeArtifact(), "Given parent %s must be a TreeArtifact", parent); return Iterables.transform( @@ -177,7 +178,7 @@ public final class ActionInputHelper { /** Returns a Set of TreeFileArtifacts with the given parent and parent-relative paths. */ public static Set<TreeFileArtifact> asTreeFileArtifacts( - final Artifact parent, Set<? extends PathFragment> parentRelativePaths) { + final SpecialArtifact parent, Set<? extends PathFragment> parentRelativePaths) { Preconditions.checkState(parent.isTreeArtifact(), "Given parent %s must be a TreeArtifact", parent); diff --git a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java index 6993478742..395f5dfde8 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Artifact.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Artifact.java @@ -536,11 +536,10 @@ public class Artifact @Immutable @AutoCodec(dependency = FileSystemProvider.class) public static final class TreeFileArtifact extends Artifact { - public static final InjectingObjectCodec<TreeFileArtifact, FileSystemProvider> CODEC = new Artifact_TreeFileArtifact_AutoCodec(); - private final Artifact parentTreeArtifact; + private final SpecialArtifact parentTreeArtifact; private final PathFragment parentRelativePath; /** @@ -548,7 +547,7 @@ public class Artifact * TreeArtifact. The {@link ArtifactOwner} of the TreeFileArtifact is the {@link ArtifactOwner} * of the parent TreeArtifact. */ - TreeFileArtifact(Artifact parent, PathFragment parentRelativePath) { + TreeFileArtifact(SpecialArtifact parent, PathFragment parentRelativePath) { this(parent, parentRelativePath, parent.getArtifactOwner()); } @@ -558,7 +557,7 @@ public class Artifact */ @AutoCodec.Instantiator TreeFileArtifact( - Artifact parentTreeArtifact, PathFragment parentRelativePath, ArtifactOwner owner) { + SpecialArtifact parentTreeArtifact, PathFragment parentRelativePath, ArtifactOwner owner) { super( parentTreeArtifact.getPath().getRelative(parentRelativePath), parentTreeArtifact.getRoot(), diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java index 098a04e05a..e417853ce1 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisEnvironment.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.ActionRegistry; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; import com.google.devtools.build.lib.actions.MiddlemanFactory; import com.google.devtools.build.lib.analysis.buildinfo.BuildInfoFactory.BuildInfoKey; @@ -82,7 +83,7 @@ public interface AnalysisEnvironment extends ActionRegistry { * creating it if necessary, and setting the root of that artifact to {@code root}. The artifact * will be a TreeArtifact. */ - Artifact getTreeArtifact(PathFragment rootRelativePath, ArtifactRoot root); + SpecialArtifact getTreeArtifact(PathFragment rootRelativePath, ArtifactRoot root); /** * Returns the artifact for the derived file {@code rootRelativePath}, creating it if necessary, diff --git a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java index 94cc572bda..d41125096f 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/CachingAnalysisEnvironment.java @@ -21,6 +21,7 @@ import com.google.common.collect.Lists; import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.ArtifactFactory; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactRoot; @@ -241,11 +242,12 @@ public class CachingAnalysisEnvironment implements AnalysisEnvironment { } @Override - public Artifact getTreeArtifact(PathFragment rootRelativePath, ArtifactRoot root) { + public SpecialArtifact getTreeArtifact(PathFragment rootRelativePath, ArtifactRoot root) { Preconditions.checkState(enabled); - return trackArtifactAndOrigin( - artifactFactory.getTreeArtifact(rootRelativePath, root, getOwner()), - extendedSanityChecks ? new Throwable() : null); + return (SpecialArtifact) + trackArtifactAndOrigin( + artifactFactory.getTreeArtifact(rootRelativePath, root, getOwner()), + extendedSanityChecks ? new Throwable() : null); } @Override 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 0749eac2af..73fb629874 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 @@ -37,6 +37,7 @@ import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.ActionRegistry; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactRoot; import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.PrerequisiteValidator; @@ -683,7 +684,7 @@ public final class RuleContext extends TargetContext * thus ensuring that it doesn't clash with other artifacts generated by other rules using this * method. */ - public Artifact getTreeArtifact(PathFragment rootRelativePath, ArtifactRoot root) { + public SpecialArtifact getTreeArtifact(PathFragment rootRelativePath, ArtifactRoot root) { Preconditions.checkState(rootRelativePath.startsWith(getPackageDirectory()), "Output artifact '%s' not under package directory '%s' for target '%s'", rootRelativePath, getPackageDirectory(), getLabel()); diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java index 5ba555fcd3..fb5eafda48 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactAction.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.ActionResult; import com.google.devtools.build.lib.actions.Actions; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactPrefixConflictException; import com.google.devtools.build.lib.actions.BaseSpawn; @@ -75,7 +76,7 @@ public final class PopulateTreeArtifactAction extends AbstractAction { private final Artifact archive; private final Artifact archiveManifest; - private final Artifact outputTreeArtifact; + private final SpecialArtifact outputTreeArtifact; private final FilesToRunProvider zipper; /** @@ -92,7 +93,7 @@ public final class PopulateTreeArtifactAction extends AbstractAction { ActionOwner owner, Artifact archive, Artifact archiveManifest, - Artifact treeArtifactToPopulate, + SpecialArtifact treeArtifactToPopulate, FilesToRunProvider zipper) { super( owner, @@ -114,7 +115,7 @@ public final class PopulateTreeArtifactAction extends AbstractAction { } private static class PopulateTreeArtifactSpawn extends BaseSpawn { - private final Artifact treeArtifact; + private final SpecialArtifact treeArtifact; private final Iterable<PathFragment> entriesToExtract; // The output TreeFileArtifacts are created lazily outside of the contructor because potentially @@ -122,7 +123,7 @@ public final class PopulateTreeArtifactAction extends AbstractAction { private Collection<TreeFileArtifact> outputTreeFileArtifacts; PopulateTreeArtifactSpawn( - Artifact treeArtifact, + SpecialArtifact treeArtifact, Iterable<PathFragment> entriesToExtract, Iterable<String> commandLine, RunfilesSupplier runfilesSupplier, diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java index b6150b9d5c..1b944d44e8 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplate.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.actions.ActionExecutionContext; import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.analysis.FilesToRunProvider; @@ -33,8 +34,8 @@ import java.util.Map; * An {@link ActionTemplate} that expands into {@link SpawnAction}s at execution time. */ public final class SpawnActionTemplate implements ActionTemplate<SpawnAction> { - private final Artifact inputTreeArtifact; - private final Artifact outputTreeArtifact; + private final SpecialArtifact inputTreeArtifact; + private final SpecialArtifact outputTreeArtifact; private final NestedSet<Artifact> commonInputs; private final NestedSet<Artifact> allInputs; private final NestedSet<Artifact> commonTools; @@ -64,8 +65,8 @@ public final class SpawnActionTemplate implements ActionTemplate<SpawnAction> { private SpawnActionTemplate( ActionOwner actionOwner, - Artifact inputTreeArtifact, - Artifact outputTreeArtifact, + SpecialArtifact inputTreeArtifact, + SpecialArtifact outputTreeArtifact, NestedSet<Artifact> commonInputs, NestedSet<Artifact> commonTools, OutputPathMapper outputPathMapper, @@ -229,19 +230,19 @@ public final class SpawnActionTemplate implements ActionTemplate<SpawnAction> { private CustomCommandLine commandLineTemplate; private PathFragment executable; - private final Artifact inputTreeArtifact; - private final Artifact outputTreeArtifact; + private final SpecialArtifact inputTreeArtifact; + private final SpecialArtifact outputTreeArtifact; private final NestedSetBuilder<Artifact> inputsBuilder = NestedSetBuilder.stableOrder(); private final NestedSetBuilder<Artifact> toolsBuilder = NestedSetBuilder.stableOrder(); private final SpawnAction.Builder spawnActionBuilder; /** * Creates a {@link SpawnActionTemplate} builder. - * + * * @param inputTreeArtifact the required input TreeArtifact. * @param outputTreeArtifact the required output TreeArtifact. */ - public Builder(Artifact inputTreeArtifact, Artifact outputTreeArtifact) { + public Builder(SpecialArtifact inputTreeArtifact, SpecialArtifact outputTreeArtifact) { Preconditions.checkState( inputTreeArtifact.isTreeArtifact() && outputTreeArtifact.isTreeArtifact(), "Either %s or %s is not a TreeArtifact", diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index e27b478866..fca322d84d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -28,6 +28,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.FailAction; import com.google.devtools.build.lib.actions.ParameterFile; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -1027,7 +1028,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { createDexMergerAction( ruleContext, multidex ? "minimal" : "off", dexArchives, classesDex, mainDexList, dexopts); } else { - Artifact shardsToMerge = + SpecialArtifact shardsToMerge = createSharderAction( ruleContext, dexArchives, @@ -1114,13 +1115,13 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { * * @return Tree artifact containing dex archives to merge into exactly one .dex file each */ - private static Artifact createSharderAction( + private static SpecialArtifact createSharderAction( RuleContext ruleContext, ImmutableList<Artifact> dexArchives, @Nullable Artifact mainDexList, boolean minimalMainDex, @Nullable Artifact inclusionFilterJar) { - Artifact outputTree = + SpecialArtifact outputTree = ruleContext.getTreeArtifact( ruleContext.getUniqueDirectory("dexsplits"), ruleContext.getBinOrGenfilesDirectory()); @@ -1168,8 +1169,8 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { * @return Tree artifact containing zips with final dex files named for inclusion in an APK. */ private static Artifact createTemplatedMergerActions( - RuleContext ruleContext, Artifact inputTree, Collection<String> dexopts) { - Artifact outputTree = + RuleContext ruleContext, SpecialArtifact inputTree, Collection<String> dexopts) { + SpecialArtifact outputTree = ruleContext.getTreeArtifact( ruleContext.getUniqueDirectory("dexfiles"), ruleContext.getBinOrGenfilesDirectory()); SpawnActionTemplate.Builder dexmerger = diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java index baeac86ce0..a3f6cc0d86 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppCompileActionTemplate.java @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.analysis.actions.ActionTemplate; @@ -38,8 +39,8 @@ import java.util.List; */ public final class CppCompileActionTemplate implements ActionTemplate<CppCompileAction> { private final CppCompileActionBuilder cppCompileActionBuilder; - private final Artifact sourceTreeArtifact; - private final Artifact outputTreeArtifact; + private final SpecialArtifact sourceTreeArtifact; + private final SpecialArtifact outputTreeArtifact; private final CcToolchainProvider toolchain; private final Iterable<ArtifactCategory> categories; private final ActionOwner actionOwner; @@ -48,6 +49,7 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile /** * Creates an CppCompileActionTemplate. + * * @param sourceTreeArtifact the TreeArtifact that contains source files to compile. * @param outputTreeArtifact the TreeArtifact that contains compilation outputs. * @param cppCompileActionBuilder An almost completely configured {@link CppCompileActionBuilder} @@ -59,8 +61,8 @@ public final class CppCompileActionTemplate implements ActionTemplate<CppCompile * @param actionOwner the owner of this {@link ActionTemplate}. */ CppCompileActionTemplate( - Artifact sourceTreeArtifact, - Artifact outputTreeArtifact, + SpecialArtifact sourceTreeArtifact, + SpecialArtifact outputTreeArtifact, CppCompileActionBuilder cppCompileActionBuilder, CcToolchainProvider toolchain, Iterable<ArtifactCategory> categories, diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java index c9f96cfca0..5f56c9f1d7 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java @@ -25,6 +25,7 @@ import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Action; import com.google.devtools.build.lib.actions.ActionOwner; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.MiddlemanFactory; import com.google.devtools.build.lib.actions.ParameterFile; import com.google.devtools.build.lib.analysis.AnalysisUtils; @@ -965,7 +966,7 @@ public class CppHelper { } /** Returns the corresponding compiled TreeArtifact given the source TreeArtifact. */ - public static Artifact getCompileOutputTreeArtifact( + public static SpecialArtifact getCompileOutputTreeArtifact( RuleContext ruleContext, Artifact sourceTreeArtifact, boolean usePic) { PathFragment objectDir = getObjDirectory(ruleContext.getLabel(), usePic); PathFragment rootRelativePath = sourceTreeArtifact.getRootRelativePath(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java index 7691c2e770..8f84a7a3e5 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppModel.java @@ -24,6 +24,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.FailAction; import com.google.devtools.build.lib.analysis.AnalysisEnvironment; import com.google.devtools.build.lib.analysis.RuleContext; @@ -1146,8 +1147,8 @@ public final class CppModel { CppCompileActionBuilder builder, Iterable<ArtifactCategory> outputCategories, boolean usePic) { - Artifact sourceArtifact = source.getSource(); - Artifact outputFiles = + SpecialArtifact sourceArtifact = (SpecialArtifact) source.getSource(); + SpecialArtifact outputFiles = CppHelper.getCompileOutputTreeArtifact(ruleContext, sourceArtifact, usePic); // TODO(rduan): Dotd file output is not supported yet. builder.setOutputs(outputFiles, /* dotdFile= */ null); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java b/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java index bf635c9e1d..c8098064aa 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandler.java @@ -23,6 +23,7 @@ import com.google.common.io.BaseEncoding; import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.cache.Md5Digest; import com.google.devtools.build.lib.actions.cache.Metadata; @@ -192,7 +193,7 @@ public class ActionMetadataHandler implements MetadataHandler { checkInconsistentData(artifact, oldValue, value); return metadataFromValue(value); } else if (artifact.isTreeArtifact()) { - TreeArtifactValue setValue = getTreeArtifactValue(artifact); + TreeArtifactValue setValue = getTreeArtifactValue((SpecialArtifact) artifact); if (setValue != null && setValue != TreeArtifactValue.MISSING_TREE_ARTIFACT) { return setValue.getMetadata(); } @@ -290,7 +291,7 @@ public class ActionMetadataHandler implements MetadataHandler { return contents; } - private TreeArtifactValue getTreeArtifactValue(Artifact artifact) throws IOException { + private TreeArtifactValue getTreeArtifactValue(SpecialArtifact artifact) throws IOException { TreeArtifactValue value = outputTreeArtifactData.get(artifact); if (value != null) { return value; @@ -384,7 +385,7 @@ public class ActionMetadataHandler implements MetadataHandler { return TreeArtifactValue.create(values); } - private TreeArtifactValue constructTreeArtifactValueFromFilesystem(Artifact artifact) + private TreeArtifactValue constructTreeArtifactValueFromFilesystem(SpecialArtifact artifact) throws IOException { Preconditions.checkState(artifact.isTreeArtifact(), artifact); @@ -600,7 +601,7 @@ public class ActionMetadataHandler implements MetadataHandler { } } - private void setTreeReadOnlyAndExecutable(Artifact parent, PathFragment subpath) + private void setTreeReadOnlyAndExecutable(SpecialArtifact parent, PathFragment subpath) throws IOException { Path path = parent.getPath().getRelative(subpath); if (path.isDirectory()) { |