Encapsulate Blaze determination logic into BlazeDirectories. Introduce the isBlaze() method and isBlaze field on BlazeDirectories to encapsulate checking if the product is Blaze. Replace direct checks on getProductName().equalsIgnoreCase(blaze) in RemoteAnalysisCacheFactory. #ghostwriter PiperOrigin-RevId: 931284828 Change-Id: Icdb23947dbe50e9cd69cac7e3a24e8dd431a73d5
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 efaf377..b136eb2 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
@@ -83,13 +83,15 @@ private final Path blazeOutputPath; private final Path localOutputPath; private final String productName; + private final boolean isBlaze; public BlazeDirectories(ServerDirectories serverDirectories, Path workspace, String productName) { this.serverDirectories = serverDirectories; this.workspace = workspace; this.productName = productName; + this.isBlaze = Ascii.equalsIgnoreCase(productName, "blaze"); Path outputBase = serverDirectories.getOutputBase(); - if (Ascii.equalsIgnoreCase(productName, "blaze")) { + if (isBlaze) { boolean useDefaultExecRootName = this.workspace == null || this.workspace.getParentDirectory() == null; if (useDefaultExecRootName) { @@ -250,6 +252,11 @@ return productName; } + /** Returns true if this is Google-internal Blaze (as opposed to Bazel). */ + public boolean isBlaze() { + return isBlaze; + } + /** Convenience method for {@link ServerDirectories#getVirtualSourceRoot}. */ @Nullable public Root getVirtualSourceRoot() {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java index bf4e72d..c6c3aa2 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/analysis/RemoteAnalysisCacheFactory.java
@@ -20,7 +20,6 @@ import static java.util.Objects.requireNonNull; import static java.util.concurrent.ForkJoinPool.commonPool; -import com.google.common.base.Ascii; import com.google.common.base.Strings; import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.collect.ImmutableList; @@ -317,8 +316,7 @@ BlazeDirectories directories, BuildOptions topLevelOptions) { var roots = ImmutableList.<Root>builder().add(Root.fromPath(directories.getWorkspace())); - // TODO: b/406458763 - clean this up - if (Ascii.equalsIgnoreCase(directories.getProductName(), "blaze")) { + if (directories.isBlaze()) { roots.add(Root.fromPath(directories.getBlazeExecRoot())); }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/BUILD index 9c1d528..f80aa8a 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/BUILD +++ b/src/test/java/com/google/devtools/build/lib/analysis/BUILD
@@ -335,6 +335,7 @@ "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils", "//src/test/java/com/google/devtools/build/lib/testutil", "//third_party:junit4", + "//third_party:truth", ], )
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java index 8ebd62b..b403d81 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
@@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.analysis; +import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; import com.google.devtools.build.lib.skyframe.serialization.testutils.FsUtils; @@ -43,4 +44,22 @@ public void noBlazeOutputPathInBazel() { assertThrows(NullPointerException.class, directories::getBlazeOutputPath); } + + @Test + public void isBlaze_falseForBazel() { + assertThat(directories.isBlaze()).isFalse(); + } + + @Test + public void isBlaze_trueForBlaze() { + BlazeDirectories blazeDirs = + new BlazeDirectories( + new ServerDirectories( + FsUtils.TEST_FILESYSTEM.getPath("/install_base"), + FsUtils.TEST_FILESYSTEM.getPath("/output_base"), + FsUtils.TEST_FILESYSTEM.getPath("/user_root")), + FsUtils.TEST_FILESYSTEM.getPath("/workspace"), + /* productName= */ "blaze"); + assertThat(blazeDirs.isBlaze()).isTrue(); + } }