aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
diff options
context:
space:
mode:
authorGravatar Brian Silverman <bsilver16384@gmail.com>2016-04-15 12:16:04 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-04-15 14:08:33 +0000
commit4321b677c0846e905702ff8fd1a38c00404b675f (patch)
tree37967482aed55de37242100b26e462e7a1488501 /src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java
parent907dbbfee014a5a7b88450a93c2cef877ebda4b6 (diff)
Expose __init__.py filenames to Skylark
This is important for packaging Python code in a way which is compatible with the way Bazel builds its standard runfiles directory. Refs #671 -- Change-Id: Ica2adab481cfecabb84b608cd952b0cae5a8653c Reviewed-on: https://bazel-review.googlesource.com/#/c/2900/ MOS_MIGRATED_REVID=119945845
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java31
1 files changed, 31 insertions, 0 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 95efeb3f29..5c14ec2dda 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
@@ -46,6 +46,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
+import java.util.TreeSet;
import javax.annotation.Nullable;
@@ -77,6 +78,22 @@ public final class Runfiles {
}
};
+ private static final Function<Artifact, PathFragment> GET_ROOT_RELATIVE_PATH =
+ new Function<Artifact, PathFragment>() {
+ @Override
+ public PathFragment apply(Artifact input) {
+ return input.getRootRelativePath();
+ }
+ };
+
+ private static final Function<PathFragment, String> PATH_FRAGMENT_TO_STRING =
+ new Function<PathFragment, String>() {
+ @Override
+ public String apply(PathFragment input) {
+ return input.toString();
+ }
+ };
+
/**
* An entry in the runfiles map.
*
@@ -319,6 +336,20 @@ public final class Runfiles {
return symlinks;
}
+ @SkylarkCallable(
+ name = "empty_filenames",
+ doc = "Returns names of empty files to create.",
+ structField = true
+ )
+ public NestedSet<String> getEmptyFilenames() {
+ Set<PathFragment> manifest = new TreeSet();
+ Iterables.addAll(
+ manifest, Iterables.transform(getArtifacts().toCollection(), GET_ROOT_RELATIVE_PATH));
+ return NestedSetBuilder.wrap(
+ Order.STABLE_ORDER,
+ Iterables.transform(emptyFilesSupplier.getExtraPaths(manifest), PATH_FRAGMENT_TO_STRING));
+ }
+
/**
* Returns the symlinks as a map from path fragment to artifact.
*