aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main
diff options
context:
space:
mode:
authorGravatar Eric Dobson <endobson@google.com>2016-11-25 21:59:09 +0000
committerGravatar Irina Iancu <elenairina@google.com>2016-11-28 08:42:17 +0000
commit20bd27412fa699854b58af2b372b4fc9d3c336b3 (patch)
tree5a3e81adef4cedc3bd0a35714b75c43513bed67f /src/main
parent430bf42318f16f678f8370c4f9ac92a0268256d3 (diff)
Make Runfiles.SymlinkEntry implement SkylarkValue.
Fixes #1109 Closes #2126. -- Reviewed-on: https://github.com/bazelbuild/bazel/pull/2126 MOS_MIGRATED_REVID=140217086
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java20
1 files changed, 16 insertions, 4 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 0de1b2d513..80d67573b2 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
@@ -33,10 +33,11 @@ import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModule;
import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkValue;
+import com.google.devtools.build.lib.syntax.Printer;
import com.google.devtools.build.lib.util.Preconditions;
import com.google.devtools.build.lib.vfs.Path;
import com.google.devtools.build.lib.vfs.PathFragment;
-
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
@@ -49,7 +50,6 @@ import java.util.Map.Entry;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
-
import javax.annotation.Nullable;
/**
@@ -104,7 +104,7 @@ public final class Runfiles {
* An entry in the runfiles map.
*
* <p>build-runfiles.cc enforces the following constraints: The PathFragment must not be an
- * absolute path, nor contain "..". Overlapping runfiles links are also refused. This is the case
+ * absolute path, nor contain "..". Overlapping runfiles links are also refused. This is the case
* where you ask to create a link to "foo" and also "foo/bar.txt". I.e. you're asking it to make
* "foo" both a file (symlink) and a directory.
*
@@ -129,7 +129,7 @@ public final class Runfiles {
// equals to the third one if they are not the same instance (which they almost never are)
//
// Goodnight, prince(ss)?, and sweet dreams.
- private static final class SymlinkEntry {
+ private static final class SymlinkEntry implements SkylarkValue {
private final PathFragment path;
private final Artifact artifact;
@@ -145,6 +145,18 @@ public final class Runfiles {
public Artifact getArtifact() {
return artifact;
}
+
+ public boolean isImmutable() {
+ return true;
+ }
+
+ public void write(Appendable buffer, char quotationMark) {
+ Printer.append(buffer, "SymlinkEntry(path = ");
+ Printer.write(buffer, getPath().toString(), quotationMark);
+ Printer.append(buffer, ", artifact = ");
+ getArtifact().write(buffer, quotationMark);
+ Printer.append(buffer, ")");
+ }
}
// It is important to declare this *after* the DUMMY_SYMLINK_EXPANDER to avoid NPEs