summaryrefslogtreecommitdiffstats
path: root/jack/src/com
diff options
context:
space:
mode:
authorBenoit Lamarche <benoitlamarche@google.com>2015-05-20 15:44:41 +0200
committerBenoit Lamarche <benoitlamarche@google.com>2015-05-29 11:53:49 +0200
commit6007144b3ab9a8c59648fa35a0af920d2a64356e (patch)
tree7f41b302e5727ad374e06ba5e3944e77fc4a3a02 /jack/src/com
parente4ad6f2404104556a4c7c4c356fd922117418c3c (diff)
downloadtoolchain_jack-6007144b3ab9a8c59648fa35a0af920d2a64356e.zip
toolchain_jack-6007144b3ab9a8c59648fa35a0af920d2a64356e.tar.gz
toolchain_jack-6007144b3ab9a8c59648fa35a0af920d2a64356e.tar.bz2
Add support to append in VFS
(cherry picked from commit 9495b1087a937a6175dda075bdd082864c09dc21) Change-Id: Iccece3057dcac434c24c29c152ed65e32d6ba18f
Diffstat (limited to 'jack/src/com')
-rw-r--r--jack/src/com/android/jack/incremental/IncrementalInputFilter.java4
-rw-r--r--jack/src/com/android/jack/incremental/IncrementalLogWriter.java23
-rw-r--r--jack/src/com/android/jack/library/OutputLibrary.java3
-rw-r--r--jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java5
4 files changed, 15 insertions, 20 deletions
diff --git a/jack/src/com/android/jack/incremental/IncrementalInputFilter.java b/jack/src/com/android/jack/incremental/IncrementalInputFilter.java
index 887abcb..1330ada 100644
--- a/jack/src/com/android/jack/incremental/IncrementalInputFilter.java
+++ b/jack/src/com/android/jack/incremental/IncrementalInputFilter.java
@@ -199,9 +199,7 @@ public class IncrementalInputFilter extends CommonFilter implements InputFilter
if (config.get(INCREMENTAL_LOG).booleanValue()) {
IncrementalLogWriter incLog;
try {
- VFS incrementalFolder = config.get(Options.LIBRARY_OUTPUT_DIR);
- assert incrementalFolder != null;
- incLog = new IncrementalLogWriter(getOutputJackLibrary(), incrementalFolder);
+ incLog = new IncrementalLogWriter(getOutputJackLibrary());
incLog.writeString("type: " + (incrementalInputLibrary == null ? "full" : "incremental"));
incLog.writeLibraryDescriptions("classpath", classpathContent);
incLog.writeStrings("classpath digests (" + (libraryDependencies.hasSameLibraryOnClasspath(
diff --git a/jack/src/com/android/jack/incremental/IncrementalLogWriter.java b/jack/src/com/android/jack/incremental/IncrementalLogWriter.java
index ec7016a..d7e03f8 100644
--- a/jack/src/com/android/jack/incremental/IncrementalLogWriter.java
+++ b/jack/src/com/android/jack/incremental/IncrementalLogWriter.java
@@ -26,12 +26,10 @@ import com.android.jack.library.InputLibrary;
import com.android.jack.library.LibraryIOException;
import com.android.jack.library.OutputJackLibrary;
import com.android.sched.util.file.CannotCreateFileException;
-import com.android.sched.vfs.VFS;
+import com.android.sched.util.file.WrongPermissionException;
+import com.android.sched.vfs.OutputVFile;
import com.android.sched.vfs.VPath;
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.PrintStream;
import java.util.Collection;
@@ -55,27 +53,24 @@ class IncrementalLogWriter {
@Nonnull
private static Joiner commaJoiner = Joiner.on(",").useForNull("");
- IncrementalLogWriter(@Nonnull OutputJackLibrary library, @Nonnull VFS incrementalFolder)
- throws LibraryIOException {
+ IncrementalLogWriter(@Nonnull OutputJackLibrary library) throws LibraryIOException {
this.library = library;
+ OutputVFile vFile;
try {
- library.getFile(FileType.LOG, vpath);
+ vFile = library.getFile(FileType.LOG, vpath);
} catch (FileTypeDoesNotExistException e) {
try {
- library.createFile(FileType.LOG, vpath);
+ vFile = library.createFile(FileType.LOG, vpath);
} catch (CannotCreateFileException e1) {
throw new LibraryIOException(library.getLocation(), e1);
}
}
- File logFile = new File(incrementalFolder.getPath(),
- FileType.LOG.buildFileVPath(vpath).getPathAsString(File.separatorChar));
try {
- ps = new PrintStream(new FileOutputStream(logFile, true));
+ ps = new PrintStream(vFile.getPrintStream(/* append = */ true));
writeString("***");
- } catch (FileNotFoundException e) {
- // File already creates by using VFS
- throw new AssertionError();
+ } catch (WrongPermissionException e) {
+ throw new LibraryIOException(library.getLocation(), e);
}
}
diff --git a/jack/src/com/android/jack/library/OutputLibrary.java b/jack/src/com/android/jack/library/OutputLibrary.java
index 1e54346..f365d8a 100644
--- a/jack/src/com/android/jack/library/OutputLibrary.java
+++ b/jack/src/com/android/jack/library/OutputLibrary.java
@@ -18,6 +18,7 @@ package com.android.jack.library;
import com.android.sched.util.file.CannotCreateFileException;
import com.android.sched.util.file.CannotDeleteFileException;
+import com.android.sched.vfs.InputOutputVFile;
import com.android.sched.vfs.InputVFile;
import com.android.sched.vfs.OutputVFile;
import com.android.sched.vfs.VPath;
@@ -46,7 +47,7 @@ public interface OutputLibrary extends Library {
public Iterator<InputVFile> iterator(@Nonnull FileType fileType);
@Nonnull
- public InputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
+ public InputOutputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
throws FileTypeDoesNotExistException;
@Nonnull
diff --git a/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java b/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java
index 3a7f311..2c9eefd 100644
--- a/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java
+++ b/jack/src/com/android/jack/library/v0001/OutputJackLibraryImpl.java
@@ -39,6 +39,7 @@ import com.android.sched.vfs.GenericInputOutputVFS;
import com.android.sched.vfs.GenericInputVFS;
import com.android.sched.vfs.GenericOutputVFS;
import com.android.sched.vfs.InputOutputVFS;
+import com.android.sched.vfs.InputOutputVFile;
import com.android.sched.vfs.InputVFS;
import com.android.sched.vfs.InputVFile;
import com.android.sched.vfs.MessageDigestFS;
@@ -245,10 +246,10 @@ public class OutputJackLibraryImpl extends CommonJackLibrary implements OutputJa
@Override
@Nonnull
- public InputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
+ public InputOutputVFile getFile(@Nonnull FileType fileType, @Nonnull VPath typePath)
throws FileTypeDoesNotExistException {
try {
- return getSectionVFS(fileType).getRootInputVDir()
+ return getSectionVFS(fileType).getRootInputOutputVDir()
.getInputVFile(buildFileVPath(fileType, typePath));
} catch (NotFileOrDirectoryException e) {
throw new FileTypeDoesNotExistException(getLocation(), typePath, fileType);