summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYohann Roussel <yroussel@google.com>2015-02-26 15:26:01 +0100
committerYohann Roussel <yroussel@google.com>2015-03-03 11:12:03 +0100
commit4f8680254dd1ecee7baeb9a6efb2803410473468 (patch)
treec748d2b8cdbe5e3a3470001f708fffb5dc400e52
parent495cd9a269582491927e37ad76077cd115d58a8b (diff)
downloadtoolchain_jack-4f8680254dd1ecee7baeb9a6efb2803410473468.zip
toolchain_jack-4f8680254dd1ecee7baeb9a6efb2803410473468.tar.gz
toolchain_jack-4f8680254dd1ecee7baeb9a6efb2803410473468.tar.bz2
Use properties for jarjar rules control
Change-Id: I90e9daf18c1a3d40a562e33afc8ca14420d7db61
-rw-r--r--jack/src/com/android/jack/Jack.java2
-rw-r--r--jack/src/com/android/jack/Options.java17
-rw-r--r--jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java18
-rw-r--r--jack/src/com/tonicsystems/jarjar/RulesFileParser.java9
-rw-r--r--jack/tests/com/android/jack/TestTools.java2
5 files changed, 22 insertions, 26 deletions
diff --git a/jack/src/com/android/jack/Jack.java b/jack/src/com/android/jack/Jack.java
index 23f7327..5a39401 100644
--- a/jack/src/com/android/jack/Jack.java
+++ b/jack/src/com/android/jack/Jack.java
@@ -457,7 +457,7 @@ public abstract class Jack {
if (sanityChecks) {
request.addFeature(SanityChecks.class);
}
- if (options.jarjarRulesFile != null) {
+ if (config.get(PackageRenamer.JARJAR_ENABLED).booleanValue()) {
request.addFeature(Jarjar.class);
}
if (options.dxLegacy) {
diff --git a/jack/src/com/android/jack/Options.java b/jack/src/com/android/jack/Options.java
index d68c978..8298168 100644
--- a/jack/src/com/android/jack/Options.java
+++ b/jack/src/com/android/jack/Options.java
@@ -258,7 +258,7 @@ public class Options {
@Option(name = "--config-jarjar", usage = "use a jarjar rules file (default: none)",
metaVar = "<FILE>")
- protected File jarjarRulesFile = null;
+ private File jarjarRulesFile = null;
@Option(name = "--import", usage = "import the given file into the output (repeatable)",
metaVar = "<FILE>")
@@ -524,7 +524,8 @@ public class Options {
configBuilder.set(VERBOSITY_LEVEL, verbose);
if (jarjarRulesFile != null) {
- configBuilder.set(PackageRenamer.JARJAR_FILE, jarjarRulesFile);
+ configBuilder.set(PackageRenamer.JARJAR_ENABLED, true);
+ configBuilder.setString(PackageRenamer.JARJAR_FILE, jarjarRulesFile.getPath());
}
configBuilder.pushDefaultLocation(new StringLocation("proguard flags"));
@@ -753,18 +754,6 @@ public class Options {
throw new IllegalOptionsException(
"Impossible to emit synthetic debug info when not emitting debug info");
}
-
- if (jarjarRulesFile != null) {
- if (!jarjarRulesFile.exists()) {
- throw new IllegalOptionsException("The specified rules file '"
- + jarjarRulesFile.getPath() + "' for package renaming does not exist.");
- }
-
- if (!jarjarRulesFile.canRead()) {
- throw new IllegalOptionsException("The specified rules file '"
- + jarjarRulesFile.getPath() + "' for package renaming cannot be read.");
- }
- }
}
public void setJayceOutputDir(@Nonnull File outputDir) {
diff --git a/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java b/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java
index a3b62a7..4151da5 100644
--- a/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java
+++ b/jack/src/com/android/jack/transformations/renamepackage/PackageRenamer.java
@@ -38,17 +38,18 @@ import com.android.sched.item.Name;
import com.android.sched.schedulable.RunnableSchedulable;
import com.android.sched.schedulable.Support;
import com.android.sched.schedulable.Transform;
-import com.android.sched.util.codec.PathCodec;
+import com.android.sched.util.codec.InputStreamCodec;
import com.android.sched.util.config.HasKeyId;
import com.android.sched.util.config.ThreadConfig;
+import com.android.sched.util.config.id.BooleanPropertyId;
import com.android.sched.util.config.id.PropertyId;
+import com.android.sched.util.file.InputStreamFile;
import com.android.sched.vfs.VPath;
import com.tonicsystems.jarjar.PackageRemapper;
import com.tonicsystems.jarjar.PatternElement;
import com.tonicsystems.jarjar.RulesFileParser;
import com.tonicsystems.jarjar.Wildcard;
-import java.io.File;
import java.util.List;
import java.util.Stack;
@@ -65,12 +66,17 @@ import javax.annotation.Nonnull;
public class PackageRenamer implements RunnableSchedulable<JSession>{
@Nonnull
- public static final PropertyId<File> JARJAR_FILE = PropertyId.create(
- "jack.jarjar.file", "The jarjar rules file", new PathCodec())
- .addDefaultValue("jarjar.txt");
+ public static final BooleanPropertyId JARJAR_ENABLED = BooleanPropertyId.create(
+ "jack.repackaging", "Enable repackaging")
+ .addDefaultValue(false);
@Nonnull
- private final File jarjarRulesFile = ThreadConfig.get(JARJAR_FILE);
+ public static final PropertyId<InputStreamFile> JARJAR_FILE = PropertyId.create(
+ "jack.repackaging.file", "Jarjar rules file", new InputStreamCodec())
+ .requiredIf(JARJAR_ENABLED.getValue().isTrue());
+
+ @Nonnull
+ private final InputStreamFile jarjarRulesFile = ThreadConfig.get(JARJAR_FILE);
private static class Visitor extends JVisitor {
diff --git a/jack/src/com/tonicsystems/jarjar/RulesFileParser.java b/jack/src/com/tonicsystems/jarjar/RulesFileParser.java
index 83e25f3..b0e772a 100644
--- a/jack/src/com/tonicsystems/jarjar/RulesFileParser.java
+++ b/jack/src/com/tonicsystems/jarjar/RulesFileParser.java
@@ -16,10 +16,11 @@
package com.tonicsystems.jarjar;
+import com.android.sched.util.file.InputStreamFile;
+
import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
import java.io.IOException;
+import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Arrays;
@@ -31,8 +32,8 @@ import java.util.List;
public class RulesFileParser {
private RulesFileParser() {}
- public static List<PatternElement> parse(File file) throws IOException {
- return parse(new FileReader(file));
+ public static List<PatternElement> parse(InputStreamFile file) throws IOException {
+ return parse(new InputStreamReader(file.getInputStream()));
}
public static List<PatternElement> parse(String value) throws IOException {
diff --git a/jack/tests/com/android/jack/TestTools.java b/jack/tests/com/android/jack/TestTools.java
index da69c2c..99aec20 100644
--- a/jack/tests/com/android/jack/TestTools.java
+++ b/jack/tests/com/android/jack/TestTools.java
@@ -261,7 +261,7 @@ public class TestTools {
public static Options buildCommandLineArgs(@Nonnull File fileOrSourcelist,
@CheckForNull File jarjarRules) throws IOException {
Options options = buildCommandLineArgs(null /* classpath */, new File[] {fileOrSourcelist});
- options.jarjarRulesFile = jarjarRules;
+ options.setJarjarRulesFile(jarjarRules);
return options;
}