Automated rollback of commit 23f171e2208700dc2f2f65f5ccb32bacd7aec87d.
*** Reason for rollback ***
b/195550666: internal breakage
*** Original change description ***
Avoid touching the filesystem to see what the BUILD file for a Starlark extension was: we already have the package, so we can just read it out.
Genquery remains buggy here.
haxorz@ observed in http://b/123795023#comment6 that we only need to read these paths to determine if the package was defined in a BUILD or BUILD.bazel file. Since the package already knows that, we just ask it.
PiperOrigin-RevId: 389642637
diff --git a/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java b/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
index 6983afe..008b893 100644
--- a/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
+++ b/src/main/java/com/google/devtools/build/lib/events/StoredEventHandler.java
@@ -13,7 +13,6 @@
// limitations under the License.
package com.google.devtools.build.lib.events;
-import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.List;
@@ -70,13 +69,4 @@
posts.clear();
hasErrors = false;
}
-
- @Override
- public String toString() {
- return MoreObjects.toStringHelper(this)
- .add("events", events)
- .add("posts", posts)
- .add("hasErrors", hasErrors)
- .toString();
- }
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/CachingPackageLocator.java b/src/main/java/com/google/devtools/build/lib/packages/CachingPackageLocator.java
index 6aa8a38..d485394 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/CachingPackageLocator.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/CachingPackageLocator.java
@@ -16,7 +16,6 @@
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.vfs.Path;
-import javax.annotation.Nullable;
/**
* CachingPackageLocator implementations locate a package by its name.
@@ -29,26 +28,19 @@
* pieces of legacy code while still updating the Skyframe node graph.
*/
public interface CachingPackageLocator {
+
/**
* Returns path of BUILD file for specified package iff the specified package exists, null
* otherwise (e.g. invalid package name, no build file, or package has been deleted via
* --deleted_packages)..
*
- * <p>The package's root directory may be computed by calling getParentFile().
+ * <p> The package's root directory may be computed by calling getParentFile().
*
- * <p>Instances of this interface are required to cache the results.
+ * <p> Instances of this interface are required to cache the results.
*
- * <p>This method must be thread-safe.
+ * <p> This method must be thread-safe.
*/
@ThreadSafe
- @Nullable
Path getBuildFileForPackage(PackageIdentifier packageName);
- /**
- * Returns base name of BUILD file for specified package (typically 'BUILD' or 'BUILD.bazel').
- * {@code packageName} must be an already loaded package. Implementations that do not have full
- * access to the set of loaded packages may return null here.
- */
- @Nullable
- String getBaseNameForLoadedPackage(PackageIdentifier packageName);
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/query/BlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/query/BlazeQueryEnvironment.java
index 8fe671b..31aaae2 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/query/BlazeQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/query/BlazeQueryEnvironment.java
@@ -55,6 +55,7 @@
import com.google.devtools.build.lib.query2.engine.SkyframeRestartQueryException;
import com.google.devtools.build.lib.query2.engine.ThreadSafeOutputFormatterCallback;
import com.google.devtools.build.lib.query2.engine.Uniquifier;
+import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.ArrayList;
@@ -437,14 +438,14 @@
// Also add the BUILD file of the extension.
if (buildFiles) {
- // Can be null in genquery: see http://b/123795023#comment6.
- String baseName =
- cachingPackageLocator.getBaseNameForLoadedPackage(
+ Path buildFileForLoad =
+ cachingPackageLocator.getBuildFileForPackage(
loadTarget.getLabel().getLabel().getPackageIdentifier());
- if (baseName != null) {
+ if (buildFileForLoad != null) {
Label buildFileLabel =
Label.createUnvalidated(
- loadTarget.getLabel().getLabel().getPackageIdentifier(), baseName);
+ loadTarget.getLabel().getLabel().getPackageIdentifier(),
+ buildFileForLoad.getBaseName());
addIfUniqueLabel(
getNode(new FakeLoadTarget(buildFileLabel, pkg)), seenLabels, dependentFiles);
}
diff --git a/src/main/java/com/google/devtools/build/lib/query2/query/GraphlessBlazeQueryEnvironment.java b/src/main/java/com/google/devtools/build/lib/query2/query/GraphlessBlazeQueryEnvironment.java
index e5c218f..d531b6a 100644
--- a/src/main/java/com/google/devtools/build/lib/query2/query/GraphlessBlazeQueryEnvironment.java
+++ b/src/main/java/com/google/devtools/build/lib/query2/query/GraphlessBlazeQueryEnvironment.java
@@ -45,6 +45,7 @@
import com.google.devtools.build.lib.query2.engine.QueryUtil.UniquifierImpl;
import com.google.devtools.build.lib.query2.engine.SkyframeRestartQueryException;
import com.google.devtools.build.lib.query2.engine.Uniquifier;
+import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.ArrayList;
import java.util.Collection;
@@ -437,13 +438,13 @@
// Also add the BUILD file of the extension.
if (buildFiles) {
- // Can be null in genquery: see http://b/123795023#comment6.
- String baseName =
- cachingPackageLocator.getBaseNameForLoadedPackage(
+ Path buildFileForLoad =
+ cachingPackageLocator.getBuildFileForPackage(
loadTarget.getLabel().getPackageIdentifier());
- if (baseName != null) {
+ if (buildFileForLoad != null) {
Label buildFileLabel =
- Label.createUnvalidated(loadTarget.getLabel().getPackageIdentifier(), baseName);
+ Label.createUnvalidated(
+ loadTarget.getLabel().getPackageIdentifier(), buildFileForLoad.getBaseName());
dependentFiles.add(new FakeLoadTarget(buildFileLabel, pkg));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
index 2830a2e..e94c860 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/genquery/GenQuery.java
@@ -617,14 +617,6 @@
}
return pkg.getBuildFile().getPath();
}
-
- @Override
- public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
- // TODO(b/123795023): we should have the data here but we don't have all packages for Starlark
- // loads present here.
- Package pkg = pkgMap.get(packageName);
- return pkg == null ? null : pkg.getBuildFileLabel().getName();
- }
}
private static class BrokenQueryScopeException extends Exception {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java
index fbf2e7b..c988797 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageManager.java
@@ -13,14 +13,11 @@
// limitations under the License.
package com.google.devtools.build.lib.skyframe;
-import static com.google.common.base.Preconditions.checkNotNull;
-
import com.google.common.base.Preconditions;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.PackageIdentifier;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
import com.google.devtools.build.lib.events.ExtendedEventHandler;
-import com.google.devtools.build.lib.events.StoredEventHandler;
import com.google.devtools.build.lib.packages.CachingPackageLocator;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
@@ -110,22 +107,6 @@
}
@Override
- public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
- StoredEventHandler eventHandler = new StoredEventHandler();
- try {
- Package pkg =
- checkNotNull(
- packageLoader.getPackage(eventHandler, packageName),
- "Already loaded package not present: %s",
- eventHandler);
- return pkg.getBuildFileLabel().getName();
- } catch (InterruptedException | NoSuchPackageException e) {
- throw new IllegalStateException(
- "Can't have error for loaded " + packageName + ", " + eventHandler, e);
- }
- }
-
- @Override
public PathPackageLocator getPackagePath() {
return pkgLocator.get();
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
index 11818be..2eb0449 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/packages/AbstractPackageLoader.java
@@ -460,12 +460,6 @@
public Path getBuildFileForPackage(PackageIdentifier packageName) {
return pkgLocatorRef.get().getPackageBuildFileNullable(packageName, syscallCacheRef);
}
-
- @Override
- public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
- Path buildFileForPackage = getBuildFileForPackage(packageName);
- return buildFileForPackage == null ? null : buildFileForPackage.getBaseName();
- }
};
ImmutableMap.Builder<SkyFunctionName, SkyFunction> builder = ImmutableMap.builder();
builder
diff --git a/src/test/java/com/google/devtools/build/lib/packages/GlobCacheTest.java b/src/test/java/com/google/devtools/build/lib/packages/GlobCacheTest.java
index f1b693f..d90c55c 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/GlobCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/GlobCacheTest.java
@@ -110,12 +110,6 @@
return null;
}
}
-
- @Override
- public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
- Path buildFileForPackage = getBuildFileForPackage(packageName);
- return buildFileForPackage == null ? null : buildFileForPackage.getBaseName();
- }
},
null,
TestUtils.getPool(),
diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
index 1710588..21141f1 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java
@@ -1251,11 +1251,6 @@
public Path getBuildFileForPackage(PackageIdentifier packageName) {
return null;
}
-
- @Override
- public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
- return null;
- }
},
null,
TestUtils.getPool(),