summaryrefslogtreecommitdiffstats
path: root/jack
diff options
context:
space:
mode:
authorBenoit Lamarche <benoitlamarche@google.com>2015-05-29 12:57:50 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2015-05-29 12:57:50 +0000
commit2600fe54c29949048100051f92f40f3082c84b76 (patch)
tree615e42cbc45914b6deafdcc9ed1625cb58e63f4e /jack
parentcd6fbff263a0460c7cd1ffd55fe60774aad62da1 (diff)
parentd2fca07d45ff05f2f2881d756ba4939fd24096e8 (diff)
downloadtoolchain_jack-2600fe54c29949048100051f92f40f3082c84b76.zip
toolchain_jack-2600fe54c29949048100051f92f40f3082c84b76.tar.gz
toolchain_jack-2600fe54c29949048100051f92f40f3082c84b76.tar.bz2
Merge "Use CaseInsesitiveFS for all library output dirs" into ub-jack-brest
Diffstat (limited to 'jack')
-rw-r--r--jack/src/com/android/jack/Options.java4
-rw-r--r--jack/src/com/android/jack/library/InputJackLibraryCodec.java18
2 files changed, 19 insertions, 3 deletions
diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java
index dd4e4d6..ed05863 100644
--- a/jack/src/com/android/jack/Options.java
+++ b/jack/src/com/android/jack/Options.java
@@ -46,8 +46,8 @@ import com.android.jack.transformations.renamepackage.PackageRenamer;
import com.android.jack.util.ClassNameCodec;
import com.android.jack.util.filter.Filter;
import com.android.sched.util.RunnableHooks;
+import com.android.sched.util.codec.CaseInsensitiveDirectFSCodec;
import com.android.sched.util.codec.DirectDirOutputVFSCodec;
-import com.android.sched.util.codec.DirectFSCodec;
import com.android.sched.util.codec.DirectoryCodec;
import com.android.sched.util.codec.InputFileOrDirectoryCodec;
import com.android.sched.util.codec.InputStreamOrDirectoryCodec;
@@ -190,7 +190,7 @@ public class Options {
@Nonnull
public static final PropertyId<VFS> LIBRARY_OUTPUT_DIR = PropertyId.create(
"jack.library.output.dir", "Output folder for library",
- new DirectFSCodec(Existence.MUST_EXIST)).requiredIf(GENERATE_JACK_LIBRARY
+ new CaseInsensitiveDirectFSCodec(Existence.MUST_EXIST)).requiredIf(GENERATE_JACK_LIBRARY
.getValue().isTrue().and(LIBRARY_OUTPUT_CONTAINER_TYPE.is(Container.DIR)));
diff --git a/jack/src/com/android/jack/library/InputJackLibraryCodec.java b/jack/src/com/android/jack/library/InputJackLibraryCodec.java
index 61479d6..3da05c9 100644
--- a/jack/src/com/android/jack/library/InputJackLibraryCodec.java
+++ b/jack/src/com/android/jack/library/InputJackLibraryCodec.java
@@ -19,9 +19,11 @@ package com.android.jack.library;
import com.android.jack.LibraryException;
import com.android.sched.util.RunnableHooks;
import com.android.sched.util.codec.CodecContext;
+import com.android.sched.util.codec.MessageDigestCodec;
import com.android.sched.util.codec.ParsingException;
import com.android.sched.util.codec.StringCodec;
import com.android.sched.util.config.ConfigurationError;
+import com.android.sched.util.config.MessageDigestFactory;
import com.android.sched.util.file.CannotCreateFileException;
import com.android.sched.util.file.CannotSetPermissionException;
import com.android.sched.util.file.Directory;
@@ -34,11 +36,14 @@ import com.android.sched.util.file.InputZipFile;
import com.android.sched.util.file.NoSuchFileException;
import com.android.sched.util.file.NotFileOrDirectoryException;
import com.android.sched.util.file.WrongPermissionException;
+import com.android.sched.vfs.CaseInsensitiveFS;
import com.android.sched.vfs.DirectFS;
import com.android.sched.vfs.ReadZipFS;
import com.android.sched.vfs.VFS;
+import com.android.sched.vfs.WrongVFSFormatException;
import java.io.File;
+import java.security.Provider.Service;
import java.util.Collections;
import java.util.List;
import java.util.zip.ZipException;
@@ -51,6 +56,9 @@ import javax.annotation.Nonnull;
*/
public class InputJackLibraryCodec implements StringCodec<InputJackLibrary> {
+ @Nonnull
+ private final MessageDigestCodec messageDigestCodec = new MessageDigestCodec();
+
@Override
@Nonnull
public InputJackLibrary parseString(@Nonnull CodecContext context, @Nonnull String string) {
@@ -61,6 +69,7 @@ public class InputJackLibraryCodec implements StringCodec<InputJackLibrary> {
}
}
+ @SuppressWarnings("resource")
@Override
@CheckForNull
public InputJackLibrary checkString(@Nonnull CodecContext context, @Nonnull String string)
@@ -70,12 +79,19 @@ public class InputJackLibraryCodec implements StringCodec<InputJackLibrary> {
Directory workingDirectory = context.getWorkingDirectory();
File dirOrZip = FileOrDirectory.getFileFromWorkingDirectory(workingDirectory, string);
if (dirOrZip.isDirectory()) {
- vfs = new DirectFS(new Directory(workingDirectory,
+ DirectFS directFS = new DirectFS(new Directory(workingDirectory,
string,
context.getRunnableHooks(),
Existence.MUST_EXIST,
Permission.READ | Permission.WRITE,
ChangePermission.NOCHANGE), Permission.READ | Permission.WRITE);
+ try {
+ Service service = messageDigestCodec.checkString(context, "SHA");
+ vfs = new CaseInsensitiveFS(directFS, /* nbGroup = */ 2, /* szGroup = */ 2,
+ new MessageDigestFactory(service), /* debug = */ false);
+ } catch (WrongVFSFormatException e) {
+ vfs = directFS;
+ }
} else {
RunnableHooks hooks = context.getRunnableHooks();
assert hooks != null;