diff options
5 files changed, 24 insertions, 16 deletions
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 bdef891013..2c44a32adb 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 @@ -19,7 +19,6 @@ import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.Constants; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.collect.nestedset.NestedSet; @@ -221,7 +220,7 @@ public final class Runfiles { NestedSet<SymlinkEntry> rootSymlinks, NestedSet<PruningManifest> pruningManifests, EmptyFilesSupplier emptyFilesSupplier) { - this.suffix = suffix.isEmpty() ? Constants.DEFAULT_RUNFILES_PREFIX : suffix; + this.suffix = suffix; this.unconditionalArtifacts = Preconditions.checkNotNull(artifacts); this.symlinks = Preconditions.checkNotNull(symlinks); this.rootSymlinks = Preconditions.checkNotNull(rootSymlinks); @@ -505,7 +504,7 @@ public final class Runfiles { /** * Only used for Runfiles.EMPTY. */ - public Builder() { + private Builder() { this.suffix = ""; } @@ -769,12 +768,15 @@ public final class Runfiles { * pruning manifests in the merge. */ private Builder merge(Runfiles runfiles, boolean includePruningManifests) { + if (runfiles.isEmpty()) { + return this; + } + // The suffix should be the same within any blaze build, except for the EMPTY runfiles, which + // may have an empty suffix, but that is covered above. + Preconditions.checkArgument(suffix.equals(runfiles.suffix)); artifactsBuilder.addTransitive(runfiles.getUnconditionalArtifacts()); symlinksBuilder.addTransitive(runfiles.getSymlinks()); rootSymlinksBuilder.addTransitive(runfiles.getRootSymlinks()); - if (suffix.isEmpty()) { - suffix = runfiles.suffix; - } if (includePruningManifests) { pruningManifestsBuilder.addTransitive(runfiles.getPruningManifests()); } diff --git a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java index 5d573e5e86..c026793e17 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/SourceManifestAction.java @@ -289,16 +289,18 @@ public class SourceManifestAction extends AbstractFileWriteAction { private final ManifestWriter manifestWriter; private final ActionOwner owner; private final Artifact output; - private final Runfiles.Builder runfilesBuilder = new Runfiles.Builder(); + private final Runfiles.Builder runfilesBuilder; - public Builder(ManifestType manifestType, ActionOwner owner, Artifact output) { + public Builder(String prefix, ManifestType manifestType, ActionOwner owner, Artifact output) { + this.runfilesBuilder = new Runfiles.Builder(prefix); manifestWriter = manifestType; this.owner = owner; this.output = output; } @VisibleForTesting - Builder(ManifestWriter manifestWriter, ActionOwner owner, Artifact output) { + Builder(String prefix, ManifestWriter manifestWriter, ActionOwner owner, Artifact output) { + this.runfilesBuilder = new Runfiles.Builder(prefix); this.manifestWriter = manifestWriter; this.owner = owner; this.output = output; diff --git a/src/main/java/com/google/devtools/build/lib/packages/Package.java b/src/main/java/com/google/devtools/build/lib/packages/Package.java index c6156ac82f..28681d45b4 100644 --- a/src/main/java/com/google/devtools/build/lib/packages/Package.java +++ b/src/main/java/com/google/devtools/build/lib/packages/Package.java @@ -761,6 +761,10 @@ public class Package implements Serializable { } static class Builder { + protected static Package newPackage(PackageIdentifier packageId) { + return new Package(packageId); + } + /** * The output instance for this builder. Needs to be instantiated and * available with name info throughout initialization. All other settings @@ -822,10 +826,9 @@ public class Package implements Serializable { } } - protected static Package newPackage(PackageIdentifier packageId) { - return new Package(packageId); + Builder(PackageIdentifier id) { + this(newPackage(id)); } - Builder(PackageIdentifier id) { this(newPackage(id)); } protected PackageIdentifier getPackageIdentifier() { return pkg.getPackageIdentifier(); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java index 35ae4b80b5..b1f2233801 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibs.java @@ -146,9 +146,10 @@ public final class NativeLibs { Artifact inputManifest = AndroidBinary.getDxArtifact(ruleContext, "native_symlinks.manifest"); ruleContext.registerAction(new SourceManifestAction.Builder( - ManifestType.SOURCE_SYMLINKS, ruleContext.getActionOwner(), inputManifest) - .addRootSymlinks(symlinks) - .build()); + ruleContext.getWorkspaceName(), ManifestType.SOURCE_SYMLINKS, ruleContext.getActionOwner(), + inputManifest) + .addRootSymlinks(symlinks) + .build()); Artifact outputManifest = AndroidBinary.getDxArtifact(ruleContext, "native_symlinks/MANIFEST"); ruleContext.registerAction(new SymlinkTreeAction( ruleContext.getActionOwner(), inputManifest, outputManifest, false)); 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 42fdaa3653..b098d43392 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 @@ -86,7 +86,7 @@ public class RunfilesSupplierImplTest { } private static Runfiles mkRunfiles(Iterable<Artifact> artifacts) { - return new Runfiles.Builder().addArtifacts(artifacts).build(); + return new Runfiles.Builder("TESTING").addArtifacts(artifacts).build(); } private static List<Artifact> mkArtifacts(Root rootDir, String... paths) { |