Change signatures to DerivedArtifact, and get Labels from non-Artifact sources when possible.
In tests, try to get artifacts directly from the actual configured target, rather than creating fresh ones.
This change should be a prod functional no-op, just changing signatures. Split out from the follow-up to reduce the diff.
PiperOrigin-RevId: 250527865
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
index 76e3b42..7779744 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/RuleContext.java
@@ -40,7 +40,6 @@
import com.google.devtools.build.lib.actions.ActionRegistry;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Artifact.SpecialArtifact;
-import com.google.devtools.build.lib.actions.ArtifactOwner;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.analysis.AliasProvider.TargetMode;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider.PrerequisiteValidator;
@@ -499,7 +498,7 @@
}
@Override
- public ArtifactOwner getOwner() {
+ public ActionLookupValue.ActionLookupKey getOwner() {
return getAnalysisEnvironment().getOwner();
}
@@ -657,22 +656,6 @@
* Creates an artifact in a directory that is unique to the package that contains the rule, thus
* guaranteeing that it never clashes with artifacts created by rules in other packages.
*/
- public Artifact getPackageRelativeArtifact(String relative, ArtifactRoot root) {
- return getPackageRelativeArtifact(PathFragment.create(relative), root);
- }
-
- /**
- * Creates an artifact in a directory that is unique to the package that contains the rule, thus
- * guaranteeing that it never clashes with artifacts created by rules in other packages.
- */
- public Artifact getPackageRelativeTreeArtifact(String relative, ArtifactRoot root) {
- return getPackageRelativeTreeArtifact(PathFragment.create(relative), root);
- }
-
- /**
- * Creates an artifact in a directory that is unique to the package that contains the rule, thus
- * guaranteeing that it never clashes with artifacts created by rules in other packages.
- */
public Artifact getBinArtifact(String relative) {
return getBinArtifact(PathFragment.create(relative));
}
@@ -701,10 +684,19 @@
}
@Override
- public Artifact getPackageRelativeArtifact(PathFragment relative, ArtifactRoot root) {
+ public Artifact.DerivedArtifact getPackageRelativeArtifact(
+ PathFragment relative, ArtifactRoot root) {
return getDerivedArtifact(getPackageDirectory().getRelative(relative), root);
}
+ /**
+ * Creates an artifact in a directory that is unique to the package that contains the rule, thus
+ * guaranteeing that it never clashes with artifacts created by rules in other packages.
+ */
+ public Artifact getPackageRelativeArtifact(String relative, ArtifactRoot root) {
+ return getPackageRelativeArtifact(PathFragment.create(relative), root);
+ }
+
@Override
public PathFragment getPackageDirectory() {
return getLabel().getPackageIdentifier().getSourceRoot();
@@ -718,7 +710,8 @@
* method.
*/
@Override
- public Artifact getDerivedArtifact(PathFragment rootRelativePath, ArtifactRoot root) {
+ public Artifact.DerivedArtifact getDerivedArtifact(
+ PathFragment rootRelativePath, ArtifactRoot root) {
Preconditions.checkState(rootRelativePath.startsWith(getPackageDirectory()),
"Output artifact '%s' not under package directory '%s' for target '%s'",
rootRelativePath, getPackageDirectory(), getLabel());
@@ -1421,7 +1414,8 @@
}
@Override
- public final Artifact getRelatedArtifact(PathFragment pathFragment, String extension) {
+ public final Artifact.DerivedArtifact getRelatedArtifact(
+ PathFragment pathFragment, String extension) {
PathFragment file = FileSystemUtils.replaceExtension(pathFragment, extension);
return getDerivedArtifact(file, getConfiguration().getBinDirectory(rule.getRepository()));
}