diff options
author | Eric Dobson <endobson@google.com> | 2016-11-25 21:59:09 +0000 |
---|---|---|
committer | Irina Iancu <elenairina@google.com> | 2016-11-28 08:42:17 +0000 |
commit | 20bd27412fa699854b58af2b372b4fc9d3c336b3 (patch) | |
tree | 5a3e81adef4cedc3bd0a35714b75c43513bed67f /src/main | |
parent | 430bf42318f16f678f8370c4f9ac92a0268256d3 (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.java | 20 |
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 |