Set the workspace suffix for runfiles
This CL covers the "easy" cases. Followup CLs will take care of couple dozen remaining gnarly ones.
--
MOS_MIGRATED_REVID=100479410
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
index ac83eca..0aa3f48 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
@@ -221,7 +221,7 @@
NestedSet<SymlinkEntry> rootSymlinks,
NestedSet<PruningManifest> pruningManifests,
EmptyFilesSupplier emptyFilesSupplier) {
- this.suffix = suffix == null ? Constants.DEFAULT_RUNFILES_PREFIX : suffix;
+ this.suffix = suffix.isEmpty() ? Constants.DEFAULT_RUNFILES_PREFIX : suffix;
this.unconditionalArtifacts = Preconditions.checkNotNull(artifacts);
this.symlinks = Preconditions.checkNotNull(symlinks);
this.rootSymlinks = Preconditions.checkNotNull(rootSymlinks);
@@ -503,6 +503,17 @@
private EmptyFilesSupplier emptyFilesSupplier = DUMMY_EMPTY_FILES_SUPPLIER;
/**
+ * Only used for Runfiles.EMPTY.
+ */
+ public Builder() {
+ this.suffix = "";
+ }
+
+ public Builder(String suffix) {
+ this.suffix = suffix;
+ }
+
+ /**
* Builds a new Runfiles object.
*/
public Runfiles build() {
@@ -645,7 +656,6 @@
Function<TransitiveInfoCollection, Runfiles> mapping) {
Preconditions.checkNotNull(mapping);
Preconditions.checkNotNull(ruleContext);
- suffix = ruleContext.getWorkspaceName();
addDataDeps(ruleContext);
addNonDataDeps(ruleContext, mapping);
return this;
@@ -660,7 +670,6 @@
Function<TransitiveInfoCollection, Runfiles> mapping) {
Preconditions.checkNotNull(ruleContext);
Preconditions.checkNotNull(mapping);
- suffix = ruleContext.getWorkspaceName();
for (TransitiveInfoCollection dep : getNonDataDeps(ruleContext)) {
Runfiles runfiles = mapping.apply(dep);
if (runfiles != null) {
@@ -675,7 +684,6 @@
* Collects runfiles from data dependencies of a target.
*/
public Builder addDataDeps(RuleContext ruleContext) {
- suffix = ruleContext.getWorkspaceName();
addTargets(getPrerequisites(ruleContext, "data", Mode.DATA), RunfilesProvider.DATA_RUNFILES);
return this;
}
@@ -685,7 +693,6 @@
*/
public Builder addNonDataDeps(RuleContext ruleContext,
Function<TransitiveInfoCollection, Runfiles> mapping) {
- suffix = ruleContext.getWorkspaceName();
for (TransitiveInfoCollection target : getNonDataDeps(ruleContext)) {
addTargetExceptFileTargets(target, mapping);
}
@@ -757,15 +764,6 @@
}
/**
- * Sets the directory name to put runfiles under. "" is the default and puts the runfiles
- * immediately under the <target>.runfiles directory.
- */
- public Builder setSuffix(String workspaceName) {
- suffix = workspaceName;
- return this;
- }
-
- /**
* Add the other {@link Runfiles} object transitively, with the option to include or exclude
* pruning manifests in the merge.
*/
@@ -773,7 +771,7 @@
artifactsBuilder.addTransitive(runfiles.getUnconditionalArtifacts());
symlinksBuilder.addTransitive(runfiles.getSymlinks());
rootSymlinksBuilder.addTransitive(runfiles.getRootSymlinks());
- if (suffix == null) {
+ if (suffix.isEmpty()) {
suffix = runfiles.suffix;
}
if (includePruningManifests) {