Rolling forward https://github.com/bazelbuild/bazel/commit/23f171e2208700dc2f2f65f5ccb32bacd7aec87d, but looking for PackageLookupValues, which are guaranteed to be present if a bzl file has been loaded, as opposed to PackageValues, which are not.
*** Original change description (substitute "package lookup" for "package" everywhere to update the 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: 389960483
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 d90c55c..f1b693f 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,6 +110,12 @@
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 21141f1..1710588 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,6 +1251,11 @@
public Path getBuildFileForPackage(PackageIdentifier packageName) {
return null;
}
+
+ @Override
+ public String getBaseNameForLoadedPackage(PackageIdentifier packageName) {
+ return null;
+ }
},
null,
TestUtils.getPool(),
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java
index bdaa988..3ed758a 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/AbstractQueryTest.java
@@ -1798,6 +1798,15 @@
}
@Test
+ public void buildfilesBazel() throws Exception {
+ writeFile("bar/BUILD.bazel");
+ writeFile("bar/bar.bzl", "sym = 0");
+ writeFile("foo/BUILD.bazel", "load('//bar:bar.bzl', 'sym')");
+ assertThat(evalToListOfStrings("buildfiles(foo:*)"))
+ .containsExactly("//foo:BUILD.bazel", "//bar:bar.bzl", "//bar:BUILD.bazel");
+ }
+
+ @Test
public void testTargetsFromBuildfilesAndRealTargets() throws Exception {
writeFile(
"foo/BUILD", "load('//baz:baz.bzl', 'x')", "sh_library(name = 'foo', deps = ['//baz'])");
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java
index 24c22b5..7951cb7 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/PostAnalysisQueryTest.java
@@ -730,6 +730,9 @@
public void bzlPackageBadDueToBrokenSyntax() {}
@Override
+ public void buildfilesBazel() {}
+
+ @Override
public void testTargetsFromBuildfilesAndRealTargets() {}
// siblings() operator.
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java b/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java
index 4bd53a2..c179864 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java
+++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/SkyframeQueryHelper.java
@@ -55,6 +55,7 @@
import com.google.devtools.build.lib.skyframe.PackageValue;
import com.google.devtools.build.lib.skyframe.PrecomputedValue;
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
+import com.google.devtools.build.lib.skyframe.SkyframeTargetPatternEvaluator;
import com.google.devtools.build.lib.testutil.SkyframeExecutorTestHelper;
import com.google.devtools.build.lib.testutil.TestPackageFactoryBuilderFactory;
import com.google.devtools.build.lib.util.AbruptExitException;
@@ -303,7 +304,7 @@
throw new IllegalStateException(e);
}
pkgManager = skyframeExecutor.getPackageManager();
- targetParser = pkgManager.newTargetPatternPreloader();
+ targetParser = new SkyframeTargetPatternEvaluator(skyframeExecutor);
}
@Override