Replace `Artifact` constructors with factory methods and simplify deserialization code.
Private constructors now take `Object` for `owner`, allowing deserialization to pass the generating action key directly instead of calling `setGeneratingActionKey`.
PiperOrigin-RevId: 399206504
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 abeca74..2277299 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
@@ -388,22 +388,32 @@
*/
private final boolean contentBasedPath;
- /** Standard constructor for derived artifacts. */
- public DerivedArtifact(ArtifactRoot root, PathFragment execPath, ActionLookupKey owner) {
- this(root, execPath, owner, /*contentBasedPath=*/ false);
+ /** Standard factory method for derived artifacts. */
+ public static DerivedArtifact create(
+ ArtifactRoot root, PathFragment execPath, ActionLookupKey owner) {
+ return create(root, execPath, owner, /*contentBasedPath=*/ false);
}
/**
- * Same as {@link #DerivedArtifact(ArtifactRoot, PathFragment, ActionLookupKey)} but includes
- * tge option to use a content-based path for this artifact (see {@link
+ * Same as {@link #create(ArtifactRoot, PathFragment, ActionLookupKey)} but includes the option
+ * to use a content-based path for this artifact (see {@link
* com.google.devtools.build.lib.analysis.config.BuildConfiguration#useContentBasedOutputPaths}).
*/
- public DerivedArtifact(
+ public static DerivedArtifact create(
ArtifactRoot root, PathFragment execPath, ActionLookupKey owner, boolean contentBasedPath) {
+ return new DerivedArtifact(root, execPath, owner, contentBasedPath);
+ }
+
+ private DerivedArtifact(ArtifactRoot root, PathFragment execPath, Object owner) {
+ this(root, execPath, owner, /*contentBasedPath=*/ false);
+ }
+
+ private DerivedArtifact(
+ ArtifactRoot root, PathFragment execPath, Object owner, boolean contentBasedPath) {
super(root, execPath);
Preconditions.checkState(
!root.getExecPath().isEmpty(), "Derived root has no exec path: %s, %s", root, execPath);
- this.owner = owner;
+ this.owner = Preconditions.checkNotNull(owner);
this.contentBasedPath = contentBasedPath;
}
@@ -503,45 +513,40 @@
SerializationContext context, DerivedArtifact obj, CodedOutputStream codedOut)
throws SerializationException, IOException {
context.serialize(obj.getRoot(), codedOut);
- context.serialize(obj.getGeneratingActionKey(), codedOut);
context.serialize(obj.getRootRelativePath(), codedOut);
+ context.serialize(obj.getGeneratingActionKey(), codedOut);
}
@Override
public DerivedArtifact deserialize(DeserializationContext context, CodedInputStream codedIn)
throws SerializationException, IOException {
ArtifactRoot root = context.deserialize(codedIn);
+ PathFragment rootRelativePath = context.deserialize(codedIn);
ActionLookupData generatingActionKey = context.deserialize(codedIn);
DerivedArtifact artifact =
new DerivedArtifact(
root,
- validateAndGetRootExecPath(root, generatingActionKey, context, codedIn),
- generatingActionKey.getActionLookupKey());
- artifact.setGeneratingActionKey(generatingActionKey);
+ getExecPathForDeserialization(root, rootRelativePath, generatingActionKey),
+ generatingActionKey);
return context.getDependency(ArtifactSerializationContext.class).intern(artifact);
}
+ }
- static PathFragment validateAndGetRootExecPath(
- ArtifactRoot root,
- ActionLookupData generatingActionKey,
- DeserializationContext context,
- CodedInputStream codedIn)
- throws IOException, SerializationException {
- PathFragment rootRelativePath = context.deserialize(codedIn);
- if (rootRelativePath == null
- || rootRelativePath.isAbsolute() != root.getRoot().isAbsolute()) {
- throw new IllegalArgumentException(
- rootRelativePath
- + ": illegal rootRelativePath for "
- + root
- + " (generatingActionKey: "
- + generatingActionKey
- + ")");
- }
- Preconditions.checkState(
- !root.isSourceRoot(), "Root not derived: %s %s", root, rootRelativePath);
- return root.getExecPath().getRelative(rootRelativePath);
- }
+ private static PathFragment getExecPathForDeserialization(
+ ArtifactRoot root, PathFragment rootRelativePath, ActionLookupData generatingActionKey) {
+ Preconditions.checkArgument(
+ !root.isSourceRoot(),
+ "Root not derived: %s (rootRelativePath=%s, generatingActionKey=%s)",
+ root,
+ rootRelativePath,
+ generatingActionKey);
+ Preconditions.checkArgument(
+ root.getRoot().isAbsolute() == rootRelativePath.isAbsolute(),
+ "Illegal root relative path: %s (root=%s, generatingActionKey=%s)",
+ rootRelativePath,
+ root,
+ generatingActionKey);
+ return root.getExecPath().getRelative(rootRelativePath);
}
public final Path getPath() {
@@ -1002,8 +1007,13 @@
private final SpecialArtifactType type;
@VisibleForTesting
- public SpecialArtifact(
+ public static SpecialArtifact create(
ArtifactRoot root, PathFragment execPath, ActionLookupKey owner, SpecialArtifactType type) {
+ return new SpecialArtifact(root, execPath, owner, type);
+ }
+
+ private SpecialArtifact(
+ ArtifactRoot root, PathFragment execPath, Object owner, SpecialArtifactType type) {
super(root, execPath, owner);
this.type = type;
}
@@ -1058,25 +1068,24 @@
SerializationContext context, SpecialArtifact obj, CodedOutputStream codedOut)
throws SerializationException, IOException {
context.serialize(obj.getRoot(), codedOut);
+ context.serialize(obj.getRootRelativePath(), codedOut);
context.serialize(obj.getGeneratingActionKey(), codedOut);
context.serialize(obj.type, codedOut);
- context.serialize(obj.getRootRelativePath(), codedOut);
}
@Override
public SpecialArtifact deserialize(DeserializationContext context, CodedInputStream codedIn)
throws SerializationException, IOException {
ArtifactRoot root = context.deserialize(codedIn);
+ PathFragment rootRelativePath = context.deserialize(codedIn);
ActionLookupData generatingActionKey = context.deserialize(codedIn);
SpecialArtifactType type = context.deserialize(codedIn);
SpecialArtifact artifact =
new SpecialArtifact(
root,
- DerivedArtifactCodec.validateAndGetRootExecPath(
- root, generatingActionKey, context, codedIn),
- generatingActionKey.getActionLookupKey(),
+ getExecPathForDeserialization(root, rootRelativePath, generatingActionKey),
+ generatingActionKey,
type);
- artifact.setGeneratingActionKey(generatingActionKey);
return (SpecialArtifact)
context.getDependency(ArtifactSerializationContext.class).intern(artifact);
}
@@ -1307,7 +1316,7 @@
}
private TreeFileArtifact(
- SpecialArtifact parent, PathFragment parentRelativePath, ActionLookupKey owner) {
+ SpecialArtifact parent, PathFragment parentRelativePath, Object owner) {
super(parent.getRoot(), parent.getExecPath().getRelative(parentRelativePath), owner);
Preconditions.checkArgument(
parent.isTreeArtifact(),
@@ -1328,11 +1337,7 @@
SpecialArtifact parent,
PathFragment parentRelativePath,
ActionLookupData generatingActionKey) {
- TreeFileArtifact result =
- new TreeFileArtifact(
- parent, parentRelativePath, generatingActionKey.getActionLookupKey());
- result.setGeneratingActionKey(generatingActionKey);
- return result;
+ return new TreeFileArtifact(parent, parentRelativePath, generatingActionKey);
}
@Override
@@ -1575,7 +1580,7 @@
* A utility class that compares {@link Artifact}s without taking their owners into account.
* Should only be used for detecting action conflicts and merging shared action data.
*/
- public static class OwnerlessArtifactWrapper {
+ public static final class OwnerlessArtifactWrapper {
private final Artifact artifact;
public OwnerlessArtifactWrapper(Artifact artifact) {
diff --git a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
index 70af2b8..8cd3a5f 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/ArtifactFactory.java
@@ -15,7 +15,9 @@
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
+import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact;
import com.google.devtools.build.lib.actions.Artifact.SourceArtifact;
+import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
import com.google.devtools.build.lib.actions.Artifact.SpecialArtifactType;
import com.google.devtools.build.lib.cmdline.LabelConstants;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
@@ -349,9 +351,9 @@
if (type == null) {
return root.isSourceRoot()
? new Artifact.SourceArtifact(root, execPath, owner)
- : new Artifact.DerivedArtifact(root, execPath, (ActionLookupKey) owner, contentBasedPath);
+ : DerivedArtifact.create(root, execPath, (ActionLookupKey) owner, contentBasedPath);
} else {
- return new Artifact.SpecialArtifact(root, execPath, (ActionLookupKey) owner, type);
+ return SpecialArtifact.create(root, execPath, (ActionLookupKey) owner, type);
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
index 34d45b3..1bedef5 100644
--- a/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
+++ b/src/main/java/com/google/devtools/build/lib/exec/StandaloneTestStrategy.java
@@ -508,7 +508,7 @@
private static Artifact.DerivedArtifact createArtifactOutput(
TestRunnerAction action, PathFragment outputPath) {
Artifact.DerivedArtifact testLog = (Artifact.DerivedArtifact) action.getTestLog();
- return new DerivedArtifact(testLog.getRoot(), outputPath, testLog.getArtifactOwner());
+ return DerivedArtifact.create(testLog.getRoot(), outputPath, testLog.getArtifactOwner());
}
/**
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 374b008..f9cfd63 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
@@ -425,7 +425,7 @@
@Test
public void testDeletedConstantMetadataOutputCausesReexecution() throws Exception {
SpecialArtifact output =
- new Artifact.SpecialArtifact(
+ SpecialArtifact.create(
artifactRoot,
PathFragment.create("bin/dummy"),
NULL_ARTIFACT_OWNER,
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 e1baddc..60d4abb 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
@@ -228,7 +228,7 @@
ArtifactRoot anotherRoot =
ArtifactRoot.asDerivedRoot(scratch.getFileSystem().getPath("/"), RootType.Output, "src");
DerivedArtifact anotherArtifact =
- new DerivedArtifact(
+ DerivedArtifact.create(
anotherRoot,
anotherRoot.getExecPath().getRelative("src/c"),
ActionsTestUtil.NULL_ARTIFACT_OWNER);
@@ -359,10 +359,10 @@
}
};
DerivedArtifact derived1 =
- new DerivedArtifact(root, PathFragment.create("newRoot/shared"), firstOwner);
+ DerivedArtifact.create(root, PathFragment.create("newRoot/shared"), firstOwner);
derived1.setGeneratingActionKey(ActionLookupData.create(firstOwner, 0));
DerivedArtifact derived2 =
- new DerivedArtifact(root, PathFragment.create("newRoot/shared"), secondOwner);
+ DerivedArtifact.create(root, PathFragment.create("newRoot/shared"), secondOwner);
derived2.setGeneratingActionKey(ActionLookupData.create(secondOwner, 0));
ArtifactRoot sourceRoot = ArtifactRoot.asSourceRoot(Root.fromPath(root.getRoot().asPath()));
Artifact source1 = new SourceArtifact(sourceRoot, PathFragment.create("shared"), firstOwner);
@@ -401,7 +401,7 @@
Path execRoot = scratch.getFileSystem().getPath("/");
ArtifactRoot root = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "newRoot");
assertThat(
- new DerivedArtifact(
+ DerivedArtifact.create(
root,
PathFragment.create("newRoot/my.output"),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
@@ -577,7 +577,7 @@
private static SpecialArtifact createTreeArtifact(
ArtifactRoot root, String relativePath, ActionLookupData actionLookupData) {
SpecialArtifact treeArtifact =
- new SpecialArtifact(
+ SpecialArtifact.create(
root,
root.getExecPath().getRelative(relativePath),
actionLookupData.getActionLookupKey(),
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 95de973..f346c86 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
@@ -249,13 +249,13 @@
public static Artifact createArtifactWithExecPath(ArtifactRoot root, PathFragment execPath) {
return root.isSourceRoot()
? new Artifact.SourceArtifact(root, execPath, ArtifactOwner.NULL_OWNER)
- : new Artifact.DerivedArtifact(root, execPath, NULL_ARTIFACT_OWNER);
+ : DerivedArtifact.create(root, execPath, NULL_ARTIFACT_OWNER);
}
public static SpecialArtifact createTreeArtifactWithGeneratingAction(
ArtifactRoot root, PathFragment execPath) {
SpecialArtifact treeArtifact =
- new SpecialArtifact(root, execPath, NULL_ARTIFACT_OWNER, SpecialArtifactType.TREE);
+ SpecialArtifact.create(root, execPath, NULL_ARTIFACT_OWNER, SpecialArtifactType.TREE);
treeArtifact.setGeneratingActionKey(NULL_ACTION_LOOKUP_DATA);
return treeArtifact;
}
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 840a16d..a9f7cad 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.common.collect.Maps;
import com.google.devtools.build.lib.actions.ActionLookupKey;
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.actions.util.ActionsTestUtil;
@@ -180,10 +181,8 @@
SimpleActionLookupKey owner1 = new SimpleActionLookupKey("//owner1");
SimpleActionLookupKey owner2 = new SimpleActionLookupKey("//owner2");
- Artifact artifact1 =
- new Artifact.DerivedArtifact(root, root.getExecPath().getRelative(path), owner1);
- Artifact artifact2 =
- new Artifact.DerivedArtifact(root, root.getExecPath().getRelative(path), owner2);
+ Artifact artifact1 = DerivedArtifact.create(root, root.getExecPath().getRelative(path), owner1);
+ Artifact artifact2 = DerivedArtifact.create(root, root.getExecPath().getRelative(path), owner2);
Map<PathFragment, Artifact> map = new LinkedHashMap<>();
@@ -205,10 +204,9 @@
SimpleActionLookupKey owner1 = new SimpleActionLookupKey("//owner1");
SimpleActionLookupKey owner2 = new SimpleActionLookupKey("//owner2");
- Artifact artifact1 =
- new Artifact.DerivedArtifact(root, root.getExecPath().getRelative(path), owner1);
+ Artifact artifact1 = DerivedArtifact.create(root, root.getExecPath().getRelative(path), owner1);
Artifact artifact2 =
- new Artifact.DerivedArtifact(root, root.getExecPath().getRelative(path2), owner2);
+ DerivedArtifact.create(root, root.getExecPath().getRelative(path2), owner2);
Map<PathFragment, Artifact> map = new LinkedHashMap<>();
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 d50641a..4da6552 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
@@ -379,7 +379,7 @@
private SpecialArtifact createTreeArtifact(String rootRelativePath) {
PathFragment relpath = PathFragment.create(rootRelativePath);
SpecialArtifact result =
- new SpecialArtifact(
+ SpecialArtifact.create(
root,
root.getExecPath().getRelative(relpath),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
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 41272aa..6ce6069 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
@@ -205,7 +205,7 @@
}
private SpecialArtifact createSpecialArtifact(String relativePath, SpecialArtifactType type) {
- return new SpecialArtifact(
+ return SpecialArtifact.create(
derivedRoot,
derivedRoot.getExecPath().getRelative(relativePath),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
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 0ca931f..07e50b7 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
@@ -385,7 +385,7 @@
Path outputPath = outputDir.getRelative(relPath);
outputPath.createDirectoryAndParents();
ArtifactRoot derivedRoot = ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, outputSegment);
- return new SpecialArtifact(
+ return SpecialArtifact.create(
derivedRoot,
derivedRoot.getExecPath().getRelative(derivedRoot.getRoot().relativize(outputPath)),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
@@ -455,7 +455,7 @@
}
private SpecialArtifact createFileset(String execPath) {
- return new SpecialArtifact(
+ return SpecialArtifact.create(
rootDir,
PathFragment.create(execPath),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
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 a878b70..d1c2c0a 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
@@ -81,7 +81,7 @@
}
private SpecialArtifact treeArtifact(Path path) {
- return new SpecialArtifact(
+ return SpecialArtifact.create(
artifactRoot,
artifactRoot.getExecPath().getRelative(artifactRoot.getRoot().relativize(path)),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
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 984d420..ce9edd7 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
@@ -22,6 +22,7 @@
import com.google.common.collect.ImmutableList;
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.actions.ResourceSet;
@@ -430,7 +431,7 @@
/** Creates a dummy artifact with the given path, that actually resides in /out/<path>. */
private Artifact derivedArtifact(String path) {
Artifact.DerivedArtifact derivedArtifact =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
derivedRoot,
derivedRoot.getExecPath().getRelative(path),
ActionsTestUtil.NULL_ARTIFACT_OWNER);
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 98b79ed..63c1d77 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
@@ -234,12 +234,13 @@
}
private DerivedArtifact createFileArtifact(String relativePath, ActionLookupKey owner) {
- return new DerivedArtifact(derivedRoot, DERIVED_PATH_PREFIX.getRelative(relativePath), owner);
+ return DerivedArtifact.create(
+ derivedRoot, DERIVED_PATH_PREFIX.getRelative(relativePath), owner);
}
private SpecialArtifact createTreeArtifact(String relativePath, ActionLookupKey owner) {
SpecialArtifact treeArtifact =
- new SpecialArtifact(
+ SpecialArtifact.create(
derivedRoot,
DERIVED_PATH_PREFIX.getRelative(relativePath),
owner,
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 1bc0750..f373f37 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
@@ -206,7 +206,7 @@
public ImmutableSet<Artifact> getOutputs() {
return ImmutableSet.of(
outputTree,
- new DerivedArtifact(
+ DerivedArtifact.create(
outputTree.getRoot(),
outputTree.getRoot().getExecPath().getRelative("not_tree"),
outputTree.getArtifactOwner()));
@@ -262,7 +262,7 @@
ActionLookupKey artifactOwner) {
TreeFileArtifact input = Iterables.getOnlyElement(inputTreeFileArtifacts);
Artifact notTreeFileArtifact =
- new DerivedArtifact(
+ DerivedArtifact.create(
input.getRoot(),
input.getRoot().getExecPath().getRelative("a.txt"),
artifactOwner);
@@ -372,7 +372,7 @@
private SpecialArtifact createTreeArtifact(String path) {
PathFragment execPath = PathFragment.create("out").getRelative(path);
- return new SpecialArtifact(
+ return SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(rootDirectory, RootType.Output, "out"),
execPath,
CTKEY,
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 fa7140c..a483eb7 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
@@ -365,7 +365,7 @@
private DerivedArtifact createDerivedArtifact(String path) {
PathFragment execPath = PathFragment.create("out").getRelative(path);
DerivedArtifact output =
- new DerivedArtifact(
+ DerivedArtifact.create(
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));
@@ -375,7 +375,7 @@
private Artifact createMiddlemanArtifact(String path) {
ArtifactRoot middlemanRoot =
ArtifactRoot.asDerivedRoot(middlemanPath, RootType.Middleman, PathFragment.create("out"));
- return new DerivedArtifact(
+ return DerivedArtifact.create(
middlemanRoot, middlemanRoot.getExecPath().getRelative(path), ALL_OWNER);
}
@@ -388,7 +388,7 @@
private SpecialArtifact createDerivedTreeArtifactOnly(String path) {
PathFragment execPath = PathFragment.create("out").getRelative(path);
- return new SpecialArtifact(
+ return SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath,
ALL_OWNER,
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 6dcedd8..cff3fba 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
@@ -52,6 +52,7 @@
import com.google.devtools.build.lib.actions.ActionTemplate;
import com.google.devtools.build.lib.actions.Actions;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact;
import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact;
import com.google.devtools.build.lib.actions.ArtifactOwner;
@@ -745,7 +746,7 @@
// an action from its respective configured target.
ActionLookupKey lc1 = new InjectedActionLookupKey("lc1");
Artifact output1 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc1);
Action action1 =
new MissingOutputAction(
@@ -753,7 +754,7 @@
ActionLookupValue ctValue1 = createActionLookupValue(action1, lc1);
ActionLookupKey lc2 = new InjectedActionLookupKey("lc2");
Artifact output2 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc2);
Action action2 =
new MissingOutputAction(
@@ -808,7 +809,7 @@
// "out/input" so we can synchronize their execution.
ActionLookupKey inputKey = new InjectedActionLookupKey("input");
Artifact input =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
PathFragment.create("out").getRelative("input"),
inputKey);
@@ -817,7 +818,7 @@
ActionLookupValue ctBase = createActionLookupValue(baseAction, inputKey);
ActionLookupKey lc1 = new InjectedActionLookupKey("lc1");
Artifact output1 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc1);
Action action1 =
new DummyAction(
@@ -825,7 +826,7 @@
ActionLookupValue ctValue1 = createActionLookupValue(action1, lc1);
ActionLookupKey lc2 = new InjectedActionLookupKey("lc2");
Artifact output2 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc2);
Action action2 =
new DummyAction(
@@ -908,7 +909,7 @@
// thing if they executed, but they look the same to our execution engine.
ActionLookupKey lcA = new InjectedActionLookupKey("lcA");
Artifact outputA =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lcA);
CountDownLatch actionAStartedSoOthersCanProceed = new CountDownLatch(1);
CountDownLatch actionCFinishedSoACanFinish = new CountDownLatch(1);
@@ -933,7 +934,7 @@
// Shared actions: they look the same from the point of view of Blaze data.
ActionLookupKey lcB = new InjectedActionLookupKey("lcB");
Artifact outputB =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lcB);
Action actionB =
new DummyAction(
@@ -941,7 +942,7 @@
ActionLookupValue ctB = createActionLookupValue(actionB, lcB);
ActionLookupKey lcC = new InjectedActionLookupKey("lcC");
Artifact outputC =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lcC);
Action actionC =
new DummyAction(
@@ -1065,7 +1066,7 @@
// an action from its respective configured target.
ActionLookupKey lc1 = new InjectedActionLookupKey("lc1");
SpecialArtifact output1 =
- new SpecialArtifact(
+ SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath,
lc1,
@@ -1076,7 +1077,7 @@
ActionLookupValue ctValue1 = createActionLookupValue(action1, lc1);
ActionLookupKey lc2 = new InjectedActionLookupKey("lc2");
SpecialArtifact output2 =
- new SpecialArtifact(
+ SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath,
lc2,
@@ -1162,7 +1163,7 @@
// an action from its respective configured target.
ActionLookupKey baseKey = new InjectedActionLookupKey("base");
SpecialArtifact baseOutput =
- new SpecialArtifact(
+ SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath,
baseKey,
@@ -1174,7 +1175,7 @@
ActionLookupKey shared1 = new InjectedActionLookupKey("shared1");
PathFragment execPath2 = PathFragment.create("out").getRelative("treesShared");
SpecialArtifact sharedOutput1 =
- new SpecialArtifact(
+ SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath2,
shared1,
@@ -1184,7 +1185,7 @@
ActionLookupValue shared1Ct = createActionLookupValue(template1, shared1);
ActionLookupKey shared2 = new InjectedActionLookupKey("shared2");
SpecialArtifact sharedOutput2 =
- new SpecialArtifact(
+ SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath2,
shared2,
@@ -1356,7 +1357,7 @@
// an action from its respective configured target.
ActionLookupKey lc1 = new InjectedActionLookupKey("lc1");
Artifact output1 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc1);
Action action1 =
new DummyAction(
@@ -1364,7 +1365,7 @@
ActionLookupValue ctValue1 = createActionLookupValue(action1, lc1);
ActionLookupKey lc2 = new InjectedActionLookupKey("lc2");
Artifact output2 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"), execPath, lc2);
CountDownLatch action2Running = new CountDownLatch(1);
CountDownLatch topActionTestedOutput = new CountDownLatch(1);
@@ -1383,7 +1384,7 @@
ActionLookupKey topLc = new InjectedActionLookupKey("top");
Artifact top =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
relativeOut.getChild("top"),
topLc);
@@ -1457,7 +1458,7 @@
PathFragment execPath = PathFragment.create("out").getRelative("dir");
ActionLookupKey lc1 = new InjectedActionLookupKey("lc1");
Artifact output =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("foo"),
lc1);
@@ -1472,7 +1473,7 @@
NestedSetBuilder.emptySet(Order.STABLE_ORDER));
ActionLookupKey lc2 = new InjectedActionLookupKey("lc2");
Artifact output2 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("bar"),
lc2);
@@ -1634,7 +1635,7 @@
PathFragment execPath = PathFragment.create("out").getRelative("dir");
ActionLookupKey lc1 = new InjectedActionLookupKey("lc1");
Artifact output =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("foo"),
lc1);
@@ -1642,7 +1643,7 @@
ActionLookupValue ctValue1 = createActionLookupValue(action1, lc1);
ActionLookupKey lc2 = new InjectedActionLookupKey("lc2");
Artifact output2 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("bar"),
lc2);
@@ -1733,7 +1734,7 @@
PathFragment execPath = PathFragment.create("out").getRelative("dir");
ActionLookupKey catastropheCTK = new InjectedActionLookupKey("catastrophe");
Artifact catastropheArtifact =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("zcatas"),
catastropheCTK);
@@ -1751,7 +1752,7 @@
ActionLookupValue catastropheALV = createActionLookupValue(catastrophicAction, catastropheCTK);
ActionLookupKey failureCTK = new InjectedActionLookupKey("failure");
Artifact failureArtifact =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("fail"),
failureCTK);
@@ -1759,7 +1760,7 @@
ActionLookupValue failureALV = createActionLookupValue(failureAction, failureCTK);
ActionLookupKey topCTK = new InjectedActionLookupKey("top");
Artifact topArtifact =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("top"),
topCTK);
@@ -1846,7 +1847,7 @@
PathFragment execPath = PathFragment.create("out").getRelative("dir");
ActionLookupKey configuredTargetKey = new InjectedActionLookupKey("key");
Artifact catastropheArtifact =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("catas"),
configuredTargetKey);
@@ -1870,7 +1871,7 @@
for (int i = 0; i < failedSize; i++) {
String failString = HashCode.fromBytes(("fail" + i).getBytes(UTF_8)).toString();
Artifact failureArtifact =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative(failString),
configuredTargetKey);
@@ -1990,7 +1991,7 @@
// When we have an action that throws a (non-catastrophic) exception when it is executed,
ActionLookupKey failedKey = new InjectedActionLookupKey("failed");
Artifact failedOutput =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("failed"),
failedKey);
@@ -2015,7 +2016,7 @@
// And an action that throws a catastrophic exception when it is executed,
ActionLookupKey catastrophicKey = new InjectedActionLookupKey("catastrophic");
Artifact catastrophicOutput =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("catastrophic"),
catastrophicKey);
@@ -2112,14 +2113,14 @@
ActionLookupKey succeededKey = new InjectedActionLookupKey("succeeded");
Artifact succeededOutput =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("succeeded"),
succeededKey);
ActionLookupKey failedKey = new InjectedActionLookupKey("failed");
Artifact failedOutput =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("failed"),
failedKey);
@@ -2198,21 +2199,21 @@
ActionLookupKey succeededKey = new InjectedActionLookupKey("succeeded");
Artifact succeededOutput =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("succeeded"),
succeededKey);
ActionLookupKey failedKey1 = new InjectedActionLookupKey("failed1");
Artifact failedOutput1 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("failed1"),
failedKey1);
ActionLookupKey failedKey2 = new InjectedActionLookupKey("failed2");
Artifact failedOutput2 =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath.getRelative("failed2"),
failedKey2);
@@ -2299,7 +2300,7 @@
ActionLookupKey topKey = new InjectedActionLookupKey("top");
Artifact topOutput =
- new Artifact.DerivedArtifact(
+ DerivedArtifact.create(
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 04b4e4d..453de08 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
@@ -39,6 +39,7 @@
import com.google.devtools.build.lib.actions.ActionResult;
import com.google.devtools.build.lib.actions.Actions;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.actions.Artifact.DerivedArtifact;
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;
@@ -477,7 +478,7 @@
Artifact createDerivedArtifact(FileSystem fs, String name) {
Path execRoot = fs.getPath(TestUtils.tmpDir());
PathFragment execPath = PathFragment.create("out").getRelative(name);
- return new Artifact.DerivedArtifact(
+ return DerivedArtifact.create(
ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"), execPath, ACTION_LOOKUP_KEY);
}
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 9dfedd7..83fa5be 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
@@ -966,7 +966,7 @@
Path execRoot =
fs.getPath(TestUtils.tmpDir()).getRelative("execroot").getRelative("default-exec-root");
PathFragment execPath = PathFragment.create("out").getRelative(name);
- return new SpecialArtifact(
+ return SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(execRoot, RootType.Output, "out"),
execPath,
ACTION_LOOKUP_KEY,
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 7e7376b..3b56f54 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
@@ -217,7 +217,7 @@
PathFragment execPath = PathFragment.create("out").getRelative(path);
Path fullPath = root.getRelative(execPath);
SpecialArtifact output =
- new SpecialArtifact(
+ SpecialArtifact.create(
ArtifactRoot.asDerivedRoot(root, RootType.Output, "out"),
execPath,
ALL_OWNER,
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 28ff553..53435c6 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
@@ -153,7 +153,7 @@
@Test
public void cannotCreateBuilderForNonTreeArtifact() {
SpecialArtifact notTreeArtifact =
- new SpecialArtifact(
+ SpecialArtifact.create(
root,
PathFragment.create("bin/not_tree"),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
@@ -653,7 +653,7 @@
public void multiBuilder_removeNotATreeArtifact_fails() {
TreeArtifactValue.MultiBuilder builder = TreeArtifactValue.newMultiBuilder();
SpecialArtifact notATreeArtifact =
- new SpecialArtifact(
+ SpecialArtifact.create(
root,
root.getExecPath().getRelative("bin/artifact"),
ActionsTestUtil.NULL_ARTIFACT_OWNER,
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java
index 8ee27e5..9084ea5 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkRuleImplementationFunctionsTest.java
@@ -3086,7 +3086,7 @@
artifact.getRootRelativePath().equals(PathFragment.create(dirRelativePath)));
for (String file : files) {
output.add(
- new DerivedArtifact(
+ DerivedArtifact.create(
artifact.getRoot(),
artifact.getExecPath().getRelative(file),
(ActionLookupKey) artifact.getArtifactOwner()));