diff options
author | Benoit Lamarche <benoitlamarche@google.com> | 2015-05-20 15:44:41 +0200 |
---|---|---|
committer | Benoit Lamarche <benoitlamarche@google.com> | 2015-05-29 11:53:49 +0200 |
commit | 6007144b3ab9a8c59648fa35a0af920d2a64356e (patch) | |
tree | 7f41b302e5727ad374e06ba5e3944e77fc4a3a02 /jack | |
parent | e4ad6f2404104556a4c7c4c356fd922117418c3c (diff) | |
download | toolchain_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')
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); |