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 9d0fd479a951ce..c006b31a9e00ae 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 @@ -29,6 +29,7 @@ import com.google.common.collect.Iterables; import com.google.common.collect.Streams; import com.google.devtools.build.lib.actions.ArtifactResolver.ArtifactResolverSupplier; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelConstants; import com.google.devtools.build.lib.collect.nestedset.Depset; @@ -1137,10 +1138,8 @@ private static ArtifactRoot createRootForArchivedArtifact( PathFragment customDerivedTreeRoot) { return ArtifactRoot.asDerivedRoot( getExecRoot(treeArtifactRoot), - false, - false, - false, // e.g. bazel-out/{customDerivedTreeRoot}/k8-fastbuild/bin + RootType.Output, getExecPathWithinCustomDerivedRoot( derivedPathPrefix, customDerivedTreeRoot, treeArtifactRoot.getExecPath())); } diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java index 1db46229e85efc..4f376d2a3f60a5 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java +++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactRoot.java @@ -56,7 +56,8 @@ public final class ArtifactRoot implements Comparable, Serializabl *

Returns the given path as a source root. The path may not be {@code null}. */ public static ArtifactRoot asSourceRoot(Root root) { - return INTERNER.intern(new ArtifactRoot(root, PathFragment.EMPTY_FRAGMENT, RootType.Source)); + return INTERNER.intern( + new ArtifactRoot(root, PathFragment.EMPTY_FRAGMENT, RootType.MainSource)); } /** @@ -84,12 +85,7 @@ public static ArtifactRoot asExternalSourceRoot(Root root) { *

Be careful with this method - all derived roots must be within the derived artifacts tree, * defined in ArtifactFactory (see {@link ArtifactFactory#isDerivedArtifact(PathFragment)}). */ - public static ArtifactRoot asDerivedRoot( - Path execRoot, - boolean isMiddleman, - boolean isExternal, - boolean siblingRepositoryLayout, - String... prefixes) { + public static ArtifactRoot asDerivedRoot(Path execRoot, RootType rootType, String... prefixes) { PathFragment execPath = PathFragment.EMPTY_FRAGMENT; for (String prefix : prefixes) { // Tests can have empty segments here, be gentle to them. @@ -97,7 +93,7 @@ public static ArtifactRoot asDerivedRoot( execPath = execPath.getChild(prefix); } } - return asDerivedRoot(execRoot, isMiddleman, isExternal, siblingRepositoryLayout, execPath); + return asDerivedRoot(execRoot, rootType, execPath); } /** @@ -107,31 +103,19 @@ public static ArtifactRoot asDerivedRoot( * defined in ArtifactFactory (see {@link ArtifactFactory#isDerivedArtifact(PathFragment)}). */ public static ArtifactRoot asDerivedRoot( - Path execRoot, - boolean isMiddleman, - boolean isExternal, - boolean siblingRepositoryLayout, - PathFragment execPath) { + Path execRoot, RootType rootType, PathFragment execPath) { // Make sure that we are not creating a derived artifact under the execRoot. Preconditions.checkArgument(!execPath.isEmpty(), "empty execPath"); Preconditions.checkArgument( !execPath.getSegments().contains(".."), "execPath: %s contains parent directory reference (..)", execPath); + Preconditions.checkArgument( + isOutputRootType(rootType) || isMiddlemanRootType(rootType), + "%s is not a derived root type", + rootType); Path root = execRoot.getRelative(execPath); - RootType type; - if (siblingRepositoryLayout) { - type = - isMiddleman - ? (isExternal ? RootType.ExternalMiddleman : RootType.Middleman) - : (isExternal ? RootType.ExternalOutput : RootType.Output); - } else { - Preconditions.checkArgument( - !isExternal, - "external derived roots unavailable without --experimental_sibling_repository_layout"); - type = isMiddleman ? RootType.LegacyMiddleman : RootType.LegacyOutput; - } - return INTERNER.intern(new ArtifactRoot(Root.fromPath(root), execPath, type)); + return INTERNER.intern(new ArtifactRoot(Root.fromPath(root), execPath, rootType)); } @AutoCodec.VisibleForSerialization @@ -142,32 +126,25 @@ static ArtifactRoot createForSerialization( return INTERNER.intern(new ArtifactRoot(rootForSerialization, execPath, rootType)); } return asDerivedRoot( - rootForSerialization.asPath(), - false, - rootType == RootType.ExternalOutput, - rootType != RootType.LegacyOutput, - execPath.getSegments().toArray(new String[0])); + rootForSerialization.asPath(), rootType, execPath.getSegments().toArray(new String[0])); } - @AutoCodec.VisibleForSerialization - enum RootType { - Source, + /** + * ArtifactRoot types. Callers of asDerivedRoot methods need to specify which type of derived root + * artifact they want to create, which is why this enum is public. + */ + public enum RootType { + MainSource, + ExternalSource, Output, Middleman, - // Root types for external repository artifacts. Note that ExternalOutput and ExternalMiddleman - // are activated only if --experimental_sibling_repository_layout is true, which will become - // the default value soon. The ExternalSource type is already in effect by default. - ExternalSource, - ExternalOutput, - ExternalMiddleman, - // Legacy root types for derived artifacts. Even though they're called legacy, they are still - // the default, but soon to be deprecated when --experimental_sibling_repository_layout is set - // true by default. In terms of the actual root paths, there are no differences between these - // and Output and Middleman. Their sole purpose is to embed the - // --experimental_sibling_repository_layout flag value information in Artifacts without - // additional storage cost. - LegacyOutput, - LegacyMiddleman + // Sibling root types are in effect when --experimental_sibling_repository_layout is activated. + // These will eventually replace the above Output and Middleman types when the flag becomes + // the default option and then removed. + SiblingMainOutput, + SiblingMainMiddleman, + SiblingExternalOutput, + SiblingExternalMiddleman, } private final Root root; @@ -207,29 +184,37 @@ public ImmutableList getComponents() { } public boolean isSourceRoot() { - return rootType == RootType.Source || rootType == RootType.ExternalSource; + return rootType == RootType.MainSource || rootType == RootType.ExternalSource; } private static boolean isOutputRootType(RootType rootType) { - return rootType == RootType.Output - || rootType == RootType.ExternalOutput - || rootType == RootType.LegacyOutput; + return rootType == RootType.SiblingMainOutput + || rootType == RootType.SiblingExternalOutput + || rootType == RootType.Output; + } + + private static boolean isMiddlemanRootType(RootType rootType) { + return rootType == RootType.SiblingMainMiddleman + || rootType == RootType.SiblingExternalMiddleman + || rootType == RootType.Middleman; } boolean isMiddlemanRoot() { - return rootType == RootType.Middleman - || rootType == RootType.ExternalMiddleman - || rootType == RootType.LegacyMiddleman; + return isMiddlemanRootType(rootType); } public boolean isExternal() { return rootType == RootType.ExternalSource - || rootType == RootType.ExternalOutput - || rootType == RootType.ExternalMiddleman; + || rootType == RootType.SiblingExternalOutput + || rootType == RootType.SiblingExternalMiddleman; } + /** + * Returns true if the ArtifactRoot is a legacy derived root type, i.e. a derived root type + * created without the --experimental_sibling_repository_layout flag set. + */ public boolean isLegacy() { - return rootType == RootType.LegacyOutput || rootType == RootType.LegacyMiddleman; + return rootType == RootType.Output || rootType == RootType.Middleman; } @Override diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java index 60ea72cac5bec9..3cbad954efb088 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/BlazeDirectories.java @@ -18,6 +18,7 @@ import com.google.common.base.Ascii; import com.google.common.hash.HashCode; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec; import com.google.devtools.build.lib.util.StringCanonicalizer; @@ -206,7 +207,7 @@ public Path getEmbeddedBinariesRoot() { */ public ArtifactRoot getBuildDataDirectory(String workspaceName) { return ArtifactRoot.asDerivedRoot( - getExecRoot(workspaceName), false, false, false, getRelativeOutputPath(productName)); + getExecRoot(workspaceName), RootType.Output, getRelativeOutputPath(productName)); } /** diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java index 1e33c67898460c..a42f4bcbfb1ce5 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/OutputDirectories.java @@ -18,6 +18,7 @@ import com.google.common.base.Strings; import com.google.common.collect.ImmutableSortedMap; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.analysis.BlazeDirectories; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.server.FailureDetails.BuildConfiguration.Code; @@ -112,9 +113,7 @@ public ArtifactRoot getRoot( // e.g., [[execroot/repo1]/bazel-out/config/bin] return ArtifactRoot.asDerivedRoot( execRoot, - middleman, - false, - false, + middleman ? RootType.Middleman : RootType.Output, directories.getRelativeOutputPath(), outputDirName, nameFragment); @@ -219,11 +218,15 @@ private ArtifactRoot buildDerivedRoot( // TODO(jungjw): Ideally, we would like to do execroot_base/repoName/bazel-out/config/bin // instead. However, it requires individually symlinking the top-level elements of external // repositories, which is blocked by a Windows symlink issue #8704. + RootType rootType; + if (repository.isMain() || repository.isDefault()) { + rootType = isMiddleman ? RootType.SiblingMainMiddleman : RootType.SiblingMainOutput; + } else { + rootType = isMiddleman ? RootType.SiblingExternalMiddleman : RootType.SiblingExternalOutput; + } return ArtifactRoot.asDerivedRoot( execRoot, - isMiddleman, - !repository.isMain() && !repository.isDefault(), - true, + rootType, directories.getRelativeOutputPath(), repository.strippedName(), outputDirName, diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphArtifactsHelper.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphArtifactsHelper.java index e2b499da235b42..4583365e15834e 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphArtifactsHelper.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/ninja/actions/NinjaGraphArtifactsHelper.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.bazel.rules.ninja.file.GenericParsingException; import com.google.devtools.build.lib.vfs.Path; @@ -77,7 +78,7 @@ class NinjaGraphArtifactsHelper { .getExecRoot(ruleContext.getWorkspaceName()); this.derivedOutputRoot = ArtifactRoot.asDerivedRoot( - execRoot, false, false, false, outputRootPath.getSegments().toArray(new String[0])); + execRoot, RootType.Output, outputRootPath.getSegments().toArray(new String[0])); this.sourceRoot = ruleContext.getRule().getPackage().getSourceRoot().get(); } diff --git a/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java b/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java index 7e72c7e812675d..f06031daa520ef 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ActionCacheCheckerTest.java @@ -23,6 +23,7 @@ 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.SpecialArtifactType; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.cache.ActionCache; import com.google.devtools.build.lib.actions.cache.CompactPersistentActionCache; import com.google.devtools.build.lib.actions.cache.MetadataHandler; @@ -366,9 +367,7 @@ public void testDeletedConstantMetadataOutputCausesReexecution() throws Exceptio new Artifact.SpecialArtifact( ArtifactRoot.asDerivedRoot( new InMemoryFileSystem(DigestHashFunction.SHA256).getPath("/output"), - false, - false, - false, + RootType.Output, "bin"), PathFragment.create("bin/dummy"), ActionsTestUtil.NULL_ARTIFACT_OWNER, diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java index 7dcc53ade3d04f..6d303d0f24b39c 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactFactoryTest.java @@ -22,6 +22,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.cmdline.PackageIdentifier; @@ -75,7 +76,7 @@ public final void createFiles() throws Exception { clientRoot = Root.fromPath(scratch.dir("/client/workspace")); clientRoRoot = Root.fromPath(scratch.dir("/client/RO/workspace")); alienRoot = Root.fromPath(scratch.dir("/client/workspace")); - outRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out-root", "x", "bin"); + outRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out-root", "x", "bin"); fooPath = PathFragment.create("foo"); fooPackage = PackageIdentifier.createInMainRepo(fooPath); diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactRootTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactRootTest.java index fa98a88fac61a4..a3435519cfe2c7 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactRootTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactRootTest.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.testing.EqualsTester; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.skyframe.serialization.AutoRegistry; import com.google.devtools.build.lib.skyframe.serialization.ObjectCodecRegistry; import com.google.devtools.build.lib.skyframe.serialization.ObjectCodecs; @@ -57,7 +58,7 @@ public void asDerivedRoot_createsValidDerivedRoot() throws IOException { Path execRoot = scratch.dir("/exec"); Path rootDir = scratch.dir("/exec/root"); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "root"); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "root"); assertThat(root.isSourceRoot()).isFalse(); assertThat(root.getExecPath()).isEqualTo(PathFragment.create("root")); @@ -70,14 +71,14 @@ public void asDerivedRoot_derivedRootIsExecRoot_failsNotOk() throws IOException Path execRoot = scratch.dir("/exec"); assertThrows( IllegalArgumentException.class, - () -> ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "")); + () -> ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "")); } @Test public void asDerivedRoot_emptyPrefix_createsArtifactRoot() throws IOException { Path execRoot = scratch.dir("/exec"); - assertThat(ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "", "suffix", "")) - .isEqualTo(ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "suffix")); + assertThat(ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "", "suffix", "")) + .isEqualTo(ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "suffix")); } @Test @@ -85,7 +86,7 @@ public void asDerivedRoot_prefixWithSlash_fails() throws IOException { Path execRoot = scratch.dir("/exec"); assertThrows( IllegalArgumentException.class, - () -> ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "suffix/")); + () -> ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "suffix/")); } @Test @@ -93,14 +94,14 @@ public void asDerivedRoot_noPrefixes_fails() throws IOException { Path execRoot = scratch.dir("/exec"); assertThrows( IllegalArgumentException.class, - () -> ArtifactRoot.asDerivedRoot(execRoot, false, false, false)); + () -> ArtifactRoot.asDerivedRoot(execRoot, RootType.Output)); } @Test public void asDerivedRoot_nullExecPath_fails() { assertThrows( NullPointerException.class, - () -> ArtifactRoot.asDerivedRoot(null, false, false, false, "exec")); + () -> ArtifactRoot.asDerivedRoot(null, RootType.Output, "exec")); } @Test @@ -109,7 +110,7 @@ public void asDerivedRootPathFragment_simpleExecPath_createsArtifactRoot() throw Path rootDir = scratch.dir("/exec/root"); ArtifactRoot root = - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, PathFragment.create("root")); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, PathFragment.create("root")); assertThat(root.isSourceRoot()).isFalse(); assertThat(root.getExecPath()).isEqualTo(PathFragment.create("root")); @@ -124,7 +125,7 @@ public void asDerivedRootPathFragment_nestedExecPath_createsArtifactRoot() throw ArtifactRoot root = ArtifactRoot.asDerivedRoot( - execRoot, false, false, false, PathFragment.create("dir1/dir2/dir3")); + execRoot, RootType.Output, PathFragment.create("dir1/dir2/dir3")); assertThat(root.isSourceRoot()).isFalse(); assertThat(root.getExecPath()).isEqualTo(PathFragment.create("dir1/dir2/dir3")); @@ -138,8 +139,7 @@ public void asDerivedRootPathFragment_emptyExecPath_fails() throws Exception { assertThrows( IllegalArgumentException.class, - () -> - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, PathFragment.EMPTY_FRAGMENT)); + () -> ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, PathFragment.EMPTY_FRAGMENT)); } @Test @@ -148,7 +148,7 @@ public void asDerivedRootPathFragment_execPathIsCurrentDirectory_fails() throws assertThrows( IllegalArgumentException.class, - () -> ArtifactRoot.asDerivedRoot(execRoot, false, false, false, PathFragment.create("."))); + () -> ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, PathFragment.create("."))); } @Test @@ -157,7 +157,7 @@ public void asDerivedRootPathFragment_execPathIsDirectoryUp_fails() throws Excep assertThrows( IllegalArgumentException.class, - () -> ArtifactRoot.asDerivedRoot(execRoot, false, false, false, PathFragment.create(".."))); + () -> ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, PathFragment.create(".."))); } @Test @@ -168,7 +168,7 @@ public void asDerivedRootPathFragment_execPathContainsDirectoryUp_fails() throws IllegalArgumentException.class, () -> ArtifactRoot.asDerivedRoot( - execRoot, false, false, false, PathFragment.create("../outsideExecRoot"))); + execRoot, RootType.Output, PathFragment.create("../outsideExecRoot"))); } @Test @@ -176,7 +176,7 @@ public void derivedRootSerialization_rootMatchesDesignatedLikelyRoot_skipsRootIn throws Exception { Path execRoot = scratch.dir("/thisisaveryverylongexecrootthatwedontwanttoserialize"); ArtifactRoot derivedRoot = - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "first", "second", "third"); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "first", "second", "third"); ObjectCodecRegistry registry = AutoRegistry.get(); ImmutableMap, Object> dependencies = ImmutableMap., Object>builder() @@ -207,12 +207,11 @@ public void equals_returnsTrueForIdenticalRootAndDetectsDifferencesOnEachField() new EqualsTester() .addEqualityGroup( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, rootSegment), - ArtifactRoot.asDerivedRoot( - execRoot, false, false, false, PathFragment.create(rootSegment))) + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, rootSegment), + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, PathFragment.create(rootSegment))) .addEqualityGroup( - ArtifactRoot.asDerivedRoot(otherRootDir, false, false, false, "exec", rootSegment)) - .addEqualityGroup(ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "otherSegment")) + ArtifactRoot.asDerivedRoot(otherRootDir, RootType.Output, "exec", rootSegment)) + .addEqualityGroup(ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "otherSegment")) .addEqualityGroup(ArtifactRoot.asSourceRoot(Root.fromPath(sourceDir))) .addEqualityGroup(ArtifactRoot.asSourceRoot(Root.fromPath(rootDir))) .testEquals(); diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java index 646467038431e9..253a9307533750 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java @@ -25,6 +25,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.ArtifactResolver.ArtifactResolverSupplier; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.actions.util.LabelArtifactOwner; @@ -66,7 +67,7 @@ public class ArtifactTest { public final void setRootDir() throws Exception { scratch = new Scratch(); execDir = scratch.dir("/base/exec"); - rootDir = ArtifactRoot.asDerivedRoot(execDir, false, false, false, "root"); + rootDir = ArtifactRoot.asDerivedRoot(execDir, RootType.Output, "root"); } @Test @@ -76,7 +77,7 @@ public void testConstruction_badRootDir() throws IOException { IllegalArgumentException.class, () -> ActionsTestUtil.createArtifactWithExecPath( - ArtifactRoot.asDerivedRoot(execDir, false, false, false, "bogus"), + ArtifactRoot.asDerivedRoot(execDir, RootType.Output, "bogus"), f1.relativeTo(execDir)) .getRootRelativePath()); } @@ -182,7 +183,7 @@ private List getFooBarArtifacts(MutableActionGraph actionGraph, boolea Artifact aHeader3 = ActionsTestUtil.createArtifact(root, scratch.file("/foo/bar3.h")); ArtifactRoot middleRoot = ArtifactRoot.asDerivedRoot( - scratch.dir("/foo"), true, false, false, PathFragment.create("/foo/out")); + scratch.dir("/foo"), RootType.Middleman, PathFragment.create("/foo/out")); Artifact middleman = ActionsTestUtil.createArtifact(middleRoot, "middleman"); MiddlemanAction.create( new ActionRegistry() { @@ -262,7 +263,7 @@ public void testToDetailString() throws Exception { Path execRoot = scratch.getFileSystem().getPath("/execroot/workspace"); Artifact a = ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "b"), "c"); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "b"), "c"); assertThat(a.toDetailString()).isEqualTo("[[]b]c"); } @@ -273,7 +274,7 @@ public void testWeirdArtifact() { IllegalArgumentException.class, () -> ActionsTestUtil.createArtifactWithExecPath( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "a"), + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "a"), PathFragment.create("c")) .getRootRelativePath()); } @@ -284,8 +285,7 @@ public void testCodec() throws Exception { (Artifact.DerivedArtifact) ActionsTestUtil.createArtifact(rootDir, "src/a"); artifact.setGeneratingActionKey(ActionsTestUtil.NULL_ACTION_LOOKUP_DATA); ArtifactRoot anotherRoot = - ArtifactRoot.asDerivedRoot( - scratch.getFileSystem().getPath("/"), false, false, false, "src"); + ArtifactRoot.asDerivedRoot(scratch.getFileSystem().getPath("/"), RootType.Output, "src"); Artifact.DerivedArtifact anotherArtifact = new Artifact.DerivedArtifact( anotherRoot, @@ -387,8 +387,7 @@ public void testIsSourceArtifact() throws Exception { .isTrue(); assertThat( ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot( - scratch.dir("/genfiles"), false, false, false, "aaa"), + ArtifactRoot.asDerivedRoot(scratch.dir("/genfiles"), RootType.Output, "aaa"), scratch.file("/genfiles/aaa/bar.out")) .isSourceArtifact()) .isFalse(); @@ -397,7 +396,7 @@ public void testIsSourceArtifact() throws Exception { @Test public void testGetRoot() throws Exception { Path execRoot = scratch.getFileSystem().getPath("/"); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "newRoot"); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "newRoot"); assertThat(ActionsTestUtil.createArtifact(root, scratch.file("/newRoot/foo")).getRoot()) .isEqualTo(root); } @@ -405,7 +404,7 @@ public void testGetRoot() throws Exception { @Test public void hashCodeAndEquals() { Path execRoot = scratch.getFileSystem().getPath("/"); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "newRoot"); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "newRoot"); ActionLookupKey firstOwner = new ActionLookupKey() { @Override @@ -471,7 +470,7 @@ private Artifact createDirNameArtifact() throws Exception { @Test public void canDeclareContentBasedOutput() { Path execRoot = scratch.getFileSystem().getPath("/"); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "newRoot"); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "newRoot"); assertThat( new Artifact.DerivedArtifact( root, @@ -514,7 +513,7 @@ public void testGetRepositoryRelativePathExternalSourceArtifacts() throws IOExce @Test public void archivedTreeArtifact_create_returnsArtifactInArchivedRoot() { ArtifactRoot root = - ArtifactRoot.asDerivedRoot(execDir, false, false, false, "blaze-out", "fastbuild"); + ArtifactRoot.asDerivedRoot(execDir, RootType.Output, "blaze-out", "fastbuild"); SpecialArtifact tree = createTreeArtifact(root, "tree"); ArchivedTreeArtifact archivedTreeArtifact = @@ -547,7 +546,7 @@ public void archivedTreeArtifact_create_returnsArtifactWithGeneratingActionFromP @Test public void archivedTreeArtifact_createWithLongerDerivedPrefix_returnsArtifactWithCorrectPath() { ArtifactRoot root = - ArtifactRoot.asDerivedRoot(execDir, false, false, false, "dir1", "dir2", "dir3"); + ArtifactRoot.asDerivedRoot(execDir, RootType.Output, "dir1", "dir2", "dir3"); SpecialArtifact tree = createTreeArtifact(root, "tree"); ArchivedTreeArtifact archivedTreeArtifact = @@ -562,7 +561,7 @@ public void archivedTreeArtifact_createWithLongerDerivedPrefix_returnsArtifactWi @Test public void archivedTreeArtifact_create_failsForWrongDerivedPrefix() { ArtifactRoot root = - ArtifactRoot.asDerivedRoot(execDir, false, false, false, "blaze-out", "fastbuild"); + ArtifactRoot.asDerivedRoot(execDir, RootType.Output, "blaze-out", "fastbuild"); SpecialArtifact tree = createTreeArtifact(root, "tree"); PathFragment wrongPrefix = PathFragment.create("notAPrefix"); @@ -572,7 +571,7 @@ public void archivedTreeArtifact_create_failsForWrongDerivedPrefix() { @Test public void archivedTreeArtifact_create_failsForDerivedPrefixOutsideOfArtifactRoot() { - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execDir, false, false, false, "dir1", "dir2"); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execDir, RootType.Output, "dir1", "dir2"); SpecialArtifact tree = createTreeArtifact(root, "dir3/tree"); PathFragment prefixOutsideOfRoot = PathFragment.create("dir1/dir2/dir3"); @@ -584,7 +583,7 @@ public void archivedTreeArtifact_create_failsForDerivedPrefixOutsideOfArtifactRo @Test public void archivedTreeArtifact_createWithCustomDerivedTreeRoot_returnsArtifactWithCustomRoot() { ArtifactRoot root = - ArtifactRoot.asDerivedRoot(execDir, false, false, false, "blaze-out", "fastbuild"); + ArtifactRoot.asDerivedRoot(execDir, RootType.Output, "blaze-out", "fastbuild"); SpecialArtifact tree = createTreeArtifact(root, "dir/tree"); ArchivedTreeArtifact archivedTreeArtifact = @@ -605,8 +604,7 @@ public void archivedTreeArtifact_createWithCustomDerivedTreeRoot_returnsArtifact public void archivedTreeArtifact_codec_roundTripsArchivedArtifact() throws Exception { ArchivedTreeArtifact artifact1 = createArchivedTreeArtifact(rootDir, "tree1"); ArtifactRoot anotherRoot = - ArtifactRoot.asDerivedRoot( - scratch.getFileSystem().getPath("/"), false, false, false, "src"); + ArtifactRoot.asDerivedRoot(scratch.getFileSystem().getPath("/"), RootType.Output, "src"); ArchivedTreeArtifact artifact2 = createArchivedTreeArtifact(anotherRoot, "tree2"); new SerializationTester(artifact1, artifact2) .addDependency(FileSystem.class, scratch.getFileSystem()) diff --git a/src/test/java/com/google/devtools/build/lib/actions/CompositeRunfilesSupplierTest.java b/src/test/java/com/google/devtools/build/lib/actions/CompositeRunfilesSupplierTest.java index 9d11441f65ce2f..a9fadd1cc2338e 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/CompositeRunfilesSupplierTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/CompositeRunfilesSupplierTest.java @@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -49,7 +50,7 @@ public final void createMocks() throws IOException { Scratch scratch = new Scratch(); execRoot = scratch.getFileSystem().getPath("/"); rootDir = - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "fake", "root", "dont", "matter"); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "fake", "root", "dont", "matter"); mockFirst = mock(RunfilesSupplier.class); mockSecond = mock(RunfilesSupplier.class); diff --git a/src/test/java/com/google/devtools/build/lib/actions/CustomCommandLineTest.java b/src/test/java/com/google/devtools/build/lib/actions/CustomCommandLineTest.java index ced69a962da203..a2de19b501d231 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/CustomCommandLineTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/CustomCommandLineTest.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableMap; 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.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine; import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg; @@ -56,7 +57,7 @@ public class CustomCommandLineTest { @Before public void createArtifacts() throws Exception { Scratch scratch = new Scratch(); - rootDir = ArtifactRoot.asDerivedRoot(scratch.dir("/exec/root"), false, false, false, "dir"); + rootDir = ArtifactRoot.asDerivedRoot(scratch.dir("/exec/root"), RootType.Output, "dir"); artifact1 = ActionsTestUtil.createArtifact(rootDir, scratch.file("/exec/root/dir/file1.txt")); artifact2 = ActionsTestUtil.createArtifact(rootDir, scratch.file("/exec/root/dir/file2.txt")); } diff --git a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java index 46d76342358f1f..cbf0d52baaac75 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java @@ -20,6 +20,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.ActionExecutionContext.LostInputsCheck; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.actions.util.DummyExecutor; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; @@ -55,10 +56,10 @@ public final void createExecutor() throws Exception { execRoot = scratch.getFileSystem().getPath("/"); inputRoot = ArtifactRoot.asDerivedRoot( - execRoot, false, false, false, inputDir.relativeTo(execRoot).getPathString()); + execRoot, RootType.Output, inputDir.relativeTo(execRoot).getPathString()); String outSegment = "out"; execRoot.getChild(outSegment).createDirectoryAndParents(); - outputRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment); + outputRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment); outErr = new TestFileOutErr(); executor = new DummyExecutor(scratch.getFileSystem(), inputDir); } diff --git a/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java b/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java index 171263e3baa6a7..86ecfe0ae7d1df 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/FailActionTest.java @@ -18,6 +18,7 @@ import static org.junit.Assert.assertThrows; import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.server.FailureDetails.FailAction.Code; import com.google.devtools.build.lib.testutil.Scratch; @@ -45,7 +46,7 @@ public final void setUp() throws Exception { errorMessage = "An error just happened."; anOutput = ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot(scratch.dir("/"), false, false, false, "out"), + ArtifactRoot.asDerivedRoot(scratch.dir("/"), RootType.Output, "out"), scratch.file("/out/foo")); outputs = ImmutableList.of(anOutput); failAction = new FailAction(NULL_ACTION_OWNER, outputs, errorMessage, Code.FAIL_ACTION_UNKNOWN); diff --git a/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java b/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java index 5177fe623f7e79..41b80520fac76c 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java +++ b/src/test/java/com/google/devtools/build/lib/actions/MapBasedActionGraphTest.java @@ -16,6 +16,7 @@ import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.Sets; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.actions.util.ActionsTestUtil.UncheckedActionConflictException; @@ -52,7 +53,7 @@ public void testSmoke() throws Exception { Path path = root.getRelative("foo"); Artifact output = ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment), path); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment), path); Action action = new TestAction( TestAction.NO_EFFECT, @@ -63,7 +64,7 @@ public void testSmoke() throws Exception { path = root.getRelative("bar"); output = ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment), path); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment), path); Action action2 = new TestAction( TestAction.NO_EFFECT, @@ -83,7 +84,7 @@ public void testNoActionConflictWhenUnregisteringSharedAction() throws Exception Artifact output = ActionsTestUtil.createArtifact( ArtifactRoot.asDerivedRoot( - execRoot, false, false, false, root.relativeTo(execRoot).getPathString()), + execRoot, RootType.Output, root.relativeTo(execRoot).getPathString()), path); Action action = new TestAction( @@ -121,7 +122,7 @@ private ActionRegisterer() { Path path = root.getChild("foo"); output = ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, rootSegment), path); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, rootSegment), path); allActions.add( new TestAction( TestAction.NO_EFFECT, diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java index 277414885f33c5..a6d72bebc26406 100644 --- a/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java +++ b/src/test/java/com/google/devtools/build/lib/actions/util/ActionsTestUtil.java @@ -50,6 +50,7 @@ import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactResolver; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.BuildConfigurationEvent; import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.FileArtifactValue; @@ -262,7 +263,7 @@ public static void assertNoArtifactEndingWith(RuleConfiguredTarget target, Strin public static ArtifactRoot createArtifactRootFromTwoPaths(Path root, Path execPath) { return ArtifactRoot.asDerivedRoot( - root, false, false, false, execPath.relativeTo(root).getSegments().toArray(new String[0])); + root, RootType.Output, execPath.relativeTo(root).getSegments().toArray(new String[0])); } /** diff --git a/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java index c7e18b3877fc2e..311ae2e61cffe5 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/LocationFunctionTest.java @@ -21,6 +21,7 @@ import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.LocationExpander.LocationFunction; import com.google.devtools.build.lib.cmdline.Label; @@ -200,7 +201,7 @@ private static Artifact makeArtifact(String path) { FileSystem fs = new InMemoryFileSystem(DigestHashFunction.SHA256); if (path.startsWith("/exec/out")) { return ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot(fs.getPath("/exec"), false, false, false, "out"), + ArtifactRoot.asDerivedRoot(fs.getPath("/exec"), RootType.Output, "out"), fs.getPath(path)); } else { return ActionsTestUtil.createArtifact( diff --git a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImplTest.java b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImplTest.java index d922820a993309..87d419e7e873ec 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImplTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesSupplierImplTest.java @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.RunfilesSupplier; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.testutil.Scratch; @@ -40,7 +41,7 @@ public final void setRoot() { Scratch scratch = new Scratch(); Path execRoot = scratch.getFileSystem().getPath("/"); rootDir = - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "fake", "root", "dont", "matter"); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "fake", "root", "dont", "matter"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java index 811bc42c814838..03c863fcadab36 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.ActionLookupKey; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.LabelConstants; @@ -159,7 +160,7 @@ public Label getLabel() { @Test public void testPutDerivedArtifactWithDifferentOwnerDoesNotConflict() throws Exception { ArtifactRoot root = - ArtifactRoot.asDerivedRoot(scratch.dir("/workspace"), false, false, false, "out"); + ArtifactRoot.asDerivedRoot(scratch.dir("/workspace"), RootType.Output, "out"); PathFragment path = PathFragment.create("src/foo.cc"); SimpleActionLookupKey owner1 = new SimpleActionLookupKey("//owner1"); @@ -183,7 +184,7 @@ public void testPutDerivedArtifactWithDifferentOwnerDoesNotConflict() throws Exc @Test public void testPutDerivedArtifactWithDifferentPathConflicts() throws Exception { ArtifactRoot root = - ArtifactRoot.asDerivedRoot(scratch.dir("/workspace"), false, false, false, "out"); + ArtifactRoot.asDerivedRoot(scratch.dir("/workspace"), RootType.Output, "out"); PathFragment path = PathFragment.create("src/foo.cc"); PathFragment path2 = PathFragment.create("src/bar.cc"); @@ -492,7 +493,7 @@ public void testMergeEmptyWithNonEmpty() { public void testOnlyExtraMiddlemenNotConsideredEmpty() { ArtifactRoot root = ArtifactRoot.asDerivedRoot( - scratch.resolve("execroot"), true, false, false, PathFragment.create("out")); + scratch.resolve("execroot"), RootType.Middleman, PathFragment.create("out")); Artifact mm = ActionsTestUtil.createArtifact(root, "a-middleman"); Runfiles runfiles = new Runfiles.Builder("TESTING").addLegacyExtraMiddleman(mm).build(); assertThat(runfiles.isEmpty()).isFalse(); @@ -502,7 +503,7 @@ public void testOnlyExtraMiddlemenNotConsideredEmpty() { public void testMergingExtraMiddlemen() { ArtifactRoot root = ArtifactRoot.asDerivedRoot( - scratch.resolve("execroot"), true, false, false, PathFragment.create("out")); + scratch.resolve("execroot"), RootType.Middleman, PathFragment.create("out")); Artifact mm1 = ActionsTestUtil.createArtifact(root, "middleman-1"); Artifact mm2 = ActionsTestUtil.createArtifact(root, "middleman-2"); Runfiles runfiles1 = new Runfiles.Builder("TESTING").addLegacyExtraMiddleman(mm1).build(); diff --git a/src/test/java/com/google/devtools/build/lib/analysis/SourceManifestActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/SourceManifestActionTest.java index e32b4da3435069..f2b9ae3d35ac09 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/SourceManifestActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/SourceManifestActionTest.java @@ -21,6 +21,7 @@ import com.google.devtools.build.lib.actions.ActionExecutionException; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.SourceManifestAction.ManifestType; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; @@ -75,7 +76,7 @@ public final void createFiles() throws Exception { fakeManifest.put(buildFilePath.relativeTo(rootDirectory), buildFile); fakeManifest.put(pythonSourcePath.relativeTo(rootDirectory), pythonSourceFile); ArtifactRoot outputDir = - ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, "blaze-output"); + ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, "blaze-output"); manifestOutputPath = rootDirectory.getRelative("blaze-output/trivial.runfiles_manifest"); manifestOutputFile = ActionsTestUtil.createArtifact(outputDir, manifestOutputPath); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelperTest.java b/src/test/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelperTest.java index 351d82704bd3fb..d19b129807bd4b 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelperTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/TopLevelArtifactHelperTest.java @@ -24,6 +24,7 @@ import com.google.common.collect.ImmutableSortedSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsInOutputGroup; import com.google.devtools.build.lib.analysis.TopLevelArtifactHelper.ArtifactsToBuild; @@ -53,7 +54,7 @@ public class TopLevelArtifactHelperTest { public final void setRootDir() throws Exception { Scratch scratch = new Scratch(); Path execRoot = scratch.getFileSystem().getPath("/"); - root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "blaze-out"); + root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "blaze-out"); path = scratch.dir("/blaze-out/foo"); } diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java index aa67978485669e..9aa676df3db854 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java @@ -27,6 +27,7 @@ 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.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.CommandLine; import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType; @@ -60,7 +61,7 @@ public class ParamFileWriteActionTest extends BuildViewTestCase { @Before public void createArtifacts() throws Exception { Path execRoot = scratch.getFileSystem().getPath("/exec"); - rootDir = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"); + rootDir = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"); outputArtifact = getBinArtifactWithNoOwner("destination.txt"); outputArtifact.getPath().getParentDirectory().createDirectoryAndParents(); treeArtifact = createTreeArtifact("artifact/myTreeFileArtifact"); diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java index 8c8a98f3dad27a..d50641a306050e 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SpawnActionTemplateTest.java @@ -25,6 +25,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate.OutputPathMapper; import com.google.devtools.build.lib.testutil.Scratch; @@ -54,7 +55,7 @@ public PathFragment parentRelativeOutputPath(TreeFileArtifact inputTreeFileArtif public void setRootDir() throws Exception { Scratch scratch = new Scratch(); Path execRoot = scratch.getFileSystem().getPath("/"); - root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "root"); + root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "root"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java index c80735a489c7c0..60f776f84d83dc 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.actions.ActionKeyContext; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.Executor; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.BlazeDirectories; @@ -87,7 +88,7 @@ public final void createDirectoriesAndTools() throws Exception { private void createArtifacts(String template) throws Exception { ArtifactRoot workspace = ArtifactRoot.asSourceRoot(Root.fromPath(scratch.dir("/workspace"))); scratch.dir("/workspace/out"); - outputRoot = ArtifactRoot.asDerivedRoot(scratch.dir("/workspace"), false, false, false, "out"); + outputRoot = ArtifactRoot.asDerivedRoot(scratch.dir("/workspace"), RootType.Output, "out"); Path input = scratch.overwriteFile("/workspace/input.txt", StandardCharsets.UTF_8, template); inputArtifact = ActionsTestUtil.createArtifact(workspace, input); output = scratch.resolve("/workspace/out/destination.txt"); diff --git a/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLineTest.java b/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLineTest.java index 4f4e8884fa961e..41272aaef5c405 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLineTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/starlark/StarlarkCustomCommandLineTest.java @@ -28,6 +28,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.CommandLineExpansionException; import com.google.devtools.build.lib.actions.FilesetOutputSymlink; import com.google.devtools.build.lib.actions.HasDigest; @@ -59,7 +60,7 @@ public class StarlarkCustomCommandLineTest { @Before public void createArtifactRoot() throws IOException { execRoot = scratch.dir("execroot"); - derivedRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "bin"); + derivedRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "bin"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/exec/SpawnInputExpanderTest.java b/src/test/java/com/google/devtools/build/lib/exec/SpawnInputExpanderTest.java index 371f19eed41717..05827f4b23cf3b 100644 --- a/src/test/java/com/google/devtools/build/lib/exec/SpawnInputExpanderTest.java +++ b/src/test/java/com/google/devtools/build/lib/exec/SpawnInputExpanderTest.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.EmptyRunfilesSupplier; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FilesetOutputSymlink; @@ -67,8 +68,7 @@ public class SpawnInputExpanderTest { private final FileSystem fs = new InMemoryFileSystem(DigestHashFunction.SHA256); private final Path execRoot = fs.getPath("/root"); - private final ArtifactRoot rootDir = - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"); + private final ArtifactRoot rootDir = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"); private SpawnInputExpander expander = new SpawnInputExpander(execRoot, /*strict=*/ true); private Map inputMappings = new HashMap<>(); @@ -359,8 +359,7 @@ private SpecialArtifact createSpecialArtifact(String relPath, SpecialArtifactTyp Path outputDir = execRoot.getRelative(outputSegment); Path outputPath = outputDir.getRelative(relPath); outputPath.createDirectoryAndParents(); - ArtifactRoot derivedRoot = - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outputSegment); + ArtifactRoot derivedRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outputSegment); return new SpecialArtifact( derivedRoot, derivedRoot.getExecPath().getRelative(derivedRoot.getRoot().relativize(outputPath)), diff --git a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java index db775883d56426..704bb21f13667d 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/ByteStreamBuildEventArtifactUploaderTest.java @@ -37,6 +37,7 @@ import com.google.devtools.build.lib.actions.ActionInputMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; @@ -118,7 +119,7 @@ public final void setUp() throws Exception { // on different threads than the setUp. prevContext = withEmptyMetadata.attach(); - outputRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"); + outputRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"); outputRoot.getRoot().asPath().createDirectoryAndParents(); retryService = MoreExecutors.listeningDecorator(Executors.newScheduledThreadPool(1)); diff --git a/src/test/java/com/google/devtools/build/lib/remote/RemoteActionFileSystemTest.java b/src/test/java/com/google/devtools/build/lib/remote/RemoteActionFileSystemTest.java index c48388670bb4b5..8b9051559030b5 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/RemoteActionFileSystemTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/RemoteActionFileSystemTest.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.actions.ActionInputMap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; @@ -59,7 +60,7 @@ public void setUp() throws IOException { MockitoAnnotations.initMocks(this); fs = new InMemoryFileSystem(new JavaClock(), HASH_FUNCTION); execRoot = fs.getPath("/exec"); - outputRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"); + outputRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"); outputRoot.getRoot().asPath().createDirectoryAndParents(); } diff --git a/src/test/java/com/google/devtools/build/lib/remote/RemoteActionInputFetcherTest.java b/src/test/java/com/google/devtools/build/lib/remote/RemoteActionInputFetcherTest.java index 9d446472d27242..8810319a3fe280 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/RemoteActionInputFetcherTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/RemoteActionInputFetcherTest.java @@ -30,6 +30,7 @@ import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; import com.google.devtools.build.lib.actions.MetadataProvider; @@ -77,7 +78,7 @@ public void setUp() throws IOException { Path dev = fs.getPath("/dev"); dev.createDirectory(); dev.setWritable(false); - artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "root"); + artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "root"); artifactRoot.getRoot().asPath().createDirectoryAndParents(); options = Options.getDefaults(RemoteOptions.class); digestUtil = new DigestUtil(HASH_FUNCTION); diff --git a/src/test/java/com/google/devtools/build/lib/remote/RemoteCacheTests.java b/src/test/java/com/google/devtools/build/lib/remote/RemoteCacheTests.java index ec0d2cf7af65c1..2fb158a112300e 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/RemoteCacheTests.java +++ b/src/test/java/com/google/devtools/build/lib/remote/RemoteCacheTests.java @@ -47,6 +47,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.ExecException; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; import com.google.devtools.build.lib.actions.cache.MetadataInjector; @@ -113,7 +114,7 @@ public void setUp() throws Exception { execRoot = fs.getPath("/execroot"); execRoot.createDirectoryAndParents(); fakeFileCache = new FakeActionInputFileCache(execRoot); - artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "outputs"); + artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "outputs"); artifactRoot.getRoot().asPath().createDirectoryAndParents(); retryService = MoreExecutors.listeningDecorator(Executors.newScheduledThreadPool(1)); } diff --git a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java index e6851d78392f2c..4e9cdceab39978 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/RemoteSpawnRunnerTest.java @@ -52,6 +52,7 @@ import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.CommandLines.ParamFileActionInput; import com.google.devtools.build.lib.actions.ExecutionRequirements; import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType; @@ -1015,7 +1016,7 @@ public void testDownloadTopLevel() throws Exception { RemoteOptions options = Options.getDefaults(RemoteOptions.class); options.remoteOutputsMode = RemoteOutputsMode.TOPLEVEL; - ArtifactRoot outputRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "outs"); + ArtifactRoot outputRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "outs"); Artifact topLevelOutput = ActionsTestUtil.createArtifact(outputRoot, outputRoot.getRoot().getRelative("foo.bin")); diff --git a/src/test/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeTest.java b/src/test/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeTest.java index 239d220113afa8..e4be7d41edbed3 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/merkletree/DirectoryTreeTest.java @@ -16,6 +16,7 @@ import static com.google.common.truth.Truth.assertThat; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.clock.JavaClock; import com.google.devtools.build.lib.remote.merkletree.DirectoryTree.DirectoryNode; import com.google.devtools.build.lib.remote.merkletree.DirectoryTree.FileNode; @@ -48,7 +49,7 @@ public abstract class DirectoryTreeTest { public void setup() { FileSystem fs = new InMemoryFileSystem(new JavaClock(), DigestHashFunction.SHA256); execRoot = fs.getPath("/exec"); - artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "srcs"); + artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "srcs"); digestUtil = new DigestUtil(fs.getDigestFunction()); } diff --git a/src/test/java/com/google/devtools/build/lib/remote/merkletree/MerkleTreeTest.java b/src/test/java/com/google/devtools/build/lib/remote/merkletree/MerkleTreeTest.java index 4b8ba99578b47b..923f075c1b2faf 100644 --- a/src/test/java/com/google/devtools/build/lib/remote/merkletree/MerkleTreeTest.java +++ b/src/test/java/com/google/devtools/build/lib/remote/merkletree/MerkleTreeTest.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.actions.ActionInput; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.clock.JavaClock; @@ -58,7 +59,7 @@ public class MerkleTreeTest { public void setup() { FileSystem fs = new InMemoryFileSystem(new JavaClock(), DigestHashFunction.SHA256); execRoot = fs.getPath("/exec"); - artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "srcs"); + artifactRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "srcs"); digestUtil = new DigestUtil(fs.getDigestFunction()); } diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java index a8911377b7e4e3..05e8c852ac3850 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java @@ -27,6 +27,7 @@ import com.google.common.collect.Multimap; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.ActionConfig; @@ -114,7 +115,7 @@ private Artifact scratchArtifact(String s) { Path execRoot = outputBase.getRelative("exec"); String outSegment = "out"; Path outputRoot = execRoot.getRelative(outSegment); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment); try { return ActionsTestUtil.createArtifact( root, scratch.overwriteFile(outputRoot.getRelative(s).toString())); diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java index 8c6b7fe2b479d4..f71d504a6d0a2f 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CompileCommandLineTest.java @@ -18,6 +18,7 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.rules.cpp.CcCommon.CoptsFilter; @@ -49,7 +50,7 @@ private Artifact scratchArtifact(String s) { Path execRoot = outputBase.getRelative("exec"); String outSegment = "root"; Path outputRoot = execRoot.getRelative(outSegment); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment); try { return ActionsTestUtil.createArtifact( root, scratch.overwriteFile(outputRoot.getRelative(s).toString())); diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java index b3d8a429247f19..ef43ef98640e3f 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java @@ -30,6 +30,7 @@ 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.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.ResourceSet; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -700,7 +701,7 @@ private Artifact scratchArtifact(String s) { Path execRoot = outputBase.getRelative("exec"); String outSegment = "out"; Path outputRoot = execRoot.getRelative(outSegment); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment); try { return ActionsTestUtil.createArtifact( root, scratch.overwriteFile(outputRoot.getRelative(s).toString())); @@ -858,7 +859,7 @@ private SpecialArtifact createTreeArtifact(String name) { Path execRoot = fs.getPath(TestUtils.tmpDir()); PathFragment execPath = PathFragment.create("out").getRelative(name); return ActionsTestUtil.createTreeArtifactWithGeneratingAction( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"), execPath); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"), execPath); } private void verifyArguments( diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java index baaa657e7cce5c..51947b9ecd7aed 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactPathResolver; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.actions.util.DummyExecutor; import com.google.devtools.build.lib.collect.nestedset.NestedSetExpander; @@ -49,7 +50,7 @@ public class CreateIncSymlinkActionTest extends FoundationTestCase { public void testDifferentOrderSameActionKey() { String outSegment = "out"; Path includePath = rootDirectory.getRelative(outSegment); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, outSegment); Artifact a = ActionsTestUtil.createArtifact(root, "a"); Artifact b = ActionsTestUtil.createArtifact(root, "b"); Artifact c = ActionsTestUtil.createArtifact(root, "c"); @@ -71,7 +72,7 @@ public void testDifferentOrderSameActionKey() { public void testDifferentTargetsDifferentActionKey() { String outSegment = "out"; Path includePath = rootDirectory.getRelative(outSegment); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, outSegment); Artifact a = ActionsTestUtil.createArtifact(root, "a"); Artifact b = ActionsTestUtil.createArtifact(root, "b"); CreateIncSymlinkAction action1 = @@ -89,7 +90,7 @@ public void testDifferentTargetsDifferentActionKey() { public void testDifferentSymlinksDifferentActionKey() { String outSegment = "out"; Path includePath = rootDirectory.getRelative(outSegment); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, outSegment); Artifact a = ActionsTestUtil.createArtifact(root, "a"); Artifact b = ActionsTestUtil.createArtifact(root, "b"); CreateIncSymlinkAction action1 = @@ -108,7 +109,7 @@ public void testExecute() throws Exception { String outSegment = "out"; Path outputDir = rootDirectory.getRelative(outSegment); outputDir.createDirectory(); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, outSegment); Path symlink = rootDirectory.getRelative("out/a"); Artifact a = ActionsTestUtil.createArtifact(root, symlink); Artifact b = ActionsTestUtil.createArtifact(root, "b"); @@ -146,7 +147,7 @@ public void testFileRemoved() throws Exception { String outSegment = "out"; Path outputDir = rootDirectory.getRelative(outSegment); outputDir.createDirectory(); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, outSegment); Path symlink = rootDirectory.getRelative("out/subdir/a"); Artifact a = ActionsTestUtil.createArtifact(root, symlink); Artifact b = ActionsTestUtil.createArtifact(root, "b"); diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/HeaderDiscoveryTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/HeaderDiscoveryTest.java index 3449acb3c6ff13..61bf6b3154792c 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/HeaderDiscoveryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/HeaderDiscoveryTest.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact; import com.google.devtools.build.lib.actions.ArtifactResolver; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.collect.nestedset.NestedSet; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; @@ -44,7 +45,7 @@ public class HeaderDiscoveryTest { private final Path execRoot = fs.getPath("/execroot"); private final Path derivedRoot = execRoot.getChild(DERIVED_SEGMENT); private final ArtifactRoot artifactRoot = - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, DERIVED_SEGMENT); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, DERIVED_SEGMENT); @Test public void errorsWhenMissingHeaders() { diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLineTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLineTest.java index 1b59ddc3f2ec12..e5f8a354af98fb 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLineTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkCommandLineTest.java @@ -25,6 +25,7 @@ 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.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration; @@ -58,7 +59,7 @@ private Artifact scratchArtifact(String s) { Path execRoot = outputBase.getRelative("exec"); String outSegment = "root"; Path outputRoot = execRoot.getRelative(outSegment); - ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment); + ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment); try { return ActionsTestUtil.createArtifact( root, scratch.overwriteFile(outputRoot.getRelative(s).toString())); @@ -392,7 +393,7 @@ private SpecialArtifact createTreeArtifact(String name) { Path execRoot = fs.getPath(TestUtils.tmpDir()); PathFragment execPath = PathFragment.create("out").getRelative(name); return ActionsTestUtil.createTreeArtifactWithGeneratingAction( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"), execPath); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"), execPath); } private void verifyArguments( diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategyTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategyTest.java index 951bd5d955a405..28cb32d7c108c4 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategyTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SpawnGccStrategyTest.java @@ -23,6 +23,7 @@ import com.google.devtools.build.lib.actions.AbstractAction; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.ExecutionRequirements; import com.google.devtools.build.lib.actions.Spawn; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; @@ -51,7 +52,7 @@ public final class SpawnGccStrategyTest { public void setup() { fs = new InMemoryFileSystem(new JavaClock(), DigestHashFunction.SHA256); execRoot = fs.getPath("/exec/root"); - ar = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"); + ar = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcSourceTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcSourceTest.java index 348aac85ddfbb4..bad5397f96ae6d 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcSourceTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcSourceTest.java @@ -19,6 +19,7 @@ import com.google.common.testing.EqualsTester; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.testutil.Scratch; @@ -42,7 +43,7 @@ public final void setRootDir() throws Exception { Path execRoot = scratch.getFileSystem().getPath("/exec"); String outSegment = "root"; execRoot.getChild(outSegment).createDirectoryAndParents(); - rootDir = ArtifactRoot.asDerivedRoot(execRoot, false, false, false, outSegment); + rootDir = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outSegment); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java index 5418d015abb330..bd65123e14843e 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/proto/ProtoCompileActionBuilderTest.java @@ -23,6 +23,7 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.actions.util.LabelArtifactOwner; import com.google.devtools.build.lib.analysis.FilesToRunProvider; @@ -55,7 +56,7 @@ public class ProtoCompileActionBuilderTest { private final ArtifactRoot root = ArtifactRoot.asSourceRoot(Root.fromPath(FILE_SYSTEM.getPath("/"))); private final ArtifactRoot derivedRoot = - ArtifactRoot.asDerivedRoot(FILE_SYSTEM.getPath("/"), false, false, false, "out"); + ArtifactRoot.asDerivedRoot(FILE_SYSTEM.getPath("/"), RootType.Output, "out"); private ProtoSource protoSource(String importPath) { return protoSource(artifact("//:dont-care", importPath)); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionExecutionValueTransformSharedTreeArtifactsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionExecutionValueTransformSharedTreeArtifactsTest.java index a9a31ef54e226a..635cdec3a008a0 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionExecutionValueTransformSharedTreeArtifactsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionExecutionValueTransformSharedTreeArtifactsTest.java @@ -29,6 +29,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.skyframe.TreeArtifactValue.ArchivedRepresentation; import com.google.devtools.build.lib.testutil.Scratch; @@ -68,8 +69,7 @@ public static ImmutableList archivedRepresentationOptions() { @Before public void createDerivedRoot() throws IOException { derivedRoot = - ArtifactRoot.asDerivedRoot( - scratch.dir("/execroot"), false, false, false, DERIVED_PATH_PREFIX); + ArtifactRoot.asDerivedRoot(scratch.dir("/execroot"), RootType.Output, DERIVED_PATH_PREFIX); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandlerTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandlerTest.java index cabc4392495cea..806fd621870f12 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandlerTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionMetadataHandlerTest.java @@ -29,6 +29,7 @@ import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactPathResolver; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; import com.google.devtools.build.lib.actions.FilesetOutputSymlink; @@ -77,8 +78,7 @@ public void chmod(Path path, int mode) throws IOException { ArtifactRoot.asSourceRoot(Root.fromPath(scratch.resolve("/workspace"))); private final PathFragment derivedPathPrefix = PathFragment.create("bin"); private final ArtifactRoot outputRoot = - ArtifactRoot.asDerivedRoot( - scratch.resolve("/output"), false, false, false, derivedPathPrefix); + ArtifactRoot.asDerivedRoot(scratch.resolve("/output"), RootType.Output, derivedPathPrefix); private final Path execRoot = outputRoot.getRoot().asPath(); @Before diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java index 47de9538fdd29f..91480459e8e9c6 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ActionTemplateExpansionFunctionTest.java @@ -38,6 +38,7 @@ import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactPrefixConflictException; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.MiddlemanType; import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException; @@ -374,7 +375,7 @@ private static ConfiguredTargetValue createConfiguredTargetValue( private SpecialArtifact createTreeArtifact(String path) { PathFragment execPath = PathFragment.create("out").getRelative(path); return new SpecialArtifact( - ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, "out"), execPath, CTKEY, SpecialArtifactType.TREE); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java index acc35334f6581d..28557c4b13631d 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ArtifactFunctionTest.java @@ -33,6 +33,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.BasicActionLookupValue; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FilesetOutputSymlink; @@ -361,7 +362,7 @@ private DerivedArtifact createDerivedArtifact(String path) { PathFragment execPath = PathFragment.create("out").getRelative(path); DerivedArtifact output = new DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, ALL_OWNER); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, ALL_OWNER); actions.add(new DummyAction(NestedSetBuilder.emptySet(Order.STABLE_ORDER), output)); output.setGeneratingActionKey(ActionLookupData.create(ALL_OWNER, actions.size() - 1)); return output; @@ -369,7 +370,7 @@ private DerivedArtifact createDerivedArtifact(String path) { private Artifact createMiddlemanArtifact(String path) { ArtifactRoot middlemanRoot = - ArtifactRoot.asDerivedRoot(middlemanPath, true, false, false, PathFragment.create("out")); + ArtifactRoot.asDerivedRoot(middlemanPath, RootType.Middleman, PathFragment.create("out")); return new DerivedArtifact( middlemanRoot, middlemanRoot.getExecPath().getRelative(path), ALL_OWNER); } @@ -384,7 +385,7 @@ private SpecialArtifact createDerivedTreeArtifactWithAction(String path) { private SpecialArtifact createDerivedTreeArtifactOnly(String path) { PathFragment execPath = PathFragment.create("out").getRelative(path); return new SpecialArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, ALL_OWNER, SpecialArtifactType.TREE); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java index 5bd7122d4c8a2b..47c2d8fcee15d3 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java @@ -28,6 +28,7 @@ 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.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; import com.google.devtools.build.lib.actions.FileStateValue; @@ -719,7 +720,7 @@ private Artifact createDerivedArtifact(String relPath) throws IOException { Path outputPath = fs.getPath("/" + outSegment); outputPath.createDirectory(); return ActionsTestUtil.createArtifact( - ArtifactRoot.asDerivedRoot(fs.getPath("/"), false, false, false, outSegment), + ArtifactRoot.asDerivedRoot(fs.getPath("/"), RootType.Output, outSegment), outputPath.getRelative(relPath)); } diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTestBase.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTestBase.java index 78d2592d9251d4..a4cf511e7ff68d 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTestBase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTestBase.java @@ -21,6 +21,7 @@ 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.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; import com.google.devtools.build.lib.cmdline.Label; @@ -69,7 +70,7 @@ SpecialArtifact createTreeArtifact(String relPath) throws IOException { Path outputPath = outputDir.getRelative(relPath); outputDir.createDirectory(); ArtifactRoot derivedRoot = - ArtifactRoot.asDerivedRoot(fs.getPath("/"), false, false, false, outSegment); + ArtifactRoot.asDerivedRoot(fs.getPath("/"), RootType.Output, outSegment); return ActionsTestUtil.createTreeArtifactWithGeneratingAction( derivedRoot, derivedRoot.getExecPath().getRelative(derivedRoot.getRoot().relativize(outputPath))); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java index 2a571754646c76..52e214ae04aca0 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java @@ -34,6 +34,7 @@ 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.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileContentsProxy; import com.google.devtools.build.lib.actions.FileStateValue; @@ -213,7 +214,7 @@ private Artifact sourceArtifactUnderPackagePath(String path, String packagePath) private SpecialArtifact treeArtifact(String path) { return ActionsTestUtil.createTreeArtifactWithGeneratingAction( - ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, "out"), PathFragment.create("out/" + path)); } @@ -228,7 +229,7 @@ private Artifact derivedArtifact(String path) { Artifact.DerivedArtifact result = (Artifact.DerivedArtifact) ActionsTestUtil.createArtifactWithExecPath( - ArtifactRoot.asDerivedRoot(rootDirectory, false, false, false, "out"), execPath); + ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, "out"), execPath); result.setGeneratingActionKey( ActionLookupData.create(ActionsTestUtil.NULL_ARTIFACT_OWNER, artifacts.size())); artifacts.add(result); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java index ef8362ace75e9d..4b74c76d078204 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/SequencedSkyframeExecutorTest.java @@ -58,6 +58,7 @@ import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.ArtifactResolver; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.BuildFailedException; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileStateValue; @@ -663,7 +664,7 @@ public void testSharedActionsNoOutputs() throws Exception { ActionLookupKey lc1 = new InjectedActionLookupKey("lc1"); Artifact output1 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lc1); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc1); Action action1 = new MissingOutputAction( NestedSetBuilder.emptySet(Order.STABLE_ORDER), output1, MiddlemanType.NORMAL); @@ -671,7 +672,7 @@ public void testSharedActionsNoOutputs() throws Exception { ActionLookupKey lc2 = new InjectedActionLookupKey("lc2"); Artifact output2 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lc2); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc2); Action action2 = new MissingOutputAction( NestedSetBuilder.emptySet(Order.STABLE_ORDER), output2, MiddlemanType.NORMAL); @@ -726,7 +727,7 @@ public void testSharedActionsRacing() throws Exception { ActionLookupKey inputKey = new InjectedActionLookupKey("input"); Artifact input = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), PathFragment.create("out").getRelative("input"), inputKey); Action baseAction = @@ -735,7 +736,7 @@ public void testSharedActionsRacing() throws Exception { ActionLookupKey lc1 = new InjectedActionLookupKey("lc1"); Artifact output1 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lc1); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc1); Action action1 = new DummyAction( NestedSetBuilder.create(Order.STABLE_ORDER, input), output1, MiddlemanType.NORMAL); @@ -743,7 +744,7 @@ public void testSharedActionsRacing() throws Exception { ActionLookupKey lc2 = new InjectedActionLookupKey("lc2"); Artifact output2 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lc2); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc2); Action action2 = new DummyAction( NestedSetBuilder.create(Order.STABLE_ORDER, input), output2, MiddlemanType.NORMAL); @@ -826,7 +827,7 @@ public void testThreeSharedActionsRacing() throws Exception { ActionLookupKey lcA = new InjectedActionLookupKey("lcA"); Artifact outputA = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lcA); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lcA); CountDownLatch actionAStartedSoOthersCanProceed = new CountDownLatch(1); CountDownLatch actionCFinishedSoACanFinish = new CountDownLatch(1); Action actionA = @@ -851,7 +852,7 @@ public void testThreeSharedActionsRacing() throws Exception { ActionLookupKey lcB = new InjectedActionLookupKey("lcB"); Artifact outputB = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lcB); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lcB); Action actionB = new DummyAction( NestedSetBuilder.emptySet(Order.STABLE_ORDER), outputB, MiddlemanType.NORMAL); @@ -859,7 +860,7 @@ public void testThreeSharedActionsRacing() throws Exception { ActionLookupKey lcC = new InjectedActionLookupKey("lcC"); Artifact outputC = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lcC); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lcC); Action actionC = new DummyAction( NestedSetBuilder.emptySet(Order.STABLE_ORDER), outputC, MiddlemanType.NORMAL); @@ -983,7 +984,7 @@ public void sharedActionsWithTree() throws Exception { ActionLookupKey lc1 = new InjectedActionLookupKey("lc1"); SpecialArtifact output1 = new SpecialArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc1, Artifact.SpecialArtifactType.TREE); @@ -994,7 +995,7 @@ public void sharedActionsWithTree() throws Exception { ActionLookupKey lc2 = new InjectedActionLookupKey("lc2"); SpecialArtifact output2 = new SpecialArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc2, Artifact.SpecialArtifactType.TREE); @@ -1080,7 +1081,7 @@ public void sharedActionTemplate() throws Exception { ActionLookupKey baseKey = new InjectedActionLookupKey("base"); SpecialArtifact baseOutput = new SpecialArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, baseKey, Artifact.SpecialArtifactType.TREE); @@ -1092,7 +1093,7 @@ public void sharedActionTemplate() throws Exception { PathFragment execPath2 = PathFragment.create("out").getRelative("treesShared"); SpecialArtifact sharedOutput1 = new SpecialArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath2, shared1, Artifact.SpecialArtifactType.TREE); @@ -1102,7 +1103,7 @@ public void sharedActionTemplate() throws Exception { ActionLookupKey shared2 = new InjectedActionLookupKey("shared2"); SpecialArtifact sharedOutput2 = new SpecialArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath2, shared2, Artifact.SpecialArtifactType.TREE); @@ -1274,7 +1275,7 @@ public void incrementalSharedActions() throws Exception { ActionLookupKey lc1 = new InjectedActionLookupKey("lc1"); Artifact output1 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lc1); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc1); Action action1 = new DummyAction( NestedSetBuilder.emptySet(Order.STABLE_ORDER), output1, MiddlemanType.NORMAL); @@ -1282,7 +1283,7 @@ public void incrementalSharedActions() throws Exception { ActionLookupKey lc2 = new InjectedActionLookupKey("lc2"); Artifact output2 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), execPath, lc2); + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc2); CountDownLatch action2Running = new CountDownLatch(1); CountDownLatch topActionTestedOutput = new CountDownLatch(1); Action action2 = @@ -1301,7 +1302,7 @@ public void incrementalSharedActions() throws Exception { ActionLookupKey topLc = new InjectedActionLookupKey("top"); Artifact top = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), relativeOut.getChild("top"), topLc); Action topAction = @@ -1375,7 +1376,7 @@ public void analysisEventsNotStoredInExecution() throws Exception { ActionLookupKey lc1 = new InjectedActionLookupKey("lc1"); Artifact output = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("foo"), lc1); Action action1 = new WarningAction(ImmutableList.of(), output, "action 1"); @@ -1390,7 +1391,7 @@ public void analysisEventsNotStoredInExecution() throws Exception { ActionLookupKey lc2 = new InjectedActionLookupKey("lc2"); Artifact output2 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("bar"), lc2); Action action2 = new WarningAction(ImmutableList.of(output), output2, "action 2"); @@ -1552,7 +1553,7 @@ private void runCatastropheHaltsBuild() throws Exception { ActionLookupKey lc1 = new InjectedActionLookupKey("lc1"); Artifact output = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("foo"), lc1); Action action1 = new CatastrophicAction(output); @@ -1560,7 +1561,7 @@ private void runCatastropheHaltsBuild() throws Exception { ActionLookupKey lc2 = new InjectedActionLookupKey("lc2"); Artifact output2 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("bar"), lc2); AtomicBoolean markerRan = new AtomicBoolean(false); @@ -1652,7 +1653,7 @@ public void testTransitiveCatastropheHaltsBuild() throws Exception { ActionLookupKey catastropheCTK = new InjectedActionLookupKey("catastrophe"); Artifact catastropheArtifact = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("zcatas"), catastropheCTK); CountDownLatch failureHappened = new CountDownLatch(1); @@ -1671,7 +1672,7 @@ public ActionResult execute(ActionExecutionContext actionExecutionContext) ActionLookupKey failureCTK = new InjectedActionLookupKey("failure"); Artifact failureArtifact = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("fail"), failureCTK); Action failureAction = new FailedExecAction(failureArtifact, USER_DETAILED_EXIT_CODE); @@ -1679,7 +1680,7 @@ public ActionResult execute(ActionExecutionContext actionExecutionContext) ActionLookupKey topCTK = new InjectedActionLookupKey("top"); Artifact topArtifact = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("top"), topCTK); Action topAction = @@ -1765,7 +1766,7 @@ public void testCatastropheAndNonCatastropheInCompletion() throws Exception { ActionLookupKey configuredTargetKey = new InjectedActionLookupKey("key"); Artifact catastropheArtifact = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("catas"), configuredTargetKey); int failedSize = 100; @@ -1789,7 +1790,7 @@ public ActionResult execute(ActionExecutionContext actionExecutionContext) String failString = HashCode.fromBytes(("fail" + i).getBytes(UTF_8)).toString(); Artifact failureArtifact = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative(failString), configuredTargetKey); failedArtifacts.add(failureArtifact); @@ -1907,7 +1908,7 @@ public void testCatastropheReportingWithError() throws Exception { ActionLookupKey failedKey = new InjectedActionLookupKey("failed"); Artifact failedOutput = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("failed"), failedKey); AtomicReference failedActionReference = new AtomicReference<>(); @@ -1932,7 +1933,7 @@ public Void call() throws ActionExecutionException { ActionLookupKey catastrophicKey = new InjectedActionLookupKey("catastrophic"); Artifact catastrophicOutput = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("catastrophic"), catastrophicKey); Action catastrophicAction = new CatastrophicAction(catastrophicOutput); @@ -2028,14 +2029,14 @@ public void testKeepGoingExitCodeWithUserError() throws Exception { ActionLookupKey succeededKey = new InjectedActionLookupKey("succeeded"); Artifact succeededOutput = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("succeeded"), succeededKey); ActionLookupKey failedKey = new InjectedActionLookupKey("failed"); Artifact failedOutput = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("failed"), failedKey); @@ -2114,21 +2115,21 @@ public void testKeepGoingExitCodeWithUserAndInfrastructureError() throws Excepti ActionLookupKey succeededKey = new InjectedActionLookupKey("succeeded"); Artifact succeededOutput = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("succeeded"), succeededKey); ActionLookupKey failedKey1 = new InjectedActionLookupKey("failed1"); Artifact failedOutput1 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("failed1"), failedKey1); ActionLookupKey failedKey2 = new InjectedActionLookupKey("failed2"); Artifact failedOutput2 = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("failed2"), failedKey2); @@ -2215,7 +2216,7 @@ public void inputDiscoveryMessageDoesntLinger() throws Exception { ActionLookupKey topKey = new InjectedActionLookupKey("top"); Artifact topOutput = new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath.getRelative("top"), topKey); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java index 3e0d8cd2a0ee85..d23b8b382a12b6 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java @@ -40,6 +40,7 @@ import com.google.devtools.build.lib.actions.Actions; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.BasicActionLookupValue; import com.google.devtools.build.lib.actions.BuildFailedException; import com.google.devtools.build.lib.actions.Executor; @@ -441,9 +442,7 @@ Artifact createDerivedArtifact(FileSystem fs, String name) { Path execRoot = fs.getPath(TestUtils.tmpDir()); PathFragment execPath = PathFragment.create("out").getRelative(name); return new Artifact.DerivedArtifact( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"), - execPath, - ACTION_LOOKUP_KEY); + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"), execPath, ACTION_LOOKUP_KEY); } /** Creates and returns a new "amnesiac" builder based on the amnesiac cache. */ diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java index 7521e31bbed25c..9dfedd79f8ec78 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java @@ -37,6 +37,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.BuildFailedException; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; @@ -966,7 +967,7 @@ private SpecialArtifact createTreeArtifact(String name) { fs.getPath(TestUtils.tmpDir()).getRelative("execroot").getRelative("default-exec-root"); PathFragment execPath = PathFragment.create("out").getRelative(name); return new SpecialArtifact( - ArtifactRoot.asDerivedRoot(execRoot, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"), execPath, ACTION_LOOKUP_KEY, SpecialArtifactType.TREE); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java index 9b83081949203f..9ffe7be43aa44e 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactMetadataTest.java @@ -31,6 +31,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.BasicActionLookupValue; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.MissingInputFileException; @@ -216,7 +217,7 @@ private SpecialArtifact createTreeArtifact(String path) throws IOException { Path fullPath = root.getRelative(execPath); SpecialArtifact output = new SpecialArtifact( - ArtifactRoot.asDerivedRoot(root, false, false, false, "out"), + ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, ALL_OWNER, SpecialArtifactType.TREE); diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java index e0e6e0f886d2c4..bb71599a37a897 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactValueTest.java @@ -26,6 +26,7 @@ import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactRoot; +import com.google.devtools.build.lib.actions.ArtifactRoot.RootType; import com.google.devtools.build.lib.actions.FileArtifactValue; import com.google.devtools.build.lib.actions.FileArtifactValue.RemoteFileArtifactValue; import com.google.devtools.build.lib.actions.util.ActionsTestUtil; @@ -55,7 +56,7 @@ public final class TreeArtifactValueTest { private final Scratch scratch = new Scratch(); private final ArtifactRoot root = - ArtifactRoot.asDerivedRoot(scratch.resolve("root"), false, false, false, BIN_PATH); + ArtifactRoot.asDerivedRoot(scratch.resolve("root"), RootType.Output, BIN_PATH); @Test public void createsCorrectValue() {