From d2fca07d45ff05f2f2881d756ba4939fd24096e8 Mon Sep 17 00:00:00 2001 From: Benoit Lamarche Date: Thu, 7 May 2015 19:27:15 +0200 Subject: Use CaseInsesitiveFS for all library output dirs Bug: 18750643 (cherry picked from commit 1751a7aba3ae72251ea8b83592967034a6f8996c) Change-Id: Ifb600f8c0f3213631be91c0a080afe6d5d93e1b6 --- jack/src/com/android/jack/Options.java | 4 ++-- .../android/jack/library/InputJackLibraryCodec.java | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'jack') 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 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 { + @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 { } } + @SuppressWarnings("resource") @Override @CheckForNull public InputJackLibrary checkString(@Nonnull CodecContext context, @Nonnull String string) @@ -70,12 +79,19 @@ public class InputJackLibraryCodec implements StringCodec { 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; -- cgit v1.1