Expose FilegroupPathProvider to Starlark builtins.
Required for internal migration and should be removable in the future.
PiperOrigin-RevId: 407530904
diff --git a/src/main/java/com/google/devtools/build/lib/rules/BUILD b/src/main/java/com/google/devtools/build/lib/rules/BUILD
index ac40eb4..b747a15 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/rules/BUILD
@@ -252,8 +252,10 @@
deps = [
"//src/main/java/com/google/devtools/build/lib/analysis:transitive_info_provider",
"//src/main/java/com/google/devtools/build/lib/concurrent",
+ "//src/main/java/com/google/devtools/build/lib/packages",
"//src/main/java/com/google/devtools/build/lib/skyframe/serialization/autocodec",
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+ "//src/main/java/net/starlark/java/annot",
],
)
diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
index c5371ae..ad6df08 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/Filegroup.java
@@ -103,9 +103,7 @@
.setFilesToBuild(filesToBuild)
.setRunfilesSupport(null, getExecutable(filesToBuild))
.addNativeDeclaredProvider(instrumentedFilesProvider)
- .addProvider(
- FilegroupPathProvider.class,
- new FilegroupPathProvider(getFilegroupPath(ruleContext)));
+ .addNativeDeclaredProvider(new FilegroupPathProvider(getFilegroupPath(ruleContext)));
return builder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java b/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java
index 53566f3..6c43299 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/filegroup/FilegroupPathProvider.java
@@ -14,17 +14,27 @@
package com.google.devtools.build.lib.rules.filegroup;
-import com.google.devtools.build.lib.analysis.TransitiveInfoProvider;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
+import com.google.devtools.build.lib.packages.BuiltinProvider;
+import com.google.devtools.build.lib.packages.NativeInfo;
+import com.google.devtools.build.lib.packages.Provider;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.lib.vfs.PathFragment;
+import net.starlark.java.annot.StarlarkBuiltin;
+import net.starlark.java.annot.StarlarkMethod;
/** A transitive info provider for dependent targets to query {@code path} attributes. */
@Immutable
+@StarlarkBuiltin(name = "FilegroupPathInfo", documented = false)
@AutoCodec
-public final class FilegroupPathProvider implements TransitiveInfoProvider {
+public final class FilegroupPathProvider extends NativeInfo {
private final PathFragment pathFragment;
+ /** Provider class for FilegroupPathProvider. */
+ public static final BuiltinProvider<FilegroupPathProvider> PROVIDER =
+ new BuiltinProvider<FilegroupPathProvider>(
+ "FilegroupPathInfo", FilegroupPathProvider.class) {};
+
@AutoCodec.Instantiator
public FilegroupPathProvider(PathFragment pathFragment) {
this.pathFragment = pathFragment;
@@ -36,4 +46,14 @@
public PathFragment getFilegroupPath() {
return pathFragment;
}
+
+ @StarlarkMethod(name = "path", structField = true, documented = false)
+ public String getFilegroupPathForStarlark() {
+ return getFilegroupPath().getPathString();
+ }
+
+ @Override
+ public Provider getProvider() {
+ return PROVIDER;
+ }
}