Merge "Revert "Use dedicated per-file maps instead of field on IndexedDexItem for file membership.""
diff --git a/.gitignore b/.gitignore
index 0090fb9..86cb42d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,8 +4,8 @@
android-data*/
tests/2016-12-19/art.tar.gz
tests/2016-12-19/art
-tests/2017-07-27/art.tar.gz
-tests/2017-07-27/art
+tests/2017-10-04/art.tar.gz
+tests/2017-10-04/art
tmp/
tools/*.pyc
tools/*/art
@@ -54,6 +54,8 @@
third_party/framework.tar.gz
third_party/goyt
third_party/goyt.tar.gz
+third_party/ddmlib
+third_party/ddmlib.tar.gz
src/test/jack/ub-jack
gradle-app.setting
gradlew
diff --git a/build.gradle b/build.gradle
index 1ad9b98..6be6012 100644
--- a/build.gradle
+++ b/build.gradle
@@ -185,7 +185,7 @@
def cloudDependencies = [
"tests" : [
- "2017-07-27/art",
+ "2017-10-04/art",
"2016-12-19/art"
],
"third_party": [
@@ -557,7 +557,7 @@
task createArtTests(type: Exec) {
def outputDir = "build/generated/test/java/com/android/tools/r8/art"
def createArtTestsScript = "tools/create_art_tests.py"
- inputs.file "tests/2017-07-27/art.tar.gz"
+ inputs.file "tests/2017-10-04/art.tar.gz"
inputs.file createArtTestsScript
outputs.dir outputDir
dependsOn downloadDeps
@@ -1068,7 +1068,9 @@
if (project.hasProperty('dex_vm') && project.property('dex_vm') != 'default') {
println "Running with non default vm: " + project.property('dex_vm')
systemProperty 'dex_vm', project.property('dex_vm')
- if (project.property('dex_vm') == '5.1.1' || project.property('dex_vm') == '6.0.1') {
+ if (project.property('dex_vm').startsWith('4.4.4') ||
+ project.property('dex_vm').startsWith('5.1.1') ||
+ project.property('dex_vm').startsWith('6.0.1')) {
// R8 and D8 compute the dex file version number based on the input.
// Jack generates dex files with version 37 which art 5.1.1 and 6.0.1 will not run.
// Therefore we skip the jack generated art tests with those art versions.
@@ -1183,6 +1185,8 @@
// out/host/linux-x86/bin directory of the android checkout. Currently this is version pre 2.2.1,
// if that is updated the call to smali in "task "${smaliToDexTask}"(type: Exec)" below might
// need to change as smali got a completely new command line interface in version 2.2.1.
+// After Android O, Jack is no longer alive, do not forget to uncomment call to buildArtTest for
+// Jack if you build an android version using Jack.
//
// PATH=$HOME/android/master/out/host/linux-x86/bin:$PATH tools/gradle.py -Pandroid_source buildArtTests
//
@@ -1301,7 +1305,8 @@
if (!(name in skippedTestsDx)) {
dependsOn buildArtTest(androidCheckoutDir, artTestBuildDir, dir, DexTool.DX);
}
- dependsOn buildArtTest(androidCheckoutDir, artTestBuildDir, dir, DexTool.JACK);
+ // After Android O, Jack is no longer alive
+ //dependsOn buildArtTest(androidCheckoutDir, artTestBuildDir, dir, DexTool.JACK);
}
}
}
@@ -1424,7 +1429,13 @@
}
task "${smaliToDexTask}"(type: Exec) {
- workingDir "${testDir}/smali"
+ // Directory that contains smali files is either smali, or smali/art
+ def smali_dir = file("${dir}/smali/art")
+ if (smali_dir.exists()) {
+ workingDir "${testDir}/smali/art"
+ } else {
+ workingDir "${testDir}/smali"
+ }
executable "/bin/bash"
// This is the command line options for smali prior to 2.2.1, where smali got a new
// command line interface.
diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index 72cfbab..426197b 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -22,6 +22,7 @@
private final CompilationMode mode;
private final int minApiLevel;
private final DiagnosticsHandler diagnosticsHandler;
+ private final boolean enableDesugaring;
BaseCompilerCommand(boolean printHelp, boolean printVersion) {
super(printHelp, printVersion);
@@ -30,6 +31,7 @@
mode = null;
minApiLevel = 0;
diagnosticsHandler = new DefaultDiagnosticsHandler();
+ enableDesugaring = true;
}
BaseCompilerCommand(
@@ -38,7 +40,8 @@
OutputMode outputMode,
CompilationMode mode,
int minApiLevel,
- DiagnosticsHandler diagnosticsHandler) {
+ DiagnosticsHandler diagnosticsHandler,
+ boolean enableDesugaring) {
super(app);
assert mode != null;
assert minApiLevel > 0;
@@ -47,6 +50,7 @@
this.mode = mode;
this.minApiLevel = minApiLevel;
this.diagnosticsHandler = diagnosticsHandler;
+ this.enableDesugaring = enableDesugaring;
}
public Path getOutputPath() {
@@ -69,6 +73,10 @@
return diagnosticsHandler;
}
+ boolean getEnableDesugaring() {
+ return enableDesugaring;
+ }
+
abstract public static class Builder<C extends BaseCompilerCommand, B extends Builder<C, B>>
extends BaseCommand.Builder<C, B> {
@@ -152,6 +160,10 @@
return self();
}
+ protected boolean getEnableDesugaring() {
+ return true;
+ }
+
protected void validate() throws CompilationException {
super.validate();
if (getAppBuilder().hasMainDexList() && outputMode == OutputMode.FilePerInputClass) {
diff --git a/src/main/java/com/android/tools/r8/CompilationException.java b/src/main/java/com/android/tools/r8/CompilationException.java
index c7477b6..8e1e56c 100644
--- a/src/main/java/com/android/tools/r8/CompilationException.java
+++ b/src/main/java/com/android/tools/r8/CompilationException.java
@@ -9,7 +9,7 @@
* This is always an expected error and considered a user input issue.
* A user-understandable message must be provided.
*/
-public class CompilationException extends Exception implements Diagnostic {
+public class CompilationException extends Exception {
private static final long serialVersionUID = 1L;
/**
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index 19f478a..8a92ef0 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -60,26 +60,18 @@
/**
* Main API entry for the D8 dexer.
*
- * <p>If the D8Command contains a DiagnosticsHandler that does not throw a CompilationException
- * on error this method returns null if the run fails.
- *
* @param command D8 command.
* @return the compilation result.
*/
public static D8Output run(D8Command command) throws IOException, CompilationException {
InternalOptions options = command.getInternalOptions();
- try {
- CompilationResult result = runForTesting(command.getInputApp(), options);
- assert result != null;
- D8Output output = new D8Output(result.androidApp, command.getOutputMode());
- if (command.getOutputPath() != null) {
- output.write(command.getOutputPath());
- }
- return output;
- } catch (CompilationException e) {
- options.diagnosticsHandler.error(e);
- return null;
+ CompilationResult result = runForTesting(command.getInputApp(), options);
+ assert result != null;
+ D8Output output = new D8Output(result.androidApp, command.getOutputMode());
+ if (command.getOutputPath() != null) {
+ output.write(command.getOutputPath());
}
+ return output;
}
/**
@@ -88,9 +80,6 @@
* <p>The D8 dexer API is intentionally limited and should "do the right thing" given a set of
* inputs. If the API does not suffice please contact the R8 team.
*
- * <p>If the D8Command contains a DiagnosticsHandler that does not throw a CompilationException
- * on error this method returns null if the run fails.
- *
* @param command D8 command.
* @param executor executor service from which to get threads for multi-threaded processing.
* @return the compilation result
@@ -98,19 +87,14 @@
public static D8Output run(D8Command command, ExecutorService executor)
throws IOException, CompilationException {
InternalOptions options = command.getInternalOptions();
- try {
- CompilationResult result = runForTesting(
- command.getInputApp(), options, executor);
- assert result != null;
- D8Output output = new D8Output(result.androidApp, command.getOutputMode());
- if (command.getOutputPath() != null) {
- output.write(command.getOutputPath());
- }
- return output;
- } catch (CompilationException e) {
- options.diagnosticsHandler.error(e);
- return null;
+ CompilationResult result = runForTesting(
+ command.getInputApp(), options, executor);
+ assert result != null;
+ D8Output output = new D8Output(result.androidApp, command.getOutputMode());
+ if (command.getOutputPath() != null) {
+ output.write(command.getOutputPath());
}
+ return output;
}
private static void run(String[] args) throws IOException, CompilationException {
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index ac86781..3ce1ea1 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -99,6 +99,7 @@
getMode(),
getMinApiLevel(),
getDiagnosticsHandler(),
+ getEnableDesugaring(),
intermediate);
}
}
@@ -196,8 +197,10 @@
CompilationMode mode,
int minApiLevel,
DiagnosticsHandler diagnosticsHandler,
+ boolean enableDesugaring,
boolean intermediate) {
- super(inputApp, outputPath, outputMode, mode, minApiLevel, diagnosticsHandler);
+ super(inputApp, outputPath, outputMode, mode, minApiLevel, diagnosticsHandler,
+ enableDesugaring);
this.intermediate = intermediate;
}
@@ -226,6 +229,7 @@
internal.outline.enabled = false;
internal.outputMode = getOutputMode();
internal.diagnosticsHandler = getDiagnosticsHandler();
+ internal.enableDesugaring = getEnableDesugaring();
return internal;
}
}
diff --git a/src/main/java/com/android/tools/r8/Diagnostic.java b/src/main/java/com/android/tools/r8/Diagnostic.java
index 6be2748..3991c4f 100644
--- a/src/main/java/com/android/tools/r8/Diagnostic.java
+++ b/src/main/java/com/android/tools/r8/Diagnostic.java
@@ -7,5 +7,5 @@
* Interface for all diagnostic message produced by D8 and R8.
*/
public interface Diagnostic {
- String toString();
+ String getDiagnosticMessage();
}
diff --git a/src/main/java/com/android/tools/r8/DiagnosticsHandler.java b/src/main/java/com/android/tools/r8/DiagnosticsHandler.java
index 4a89c6f..3548644 100644
--- a/src/main/java/com/android/tools/r8/DiagnosticsHandler.java
+++ b/src/main/java/com/android/tools/r8/DiagnosticsHandler.java
@@ -6,29 +6,17 @@
/**
* A DiagnosticsHandler can be provided to customize handling of diagnostics information.
*
- * <p>During compilation the error, warning and info methods will be called.
+ * <p>During compilation the warning and info methods will be called.
*/
public interface DiagnosticsHandler {
/**
- * Handle error diagnostics.
- *
- * <p>By default this throws the exception.
- *
- * @param error CompilationException containing error information.
- * @throws CompilationException
- */
- default void error(CompilationException error) throws CompilationException {
- throw error;
- }
-
- /**
* Handle warning diagnostics.
*
* @param warning Diagnostic containing warning information.
*/
default void warning(Diagnostic warning) {
- System.err.println(warning.toString());
+ System.err.println(warning.getDiagnosticMessage());
}
/**
@@ -37,6 +25,6 @@
* @param info Diagnostic containing the information.
*/
default void info(Diagnostic info) {
- System.out.println(info.toString());
+ System.out.println(info.getDiagnosticMessage());
}
}
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 940e110..c6fcc22 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -45,6 +45,7 @@
import com.android.tools.r8.utils.CfgPrinter;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.StringDiagnostic;
import com.android.tools.r8.utils.ThreadUtils;
import com.android.tools.r8.utils.Timing;
import com.google.common.io.ByteStreams;
@@ -206,11 +207,11 @@
missingClasses = filterMissingClasses(
missingClasses, options.proguardConfiguration.getDontWarnPatterns());
if (!missingClasses.isEmpty()) {
- System.err.println();
- System.err.println("WARNING, some classes are missing:");
- missingClasses.forEach(clazz -> {
- System.err.println(" - " + clazz.toSourceString());
- });
+ missingClasses.forEach(
+ clazz -> {
+ options.diagnosticsHandler.warning(
+ new StringDiagnostic("Missing class: " + clazz.toSourceString()));
+ });
if (!options.ignoreMissingClasses) {
throw new CompilationError(
"Shrinking can't be performed because some library classes are missing.");
@@ -398,9 +399,6 @@
* <p>The R8 API is intentionally limited and should "do the right thing" given a command. If this
* API does not suffice please contact the R8 team.
*
- * <p>If the R8Command contains a DiagnosticsHandler that does not throw a CompilationException
- * on error this method returns null if the run fails.
- *
* @param command R8 command.
* @return the compilation result.
*/
@@ -481,9 +479,6 @@
* <p>The R8 API is intentionally limited and should "do the right thing" given a command. If this
* API does not suffice please contact the R8 team.
*
- * <p>If the R8Command contains a DiagnosticsHandler that does not throw a CompilationException
- * on error this method returns null if the run fails.
- *
* @param command R8 command.
* @param executor executor service from which to get threads for multi-threaded processing.
* @return the compilation result.
@@ -491,15 +486,10 @@
public static AndroidApp run(R8Command command, ExecutorService executor)
throws IOException, CompilationException {
InternalOptions options = command.getInternalOptions();
- try {
- AndroidApp outputApp =
- runForTesting(command.getInputApp(), options, executor).androidApp;
- writeOutputs(command, options, outputApp);
- return outputApp;
- } catch (CompilationException e) {
- options.diagnosticsHandler.error(e);
- return null;
- }
+ AndroidApp outputApp =
+ runForTesting(command.getInputApp(), options, executor).androidApp;
+ writeOutputs(command, options, outputApp);
+ return outputApp;
}
private static void run(String[] args)
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index a6a1c33..502dd3c 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -238,6 +238,7 @@
getMode(),
getMinApiLevel(),
getDiagnosticsHandler(),
+ getEnableDesugaring(),
useTreeShaking,
useDiscardedChecker,
useMinification,
@@ -394,12 +395,14 @@
CompilationMode mode,
int minApiLevel,
DiagnosticsHandler diagnosticsHandler,
+ boolean enableDesugaring,
boolean useTreeShaking,
boolean useDiscardedChecker,
boolean useMinification,
boolean ignoreMissingClasses,
Path proguardMapOutput) {
- super(inputApp, outputPath, outputMode, mode, minApiLevel, diagnosticsHandler);
+ super(inputApp, outputPath, outputMode, mode, minApiLevel, diagnosticsHandler,
+ enableDesugaring);
assert proguardConfiguration != null;
assert mainDexKeepRules != null;
assert getOutputMode() == OutputMode.Indexed : "Only regular mode is supported in R8";
@@ -461,7 +464,6 @@
internal.keepAttributes.applyPatterns(proguardConfiguration.getKeepAttributesPatterns());
internal.ignoreMissingClasses |= proguardConfiguration.isIgnoreWarnings();
assert !internal.verbose;
- internal.verbose |= proguardConfiguration.isVerbose();
internal.mainDexKeepRules = mainDexKeepRules;
internal.minimalMainDex = internal.debug;
if (mainDexListOutput != null) {
diff --git a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
new file mode 100644
index 0000000..d95de6f
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilder.java
@@ -0,0 +1,158 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.compatdexbuilder;
+
+import com.android.tools.r8.CompilationException;
+import com.android.tools.r8.CompilationMode;
+import com.android.tools.r8.D8;
+import com.android.tools.r8.D8Output;
+import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.ThreadUtils;
+import com.google.common.io.ByteStreams;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Future;
+import java.util.zip.CRC32;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipOutputStream;
+
+public class CompatDexBuilder {
+
+ private String input = null;
+ private String output = null;
+ private int numberOfThreads = 8;
+ private boolean noLocals = false;
+ private boolean verbose = false;
+
+ public static void main(String[] args)
+ throws IOException, InterruptedException, ExecutionException {
+ new CompatDexBuilder().run(args);
+ }
+
+ private void run(String[] args) throws IOException, InterruptedException, ExecutionException {
+ System.out.println("CompatDexBuilder " + String.join(" ", args));
+
+ List<String> flags = new ArrayList<>();
+
+ for (String arg : args) {
+ if (arg.startsWith("@")) {
+ flags.addAll(Files.readAllLines(Paths.get(arg.substring(1))));
+ } else {
+ flags.add(arg);
+ }
+ }
+
+ for (int i = 0; i < flags.size(); i++) {
+ String flag = flags.get(i);
+ if (flag.startsWith("--positions")) {
+ continue;
+ }
+ if (flag.startsWith("--num-threads=")) {
+ numberOfThreads = Integer.parseInt(flag.substring("--num-threads=".length()));
+ }
+ switch (flag) {
+ case "--input_jar":
+ input = flags.get(++i);
+ break;
+ case "--output_zip":
+ output = flags.get(++i);
+ break;
+ case "--verify-dex-file":
+ case "--no-verify-dex-file":
+ case "--show_flags":
+ case "--no-optimize":
+ case "--help":
+ // Ignore
+ break;
+ case "--verbose":
+ verbose = true;
+ break;
+ case "--nolocals":
+ noLocals = true;
+ break;
+ }
+ }
+
+ if (input == null) {
+ System.err.println("No input jar specified");
+ System.exit(1);
+ }
+
+ if (output == null) {
+ System.err.println("No output jar specified");
+ System.exit(1);
+ }
+
+ ExecutorService executor = ThreadUtils.getExecutorService(numberOfThreads);
+ try (ZipOutputStream out = new ZipOutputStream(Files.newOutputStream(Paths.get(output)))) {
+
+ List<ZipEntry> toDex = new ArrayList<>();
+
+ try (ZipFile zipFile = new ZipFile(input)) {
+ final Enumeration<? extends ZipEntry> entries = zipFile.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ if (!entry.getName().endsWith(".class")) {
+ try (InputStream stream = zipFile.getInputStream(entry)) {
+ addEntry(entry.getName(), stream, entry.getTime(), out);
+ }
+ } else {
+ toDex.add(entry);
+ }
+ }
+
+ List<Future<D8Output>> futures = new ArrayList<>(toDex.size());
+ for (int i = 0; i < toDex.size(); i++) {
+ ZipEntry classEntry = toDex.get(i);
+ futures.add(executor.submit(() -> dexEntry(zipFile, classEntry, executor)));
+ }
+ for (int i = 0; i < futures.size(); i++) {
+ D8Output result = futures.get(i).get();
+ ZipEntry entry = toDex.get(i);
+ assert result.getDexResources().size() == 1;
+ try (InputStream dexStream = result.getDexResources().get(0).getStream()) {
+ addEntry(entry.getName() + ".dex", dexStream, entry.getTime(), out);
+ }
+ }
+ }
+ } finally {
+ executor.shutdown();
+ }
+ }
+
+ private D8Output dexEntry(ZipFile zipFile, ZipEntry classEntry, ExecutorService executor)
+ throws IOException, CompilationException {
+ try (InputStream stream = zipFile.getInputStream(classEntry)) {
+ CompatDexBuilderCommandBuilder builder = new CompatDexBuilderCommandBuilder();
+ builder
+ .addClassProgramData(ByteStreams.toByteArray(stream))
+ .setMode(noLocals ? CompilationMode.RELEASE : CompilationMode.DEBUG)
+ .setMinApiLevel(AndroidApiLevel.H_MR2.getLevel());
+ return D8.run(builder.build(), executor);
+ }
+ }
+
+ private static void addEntry(String name, InputStream in, long time, ZipOutputStream out)
+ throws IOException {
+ ZipEntry zipEntry = new ZipEntry(name);
+ byte[] bytes = ByteStreams.toByteArray(in);
+ CRC32 crc32 = new CRC32();
+ crc32.update(bytes);
+ zipEntry.setSize(bytes.length);
+ zipEntry.setMethod(ZipEntry.STORED);
+ zipEntry.setCrc(crc32.getValue());
+ zipEntry.setTime(time);
+ out.putNextEntry(zipEntry);
+ out.write(bytes);
+ out.closeEntry();
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilderCommandBuilder.java b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilderCommandBuilder.java
new file mode 100644
index 0000000..5773d7d
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/compatdexbuilder/CompatDexBuilderCommandBuilder.java
@@ -0,0 +1,17 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.compatdexbuilder;
+
+import com.android.tools.r8.D8Command;
+
+public class CompatDexBuilderCommandBuilder extends D8Command.Builder {
+ CompatDexBuilderCommandBuilder() {
+ super(true);
+ }
+
+ @Override
+ protected boolean getEnableDesugaring() {
+ return false;
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java b/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java
index 55206a4..3e8a006 100644
--- a/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java
+++ b/src/main/java/com/android/tools/r8/compatdx/CompatDxCommandBuilder.java
@@ -10,4 +10,9 @@
CompatDxCommandBuilder() {
super(true);
}
+
+ @Override
+ protected boolean getEnableDesugaring() {
+ return false;
+ }
}
diff --git a/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java b/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
index 2ea5e56..1ad589f 100644
--- a/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
+++ b/src/main/java/com/android/tools/r8/compatproguard/CompatProguard.java
@@ -12,6 +12,16 @@
import java.nio.file.Paths;
import java.util.List;
+/**
+ * Proguard + Dx compatibility interface for r8.
+ *
+ * This should become a mostly drop-in replacement for uses of Proguard followed by Dx.
+ *
+ * It accepts all Proguard flags supported by r8, except -outjars.
+ *
+ * The flag -outjars does not make sense as r8 (like Proguard + Dx) produces Dex output.
+ * For output use --output as for R8 proper.
+ */
public class CompatProguard {
public static class CompatProguardOptions {
public final String output;
@@ -24,7 +34,7 @@
this.proguardConfig = proguardConfig;
}
- public static CompatProguardOptions parse(String[] args) {
+ public static CompatProguardOptions parse(String[] args) throws CompilationException {
String output = null;
int minApi = 1;
ImmutableList.Builder<String> builder = ImmutableList.builder();
@@ -35,8 +45,11 @@
if (arg.charAt(0) == '-') {
if (arg.equals("--min-api")) {
minApi = Integer.valueOf(args[++i]);
- } else if (arg.equals("-outjars")) {
+ } else if (arg.equals("--output")) {
output = args[++i];
+ } else if (arg.equals("-outjars")) {
+ throw new CompilationException(
+ "Proguard argument -outjar is not supported. Use R8 compatible --output flag");
} else {
builder.add(currentLine.toString());
currentLine = new StringBuilder(arg);
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
index 752c66b..61e1022 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
@@ -144,9 +144,9 @@
} else if (!options.canUseMultidex()
&& options.mainDexKeepRules.isEmpty()
&& application.mainDexList.isEmpty()) {
- distributor = new VirtualFile.MonoDexDistributor(this);
+ distributor = new VirtualFile.MonoDexDistributor(this, options);
} else {
- distributor = new VirtualFile.FillFilesDistributor(this, options.minimalMainDex);
+ distributor = new VirtualFile.FillFilesDistributor(this, options);
}
Map<Integer, VirtualFile> newFiles = distributor.run();
diff --git a/src/main/java/com/android/tools/r8/dex/VirtualFile.java b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
index eeb5023..34ec68c 100644
--- a/src/main/java/com/android/tools/r8/dex/VirtualFile.java
+++ b/src/main/java/com/android/tools/r8/dex/VirtualFile.java
@@ -23,6 +23,8 @@
import com.android.tools.r8.naming.NamingLens;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.StringDiagnostic;
import com.google.common.collect.Iterators;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
@@ -267,9 +269,11 @@
protected Set<DexProgramClass> classes;
protected Map<DexProgramClass, String> originalNames;
protected final VirtualFile mainDexFile;
+ protected final InternalOptions options;
- DistributorBase(ApplicationWriter writer) {
+ DistributorBase(ApplicationWriter writer, InternalOptions options) {
super(writer);
+ this.options = options;
// Create the primary dex file. The distribution will add more if needed.
mainDexFile = new VirtualFile(0, writer.namingLens);
@@ -293,10 +297,11 @@
mainDexFile.addClass(programClass);
classes.remove(programClass);
} else {
- System.out.println(
- "WARNING: Application does not contain `"
- + type.toSourceString()
- + "` as referenced in main-dex-list.");
+ options.diagnosticsHandler.warning(
+ new StringDiagnostic(
+ "Application does not contain `"
+ + type.toSourceString()
+ + "` as referenced in main-dex-list."));
}
mainDexFile.commitTransaction();
}
@@ -338,12 +343,10 @@
}
public static class FillFilesDistributor extends DistributorBase {
- boolean minimalMainDex;
private final FillStrategy fillStrategy;
- FillFilesDistributor(ApplicationWriter writer, boolean minimalMainDex) {
- super(writer);
- this.minimalMainDex = minimalMainDex;
+ FillFilesDistributor(ApplicationWriter writer, InternalOptions options) {
+ super(writer, options);
this.fillStrategy = FillStrategy.FILL_MAX;
}
@@ -357,7 +360,7 @@
}
Map<Integer, VirtualFile> filesForDistribution = nameToFileMap;
- if (minimalMainDex && !mainDexFile.isEmpty()) {
+ if (options.minimalMainDex && !mainDexFile.isEmpty()) {
assert !nameToFileMap.get(0).isEmpty();
// The main dex file is filtered out, so create ensure at least one file for the remaining
// classes
@@ -378,8 +381,8 @@
}
public static class MonoDexDistributor extends DistributorBase {
- MonoDexDistributor(ApplicationWriter writer) {
- super(writer);
+ MonoDexDistributor(ApplicationWriter writer, InternalOptions options) {
+ super(writer, options);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
index b6fbdee..2324f8e 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlock.java
@@ -119,7 +119,7 @@
return successors;
}
- public List<BasicBlock> getNormalSucessors() {
+ public List<BasicBlock> getNormalSuccessors() {
if (!hasCatchHandlers()) {
return successors;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java
index 131e0d0..7d61783 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlockInstructionIterator.java
@@ -6,6 +6,8 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.utils.IteratorUtils;
+import com.google.common.collect.ImmutableList;
+import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
@@ -192,11 +194,6 @@
listIterator.remove();
}
- // If splitting the normal exit block, the new block is now the normal exit block.
- if (code.getNormalExitBlock() == block) {
- code.setNormalExitBlock(newBlock);
- }
-
// Insert the new block in the block list right after the current block.
if (blocksIterator == null) {
blocks.add(blocks.indexOf(block) + 1, newBlock);
@@ -371,22 +368,22 @@
BasicBlock inlineEntry = inlinee.blocks.getFirst();
BasicBlock inlineExit = null;
- if (inlinee.getNormalExitBlock() == null) {
+ ImmutableList<BasicBlock> normalExits = inlinee.computeNormalExitBlocks();
+ if (normalExits.isEmpty()) {
assert inlineeCanThrow;
// TODO(sgjesse): Remove this restriction.
assert !invokeBlock.hasCatchHandlers();
blocksToRemove.addAll(
invokePredecessor.unlink(invokeBlock, new DominatorTree(code, blocksToRemove)));
} else {
- // Locate inlinee return.
- InstructionListIterator inlineeIterator = inlinee.getNormalExitBlock().listIterator();
- inlineeIterator.nextUntil(Instruction::isReturn);
- Return ret = inlineeIterator.previous().asReturn();
+ // Ensure and locate the single return instruction of the inlinee.
+ InstructionListIterator inlineeIterator = ensureSingleReturnInstruction(inlinee, normalExits);
- // Map return value if used.
+ // Replace the invoke value with the return value if non-void.
+ assert inlineeIterator.peekNext().isReturn();
if (invoke.outValue() != null) {
- assert !ret.isReturnVoid();
- invoke.outValue().replaceUsers(ret.returnValue());
+ Return returnInstruction = inlineeIterator.peekNext().asReturn();
+ invoke.outValue().replaceUsers(returnInstruction.returnValue());
}
// Split before return and unlink return.
@@ -439,4 +436,55 @@
return invokeSuccessor;
}
+
+ private InstructionListIterator ensureSingleReturnInstruction(
+ IRCode code,
+ ImmutableList<BasicBlock> normalExits) {
+ if (normalExits.size() == 1) {
+ InstructionListIterator it = normalExits.get(0).listIterator();
+ it.nextUntil(Instruction::isReturn);
+ it.previous();
+ return it;
+ }
+ BasicBlock newExitBlock = new BasicBlock();
+ newExitBlock.setNumber(code.getHighestBlockNumber() + 1);
+ Return newReturn;
+ if (normalExits.get(0).exit().asReturn().isReturnVoid()) {
+ newReturn = new Return();
+ } else {
+ boolean same = true;
+ List<Value> operands = new ArrayList<>(normalExits.size());
+ for (BasicBlock exitBlock : normalExits) {
+ Value retValue = exitBlock.exit().asReturn().returnValue();
+ operands.add(retValue);
+ same = same && retValue == operands.get(0);
+ }
+ Value value;
+ if (same) {
+ value = operands.get(0);
+ } else {
+ Phi phi =
+ new Phi(
+ code.valueNumberGenerator.next(),
+ newExitBlock,
+ operands.get(0).outType(),
+ null);
+ phi.addOperands(operands);
+ value = phi;
+ }
+ newReturn = new Return(value, value.outType());
+ }
+ newExitBlock.add(newReturn);
+ for (BasicBlock exitBlock : normalExits) {
+ InstructionListIterator it = exitBlock.listIterator(exitBlock.getInstructions().size());
+ Instruction oldExit = it.previous();
+ assert oldExit.isReturn();
+ it.replaceCurrentInstruction(new Goto());
+ exitBlock.link(newExitBlock);
+ }
+ newExitBlock.close(null);
+ code.blocks.add(newExitBlock);
+ assert code.isConsistentSSA();
+ return newExitBlock.listIterator();
+ }
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/BasicBlockIterator.java b/src/main/java/com/android/tools/r8/ir/code/BasicBlockIterator.java
index 74c2768..26305b7 100644
--- a/src/main/java/com/android/tools/r8/ir/code/BasicBlockIterator.java
+++ b/src/main/java/com/android/tools/r8/ir/code/BasicBlockIterator.java
@@ -86,9 +86,6 @@
iterator.remove();
}
listIterator.remove();
- if (current == code.getNormalExitBlock()) {
- code.setNormalExitBlock(null);
- }
current = null;
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java b/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java
index c8a17dc2..90a9b29 100644
--- a/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java
+++ b/src/main/java/com/android/tools/r8/ir/code/DominatorTree.java
@@ -13,6 +13,7 @@
private BasicBlock[] sorted;
private BasicBlock[] doms;
+ private final BasicBlock normalExitBlock = new BasicBlock();
public DominatorTree(IRCode code) {
this(code, Collections.emptyList());
@@ -20,7 +21,15 @@
// TODO(sgjesse) Get rid of this constructor and blocksToIgnore.
DominatorTree(IRCode code, List<BasicBlock> blocksToIgnore) {
- this.sorted = code.topologicallySortedBlocks(blocksToIgnore);
+ BasicBlock[] blocks = code.topologicallySortedBlocks(blocksToIgnore);
+ // Add the internal exit block to the block list.
+ sorted = new BasicBlock[blocks.length + 1];
+ System.arraycopy(blocks, 0, sorted, 0, blocks.length);
+ sorted[blocks.length] = normalExitBlock;
+ // Link internal exit block to each actual exit block.
+ for (BasicBlock block : code.computeNormalExitBlocks()) {
+ normalExitBlock.getPredecessors().add(block);
+ }
numberBlocks();
build();
}
@@ -54,7 +63,7 @@
* @return wether {@code subject} is strictly dominated by {@code dominator}
*/
public boolean strictlyDominatedBy(BasicBlock subject, BasicBlock dominator) {
- if (subject.getNumber() == 0) {
+ if (subject.getNumber() == 0 || subject == normalExitBlock) {
return false;
}
while (true) {
@@ -87,27 +96,26 @@
return dominator;
}
- /**
- * Returns an iterator over all blocks dominated by dominator, including dominator itself.
- */
- public Iterable<BasicBlock> dominatedBlocks(BasicBlock domintator) {
- return () -> new Iterator<BasicBlock>() {
- private int current = domintator.getNumber();
+ /** Returns an iterator over all blocks dominated by dominator, including dominator itself. */
+ public Iterable<BasicBlock> dominatedBlocks(BasicBlock dominator) {
+ return () ->
+ new Iterator<BasicBlock>() {
+ private int current = dominator.getNumber();
- @Override
- public boolean hasNext() {
- return dominatedBy(sorted[current], domintator);
- }
+ @Override
+ public boolean hasNext() {
+ return dominatedBy(sorted[current], dominator);
+ }
- @Override
- public BasicBlock next() {
- if (!hasNext()) {
- return null;
- } else {
- return sorted[current++];
- }
- }
- };
+ @Override
+ public BasicBlock next() {
+ if (!hasNext()) {
+ return null;
+ } else {
+ return sorted[current++];
+ }
+ }
+ };
}
/**
@@ -143,6 +151,10 @@
};
}
+ public Iterable<BasicBlock> normalExitDominatorBlocks() {
+ return dominatorBlocks(normalExitBlock);
+ }
+
public BasicBlock[] getSortedBlocks() {
return sorted;
}
diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index 2e8b683..d9fdaf2 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.ir.regalloc.LinearScanRegisterAllocator;
import com.android.tools.r8.utils.CfgPrinter;
+import com.google.common.collect.ImmutableList;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -27,18 +28,15 @@
public LinkedList<BasicBlock> blocks;
public final ValueNumberGenerator valueNumberGenerator;
- private BasicBlock normalExitBlock;
private boolean numbered = false;
private int nextInstructionNumber = 0;
public IRCode(
DexEncodedMethod method,
LinkedList<BasicBlock> blocks,
- BasicBlock normalExitBlock,
ValueNumberGenerator valueNumberGenerator) {
this.method = method;
this.blocks = blocks;
- this.normalExitBlock = normalExitBlock;
this.valueNumberGenerator = valueNumberGenerator;
}
@@ -110,18 +108,12 @@
BasicBlock block = blockIterator.next();
if (block.isMarked()) {
blockIterator.remove();
- if (block == normalExitBlock) {
- normalExitBlock = null;
- }
}
}
}
public void removeBlocks(List<BasicBlock> blocksToRemove) {
blocks.removeAll(blocksToRemove);
- if (blocksToRemove.contains(normalExitBlock)) {
- normalExitBlock = null;
- }
}
/**
@@ -175,7 +167,6 @@
assert consistentPredecessorSuccessors();
assert consistentCatchHandlers();
assert consistentBlockInstructions();
- assert normalExitBlock == null || normalExitBlock.exit().isReturn();
return true;
}
@@ -353,16 +344,14 @@
return new IRCodeInstructionsIterator(this);
}
- void setNormalExitBlock(BasicBlock block) {
- normalExitBlock = block;
- }
-
- public BasicBlock getNormalExitBlock() {
- return normalExitBlock;
- }
-
- public void invalidateNormalExitBlock() {
- normalExitBlock = null;
+ public ImmutableList<BasicBlock> computeNormalExitBlocks() {
+ ImmutableList.Builder<BasicBlock> builder = ImmutableList.builder();
+ for (BasicBlock block : blocks) {
+ if (block.exit().isReturn()) {
+ builder.add(block);
+ }
+ }
+ return builder.build();
}
public ListIterator<BasicBlock> listIterator() {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index 91b51f4..35cd7fa 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -80,7 +80,6 @@
import com.android.tools.r8.ir.code.Xor;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.InternalOptions;
-import com.google.common.collect.Sets;
import it.unimi.dsi.fastutil.ints.Int2ReferenceAVLTreeMap;
import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
import it.unimi.dsi.fastutil.ints.Int2ReferenceSortedMap;
@@ -262,9 +261,6 @@
private Long2ObjectMap<ConstNumber> doubleConstants = new Long2ObjectArrayMap<>();
private Long2ObjectMap<ConstNumber> nullConstants = new Long2ObjectArrayMap<>();
- private List<BasicBlock> exitBlocks = new ArrayList<>();
- private BasicBlock normalExitBlock;
-
private List<BasicBlock.Pair> needGotoToCatchBlocks = new ArrayList<>();
final private ValueNumberGenerator valueNumberGenerator;
@@ -378,9 +374,6 @@
// but before handle-exit (which does not maintain predecessor counts).
assert verifyFilledPredecessors();
- // If there are multiple returns create an exit block.
- handleExitBlock();
-
// Clear all reaching definitions to free up memory (and avoid invalid use).
for (BasicBlock block : blocks) {
block.clearCurrentDefinitions();
@@ -395,7 +388,7 @@
splitCriticalEdges();
// Package up the IR code.
- IRCode ir = new IRCode(method, blocks, normalExitBlock, valueNumberGenerator);
+ IRCode ir = new IRCode(method, blocks, valueNumberGenerator);
if (options.testing.invertConditionals) {
invertConditionalsForTesting(ir);
@@ -436,7 +429,7 @@
for (BlockInfo info : targets.values()) {
if (info != null && info.block == block) {
assert info.predecessorCount() == block.getPredecessors().size();
- assert info.normalSuccessors.size() == block.getNormalSucessors().size();
+ assert info.normalSuccessors.size() == block.getNormalSuccessors().size();
if (block.hasCatchHandlers()) {
assert info.exceptionalSuccessors.size()
== block.getCatchHandlers().getUniqueTargets().size();
@@ -1258,14 +1251,14 @@
public void addReturn(MoveType type, int value) {
Value in = readRegister(value, type);
+ source.buildPostlude(this);
addInstruction(new Return(in, type));
- exitBlocks.add(currentBlock);
closeCurrentBlock();
}
public void addReturn() {
+ source.buildPostlude(this);
addInstruction(new Return());
- exitBlocks.add(currentBlock);
closeCurrentBlock();
}
@@ -1839,78 +1832,6 @@
closeCurrentBlock();
}
- void handleExitBlock() {
- if (exitBlocks.size() > 0) {
- // Create and populate the exit block if needed (eg, synchronized support for jar).
- setCurrentBlock(new BasicBlock());
- source.buildPostlude(this);
- // If the new exit block is empty and we only have one exit, abort building a new exit block.
- if (currentBlock.getInstructions().isEmpty() && exitBlocks.size() == 1) {
- normalExitBlock = exitBlocks.get(0);
- setCurrentBlock(null);
- return;
- }
- // Commit to creating the new exit block.
- normalExitBlock = currentBlock;
- normalExitBlock.setNumber(nextBlockNumber++);
- blocks.add(normalExitBlock);
- // Add the return instruction possibly creating a phi of return values.
- Return origReturn = exitBlocks.get(0).exit().asReturn();
- Phi phi = null;
- if (origReturn.isReturnVoid()) {
- normalExitBlock.add(new Return());
- } else {
- Value returnValue = origReturn.returnValue();
- MoveType returnType = origReturn.getReturnType();
- assert origReturn.getLocalInfo() == null;
- phi = new Phi(
- valueNumberGenerator.next(), normalExitBlock, returnValue.outType(), null);
- normalExitBlock.add(new Return(phi, returnType));
- assert returnType == MoveType.fromDexType(method.method.proto.returnType);
- }
- closeCurrentBlock();
-
- // Collect the debug values which are live on all returns.
- Set<Value> debugValuesForReturn = Sets.newIdentityHashSet();
- for (Value value : exitBlocks.get(0).exit().getDebugValues()) {
- boolean include = true;
- for (int i = 1; i < exitBlocks.size() && include; i++) {
- include = exitBlocks.get(i).exit().getDebugValues().contains(value);
- }
- if (include) {
- debugValuesForReturn.add(value);
- }
- }
-
- // Move all these debug values to the new return.
- for (Value value : debugValuesForReturn) {
- for (BasicBlock block : exitBlocks) {
- block.exit().moveDebugValue(value, normalExitBlock.exit());
- }
- }
-
- // Replace each return instruction with a goto to the new exit block.
- List<Value> operands = new ArrayList<>();
- for (BasicBlock block : exitBlocks) {
- List<Instruction> instructions = block.getInstructions();
- Return ret = block.exit().asReturn();
- if (!ret.isReturnVoid()) {
- operands.add(ret.returnValue());
- ret.returnValue().removeUser(ret);
- }
- Goto gotoExit = new Goto();
- gotoExit.setBlock(block);
- ret.moveDebugValues(gotoExit);
- instructions.set(instructions.size() - 1, gotoExit);
- block.link(normalExitBlock);
- gotoExit.setTarget(normalExitBlock);
- }
- if (phi != null) {
- phi.addOperands(operands);
- }
- }
- }
-
private void handleFallthroughToCatchBlock() {
// When a catch handler for a block goes to the same block as the fallthrough for that
// block the graph only has one edge there. In these cases we add an additional block so the
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index cfc1495..184087a 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -87,7 +87,6 @@
GraphLense graphLense,
InternalOptions options,
CfgPrinter printer,
- boolean enableDesugaring,
boolean enableWholeProgramOptimizations) {
assert application != null;
assert appInfo != null;
@@ -99,9 +98,9 @@
this.options = options;
this.printer = printer;
this.codeRewriter = new CodeRewriter(appInfo, libraryMethodsReturningReceiver());
- this.lambdaRewriter = enableDesugaring ? new LambdaRewriter(this) : null;
+ this.lambdaRewriter = options.enableDesugaring ? new LambdaRewriter(this) : null;
this.interfaceMethodRewriter =
- (enableDesugaring && enableInterfaceMethodDesugaring())
+ (options.enableDesugaring && enableInterfaceMethodDesugaring())
? new InterfaceMethodRewriter(this, options) : null;
if (enableWholeProgramOptimizations) {
assert appInfo.hasSubtyping();
@@ -130,20 +129,7 @@
DexApplication application,
AppInfo appInfo,
InternalOptions options) {
- this(null, application, appInfo, null, options, null, true, false);
- }
-
- /**
- * Create an IR converter for processing methods with full program optimization disabled.
- *
- * The argument <code>enableDesugaring</code> if desugaring is enabled.
- */
- public IRConverter(
- DexApplication application,
- AppInfo appInfo,
- InternalOptions options,
- boolean enableDesugaring) {
- this(null, application, appInfo, null, options, null, enableDesugaring, false);
+ this(null, application, appInfo, null, options, null, false);
}
/**
@@ -155,7 +141,7 @@
AppInfo appInfo,
InternalOptions options,
CfgPrinter printer) {
- this(timing, application, appInfo, null, options, printer, true, false);
+ this(timing, application, appInfo, null, options, printer, false);
}
/**
@@ -168,7 +154,7 @@
InternalOptions options,
CfgPrinter printer,
GraphLense graphLense) {
- this(timing, application, appInfo, graphLense, options, printer, true, true);
+ this(timing, application, appInfo, graphLense, options, printer, true);
}
private boolean enableInterfaceMethodDesugaring() {
@@ -566,7 +552,7 @@
DeadCodeRemover.removeDeadCode(code, codeRewriter, options);
assert code.isConsistentSSA();
- if (enableTryWithResourcesDesugaring()) {
+ if (options.enableDesugaring && enableTryWithResourcesDesugaring()) {
codeRewriter.rewriteThrowableAddAndGetSuppressed(code);
}
@@ -595,8 +581,6 @@
printMethod(code, "Optimized IR (SSA)");
- codeRewriter.inlineReturnBlock(code);
-
// Perform register allocation.
RegisterAllocator registerAllocator = performRegisterAllocation(code, method);
method.setCode(code, registerAllocator, appInfo.dexItemFactory);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index 810039f..7cb186f 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -87,7 +87,6 @@
import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap;
import it.unimi.dsi.fastutil.objects.Object2IntMap;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
@@ -206,7 +205,7 @@
private static int getThrowsColorForSuccessors(BasicBlock block) {
int color = CANNOT_THROW;
- for (BasicBlock successor : block.getNormalSucessors()) {
+ for (BasicBlock successor : block.getNormalSuccessors()) {
if (successor.hasColor(CAN_THROW)) {
return CAN_THROW;
}
@@ -760,24 +759,38 @@
public void identifyReturnsArgument(
DexEncodedMethod method, IRCode code, OptimizationFeedback feedback) {
- if (code.getNormalExitBlock() != null) {
- Return ret = code.getNormalExitBlock().exit().asReturn();
- if (!ret.isReturnVoid()) {
- Value returnValue = ret.returnValue();
- if (returnValue.isArgument()) {
- // Find the argument number.
- int index = code.collectArguments().indexOf(returnValue);
- assert index != -1;
- feedback.methodReturnsArgument(method, index);
- }
- if (returnValue.isConstant() && returnValue.definition.isConstNumber()) {
- long value = returnValue.definition.asConstNumber().getRawValue();
- feedback.methodReturnsConstant(method, value);
- }
- if (returnValue.isNeverNull()) {
- feedback.methodNeverReturnsNull(method);
- }
+ List<BasicBlock> normalExits = code.computeNormalExitBlocks();
+ if (normalExits.isEmpty()) {
+ return;
+ }
+ Return firstExit = normalExits.get(0).exit().asReturn();
+ if (firstExit.isReturnVoid()) {
+ return;
+ }
+ Value returnValue = firstExit.returnValue();
+ boolean isNeverNull = returnValue.isNeverNull();
+ for (int i = 1; i < normalExits.size(); i++) {
+ Return exit = normalExits.get(i).exit().asReturn();
+ Value value = exit.returnValue();
+ if (value != returnValue) {
+ returnValue = null;
}
+ isNeverNull = isNeverNull && value.isNeverNull();
+ }
+ if (returnValue != null) {
+ if (returnValue.isArgument()) {
+ // Find the argument number.
+ int index = code.collectArguments().indexOf(returnValue);
+ assert index != -1;
+ feedback.methodReturnsArgument(method, index);
+ }
+ if (returnValue.isConstant() && returnValue.definition.isConstNumber()) {
+ long value = returnValue.definition.asConstNumber().getRawValue();
+ feedback.methodReturnsConstant(method, value);
+ }
+ }
+ if (isNeverNull) {
+ feedback.methodNeverReturnsNull(method);
}
}
@@ -933,14 +946,13 @@
// section 5.5, https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html#jvms-5.5), this
// does not matter (except maybe for removal of const-string instructions, but that is
// acceptable).
- DominatorTree dominatorTree = new DominatorTree(code);
- BasicBlock exit = code.getNormalExitBlock();
- if (exit == null) {
+ if (code.computeNormalExitBlocks().isEmpty()) {
return;
}
+ DominatorTree dominatorTree = new DominatorTree(code);
Set<StaticPut> puts = Sets.newIdentityHashSet();
Map<DexField, StaticPut> dominatingPuts = Maps.newIdentityHashMap();
- for (BasicBlock block : dominatorTree.dominatorBlocks(exit)) {
+ for (BasicBlock block : dominatorTree.normalExitDominatorBlocks()) {
InstructionListIterator iterator = block.listIterator(block.getInstructions().size());
while (iterator.hasPrevious()) {
Instruction current = iterator.previous();
@@ -983,6 +995,10 @@
for (StaticPut put : dominatingPuts.values()) {
DexField field = put.getField();
DexEncodedField encodedField = appInfo.definitionFor(field);
+ if (encodedField == null) {
+ // See b/67468748.
+ continue;
+ }
if (field.type == dexItemFactory.stringType) {
if (put.inValue().isConstant()) {
if (put.inValue().isConstNumber()) {
@@ -1036,7 +1052,7 @@
// Remove the static put instructions now replaced by static filed initial values.
List<Instruction> toRemove = new ArrayList<>();
- for (BasicBlock block : dominatorTree.dominatorBlocks(exit)) {
+ for (BasicBlock block : dominatorTree.normalExitDominatorBlocks()) {
InstructionListIterator iterator = block.listIterator();
while (iterator.hasNext()) {
Instruction current = iterator.next();
@@ -1059,7 +1075,7 @@
// Remove the instructions collected for removal.
if (toRemove.size() > 0) {
- for (BasicBlock block : dominatorTree.dominatorBlocks(exit)) {
+ for (BasicBlock block : dominatorTree.normalExitDominatorBlocks()) {
InstructionListIterator iterator = block.listIterator();
while (iterator.hasNext()) {
if (toRemove.contains(iterator.next())) {
@@ -1514,87 +1530,6 @@
}
}
- /**
- * Inline the return block at its targets.
- *
- * The inlining of return mostly undoes the merge performed at IR build time. This helps avoid
- * unneeded moves as values are forced into the same register at all returns, which there can be
- * a lot of when compiling in debug mode. Measurements show that iterating the inlining of returns
- * does not pay off as it can lead to code size increase, eg, when a sequence of ifs all jump to
- * a common return.
- */
- public void inlineReturnBlock(IRCode code) {
- BasicBlock block = code.getNormalExitBlock();
- code.invalidateNormalExitBlock();
- if (block == null
- || block.getPredecessors().size() <= 1
- || block.getInstructions().size() > 1) {
- return;
- }
- int predIndex = 0;
- for (BasicBlock pred : block.getPredecessors()) {
- ListIterator<Instruction> iterator = pred.listIterator(pred.exit());
- iterator.previous();
- for (Instruction origInstruction : block.getInstructions()) {
- assert origInstruction.isReturn();
- // Create an instruction copy replacing phi values of this block by their operands.
- Instruction instruction;
- Return ret = origInstruction.asReturn();
- if (ret.isReturnVoid()) {
- instruction = new Return();
- } else {
- Value origValue = ret.returnValue();
- Value copyValue = origValue.isPhi() && block.getPhis().contains(origValue)
- ? origValue.asPhi().getOperand(predIndex)
- : origValue;
- instruction = new Return(copyValue, ret.getReturnType());
- }
- // Copy over each debug value replacing phi values of this block by their operands.
- for (Value value : origInstruction.getDebugValues()) {
- assert value.hasLocalInfo();
- if (value.isPhi() && block.getPhis().contains(value)) {
- Phi phi = value.asPhi();
- Value operand = phi.getOperand(predIndex);
- if (phi.getLocalInfo() == operand.getLocalInfo()) {
- instruction.addDebugValue(operand);
- } else {
- // If the phi and its operand are different locals insert a local write.
- Value localValue = code.createValue(phi.outType(), phi.getLocalInfo());
- DebugLocalWrite write = new DebugLocalWrite(localValue, operand);
- write.setBlock(pred);
- iterator.add(write);
- instruction.addDebugValue(localValue);
- }
- } else {
- instruction.addDebugValue(value);
- }
- }
- instruction.setBlock(pred);
- iterator.add(instruction);
- }
- iterator.previous();
- Instruction ret = iterator.next();
- Instruction jump = iterator.next();
- assert !iterator.hasNext();
- jump.moveDebugValues(ret);
- iterator.remove();
- assert pred.exit().isReturn();
- pred.removeSuccessor(block);
- predIndex++;
- }
- // Clean out all users and remove the inlined block.
- while (!block.getPredecessors().isEmpty()) {
- block.removePredecessor(block.getPredecessors().get(0));
- }
- for (Instruction instruction : block.getInstructions()) {
- for (Value value : instruction.inValues()) {
- value.removeUser(instruction);
- }
- instruction.clearDebugValues();
- }
- code.removeBlocks(Collections.singletonList(block));
- }
-
private static class ExpressionEquivalence extends Equivalence<Instruction> {
@Override
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index 5d1cbe5..9699ec1 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -20,7 +20,6 @@
import com.android.tools.r8.ir.code.InstructionIterator;
import com.android.tools.r8.ir.code.InstructionListIterator;
import com.android.tools.r8.ir.code.Invoke;
-import com.android.tools.r8.ir.code.InvokeDirect;
import com.android.tools.r8.ir.code.InvokeMethod;
import com.android.tools.r8.ir.code.Value;
import com.android.tools.r8.ir.code.ValueNumberGenerator;
@@ -361,7 +360,7 @@
.buildIR(code.valueNumberGenerator, appInfo, graphLense, options);
if (inlinee != null) {
// TODO(64432527): Get rid of this additional check by improved inlining.
- if (block.hasCatchHandlers() && inlinee.getNormalExitBlock() == null) {
+ if (block.hasCatchHandlers() && inlinee.computeNormalExitBlocks().isEmpty()) {
continue;
}
// If this code did not go through the full pipeline, apply inlining to make sure
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
index 35cadf2..e6916b8 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/PeepholeOptimizer.java
@@ -17,6 +17,7 @@
import com.android.tools.r8.ir.regalloc.LiveIntervals;
import com.android.tools.r8.ir.regalloc.RegisterAllocator;
import com.google.common.base.Equivalence.Wrapper;
+import com.google.common.collect.ImmutableList;
import it.unimi.dsi.fastutil.ints.Int2ReferenceMap;
import it.unimi.dsi.fastutil.ints.Int2ReferenceMap.Entry;
import it.unimi.dsi.fastutil.ints.Int2ReferenceOpenHashMap;
@@ -46,6 +47,14 @@
*/
private static void shareIdenticalBlockSuffix(IRCode code, RegisterAllocator allocator) {
Collection<BasicBlock> blocks = code.blocks;
+ BasicBlock normalExit = null;
+ ImmutableList<BasicBlock> normalExits = code.computeNormalExitBlocks();
+ if (normalExits.size() > 1) {
+ normalExit = new BasicBlock();
+ normalExit.getPredecessors().addAll(normalExits);
+ blocks = new ArrayList<>(code.blocks);
+ blocks.add(normalExit);
+ }
do {
int startNumberOfNewBlock = code.getHighestBlockNumber() + 1;
Map<BasicBlock, BasicBlock> newBlocks = new IdentityHashMap<>();
@@ -60,14 +69,22 @@
// and allow both a goto edge and exception edges when the target does not start with a
// MoveException instruction. However, that would require us to require rewriting of
// catch handlers as well.
- if (pred.exit().isGoto() &&
- pred.getSuccessors().size() == 1 &&
- pred.getInstructions().size() > 1) {
+ if (pred.exit().isGoto()
+ && pred.getSuccessors().size() == 1
+ && pred.getInstructions().size() > 1) {
List<Instruction> instructions = pred.getInstructions();
Instruction lastInstruction = instructions.get(instructions.size() - 2);
List<BasicBlock> value = lastInstructionToBlocks.computeIfAbsent(
equivalence.wrap(lastInstruction), (k) -> new ArrayList<>());
value.add(pred);
+ } else if (pred.exit().isReturn()
+ && pred.getSuccessors().isEmpty()
+ && pred.getInstructions().size() > 2) {
+ Instruction lastInstruction = pred.exit();
+ List<BasicBlock> value =
+ lastInstructionToBlocks.computeIfAbsent(
+ equivalence.wrap(lastInstruction), (k) -> new ArrayList<>());
+ value.add(pred);
}
}
// For each group of predecessors of size 2 or more, find the largest common suffix and
@@ -80,16 +97,20 @@
int commonSuffixSize = firstPred.getInstructions().size();
for (int i = 1; i < predsWithSameLastInstruction.size(); i++) {
BasicBlock pred = predsWithSameLastInstruction.get(i);
- assert pred.exit().isGoto();
- commonSuffixSize = Math.min(
- commonSuffixSize, sharedSuffixSizeExcludingExit(firstPred, pred, allocator));
+ assert pred.exit().isGoto() || pred.exit().isReturn();
+ commonSuffixSize =
+ Math.min(commonSuffixSize, sharedSuffixSize(firstPred, pred, allocator));
}
- if (commonSuffixSize == 0) {
+ if (commonSuffixSize <= 1) {
continue;
}
int blockNumber = startNumberOfNewBlock + newBlocks.size();
- BasicBlock newBlock = createAndInsertBlockForSuffix(
- blockNumber, commonSuffixSize, predsWithSameLastInstruction, block);
+ BasicBlock newBlock =
+ createAndInsertBlockForSuffix(
+ blockNumber,
+ commonSuffixSize,
+ predsWithSameLastInstruction,
+ block == normalExit ? null : block);
newBlocks.put(predsWithSameLastInstruction.get(0), newBlock);
}
}
@@ -109,19 +130,26 @@
int blockNumber, int suffixSize, List<BasicBlock> preds, BasicBlock successorBlock) {
BasicBlock newBlock = BasicBlock.createGotoBlock(blockNumber);
BasicBlock first = preds.get(0);
- InstructionListIterator from = first.listIterator(first.getInstructions().size() - 1);
- Int2ReferenceMap<DebugLocalInfo> newBlockEntryLocals = successorBlock.getLocalsAtEntry() == null
- ? null
- : new Int2ReferenceOpenHashMap<>(successorBlock.getLocalsAtEntry());
+ assert (successorBlock != null && first.exit().isGoto())
+ || (successorBlock == null && first.exit().isReturn());
+ int offsetFromEnd = successorBlock == null ? 0 : 1;
+ if (successorBlock == null) {
+ newBlock.getInstructions().removeLast();
+ }
+ InstructionListIterator from =
+ first.listIterator(first.getInstructions().size() - offsetFromEnd);
+ Int2ReferenceMap<DebugLocalInfo> newBlockEntryLocals =
+ (successorBlock == null || successorBlock.getLocalsAtEntry() == null)
+ ? new Int2ReferenceOpenHashMap<>()
+ : new Int2ReferenceOpenHashMap<>(successorBlock.getLocalsAtEntry());
boolean movedThrowingInstruction = false;
- for (int i = 0; i < suffixSize; i++) {
+ for (int i = offsetFromEnd; i < suffixSize; i++) {
Instruction instruction = from.previous();
movedThrowingInstruction = movedThrowingInstruction || instruction.instructionTypeCanThrow();
newBlock.getInstructions().addFirst(instruction);
instruction.setBlock(newBlock);
if (instruction.isDebugLocalsChange()) {
// Replay the debug local changes backwards to compute the entry state.
- assert newBlockEntryLocals != null;
DebugLocalsChange change = instruction.asDebugLocalsChange();
for (int starting : change.getStarting().keySet()) {
newBlockEntryLocals.remove(starting);
@@ -136,27 +164,35 @@
}
for (BasicBlock pred : preds) {
LinkedList<Instruction> instructions = pred.getInstructions();
- Instruction exit = instructions.removeLast();
for (int i = 0; i < suffixSize; i++) {
instructions.removeLast();
}
- instructions.add(exit);
+ Goto jump = new Goto();
+ jump.setBlock(pred);
+ instructions.add(jump);
newBlock.getPredecessors().add(pred);
- pred.replaceSuccessor(successorBlock, newBlock);
- successorBlock.getPredecessors().remove(pred);
+ if (successorBlock != null) {
+ pred.replaceSuccessor(successorBlock, newBlock);
+ successorBlock.getPredecessors().remove(pred);
+ } else {
+ pred.getSuccessors().add(newBlock);
+ }
if (movedThrowingInstruction) {
pred.clearCatchHandlers();
}
}
newBlock.setLocalsAtEntry(newBlockEntryLocals);
- newBlock.link(successorBlock);
+ if (successorBlock != null) {
+ newBlock.link(successorBlock);
+ }
return newBlock;
}
- private static int sharedSuffixSizeExcludingExit(
+ private static int sharedSuffixSize(
BasicBlock block0, BasicBlock block1, RegisterAllocator allocator) {
- InstructionListIterator it0 = block0.listIterator(block0.getInstructions().size() - 1);
- InstructionListIterator it1 = block1.listIterator(block1.getInstructions().size() - 1);
+ assert block0.exit().isGoto() || block0.exit().isReturn();
+ InstructionListIterator it0 = block0.listIterator(block0.getInstructions().size());
+ InstructionListIterator it1 = block1.listIterator(block1.getInstructions().size());
int suffixSize = 0;
while (it0.hasPrevious() && it1.hasPrevious()) {
Instruction i0 = it0.previous();
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
index 2560fd6..239f9bc 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfiguration.java
@@ -45,6 +45,7 @@
private Path classObfuscationDictionary;
private Path packageObfuscationDictionary;
private boolean useUniqueClassMemberNames;
+ private boolean keepParameterNames;
private Builder(DexItemFactory dexItemFactory) {
this.dexItemFactory = dexItemFactory;
@@ -164,6 +165,14 @@
return useUniqueClassMemberNames;
}
+ public void setKeepParameterNames(boolean keepParameterNames) {
+ this.keepParameterNames = keepParameterNames;
+ }
+
+ boolean isKeepParameterNames() {
+ return keepParameterNames;
+ }
+
public ProguardConfiguration build() {
return new ProguardConfiguration(
dexItemFactory,
@@ -191,7 +200,8 @@
DictionaryReader.readAllNames(obfuscationDictionary),
DictionaryReader.readAllNames(classObfuscationDictionary),
DictionaryReader.readAllNames(packageObfuscationDictionary),
- useUniqueClassMemberNames);
+ useUniqueClassMemberNames,
+ keepParameterNames);
}
}
@@ -221,6 +231,7 @@
private final ImmutableList<String> classObfuscationDictionary;
private final ImmutableList<String> packageObfuscationDictionary;
private boolean useUniqueClassMemberNames;
+ private boolean keepParameterNames;
private ProguardConfiguration(
DexItemFactory factory,
@@ -248,7 +259,8 @@
ImmutableList<String> obfuscationDictionary,
ImmutableList<String> classObfuscationDictionary,
ImmutableList<String> packageObfuscationDictionary,
- boolean useUniqueClassMemberNames) {
+ boolean useUniqueClassMemberNames,
+ boolean keepParameterNames) {
this.dexItemFactory = factory;
this.injars = ImmutableList.copyOf(injars);
this.libraryjars = ImmutableList.copyOf(libraryjars);
@@ -275,6 +287,7 @@
this.classObfuscationDictionary = classObfuscationDictionary;
this.packageObfuscationDictionary = packageObfuscationDictionary;
this.useUniqueClassMemberNames = useUniqueClassMemberNames;
+ this.keepParameterNames = keepParameterNames;
}
/**
@@ -388,6 +401,10 @@
return useUniqueClassMemberNames;
}
+ public boolean isKeepParameterNames() {
+ return keepParameterNames;
+ }
+
public static ProguardConfiguration defaultConfiguration(DexItemFactory dexItemFactory) {
return new DefaultProguardConfiguration(dexItemFactory);
}
@@ -420,7 +437,8 @@
ImmutableList.of() /* obfuscationDictionary */,
ImmutableList.of() /* classObfuscationDictionary */,
ImmutableList.of() /* packageObfuscationDictionary */,
- false /* useUniqueClassMemberNames*/);
+ false /* useUniqueClassMemberNames*/,
+ false /* keepParameterNames */);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
index 4784387..08a7eca 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardConfigurationParser.java
@@ -85,6 +85,13 @@
throw new ProguardRuleParserException("-useuniqueulassmembernames is not supported");
}
+ if (configurationBuilder.isKeepParameterNames()
+ && configurationBuilder.isObfuscating()) {
+ // The flag -keepparameternames has only effect when minifying, so ignore it if we
+ // are not.
+ throw new ProguardRuleParserException("-keepparameternames is not supported");
+ }
+
return configurationBuilder.build();
}
@@ -156,6 +163,8 @@
} else if (acceptString("keeppackagenames")) {
ProguardKeepPackageNamesRule rule = parseKeepPackageNamesRule();
configurationBuilder.addRule(rule);
+ } else if (acceptString("keepparameternames")) {
+ configurationBuilder.setKeepParameterNames(true);
} else if (acceptString("checkdiscard")) {
ProguardCheckDiscardRule rule = parseCheckDiscardRule();
configurationBuilder.addRule(rule);
diff --git a/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java b/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java
index 09bbad6..e7baec9 100644
--- a/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java
+++ b/src/main/java/com/android/tools/r8/shaking/protolite/ProtoLitePruner.java
@@ -613,7 +613,7 @@
if (needsCleanup) {
DominatorTree updatedTree = new DominatorTree(code);
BasicBlock fallThrough = switchInstr.fallthroughBlock();
- List<BasicBlock> successors = ImmutableList.copyOf(current.getNormalSucessors());
+ List<BasicBlock> successors = ImmutableList.copyOf(current.getNormalSuccessors());
for (BasicBlock successor : successors) {
if (successor != fallThrough && !liveBlocks.contains(successor)) {
deadBlocks.addAll(current.unlink(successor, updatedTree));
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
index 47bd02e..9f40791 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApiLevel.java
@@ -10,7 +10,8 @@
*/
public enum AndroidApiLevel {
LATEST(-1),
- P(27),
+ P(28),
+ O_MR1(27),
O(26),
N_MR1(25),
N(24),
@@ -133,6 +134,8 @@
case 26:
return O;
case 27:
+ return O_MR1;
+ case 28:
return P;
default:
return LATEST;
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApp.java b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
index 439c1d9..6064b64 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApp.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
@@ -778,7 +778,7 @@
throw new FileNotFoundException("Non-existent input file: " + file);
}
if (isArchive(file)) {
- providerList.add(PreloadedClassFileProvider.fromArchive(classPath));
+ providerList.add(ArchiveClassFileProvider.fromArchive(classPath));
} else if (Files.isDirectory(file) ) {
// This is only used for D8 incremental compilation.
assert classPath.isUnfiltered();
diff --git a/src/main/java/com/android/tools/r8/utils/ArchiveClassFileProvider.java b/src/main/java/com/android/tools/r8/utils/ArchiveClassFileProvider.java
new file mode 100644
index 0000000..2828610
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/utils/ArchiveClassFileProvider.java
@@ -0,0 +1,110 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.utils;
+
+import static com.android.tools.r8.utils.FileUtils.CLASS_EXTENSION;
+import static com.android.tools.r8.utils.FileUtils.isArchive;
+import static com.android.tools.r8.utils.FileUtils.isClassFile;
+
+import com.android.tools.r8.ClassFileResourceProvider;
+import com.android.tools.r8.Resource;
+import com.android.tools.r8.errors.CompilationError;
+import com.android.tools.r8.shaking.FilteredClassPath;
+import com.google.common.io.ByteStreams;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+/**
+ * Lazy Java class file resource provider loading class files form a zip archive.
+ */
+public final class ArchiveClassFileProvider implements ClassFileResourceProvider {
+
+ private final Set<String> descriptors = new HashSet<>();
+ private final ZipFile zipFile;
+
+ public static ClassFileResourceProvider fromArchive(FilteredClassPath archive)
+ throws IOException {
+ return new ArchiveClassFileProvider(archive);
+ }
+
+ // Guess class descriptor from location of the class file.
+ static String guessTypeDescriptor(Path name) {
+ return guessTypeDescriptor(name.toString());
+ }
+
+ // Guess class descriptor from location of the class file.
+ private static String guessTypeDescriptor(String name) {
+ assert name != null;
+ assert name.endsWith(CLASS_EXTENSION) :
+ "Name " + name + " must have " + CLASS_EXTENSION + " suffix";
+ String fileName =
+ File.separatorChar == '/' ? name.toString() :
+ name.toString().replace(File.separatorChar, '/');
+ String descriptor = fileName.substring(0, fileName.length() - CLASS_EXTENSION.length());
+ if (descriptor.contains(".")) {
+ throw new CompilationError("Unexpected file name in the archive: " + fileName);
+ }
+ return 'L' + descriptor + ';';
+ }
+
+ private ArchiveClassFileProvider(FilteredClassPath archive) throws IOException {
+ assert isArchive(archive.getPath());
+ zipFile = new ZipFile(archive.getPath().toFile());
+ final Enumeration<? extends ZipEntry> entries = zipFile.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ String name = entry.getName();
+ Path entryPath = Paths.get(name);
+ if (isClassFile(entryPath) && archive.matchesFile(entryPath)) {
+ descriptors.add(guessTypeDescriptor(name));
+ }
+ }
+ }
+
+ @Override
+ public Set<String> getClassDescriptors() {
+ return Collections.unmodifiableSet(descriptors);
+ }
+
+ @Override
+ public Resource getResource(String descriptor) {
+ if (!descriptors.contains(descriptor)) {
+ return null;
+ }
+
+ try (InputStream inputStream = zipFile.getInputStream(getZipEntryFromDescriptor(descriptor))) {
+ return Resource.fromBytes(
+ Resource.Kind.CLASSFILE,
+ ByteStreams.toByteArray(inputStream),
+ Collections.singleton(descriptor));
+ } catch (IOException e) {
+ throw new CompilationError(
+ "Failed to read '" + descriptor + "' from '" + zipFile.getName() + "'");
+ }
+ }
+
+ @Override
+ protected void finalize() throws Throwable {
+ zipFile.close();
+ super.finalize();
+ }
+
+ @Override
+ public String toString() {
+ return descriptors.size() + " resources from '" + zipFile.getName() +"'";
+ }
+
+ private ZipEntry getZipEntryFromDescriptor(String descriptor) {
+ return zipFile.getEntry(descriptor.substring(1, descriptor.length() - 1) + CLASS_EXTENSION);
+ }
+}
diff --git a/src/main/java/com/android/tools/r8/utils/DexVersion.java b/src/main/java/com/android/tools/r8/utils/DexVersion.java
index c9fa818..7406227 100644
--- a/src/main/java/com/android/tools/r8/utils/DexVersion.java
+++ b/src/main/java/com/android/tools/r8/utils/DexVersion.java
@@ -51,6 +51,7 @@
case P:
return DexVersion.V39;
case LATEST:
+ case O_MR1:
case O:
return DexVersion.V38;
case N_MR1:
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 5c4909a..c8308a9 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -86,6 +86,8 @@
public boolean intermediate = false;
public List<String> logArgumentsFilter = ImmutableList.of();
+ // Flag to turn on/off desugaring in D8/R8.
+ public boolean enableDesugaring = true;
// Defines interface method rewriter behavior.
public OffOrAuto interfaceMethodDesugaring = OffOrAuto.Auto;
// Defines try-with-resources rewriter behavior.
diff --git a/src/main/java/com/android/tools/r8/utils/PreloadedClassFileProvider.java b/src/main/java/com/android/tools/r8/utils/PreloadedClassFileProvider.java
index b819a84..3f402d0 100644
--- a/src/main/java/com/android/tools/r8/utils/PreloadedClassFileProvider.java
+++ b/src/main/java/com/android/tools/r8/utils/PreloadedClassFileProvider.java
@@ -3,28 +3,13 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.utils;
-import static com.android.tools.r8.utils.FileUtils.CLASS_EXTENSION;
-import static com.android.tools.r8.utils.FileUtils.isArchive;
-import static com.android.tools.r8.utils.FileUtils.isClassFile;
-
import com.android.tools.r8.ClassFileResourceProvider;
import com.android.tools.r8.Resource;
-import com.android.tools.r8.errors.CompilationError;
-import com.android.tools.r8.shaking.FilteredClassPath;
import com.google.common.collect.Sets;
-import com.google.common.io.ByteStreams;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Path;
-import java.nio.file.Paths;
import java.util.Collections;
-import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
/**
* Lazy Java class file resource provider based on preloaded/prebuilt context.
@@ -51,57 +36,12 @@
return Resource.fromBytes(Resource.Kind.CLASSFILE, bytes, Collections.singleton(descriptor));
}
- /**
- * Create preloaded content resource provider from archive file.
- */
- public static ClassFileResourceProvider fromArchive(FilteredClassPath archive)
- throws IOException {
- assert isArchive(archive.getPath());
- Builder builder = builder();
- try (ZipFile zipFile = new ZipFile(archive.getPath().toFile())) {
- final Enumeration<? extends ZipEntry> entries = zipFile.entries();
- while (entries.hasMoreElements()) {
- ZipEntry entry = entries.nextElement();
- String name = entry.getName();
- Path entryPath = Paths.get(name);
- if (isClassFile(entryPath) && archive.matchesFile(entryPath)) {
- try (InputStream entryStream = zipFile.getInputStream(entry)) {
- builder.addResource(guessTypeDescriptor(name), ByteStreams.toByteArray(entryStream));
- }
- }
- }
- }
-
- return builder.build();
- }
-
- public static ClassFileResourceProvider fromClassData(String descriptor, byte[] data)
- throws IOException {
+ public static ClassFileResourceProvider fromClassData(String descriptor, byte[] data) {
Builder builder = builder();
builder.addResource(descriptor, data);
return builder.build();
}
- // Guess class descriptor from location of the class file.
- static String guessTypeDescriptor(Path name) {
- return guessTypeDescriptor(name.toString());
- }
-
- // Guess class descriptor from location of the class file.
- private static String guessTypeDescriptor(String name) {
- assert name != null;
- assert name.endsWith(CLASS_EXTENSION) :
- "Name " + name + " must have " + CLASS_EXTENSION + " suffix";
- String fileName =
- File.separatorChar == '/' ? name.toString() :
- name.toString().replace(File.separatorChar, '/');
- String descriptor = fileName.substring(0, fileName.length() - CLASS_EXTENSION.length());
- if (descriptor.contains(".")) {
- throw new CompilationError("Unexpected file name in the archive: " + fileName);
- }
- return 'L' + descriptor + ';';
- }
-
@Override
public String toString() {
return content.size() + " preloaded resources";
diff --git a/src/main/java/com/android/tools/r8/utils/ProgramFileArchiveReader.java b/src/main/java/com/android/tools/r8/utils/ProgramFileArchiveReader.java
index 57bcd68..fa6d5fb 100644
--- a/src/main/java/com/android/tools/r8/utils/ProgramFileArchiveReader.java
+++ b/src/main/java/com/android/tools/r8/utils/ProgramFileArchiveReader.java
@@ -55,7 +55,7 @@
dexResources.add(resource);
}
} else if (isClassFile(name)) {
- String descriptor = PreloadedClassFileProvider.guessTypeDescriptor(name);
+ String descriptor = ArchiveClassFileProvider.guessTypeDescriptor(name);
Resource resource = new OneShotByteResource(Resource.Kind.CLASSFILE,
ByteStreams.toByteArray(stream), Collections.singleton(descriptor));
classResources.add(resource);
diff --git a/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java b/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java
index 0606be2..9c690ff 100644
--- a/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/utils/StringDiagnostic.java
@@ -13,7 +13,7 @@
}
@Override
- public String toString() {
+ public String getDiagnosticMessage() {
return message;
}
}
diff --git a/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java b/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java
index 94fadf1..7de4f7f 100644
--- a/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java
+++ b/src/test/java/com/android/tools/r8/D8LazyRunExamplesAndroidOTest.java
@@ -11,6 +11,7 @@
import com.android.tools.r8.shaking.FilteredClassPath;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.AndroidApp;
+import com.android.tools.r8.utils.ArchiveClassFileProvider;
import com.android.tools.r8.utils.DirectoryClassFileProvider;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.OffOrAuto;
@@ -52,7 +53,7 @@
@Override
void addLibraryReference(Builder builder, Path location) throws IOException {
builder.addLibraryResourceProvider(
- PreloadedClassFileProvider.fromArchive(FilteredClassPath.unfiltered(location)));
+ ArchiveClassFileProvider.fromArchive(FilteredClassPath.unfiltered(location)));
}
@Override
diff --git a/src/test/java/com/android/tools/r8/DeviceRunner.java b/src/test/java/com/android/tools/r8/DeviceRunner.java
index fc91032..c68c8f2 100644
--- a/src/test/java/com/android/tools/r8/DeviceRunner.java
+++ b/src/test/java/com/android/tools/r8/DeviceRunner.java
@@ -3,9 +3,6 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8;
-import com.android.tools.r8.utils.StringUtils;
-import com.google.common.base.Joiner;
-
import com.android.ddmlib.AdbCommandRejectedException;
import com.android.ddmlib.AndroidDebugBridge;
import com.android.ddmlib.FileListingService;
@@ -14,7 +11,8 @@
import com.android.ddmlib.ShellCommandUnresponsiveException;
import com.android.ddmlib.SyncException;
import com.android.ddmlib.TimeoutException;
-
+import com.android.tools.r8.utils.StringUtils;
+import com.google.common.base.Joiner;
import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
@@ -320,6 +318,7 @@
}
}
+ @SuppressWarnings("deprecation")
private void executeShellCommand(
String command,
IDevice device,
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 5fe7c16..c094e5b 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -48,6 +48,7 @@
import java.util.concurrent.ExecutionException;
import java.util.function.BiFunction;
import java.util.stream.Collectors;
+import org.junit.AssumptionViolatedException;
import org.junit.ComparisonFailure;
import org.junit.Rule;
import org.junit.rules.ExpectedException;
@@ -79,9 +80,9 @@
R8_AFTER_D8 // refers to the R8 (default: debug) step but implies a previous D8 step as well
}
- private static final String ART_TESTS_DIR = "tests/2017-07-27/art";
+ private static final String ART_TESTS_DIR = "tests/2017-10-04/art";
private static final String ART_LEGACY_TESTS_DIR = "tests/2016-12-19/art/";
- private static final String ART_TESTS_NATIVE_LIBRARY_DIR = "tests/2017-07-27/art/lib64";
+ private static final String ART_TESTS_NATIVE_LIBRARY_DIR = "tests/2017-10-04/art/lib64";
private static final String ART_LEGACY_TESTS_NATIVE_LIBRARY_DIR = "tests/2016-12-19/art/lib64";
private static final RuntimeSet LEGACY_RUNTIME = TestCondition.runtimes(
@@ -112,6 +113,7 @@
.put("957-methodhandle-transforms", AndroidApiLevel.O.getLevel())
.put("958-methodhandle-stackframe", AndroidApiLevel.O.getLevel())
.put("959-invoke-polymorphic-accessors", AndroidApiLevel.O.getLevel())
+ .put("979-const-method-handle", AndroidApiLevel.O.getLevel())
.put("990-method-handle-and-mr", AndroidApiLevel.O.getLevel())
// Test intentionally asserts presence of bridge default methods desugar removes.
.put("044-proxy", AndroidApiLevel.N.getLevel())
@@ -232,7 +234,8 @@
"073-mismatched-field"
);
- // Tests that make use of agents/native code. Our test setup does handle flags/linking of these.
+ // Tests that make use of agents/native code.
+ // Our test setup does not handle flags/linking of these.
private static List<String> usesNativeAgentCode = ImmutableList.of(
"497-inlining-and-class-loader",
"626-const-class-linking",
@@ -286,7 +289,39 @@
"1906-suspend-list-me-first",
"1907-suspend-list-self-twice",
"1909-per-agent-tls",
- "1910-transform-with-default"
+ "1910-transform-with-default",
+ "1911-get-local-var-table",
+ "1912-get-set-local-primitive",
+ "1913-get-set-local-objects",
+ "1914-get-local-instance",
+ "1915-get-set-local-current-thread",
+ "1916-get-set-current-frame",
+ "1917-get-stack-frame",
+ "1919-vminit-thread-start-timing",
+ "1920-suspend-native-monitor",
+ "1921-suspend-native-recursive-monitor",
+ "1922-owned-monitors-info",
+ "1923-frame-pop",
+ "1924-frame-pop-toggle",
+ "1925-self-frame-pop",
+ "1926-missed-frame-pop",
+ "1927-exception-event",
+ "1928-exception-event-exception",
+ "1929-exception-catch-exception",
+ "1930-monitor-info",
+ "1931-monitor-events",
+ "1932-monitor-events-misc",
+ "1933-monitor-current-contended",
+ "1934-jvmti-signal-thread",
+ "1935-get-set-current-frame-jit",
+ "1936-thread-end-events",
+ // These tests need a library name as parameter
+ "164-resolution-trampoline-dex-cache",
+ "597-deopt-invoke-stub",
+ "597-deopt-busy-loop",
+ "661-oat-writer-layout",
+ "661-classloader-allocator",
+ "664-aget-verifier"
);
// Tests with custom run.
@@ -824,7 +859,11 @@
"974-verify-interface-super", // No input class files.
"975-iface-private", // No input class files.
"976-conflict-no-methods", // No input class files
- "978-virtual-interface" // No input class files
+ "978-virtual-interface", // No input class files
+ "663-odd-dex-size", // No input class files
+ "663-odd-dex-size2", // No input class files
+ "663-odd-dex-size3", // No input class files
+ "663-odd-dex-size4" // No input class files
);
// Some JCTF test cases require test classes from other tests. These are listed here.
@@ -892,6 +931,9 @@
);
private static List<String> failuresToTriage = ImmutableList.of(
+ // const-method-handle and const-method-type
+ "979-const-method-handle",
+
// This is flaky.
"104-growth-limit",
@@ -906,6 +948,7 @@
"655-jit-clinit",
"656-annotation-lookup-generic-jni",
"656-loop-deopt",
+ "707-checker-invalid-profile",
"708-jit-cache-churn",
// These use "native trace".
@@ -973,7 +1016,8 @@
this.nativeLibrary = nativeLibrary;
this.directory = directory;
this.skipArt = skipArt;
- this.skipTest = skipTest;
+ this.skipTest =
+ skipTest || (ToolHelper.isWindows() && ToolHelper.getDexVm().getKind() == Kind.HOST);
this.failsWithX8 = failsWithX8;
this.failsWithArt = failsWithArt;
this.failsWithArtOutput = failsWithArtOutput;
@@ -1042,11 +1086,9 @@
private static Map<SpecificationKey, TestSpecification> getTestsMap(
CompilerUnderTest compilerUnderTest, CompilationMode compilationMode, DexVm.Version version) {
- File artTestDir = new File(ART_TESTS_DIR);
- if (LEGACY_RUNTIME.set.contains(version)) {
- artTestDir = new File(ART_LEGACY_TESTS_DIR);
- }
- if (!artTestDir.exists()) {
+ File defaultArtTestDir = new File(ART_TESTS_DIR);
+ File legacyArtTestDir = new File(ART_LEGACY_TESTS_DIR);
+ if (!defaultArtTestDir.exists() || !legacyArtTestDir.exists()) {
// Don't run any tests if the directory does not exist.
return Collections.emptyMap();
}
@@ -1061,8 +1103,10 @@
// Collect the tests requiring the native library.
Set<String> useNativeLibrary = Sets.newHashSet(useJNI);
-
for (DexTool dexTool : DexTool.values()) {
+ File artTestDir =
+ dexTool == DexTool.JACK || LEGACY_RUNTIME.set.contains(version) ? legacyArtTestDir
+ : defaultArtTestDir;
// Collect the tests failing code generation.
Set<String> failsWithCompiler =
collectTestsMatchingConditions(
diff --git a/src/test/java/com/android/tools/r8/R8RunSmaliTestsTest.java b/src/test/java/com/android/tools/r8/R8RunSmaliTestsTest.java
index cf0b71e..1a8f68a 100644
--- a/src/test/java/com/android/tools/r8/R8RunSmaliTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunSmaliTestsTest.java
@@ -7,6 +7,7 @@
import com.android.tools.r8.ToolHelper.DexVm;
import com.android.tools.r8.ToolHelper.DexVm.Version;
+import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.shaking.ProguardRuleParserException;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
@@ -151,28 +152,29 @@
String generated = outputPath + "/classes.dex";
String output = "";
- if (dalvikVerificationError.containsKey(ToolHelper.getDexVm())
- && dalvikVerificationError.get(ToolHelper.getDexVm()).contains(directoryName)) {
+ DexVm.Version dexVmVersion = ToolHelper.getDexVm().getVersion();
+ if (dalvikVerificationError.containsKey(dexVmVersion)
+ && dalvikVerificationError.get(dexVmVersion).contains(directoryName)) {
try {
ToolHelper.runArtNoVerificationErrors(generated, mainClass);
} catch (AssertionError e) {
assert e.toString().contains("VerifyError");
}
return;
- } else if (originalFailingOnArtVersions.containsKey(ToolHelper.getDexVm())
- && originalFailingOnArtVersions.get(ToolHelper.getDexVm()).contains(directoryName)) {
+ } else if (originalFailingOnArtVersions.containsKey(dexVmVersion)
+ && originalFailingOnArtVersions.get(dexVmVersion).contains(directoryName)) {
// If the original smali code fails on the target VM, only run the code produced by R8.
output = ToolHelper.runArtNoVerificationErrors(generated, mainClass);
- } else if (customProcessedOutputExpectation.containsKey(ToolHelper.getDexVm())
- && customProcessedOutputExpectation.get(ToolHelper.getDexVm()).containsKey(directoryName)) {
+ } else if (customProcessedOutputExpectation.containsKey(dexVmVersion)
+ && customProcessedOutputExpectation.get(dexVmVersion).containsKey(directoryName)) {
// If the original and the processed code have different expected output, only run
// the code produced by R8.
expectedOutput =
- customProcessedOutputExpectation.get(ToolHelper.getDexVm()).get(directoryName);
+ customProcessedOutputExpectation.get(dexVmVersion).get(directoryName);
output = ToolHelper.runArtNoVerificationErrors(generated, mainClass);
} else {
- if (failingOnArtVersions.containsKey(ToolHelper.getDexVm())
- && failingOnArtVersions.get(ToolHelper.getDexVm()).contains(directoryName)) {
+ if (failingOnArtVersions.containsKey(dexVmVersion)
+ && failingOnArtVersions.get(dexVmVersion).contains(directoryName)) {
thrown.expect(Throwable.class);
}
output =
diff --git a/src/test/java/com/android/tools/r8/TestBase.java b/src/test/java/com/android/tools/r8/TestBase.java
index e46ff48..89a7a26 100644
--- a/src/test/java/com/android/tools/r8/TestBase.java
+++ b/src/test/java/com/android/tools/r8/TestBase.java
@@ -101,6 +101,15 @@
}
/**
+ * Compile an application with D8.
+ */
+ protected AndroidApp compileWithD8(AndroidApp app, Consumer<InternalOptions> optionsConsumer)
+ throws CompilationException, ExecutionException, IOException {
+ D8Command command = ToolHelper.prepareD8CommandBuilder(app).build();
+ return ToolHelper.runD8(command, optionsConsumer);
+ }
+
+ /**
* Compile an application with R8.
*/
protected AndroidApp compileWithR8(Class... classes)
@@ -249,11 +258,25 @@
/**
* Run application on Art with the specified main class.
*/
- protected String runOnArt(AndroidApp app, Class mainClass) throws IOException {
+ protected ProcessResult runOnArtRaw(AndroidApp app, String mainClass) throws IOException {
Path out = File.createTempFile("junit", ".zip", temp.getRoot()).toPath();
app.writeToZip(out, OutputMode.Indexed);
- return ToolHelper.runArtNoVerificationErrors(
- ImmutableList.of(out.toString()), mainClass.getCanonicalName(), null);
+ return ToolHelper.runArtNoVerificationErrorsRaw(
+ ImmutableList.of(out.toString()), mainClass, null);
+ }
+
+ /**
+ * Run application on Art with the specified main class.
+ */
+ protected ProcessResult runOnArtRaw(AndroidApp app, Class mainClass) throws IOException {
+ return runOnArtRaw(app, mainClass.getCanonicalName());
+ }
+
+ /**
+ * Run application on Art with the specified main class.
+ */
+ protected String runOnArt(AndroidApp app, Class mainClass) throws IOException {
+ return runOnArtRaw(app, mainClass).stdout;
}
/**
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index b97bd7b..d435ae5 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -10,7 +10,6 @@
import com.android.tools.r8.DeviceRunner.DeviceRunnerConfigurationException;
import com.android.tools.r8.ToolHelper.DexVm.Kind;
import com.android.tools.r8.dex.ApplicationReader;
-import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.graph.AppInfoWithSubtyping;
import com.android.tools.r8.graph.DexApplication;
import com.android.tools.r8.graph.DexItemFactory;
@@ -475,7 +474,7 @@
return ImmutableSet.of(artVersionEnum);
} else {
if (isWindows()) {
- throw new RuntimeException("You need to specify a runtime with 'dex_vm' property");
+ return Collections.emptySet();
} else if (isLinux()) {
return ART_BINARY_VERSIONS.keySet();
} else {
@@ -499,11 +498,6 @@
public static DexVm getDexVm() {
String artVersion = System.getProperty("dex_vm");
if (artVersion == null) {
- if (isWindows()) {
- throw new RuntimeException(
- "Default Art version is not supported on Windows. Please specify a non-host runtime "
- + "with property 'dex_vm'");
- }
return DexVm.ART_DEFAULT;
} else {
DexVm artVersionEnum = DexVm.fromShortName(artVersion);
@@ -543,11 +537,15 @@
}
public static boolean artSupported() {
- if (!isLinux() && !isMac() && !isWindows()) {
+ if (!isLinux() && !isMac() && !isWindows()) {
System.err.println("Testing on your platform is not fully supported. " +
"Art does not work on on your platform.");
return false;
}
+ if (isWindows() && getDexVm().getKind() == Kind.HOST) {
+ System.err.println("Testing on host is not supported on Windows.");
+ return false;
+ }
return true;
}
@@ -774,18 +772,29 @@
return Paths.get(System.getProperty("java.home"), "bin", "java").toString();
}
+ public static ProcessResult runArtNoVerificationErrorsRaw(String file, String mainClass)
+ throws IOException {
+ return runArtNoVerificationErrorsRaw(Collections.singletonList(file), mainClass, null);
+ }
+
public static String runArtNoVerificationErrors(String file, String mainClass)
throws IOException {
- return runArtNoVerificationErrors(Collections.singletonList(file), mainClass, null);
+ return runArtNoVerificationErrorsRaw(file, mainClass).stdout;
+ }
+
+ public static ProcessResult runArtNoVerificationErrorsRaw(List<String> files, String mainClass,
+ Consumer<ArtCommandBuilder> extras)
+ throws IOException {
+ return runArtNoVerificationErrorsRaw(files, mainClass, extras, null);
}
public static String runArtNoVerificationErrors(List<String> files, String mainClass,
Consumer<ArtCommandBuilder> extras)
throws IOException {
- return runArtNoVerificationErrors(files, mainClass, extras, null);
+ return runArtNoVerificationErrorsRaw(files, mainClass, extras).stdout;
}
- public static String runArtNoVerificationErrors(List<String> files, String mainClass,
+ public static ProcessResult runArtNoVerificationErrorsRaw(List<String> files, String mainClass,
Consumer<ArtCommandBuilder> extras,
DexVm version)
throws IOException {
@@ -796,18 +805,30 @@
if (extras != null) {
extras.accept(builder);
}
- return runArtNoVerificationErrors(builder);
+ return runArtNoVerificationErrorsRaw(builder);
}
- public static String runArtNoVerificationErrors(ArtCommandBuilder builder) throws IOException {
- ProcessResult result = runArtProcess(builder);
+ public static String runArtNoVerificationErrors(List<String> files, String mainClass,
+ Consumer<ArtCommandBuilder> extras,
+ DexVm version)
+ throws IOException {
+ return runArtNoVerificationErrorsRaw(files, mainClass, extras, version).stdout;
+ }
+
+ public static ProcessResult runArtNoVerificationErrorsRaw(ArtCommandBuilder builder)
+ throws IOException {
+ ProcessResult result = runArtProcessRaw(builder);
if (result.stderr.contains("Verification error")) {
fail("Verification error: \n" + result.stderr);
}
- return result.stdout;
+ return result;
}
- private static ProcessResult runArtProcess(ArtCommandBuilder builder) throws IOException {
+ public static String runArtNoVerificationErrors(ArtCommandBuilder builder) throws IOException {
+ return runArtNoVerificationErrorsRaw(builder).stdout;
+ }
+
+ private static ProcessResult runArtProcessRaw(ArtCommandBuilder builder) throws IOException {
Assume.assumeTrue(ToolHelper.artSupported());
ProcessResult result;
if (builder.isForDevice()) {
@@ -819,6 +840,11 @@
} else {
result = runProcess(builder.asProcessBuilder());
}
+ return result;
+ }
+
+ private static ProcessResult runArtProcess(ArtCommandBuilder builder) throws IOException {
+ ProcessResult result = runArtProcessRaw(builder);
if (result.exitCode != 0) {
fail("Unexpected art failure: '" + result.stderr + "'\n" + result.stdout);
}
diff --git a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
index b260663..ec32bd3 100644
--- a/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
+++ b/src/test/java/com/android/tools/r8/debug/DebugTestBase.java
@@ -10,9 +10,7 @@
import com.android.tools.r8.ToolHelper;
import com.android.tools.r8.ToolHelper.ArtCommandBuilder;
import com.android.tools.r8.ToolHelper.DexVm;
-import com.android.tools.r8.ToolHelper.DexVm.Kind;
import com.android.tools.r8.ToolHelper.DexVm.Version;
-import com.android.tools.r8.dex.Constants;
import com.android.tools.r8.shaking.ProguardConfiguration;
import com.android.tools.r8.shaking.ProguardRuleParserException;
import com.android.tools.r8.utils.AndroidApiLevel;
@@ -39,6 +37,7 @@
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
+import org.apache.harmony.jpda.tests.framework.TestErrorException;
import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
import org.apache.harmony.jpda.tests.framework.jdwp.Event;
import org.apache.harmony.jpda.tests.framework.jdwp.EventBuilder;
@@ -95,8 +94,6 @@
// Set to true to enable verbose logs
private static final boolean DEBUG_TESTS = false;
- private static final List<DexVm> UNSUPPORTED_ART_VERSIONS = ImmutableList.of();
-
private static final Path JDWP_JAR = ToolHelper
.getJdwpTestsJarPath(ToolHelper.getMinApiLevelForDexVm(ToolHelper.getDexVm()));
private static final Path DEBUGGEE_JAR = Paths
@@ -293,9 +290,6 @@
Assume.assumeTrue("Skipping test " + testName.getMethodName()
+ " because debug tests are not yet supported on Windows",
!ToolHelper.isWindows());
- Assume.assumeFalse(
- "Skipping failing test " + testName.getMethodName() + " for runtime " + ToolHelper
- .getDexVm(), UNSUPPORTED_ART_VERSIONS.contains(ToolHelper.getDexVm()));
String[] paths = new String[extraPaths.size() + 2];
int indexPath = 0;
@@ -514,7 +508,24 @@
if (DEBUG_TESTS) {
logWriter.println("Process command " + command.toString());
}
- command.perform(this);
+ try {
+ command.perform(this);
+ } catch (TestErrorException e) {
+ boolean ignoreException = false;
+ if (ToolHelper.getDexVm().getVersion() == Version.V4_4_4) {
+ // Dalvik has flaky synchronization issue on shutdown. The workaround is to ignore
+ // the exception if and only if we know that it's the final resume command.
+ if (debuggeeState == null && commandsQueue.isEmpty()) {
+ // We should receive the VMDeath event and transition to the Exit state here.
+ processEvents();
+ assert state == State.Exit;
+ ignoreException = true;
+ }
+ }
+ if (!ignoreException) {
+ throw e;
+ }
+ }
break;
}
case WaitForEvent:
diff --git a/src/test/java/com/android/tools/r8/ir/InlineTest.java b/src/test/java/com/android/tools/r8/ir/InlineTest.java
index 6fb5db1..8258324 100644
--- a/src/test/java/com/android/tools/r8/ir/InlineTest.java
+++ b/src/test/java/com/android/tools/r8/ir/InlineTest.java
@@ -736,55 +736,58 @@
private void runInlineAlwaysThrowsMultiple(boolean twoGuards, int expectedA, int expectedB)
throws Exception {
- // Run code without inlining.
- TestApplication test = codeForInlineAlwaysThrows(twoGuards);
- String result = test.run();
- assertEquals(Integer.toString(expectedA), result);
-
- InstructionListIterator iterator;
-
- // Run code inlining all invokes with a.
- test = codeForInlineAlwaysThrowsMultiple(twoGuards);
- ListIterator<BasicBlock> blocksIterator = test.code.blocks.listIterator();
- Iterator<IRCode> inlinee = test.additionalCode.listIterator(); // IR code for a's.
- List<BasicBlock> blocksToRemove = new ArrayList<>();
- while (blocksIterator.hasNext()) {
- BasicBlock block = blocksIterator.next();
- if (blocksToRemove.contains(block)) {
- continue;
- }
- iterator = block.listIterator();
- Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
- if (invoke != null) {
- iterator.previous();
- iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
- assert !blocksToRemove.isEmpty();
- }
+ {
+ // Run code without inlining.
+ TestApplication test = codeForInlineAlwaysThrows(twoGuards);
+ String result = test.run();
+ assertEquals(Integer.toString(expectedA), result);
}
- test.code.removeBlocks(blocksToRemove);
- result = test.run();
- assertEquals(Integer.toString(expectedA), result);
-
- // Run code inlining all invokes with b.
- test = codeForInlineAlwaysThrowsMultiple(twoGuards);
- blocksIterator = test.code.blocks.listIterator();
- inlinee = test.additionalCode.listIterator(3); // IR code for b's.
- while (blocksIterator.hasNext()) {
- BasicBlock block = blocksIterator.next();
- if (blocksToRemove.contains(block)) {
- continue;
+ {
+ // Run code inlining all invokes with a.
+ TestApplication test = codeForInlineAlwaysThrowsMultiple(twoGuards);
+ ListIterator<BasicBlock> blocksIterator = test.code.blocks.listIterator();
+ Iterator<IRCode> inlinee = test.additionalCode.listIterator(); // IR code for a's.
+ List<BasicBlock> blocksToRemove = new ArrayList<>();
+ InstructionListIterator iterator;
+ while (blocksIterator.hasNext()) {
+ BasicBlock block = blocksIterator.next();
+ if (blocksToRemove.contains(block)) {
+ continue;
+ }
+ iterator = block.listIterator();
+ Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
+ if (invoke != null) {
+ iterator.previous();
+ iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
+ }
}
- iterator = block.listIterator();
- Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
- if (invoke != null) {
- iterator.previous();
- iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
- assert !blocksToRemove.isEmpty();
- }
+ test.code.removeBlocks(blocksToRemove);
+ String result = test.run();
+ assertEquals(Integer.toString(expectedA), result);
}
- test.code.removeBlocks(blocksToRemove);
- result = test.run();
- assertEquals(Integer.toString(expectedB), result);
+ {
+ // Run code inlining all invokes with b.
+ TestApplication test = codeForInlineAlwaysThrowsMultiple(twoGuards);
+ ListIterator<BasicBlock> blocksIterator = test.code.blocks.listIterator();
+ Iterator<IRCode> inlinee = test.additionalCode.listIterator(3); // IR code for b's.
+ List<BasicBlock> blocksToRemove = new ArrayList<>();
+ InstructionListIterator iterator;
+ while (blocksIterator.hasNext()) {
+ BasicBlock block = blocksIterator.next();
+ if (blocksToRemove.contains(block)) {
+ continue;
+ }
+ iterator = block.listIterator();
+ Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
+ if (invoke != null) {
+ iterator.previous();
+ iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
+ }
+ }
+ test.code.removeBlocks(blocksToRemove);
+ String result = test.run();
+ assertEquals(Integer.toString(expectedB), result);
+ }
}
@Test
@@ -890,55 +893,58 @@
private void runInlineAlwaysThrowsMultipleWithControlFlow(
int a, boolean twoGuards, int expectedA, int expectedB) throws Exception {
- // Run code without inlining.
- TestApplication test = codeForInlineAlwaysThrows(twoGuards);
- String result = test.run();
- assertEquals(Integer.toString(expectedA), result);
-
- InstructionListIterator iterator;
-
- // Run code inlining all invokes with a.
- test = codeForInlineAlwaysThrowsMultipleWithControlFlow(a, twoGuards);
- ListIterator<BasicBlock> blocksIterator = test.code.blocks.listIterator();
- Iterator<IRCode> inlinee = test.additionalCode.listIterator(); // IR code for a's.
- List<BasicBlock> blocksToRemove = new ArrayList<>();
- while (blocksIterator.hasNext()) {
- BasicBlock block = blocksIterator.next();
- if (blocksToRemove.contains(block)) {
- continue;
- }
- iterator = block.listIterator();
- Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
- if (invoke != null) {
- iterator.previous();
- iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
- assert !blocksToRemove.isEmpty();
- }
+ {
+ // Run code without inlining.
+ TestApplication test = codeForInlineAlwaysThrows(twoGuards);
+ String result = test.run();
+ assertEquals(Integer.toString(expectedA), result);
}
- test.code.removeBlocks(blocksToRemove);
- result = test.run();
- assertEquals(Integer.toString(expectedA), result);
-
- // Run code inlining all invokes with b.
- test = codeForInlineAlwaysThrowsMultipleWithControlFlow(a, twoGuards);
- blocksIterator = test.code.blocks.listIterator();
- inlinee = test.additionalCode.listIterator(3); // IR code for b's.
- while (blocksIterator.hasNext()) {
- BasicBlock block = blocksIterator.next();
- if (blocksToRemove.contains(block)) {
- continue;
+ {
+ // Run code inlining all invokes with a.
+ TestApplication test = codeForInlineAlwaysThrowsMultipleWithControlFlow(a, twoGuards);
+ ListIterator<BasicBlock> blocksIterator = test.code.blocks.listIterator();
+ Iterator<IRCode> inlinee = test.additionalCode.listIterator(); // IR code for a's.
+ List<BasicBlock> blocksToRemove = new ArrayList<>();
+ InstructionListIterator iterator;
+ while (blocksIterator.hasNext()) {
+ BasicBlock block = blocksIterator.next();
+ if (blocksToRemove.contains(block)) {
+ continue;
+ }
+ iterator = block.listIterator();
+ Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
+ if (invoke != null) {
+ iterator.previous();
+ iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
+ }
}
- iterator = block.listIterator();
- Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
- if (invoke != null) {
- iterator.previous();
- iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
- assert !blocksToRemove.isEmpty();
- }
+ test.code.removeBlocks(blocksToRemove);
+ String result = test.run();
+ assertEquals(Integer.toString(expectedA), result);
}
- test.code.removeBlocks(blocksToRemove);
- result = test.run();
- assertEquals(Integer.toString(expectedB), result);
+ {
+ // Run code inlining all invokes with b.
+ TestApplication test = codeForInlineAlwaysThrowsMultipleWithControlFlow(a, twoGuards);
+ ListIterator<BasicBlock> blocksIterator = test.code.blocks.listIterator();
+ Iterator<IRCode> inlinee = test.additionalCode.listIterator(3); // IR code for b's.
+ List<BasicBlock> blocksToRemove = new ArrayList<>();
+ InstructionListIterator iterator;
+ while (blocksIterator.hasNext()) {
+ BasicBlock block = blocksIterator.next();
+ if (blocksToRemove.contains(block)) {
+ continue;
+ }
+ iterator = block.listIterator();
+ Instruction invoke = iterator.nextUntil(Instruction::isInvoke);
+ if (invoke != null) {
+ iterator.previous();
+ iterator.inlineInvoke(test.code, inlinee.next(), blocksIterator, blocksToRemove, null);
+ }
+ }
+ test.code.removeBlocks(blocksToRemove);
+ String result = test.run();
+ assertEquals(Integer.toString(expectedB), result);
+ }
}
@Test
diff --git a/src/test/java/com/android/tools/r8/ir/SplitBlockTest.java b/src/test/java/com/android/tools/r8/ir/SplitBlockTest.java
index 04a55b5..c911d37 100644
--- a/src/test/java/com/android/tools/r8/ir/SplitBlockTest.java
+++ b/src/test/java/com/android/tools/r8/ir/SplitBlockTest.java
@@ -24,6 +24,7 @@
import com.android.tools.r8.smali.SmaliTestBase;
import com.android.tools.r8.utils.InternalOptions;
import com.google.common.collect.ImmutableList;
+import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
@@ -311,7 +312,7 @@
}
public void runWithIfTest(boolean hitTrueBranch) throws Exception {
- final int initialBlockCount = 4;
+ final int initialBlockCount = 3;
final int argumentInstructions = 2;
final int firstBlockInstructions = 3;
// Try split between all non-argument instructions in the first block.
@@ -352,24 +353,27 @@
public void splitBeforeReturn(boolean hitTrueBranch) throws Exception {
TestApplication test = codeWithIf(hitTrueBranch);
IRCode code = test.code;
- // Locate the exit block and split before the return (the first instruction in the block).
- BasicBlock originalReturnBlock = code.getNormalExitBlock();
- BasicBlock newReturnBlock = originalReturnBlock.listIterator().split(code);
- // Modify the code to make the inserted block add the constant 10 to the original return value.
- Value newConstValue = new Value(test.valueNumberGenerator.next(), MoveType.SINGLE, null);
- Value newReturnValue = new Value(test.valueNumberGenerator.next(), MoveType.SINGLE, null);
- Value oldReturnValue = newReturnBlock.listIterator().next().asReturn().returnValue();
- newReturnBlock.listIterator().next().asReturn().returnValue().replaceUsers(newReturnValue);
- Instruction constInstruction = new ConstNumber(ConstType.INT, newConstValue, 10);
- Instruction addInstruction = new Add(
- NumericType.INT,
- newReturnValue,
- oldReturnValue,
- newConstValue);
- InstructionListIterator iterator = originalReturnBlock.listIterator();
- iterator.add(constInstruction);
- iterator.add(addInstruction);
-
+ // Locate the exit blocks and split before the return.
+ List<BasicBlock> exitBlocks = new ArrayList<>(code.computeNormalExitBlocks());
+ for (BasicBlock originalReturnBlock : exitBlocks) {
+ InstructionListIterator iterator =
+ originalReturnBlock.listIterator(originalReturnBlock.getInstructions().size());
+ Instruction ret = iterator.previous();
+ assert ret.isReturn();
+ BasicBlock newReturnBlock = iterator.split(code);
+ // Modify the code to make the inserted block add the constant 10 to the original return
+ // value.
+ Value newConstValue = new Value(test.valueNumberGenerator.next(), MoveType.SINGLE, null);
+ Value newReturnValue = new Value(test.valueNumberGenerator.next(), MoveType.SINGLE, null);
+ Value oldReturnValue = newReturnBlock.listIterator().next().asReturn().returnValue();
+ newReturnBlock.listIterator().next().asReturn().returnValue().replaceUsers(newReturnValue);
+ Instruction constInstruction = new ConstNumber(ConstType.INT, newConstValue, 10);
+ Instruction addInstruction =
+ new Add(NumericType.INT, newReturnValue, oldReturnValue, newConstValue);
+ iterator.previous();
+ iterator.add(constInstruction);
+ iterator.add(addInstruction);
+ }
// Run code and check result (code in the test object is updated).
String result = test.run();
assertEquals(hitTrueBranch ? "10" : "11", result);
diff --git a/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java b/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java
index 8cf6e9b..ab94090 100644
--- a/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java
+++ b/src/test/java/com/android/tools/r8/jasmin/JasminTestBase.java
@@ -39,6 +39,7 @@
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
+import java.util.function.Consumer;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
@@ -80,6 +81,11 @@
return ToolHelper.runD8(builder.build());
}
+ protected AndroidApp compileWithD8(
+ JasminBuilder builder, Consumer<InternalOptions> optionsConsumer) throws Exception {
+ return ToolHelper.runD8(builder.build(), optionsConsumer);
+ }
+
protected String runOnArtD8(JasminBuilder builder, String main) throws Exception {
return runOnArt(compileWithD8(builder), main);
}
@@ -132,10 +138,16 @@
return ToolHelper.runArtNoVerificationErrors(dex.toString(), main);
}
+ protected ProcessResult runOnArtRaw(AndroidApp app, String main) throws IOException {
+ Path out = temp.getRoot().toPath().resolve("out.zip");
+ app.writeToZip(out, OutputMode.Indexed);
+ return ToolHelper.runArtNoVerificationErrorsRaw(out.toString(), main);
+ }
+
protected String runOnArt(AndroidApp app, String main) throws IOException {
Path out = temp.getRoot().toPath().resolve("out.zip");
app.writeToZip(out, OutputMode.Indexed);
- return ToolHelper.runArtNoVerificationErrors(ImmutableList.of(out.toString()), main, null);
+ return ToolHelper.runArtNoVerificationErrors(out.toString(), main);
}
protected static DexApplication process(DexApplication app, InternalOptions options)
diff --git a/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java b/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java
index 8e12fc6..d7c40d4 100644
--- a/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java
+++ b/src/test/java/com/android/tools/r8/jdwp/RunJdwpTests.java
@@ -57,6 +57,10 @@
boolean test(DexVm dexVm, Tool tool);
}
+ static boolean isAndroidLOrAbove(DexVm dexVm, Tool tool) {
+ return dexVm.getVersion().isNewerThan(Version.V4_4_4);
+ }
+
static boolean isAndroidMOrAbove(DexVm dexVm, Tool tool) {
return dexVm.getVersion().isNewerThan(Version.V5_1_1);
}
@@ -69,6 +73,10 @@
return dexVm.getVersion().isNewerThan(Version.V7_0_0);
}
+ static boolean isNotAndroidL(DexVm dexVm, Tool tool) {
+ return dexVm.getVersion() != Version.V5_1_1;
+ }
+
static boolean isLatestRuntime(DexVm dexVm, Tool tool) {
return dexVm == DexVm.ART_DEFAULT;
}
@@ -85,46 +93,123 @@
static final Map<String, TestPredicate> FAILING_TESTS =
ImmutableMap.<String, TestPredicate>builder()
+ .put("ArrayReference.GetValuesTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ArrayReference.LengthTest", RunJdwpTests::isAndroidLOrAbove)
.put("ArrayReference.SetValues003Test", RunJdwpTests::isAndroidNOrAbove)
+ .put("ClassObjectReference.ReflectedTypeTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ClassObjectReference.ReflectedType002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ClassType.InvokeMethodTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ClassType.InvokeMethod002Test", RunJdwpTests::isAndroidLOrAbove)
.put("ClassType.InvokeMethodAfterMultipleThreadSuspensionTest",
RunJdwpTests::isAndroidNOrAbove)
.put("ClassType.InvokeMethodWithSuspensionTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("ClassType.NewInstanceTest", RunJdwpTests::isAndroidLOrAbove)
.put("ClassType.NewInstanceAfterMultipleThreadSuspensionTest",
RunJdwpTests::isAndroidNOrAbove)
.put("ClassType.NewInstanceStringTest", RunJdwpTests::isAndroidOOrAbove)
.put("ClassType.NewInstanceTagTest", RunJdwpTests::isAndroidNOrAbove)
.put("ClassType.NewInstanceWithSuspensionTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("ClassType.SetValues002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ClassType.SuperClassTest", RunJdwpTests::isAndroidLOrAbove)
.put("Events.BreakpointTest", RunJdwpTests::isAndroidMOrAbove)
.put("Events.Breakpoint002Test", RunJdwpTests::isAndroidMOrAbove)
.put("Events.BreakpointOnCatchTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("Events.ClassPrepareTest", RunJdwpTests::isAndroidLOrAbove)
.put("Events.ClassPrepare002Test", RunJdwpTests::isAndroidOOrAbove)
+ .put("Events.CombinedEvents002Test", RunJdwpTests::isAndroidLOrAbove)
.put("Events.CombinedExceptionEventsTest", RunJdwpTests::isAndroidMOrAbove)
.put("Events.ExceptionCaughtTest", RunJdwpTests::isAndroidMOrAbove)
- .put("Events.ExceptionUncaughtTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("Events.ExceptionUncaughtTest", RunJdwpTests::isNotAndroidL)
+ .put("Events.ExceptionWithLocationTest", RunJdwpTests::isAndroidLOrAbove)
.put("Events.EventWithExceptionTest", RunJdwpTests::isAndroidNOrAbove)
.put("Events.FieldAccessTest", RunJdwpTests::isAndroidMOrAbove)
.put("Events.FieldModificationTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("Events.FieldModification002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("Events.FieldWithLocationTest", RunJdwpTests::isAndroidLOrAbove)
.put("Events.MethodEntryTest", RunJdwpTests::isAndroidMOrAbove)
.put("Events.MethodExitTest", RunJdwpTests::isAndroidMOrAbove)
.put("Events.MethodExitWithReturnValueTest", RunJdwpTests::isAndroidMOrAbove)
- .put("Events.SingleStepTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("Events.SingleStepTest", RunJdwpTests::isNotAndroidL)
.put("Events.SingleStepWithPendingExceptionTest", RunJdwpTests::isAndroidNOrAbove)
+ .put("EventModifiers.CountModifierTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("EventModifiers.ThreadOnlyModifierTest", RunJdwpTests::isAndroidLOrAbove)
.put("InterfaceType.InvokeMethodTest", RunJdwpTests::isAndroidNOrAbove)
+ .put("Method.BytecodesTest", RunJdwpTests::isAndroidLOrAbove)
.put("Method.IsObsoleteTest", RunJdwpTests::isAndroidNOrAbove)
.put("Method.VariableTableWithGenericTest", RunJdwpTests::isAndroidOOrAbove)
+ .put("MultiSession.AttachConnectorTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.BreakpointTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.ClassObjectIDTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.ClassPrepareTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.EnableCollectionTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.ExceptionTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.FieldAccessTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.FieldModificationTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.MethodEntryExitTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.RefTypeIDTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.ResumeTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.SingleStepTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("MultiSession.VMDeathTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ObjectReference.DisableCollectionTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ObjectReference.EnableCollectionTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ObjectReference.GetValues002Test", RunJdwpTests::isAndroidLOrAbove)
.put("ObjectReference.InvokeMethodDefaultTest", RunJdwpTests::isAndroidNOrAbove)
.put("ObjectReference.InvokeMethodDefault002Test", RunJdwpTests::isAndroidNOrAbove)
.put("ObjectReference.InvokeMethodAfterMultipleThreadSuspensionTest",
RunJdwpTests::isAndroidNOrAbove)
.put("ObjectReference.InvokeMethodWithSuspensionTest", RunJdwpTests::isAndroidMOrAbove)
- .put("ReferenceType.GetValues006Test", RunJdwpTests::isAndroidOOrAbove)
+ .put("ObjectReference.IsCollectedTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ObjectReference.MonitorInfoTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ObjectReference.SetValuesTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ObjectReference.SetValues002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ObjectReference.SetValues003Test", RunJdwpTests::isAndroidLOrAbove)
.put("ReferenceType.ClassLoaderTest", RunJdwpTests::isAndroidNOrAbove)
+ .put("ReferenceType.FieldsTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.GetValues002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.GetValues004Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.GetValues006Test", RunJdwpTests::isAndroidOOrAbove)
+ .put("ReferenceType.MethodsTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.ModifiersTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.Signature002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.SourceDebugExtensionTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.SyntheticFieldsTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ReferenceType.SyntheticMethodsTest", RunJdwpTests::isAndroidLOrAbove)
.put("StackFrame.GetValuesTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("StackFrame.ProxyThisObjectTest", RunJdwpTests::isAndroidLOrAbove)
.put("StackFrame.SetValuesTest", RunJdwpTests::isAndroidMOrAbove)
.put("StackFrame.SetValues002Test", RunJdwpTests::isAndroidMOrAbove)
+ .put("StackFrame.ThisObjectTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("StringReference.ValueTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadGroupReference.ChildrenTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadGroupReference.NameTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadGroupReference.ParentTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.CurrentContendedMonitorTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.FrameCountTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.FramesTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.InterruptTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.OwnedMonitorsStackDepthInfoTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.OwnedMonitorsTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.ResumeTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.Status002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.Status003Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.Status004Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.Status005Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.Status006Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.StatusTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.SuspendCountTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.SuspendTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.ThreadGroup002Test", RunJdwpTests::isAndroidLOrAbove)
+ .put("ThreadReference.ThreadGroupTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("VirtualMachine.AllClassesTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("VirtualMachine.AllThreadsTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("VirtualMachine.CapabilitiesTest", RunJdwpTests::isAndroidLOrAbove)
.put("VirtualMachine.CapabilitiesNewTest", RunJdwpTests::isLatestRuntime)
.put("VirtualMachine.ClassPathsTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("VirtualMachine.DisposeTest", RunJdwpTests::isAndroidLOrAbove)
.put("VirtualMachine.DisposeDuringInvokeTest", RunJdwpTests::isAndroidMOrAbove)
+ .put("VirtualMachine.DisposeObjectsTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("VirtualMachine.ExitTest", RunJdwpTests::isAndroidLOrAbove)
+ .put("VirtualMachine.ResumeTest", RunJdwpTests::isAndroidLOrAbove)
.build();
// The smoke tests are the set of tests that fail if there is no debugging info in the dex files.
diff --git a/src/test/java/com/android/tools/r8/rewrite/staticvalues/B67468748.java b/src/test/java/com/android/tools/r8/rewrite/staticvalues/B67468748.java
new file mode 100644
index 0000000..6d9f582
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/rewrite/staticvalues/B67468748.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2017, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.rewrite.staticvalues;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+import com.android.tools.r8.ToolHelper.ProcessResult;
+import com.android.tools.r8.jasmin.JasminBuilder;
+import com.android.tools.r8.jasmin.JasminTestBase;
+import com.android.tools.r8.utils.AndroidApp;
+import com.google.common.collect.ImmutableList;
+import org.junit.Test;
+
+public class B67468748 extends JasminTestBase {
+
+ @Test
+ public void jarInput() throws Exception {
+ final String CLASS_NAME = "Test";
+
+ JasminBuilder builder = new JasminBuilder();
+ JasminBuilder.ClassBuilder clazz = builder.addClass(CLASS_NAME);
+
+ // The static field Test/intField is not defined even though it is written in the
+ // <clinit> code. This class cannot load, but we can still process it to dex, where Art also
+ // cannot load the class.
+ clazz.addStaticMethod("<clinit>", ImmutableList.of(), "V",
+ ".limit stack 1",
+ ".limit locals 1",
+ "iconst_1",
+ "putstatic Test/intField I",
+ "return");
+
+ clazz.addMainMethod(
+ ".limit stack 2",
+ ".limit locals 1",
+ "getstatic java/lang/System/out Ljava/io/PrintStream;",
+ "getstatic Test/intField I",
+ "invokevirtual java/io/PrintStream/print(I)V",
+ "return");
+
+ // The code does not run on the Java VM, as there is a missing field.
+ ProcessResult result = runOnJavaRaw(builder, CLASS_NAME);
+ assertEquals(1, result.exitCode);
+ assertTrue(result.stderr.contains("java.lang.NoSuchFieldError"));
+
+ // Run in release mode to turn on initializer defaults rewriting.
+ AndroidApp application = compileWithD8(builder, options -> options.debug = false);
+
+ // The code does not run on Art, as there is a missing field.
+ result = runOnArtRaw(application, CLASS_NAME);
+ assertEquals(1, result.exitCode);
+ assertTrue(result.stderr.contains("java.lang.NoSuchFieldError"));
+ }
+
+ // Test with dex input is in StaticValuesTest.
+}
diff --git a/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java b/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java
index 9e5a839..1d26039 100644
--- a/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/staticvalues/StaticValuesTest.java
@@ -7,7 +7,7 @@
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
-import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.ToolHelper.ProcessResult;
import com.android.tools.r8.code.Instruction;
import com.android.tools.r8.code.Sput;
import com.android.tools.r8.code.SputObject;
@@ -24,6 +24,7 @@
import com.android.tools.r8.graph.DexValue.DexValueShort;
import com.android.tools.r8.graph.DexValue.DexValueString;
import com.android.tools.r8.smali.SmaliTestBase;
+import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.DexInspector;
import com.android.tools.r8.utils.DexInspector.MethodSubject;
import com.android.tools.r8.utils.InternalOptions;
@@ -572,4 +573,43 @@
assertEquals(StringUtils.lines("2"), result);
}
+ @Test
+ public void b67468748() throws Exception {
+ final String CLASS_NAME = "Test";
+
+ SmaliBuilder builder = new SmaliBuilder(CLASS_NAME);
+
+ // The static field LTest;->intField:I is not defined even though it is written in the
+ // <clinit> code. This class cannot load, but we can still process it to output which still
+ // cannot load.
+ builder.addStaticInitializer(
+ 2,
+ "const v0, 3",
+ "sput v0, LTest;->intField:I",
+ "return-void"
+ );
+ builder.addMainMethod(
+ 3,
+ "sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;",
+ "sget v1, LTest;->intField:I",
+ "invoke-virtual { v0, v1 }, Ljava/io/PrintStream;->println(I)V",
+ "return-void"
+ );
+
+ AndroidApp application = builder.build();
+
+ // The code does not run on Art, as there is a missing field.
+ ProcessResult result = runOnArtRaw(application, CLASS_NAME);
+ assertEquals(1, result.exitCode);
+ assertTrue(result.stderr.contains("java.lang.NoSuchFieldError"));
+
+ // Run in release mode to turn on initializer defaults rewriting.
+ application = compileWithD8(application, options -> options.debug = false);
+
+ // The code does still not run on Art, as there is still a missing field.
+ result = runOnArtRaw(application, CLASS_NAME);
+ assertEquals(1, result.exitCode);
+ assertTrue(result.stderr.contains("java.lang.NoSuchFieldError"));
+ }
+
}
diff --git a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
index 9f19536..3f44025 100644
--- a/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/ProguardConfigurationParserTest.java
@@ -680,4 +680,40 @@
config = parser.getConfig();
assertTrue(config.isUseUniqueClassMemberNames());
}
+
+ @Test
+ public void parseKeepParameterNames() throws Exception {
+ try {
+ ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
+ parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
+ "-keepparameternames"
+ )));
+ parser.getConfig();
+ fail();
+ } catch (ProguardRuleParserException e) {
+ System.out.println(e);
+ assertTrue(e.getMessage().contains("-keepparameternames is not supported"));
+ }
+ }
+
+ @Test
+ public void parseKeepParameterNamesWithoutMinification() throws Exception {
+ ProguardConfigurationParser parser = new ProguardConfigurationParser(new DexItemFactory());
+ parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
+ "-keepparameternames",
+ "-dontobfuscate"
+ )));
+ ProguardConfiguration config = parser.getConfig();
+ assertTrue(config.isKeepParameterNames());
+
+ parser = new ProguardConfigurationParser(new DexItemFactory());
+ parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
+ "-keepparameternames"
+ )));
+ parser.parse(new ProguardConfigurationSourceStrings(ImmutableList.of(
+ "-dontobfuscate"
+ )));
+ config = parser.getConfig();
+ assertTrue(config.isKeepParameterNames());
+ }
}
diff --git a/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java b/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java
index 9c41f21..5dc1e75 100644
--- a/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java
+++ b/src/test/java/com/android/tools/r8/smali/IfSimplificationTest.java
@@ -444,6 +444,6 @@
// TODO(sgjesse): Maybe this test is too fragile, as it leaves quite a lot of code, so the
// expectation might need changing with other optimizations.
// TODO(zerny): Consider optimizing the fallthrough branch of conditionals to not be return.
- assertEquals(28, code.instructions.length);
+ assertEquals(27, code.instructions.length);
}
}
diff --git a/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java b/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java
index f2f1220..41f73d1 100644
--- a/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java
+++ b/src/test/java/com/android/tools/r8/smali/SmaliTestBase.java
@@ -361,7 +361,7 @@
getSource(currentClassName).add(builder.toString());
}
- public List<String> build() {
+ public List<String> buildSource() {
List<String> result = new ArrayList<>(classes.size());
for (String clazz : classes.keySet()) {
Builder classBuilder = classes.get(clazz);
@@ -372,12 +372,18 @@
public byte[] compile()
throws IOException, RecognitionException, DexOverflowException, ExecutionException {
- return Smali.compile(build());
+ return Smali.compile(buildSource());
}
+ public AndroidApp build()
+ throws IOException, RecognitionException, DexOverflowException, ExecutionException {
+ return AndroidApp.fromDexProgramData(compile());
+ }
+
+
@Override
public String toString() {
- return String.join("\n\n", build());
+ return String.join("\n\n", buildSource());
}
}
diff --git a/tests/2017-07-27/aosp_master_manifest.xml b/tests/2017-07-27/aosp_master_manifest.xml
deleted file mode 100644
index 25af153..0000000
--- a/tests/2017-07-27/aosp_master_manifest.xml
+++ /dev/null
@@ -1,579 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<manifest>
- <remote fetch=".." name="aosp" review="https://android-review.googlesource.com/"/>
-
- <default remote="aosp" revision="master" sync-j="4"/>
-
- <project groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu" revision="8eb496967a7640e08832b15ea3e1f26079e4f2d1" upstream="master"/>
- <project clone-depth="1" groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu-kernel" revision="8a09131453b9326793261b6c9297f3c43336d6b5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk" name="device/common" revision="81fa95978b5542b9d2851b04d034b9a75ed8b43b" upstream="master"/>
- <project groups="pdk" name="device/generic/arm64" revision="23d9a6b57c63fbea914ae663a0be693b43d91ffc" upstream="master"/>
- <project groups="pdk" name="device/generic/armv7-a-neon" revision="dd168c481dcb14c7932c7026ac7c8b4af128e4a5" upstream="master"/>
- <project groups="pdk" name="device/generic/common" revision="11c092a6cbfcf6207f07a9a8e3398e747e7f5461" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish" revision="eb66ec9609a6c6422cfec97074eaefe9b3b436cd" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish-opengl" revision="b0a0e2f0297a1b379dd460dbb74153773196238c" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="6f2e6974a1b1dc0ef936aec732e33d553c000b5e" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="9d7cbb60819a1da8408a7148b965b4cd1ebbb570" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-mips" revision="544e69736cff911c286a5d1d300dac228e23a73f" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-mips64" revision="b1c36d0847fe6366527efd38fdb29d757ea887ee" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-x86" revision="65d59e2be2cfd713513a05d80a0f75794ab60579" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="bcb1f5139c24bebbb0cc0ebd2f50d83cd21b01b9" upstream="master"/>
- <project groups="pdk" name="device/generic/mips" revision="23901a9cf7a62f5f8f9f0c1382b5707694a1661c" upstream="master"/>
- <project groups="pdk" name="device/generic/mips64" revision="03b4192ab5125e5d67636dc4c7121f089799e1fb" upstream="master"/>
- <project groups="pdk" name="device/generic/qemu" revision="99feb6138f39e392495057ef7f2c4a5ed27f9e2d" upstream="master"/>
- <project groups="device,pdk" name="device/generic/uml" revision="4f11280e3d70728fba24e572428e559b7b6f8093" upstream="master"/>
- <project groups="pdk" name="device/generic/x86" revision="dac918b4cd4a34342526588502e4b5a531183080" upstream="master"/>
- <project groups="pdk" name="device/generic/x86_64" revision="f00aa59b3af4937ed014701755e9b01c95122187" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
- <project groups="device,fugu,broadcom_pdk,generic_fs,pdk" name="device/google/atv" revision="fbc45fb7c00d9b0150acdb674c9525ab32abe349" upstream="master"/>
- <project groups="device,pdk" name="device/google/contexthub" revision="a70df4afbbcebd9693590dd8fbbb9edf3220609e" upstream="master"/>
- <project groups="device,dragon,pdk" name="device/google/dragon" revision="ee1ac65d5660fd80ce40165c165e09d4de3cada5" upstream="master"/>
- <project clone-depth="1" groups="device,dragon,pdk" name="device/google/dragon-kernel" revision="8c9e4d14540119e0815a453eb4fefbedeaf8794f" upstream="master"/>
- <project groups="device,marlin" name="device/google/marlin" revision="d191908f633ea003bcba5193ef781ae4b1ab0bcc" upstream="master"/>
- <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="48bde4626f5da9605b068b6c1bcc1e854a876d52" upstream="master"/>
- <project groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler" revision="40d2796a7f673102462f217e794cb3efb18e8dff" upstream="master"/>
- <project clone-depth="1" groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler-kernel" revision="db808069857bd03e573ce3c765dd6df43f2a4318" upstream="master"/>
- <project groups="device,bullhead,pdk" name="device/lge/bullhead" revision="422731a22e593103dfab7f2abaf7fa1804566ef0" upstream="master"/>
- <project clone-depth="1" groups="device,bullhead,pdk" name="device/lge/bullhead-kernel" revision="3f270065c17302930cc9319d399297436b65b3bc" upstream="master"/>
- <project name="device/linaro/bootloader/OpenPlatformPkg" revision="71183d6eabb1f91198f1bd3705a85b419cfd4685" upstream="master"/>
- <project name="device/linaro/bootloader/arm-trusted-firmware" revision="36aa82dda56169333aba6b2c55341404c1d631f0" upstream="master"/>
- <project name="device/linaro/bootloader/edk2" revision="b26de945921c8045494d7817e2c962b2b73c80dc" upstream="master"/>
- <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="8b50938d95ea98ee6e01d1bb5155fccaa375de1b" upstream="master"/>
- <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="f3509810fe7d8e6eeff6f0b8f902c5f7e4db7c2a" upstream="master"/>
- <project groups="pdk" name="device/sample" revision="15f7857fc7b7f7cfd99ec4f93b151dc02a71b837" upstream="master"/>
- <project name="kernel/tests" revision="abfe7a8bf1d0f26e376d977f55d2234fe297c5ec" upstream="master"/>
- <project groups="pdk" name="platform/art" path="art" revision="0e03459e3bb921126dc8032a4c8430b1b8383d90" upstream="master"/>
- <project groups="pdk" name="platform/bionic" path="bionic" revision="4f36cabd8d1b1f3ed6ad4586f86aad5731f4bdaf" upstream="master"/>
- <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="231c627a5527b92ae3d043e454e949cdfc4f38ea" upstream="master"/>
- <project groups="pdk" name="platform/build" path="build/make" revision="2aef19528e05d014db280ce9aa6431580cc19f7c" upstream="master">
- <copyfile dest="Makefile" src="core/root.mk"/>
- <linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
- <linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
- <linkfile dest="build/core" src="core"/>
- <linkfile dest="build/envsetup.sh" src="envsetup.sh"/>
- <linkfile dest="build/target" src="target"/>
- <linkfile dest="build/tools" src="tools"/>
- </project>
- <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="9795c47773f2d79fdc0ace76bb47693c4a4d3b27" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="bcb31defde3e3fc248a1f11049e7722233003b6f" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="98be5836deff21fccb93d6fc342441d9858c042c" upstream="master">
- <linkfile dest="Android.bp" src="root.bp"/>
- <linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
- </project>
- <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="644a1933b78f1b08e86cecb58e199cd43ff7bd26" upstream="master"/>
- <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="226dd9c816388ccc82d332510ef65143757288f8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="dfdc080699f1bf92978b45e8e87649bde239a874" upstream="master"/>
- <project name="platform/developers/build" path="developers/build" revision="67343aa8a5faeb6b4df459dbfce4cc17bc7f21f9" upstream="master"/>
- <project name="platform/developers/demos" path="developers/demos" revision="95d49d216223e3431647abd79f5e376958353c95" upstream="master"/>
- <project name="platform/developers/samples/android" path="developers/samples/android" revision="b329d0bb80feecf6a27d38fe0bb3c018a2ba16aa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="fc7b5458c3a4cb311afca7ff0e10811514ca03ae" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="c78bdec26a7e8ae86feead11571d5fdc3203b98a" upstream="master"/>
- <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="7a8860406c015bbc63f382efed9372044eb0cb74" upstream="master"/>
- <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="44079759f93259a9694607502406dfe3717b04ba" upstream="master"/>
- <project groups="pdk" name="platform/external/aac" path="external/aac" revision="db596910262534891ecde361a71abe7ada57405a" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="c692633e1b2dddfb8f5ec7f60eb7a62ced325e4f" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="9b76336c02d84eeea19a48108270e3bae4efd025" upstream="master"/>
- <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e700a73dd03a0c111a8a55ef2f9f22b264663138" upstream="master"/>
- <project groups="pdk" name="platform/external/androidplot" path="external/androidplot" revision="c66727ebf001607cee14521c35bc852b55fd9845" upstream="master"/>
- <project groups="pdk" name="platform/external/ant-glob" path="external/ant-glob" revision="a73228afa9540b9c5518d360c5ae630bb634f975" upstream="master"/>
- <project groups="pdk" name="platform/external/antlr" path="external/antlr" revision="dd5fa6d48b827c5d98b625adbc209f4a05567534" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-commons-math" path="external/apache-commons-math" revision="18f62fca59d387e3c1ccd8f80087d9c9af40bcc8" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="3af05d75dc65fae5e073269db62563716c2ebd90" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="a4b31e5eda3df5a0ffe844891edc5bbb33930e98" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-xml" path="external/apache-xml" revision="31d7642eb8f37a9166db7f1c9e313ab651bdb8ba" upstream="master"/>
- <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="66e3a02481a0fcfcaaea296c0ec4daf761d3a07c" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="9ab8d36c652aae3bd30cbf62243a788394494635" upstream="master"/>
- <project groups="pdk" name="platform/external/avb" path="external/avb" revision="047ecf7d2361ffcb39a5a4ec0709480f47ed76e2" upstream="master"/>
- <project groups="pdk" name="platform/external/bison" path="external/bison" revision="7467d52af437dd3dfea237a6865ab84bf258dee0" upstream="master"/>
- <project groups="pdk" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
- <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="b6d070c5081ba0ca11545eb50870817d6d72d926" upstream="master"/>
- <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="5efb6f27c6444cbef30ca253c831496c534a9198" upstream="master"/>
- <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="6a6ebf0b8d77d5cc527af49afc5731a2253779d2" upstream="master"/>
- <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="4ac53f28ec5554dd32c70298312a10078d5ce02c" upstream="master"/>
- <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="0600e5668b2b1590c2f908a5c420149c6581122e" upstream="master"/>
- <project groups="pdk" name="platform/external/c-ares" path="external/c-ares" revision="211489aeaed3157c34e46f350afea813960258af" upstream="master"/>
- <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="eef51080212521ca9c85eb880dd1d6620846cf92" upstream="master"/>
- <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="d7e8ee81279845e0f06103398b48d3f4624497b4" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="5bb2c7930cf34cfe7584b76139b5257feec81e6c" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="a70bd790dfd509cefb24534d02e3a1b349faf98d" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="581a777a866d78be6cb4192e46891e418930fc1b" upstream="master"/>
- <project groups="pdk" name="platform/external/clang" path="external/clang" revision="0f9f1869a4596b973fb6d65324924365d3cf5884" upstream="master"/>
- <project groups="pdk" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
- <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="8bdaf98eeb4dd0f7b8cae390cd18c097a9eb4e2f" upstream="master"/>
- <project groups="pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="5ad04c656aeb7cece332922bd67e4b9bc08acc81" upstream="master"/>
- <project groups="pdk" name="platform/external/crcalc" path="external/crcalc" revision="5559610bea3b267abef3273868f2d6b8c01409a5" upstream="master"/>
- <project groups="pdk" name="platform/external/cros/system_api" path="external/cros/system_api" revision="d51655f606e0057f5fadcd17eb5ce1c1a5dcddcb" upstream="master"/>
- <project groups="pdk" name="platform/external/curl" path="external/curl" revision="f0f7cd5b375b317e7eef65b6573902c04ee80ecc" upstream="master"/>
- <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="671fbc2903016f5966c032a917caf3a800088ca9" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="da231f19abbe6eafee0d1ac3d35351d281998a05" upstream="master"/>
- <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="d352976796a4ef22a8ec1e8056f51633c4b07d90" upstream="master"/>
- <project groups="pdk" name="platform/external/dexmaker" path="external/dexmaker" revision="9e6367a9399bb671b1b474bf21898d2ca68b6357" upstream="master"/>
- <project groups="pdk" name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="df64c96f01b3dd2a823d6aa788653c3bedd1efda" upstream="master"/>
- <project groups="pdk" name="platform/external/dlmalloc" path="external/dlmalloc" revision="6661f3ca66b55d8f5a57b96fec97efaf8f3897a5" upstream="master"/>
- <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="4cafaba2321b7b74f81c621aa01112156258adb3" upstream="master"/>
- <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="00d11a4477637375322692d0c5603c60d38c6f1a" upstream="master"/>
- <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="f381ec7f6fca0618fb01231a758402597b1239e3" upstream="master"/>
- <project groups="pdk" name="platform/external/donuts" path="external/donuts" revision="005389fb31a67841b5de42f0d25fbfab843e208c" upstream="master"/>
- <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="e19443ea00d3b27622590b920819e53da68f7fda" upstream="master"/>
- <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="cbfc5a5d6bd7f8e3913560d8d0e5fdf865773fce" upstream="master"/>
- <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="059f2d82efbcc733574b2b90dbf999280c04c4f1" upstream="master"/>
- <project groups="pdk" name="platform/external/drrickorang" path="external/drrickorang" revision="8ea137d1086e621188f70ffac34a6ba8924af2c6" upstream="master"/>
- <project name="platform/external/dtc" path="external/dtc" revision="b1d8b2cd5e57a5c97bdd011624c06c40052b821e" upstream="master"/>
- <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="0e4687aea6893115b87e647db97e211c38beee30" upstream="master"/>
- <project groups="pdk" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-basebuilder" path="external/eclipse-basebuilder" revision="076f46888ed346775b8efc564d7694063ef5eea7" upstream="master"/>
- <project groups="pdk" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
- <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="c905f05b1b1277cc5b913652b2d4a57da12b89f7" upstream="master"/>
- <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="2ed2550b8595fde721dbc6a12091609a598192af" upstream="master"/>
- <project groups="pdk" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
- <project groups="pdk" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
- <project groups="pdk" name="platform/external/expat" path="external/expat" revision="8954a5667c2941642b9f63bec3a0482a8e9eeab3" upstream="master"/>
- <project groups="pdk" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
- <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="85b4766bedbbe8b2dfdc23b401194c9dd3c60dd0" upstream="master"/>
- <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="b87f884d1ad7530a39318ddbe2f066aa1f268871" upstream="master"/>
- <project groups="pdk" name="platform/external/fec" path="external/fec" revision="b3e9d18f59759ff5407be13ef8c6d2e2a497305e" upstream="master"/>
- <project groups="pdk" name="platform/external/fio" path="external/fio" revision="138dfa04ca2e19c0f03b4d0b591ca2d5e3bad3df" upstream="master"/>
- <project groups="pdk" name="platform/external/flac" path="external/flac" revision="9654326e6af758bf25e50f15a7e7b9cff6755a78" upstream="master"/>
- <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="1ce26af6d14810a277a5f62a5619a372b93183cc" upstream="master"/>
- <project groups="pdk" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
- <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="613f720f08f579806a05f0e45927f4f9ff147885" upstream="master"/>
- <project groups="pdk" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="9d1e7e4558c8b53731ba1d06d33b5516934d1ff7" upstream="master"/>
- <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="2d71596ba7a5e2e9430683818f8800d8bea059e2" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="a6e0183cdd9f69b180b4adbd613e66772d9bc633" upstream="master"/>
- <project groups="pdk" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
- <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="74c716d37b9a39f55b7f18d7939e886c7f2c8881" upstream="master"/>
- <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="31bf6fed97629fd3420cda58a97469ec7e5389f0" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="0062a10458d4c357f3082d66bcb129d11913aaae" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/coming-soon" path="external/google-fonts/coming-soon" revision="2c5cb418c690815545bbb0316eae5fd33b9fc859" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/cutive-mono" path="external/google-fonts/cutive-mono" revision="bce2136662854076023066602526ba299e6556b2" upstream="master"/>
- <project groups="pdk" name="platform/external/google-fonts/dancing-script" path="external/google-fonts/dancing-script" revision="7b6623bd54cee3e48ae8a4f477f616366643cc78" upstream="master"/>
- <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="84cad11e5d8c3000472e8bb22dc698cf9b3c8612" upstream="master"/>
- <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="ff9b10309a390a7d631edc7808e129237972245b" upstream="master"/>
- <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="165c596ac3c69ecbc5a424ad9c1f1be6d44d0bb3" upstream="master"/>
- <project groups="pdk" name="platform/external/guava" path="external/guava" revision="5000b35f73a42ddb5554aa4c1c5ffea9c999741d" upstream="master"/>
- <project groups="pdk" name="platform/external/guice" path="external/guice" revision="411312e790280e72c08e018134d7e3a0e7ebab76" upstream="master"/>
- <project groups="pdk" name="platform/external/hamcrest" path="external/hamcrest" revision="0d446c0a6f5ab27bf24d8e046f1d03ce40f09594" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="6dd5ce2e32bc4a474b6ae7f0c3b6059a995ea5a7" upstream="master"/>
- <project groups="pdk" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="dedeff64279b77bafff72b6d866efc93e829b4ab" upstream="master"/>
- <project groups="pdk" name="platform/external/icu" path="external/icu" revision="f891f489da942890fd01c83b860b6448b77ce042" upstream="master"/>
- <project groups="pdk" name="platform/external/ims" path="external/ims" revision="711f9d55979cfe28b19a502cbe13a4d7e7e674f0" upstream="master"/>
- <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="989b8c667872ae21ea536d6419a506706a1e89ed" upstream="master"/>
- <project groups="pdk" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="afbdf60e1d4cafe0f894fe8e8e5bfa49e47c80b2" upstream="master"/>
- <project groups="pdk" name="platform/external/iptables" path="external/iptables" revision="204461a170e92764b41512463f49ef4164bee2e3" upstream="master"/>
- <project groups="pdk" name="platform/external/iputils" path="external/iputils" revision="0e79d155b36fdedf6f02908f72d4d156dbe3b335" upstream="master"/>
- <project groups="pdk" name="platform/external/iw" path="external/iw" revision="6a3e9a164c98577c28c0c9b1b9a0fbe7d7436e47" upstream="master"/>
- <project groups="pdk" name="platform/external/jacoco" path="external/jacoco" revision="b1b164ac860eddaed3abfb819df73bfcccdaa327" upstream="master"/>
- <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="7adc960353812730b4fb15a72901056cf3b3c516" upstream="master"/>
- <project groups="pdk" name="platform/external/javasqlite" path="external/javasqlite" revision="ee41d81872eedc632f42bd231b95bc945690d159" upstream="master"/>
- <project groups="pdk" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
- <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="68545397d8332a61f800ce9617715a22445ed9a9" upstream="master"/>
- <project groups="pdk" name="platform/external/jdiff" path="external/jdiff" revision="62f4ca1f64eaeb0896416949d6120b912ac67d3b" upstream="master"/>
- <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="a6f685beacaa3f8da06cb28f38bb559eac7d4dda" upstream="master"/>
- <project groups="pdk" name="platform/external/jetty" path="external/jetty" revision="3077b6f9426ccafb6bd5c00a748e1d40af9e1ae5" upstream="master"/>
- <project groups="tradefed,pdk-fs" name="platform/external/jline" path="external/jline" revision="74812032f8d8eddbef387f18c96de9e5c38b8fdb" upstream="master"/>
- <project groups="pdk" name="platform/external/jmdns" path="external/jmdns" revision="0c71647deb7f7835c473fd3dfb45943083e47794" upstream="master"/>
- <project groups="pdk" name="platform/external/jsilver" path="external/jsilver" revision="b9b84920ba47ddf7f15baa01c56b28e3d3f951ea" upstream="master"/>
- <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="45f59951efef6cd2924738c39a5f52d61e06eb79" upstream="master"/>
- <project groups="pdk" name="platform/external/jsoncpp" path="external/jsoncpp" revision="ecd640d0acf7c93c5dbfc37702e4eedbc18aa850" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr305" path="external/jsr305" revision="333c5e0ea34930a10785f53e74dbe997d93ad2d8" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="de30ee496a13d0f71d8ddaee1e247c3e8e43e58d" upstream="master"/>
- <project groups="pdk" name="platform/external/junit" path="external/junit" revision="2faf8f4ae953dd2e847536c2712bbc563e34949a" upstream="master"/>
- <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="b03560c32573b9057dc1daaf877501dbb4e16f8d" upstream="master"/>
- <project groups="pdk" name="platform/external/kernel-headers" path="external/kernel-headers" revision="ab0b76f533c12b642cfbe4adb6e601e340599ad6" upstream="master"/>
- <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="087bd70f9a816bc37d77ef71c0b8f4253e60169e" upstream="master"/>
- <project groups="pdk" name="platform/external/ksoap2" path="external/ksoap2" revision="3f3695df2e974811a5759d43f3532dcd9d6be26c" upstream="master"/>
- <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="f4a17ae216f420f5d46e8680d4aa9317e6a9a4d8" upstream="master"/>
- <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="a645153b0a97663636bacdc5527c0d304fa79657" upstream="master"/>
- <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="2dc254ac567d43b060356ed4d660aca64fdc14a2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="64dcb22b223e3aae866d44ff35dc3acc2a9c58e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
- <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="0601274935e7f632eb0d6ce0fd223b744349d20b" upstream="master"/>
- <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e1a8625038e715f0b14fd5466c02f0142673b1ec" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="2447373f182dbfeb47fb86c0f5a6ac5773c65ac2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="0aea6aeca494754446dd1e5fe638fe68da128036" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="c41479a1d7de7fe6e9cfbff9be21382f7b23ace7" upstream="master"/>
- <project groups="pdk" name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
- <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="90d90b27c0b82cac20deabac79e97e274856eaf8" upstream="master"/>
- <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="791d9b9fd9bd768bc81f5f224fb5fc2904035fa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
- <project groups="pdk" name="platform/external/libese" path="external/libese" revision="4dcd39f5fc3b5a33078dcd5ee698f08c7ae664e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="596447c7ff2881a67e7082c905112584c3e61a17" upstream="master"/>
- <project groups="pdk" name="platform/external/libexif" path="external/libexif" revision="2431bfa79df74fbb6e30b77ab9f3d89c300d18ae" upstream="master"/>
- <project groups="pdk" name="platform/external/libgdx" path="external/libgdx" revision="5f9bb1dadc7e51a5fdb7171280366f8b3ec86eb8" upstream="master"/>
- <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="4a3459a3528b7f11cf09acfa2d2a1fb5142c1c2b" upstream="master"/>
- <project groups="pdk" name="platform/external/libhevc" path="external/libhevc" revision="5d3d1a0a65949b09035cc366429f7f85215c2731" upstream="master"/>
- <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="b8a887c09706633ac22ad6d13c9464b2ee539e77" upstream="master"/>
- <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="94b3caf1fecd5261e6929469924b1e25aaeca0ff" upstream="master"/>
- <project groups="pdk" name="platform/external/liblzf" path="external/liblzf" revision="a88b9629447deabe8697d2f8fd4cc70aa6e1b563" upstream="master"/>
- <project groups="pdk" name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libmojo" path="external/libmojo" revision="8ac9103e05b66812c25348943383f9365d1ce3e0" upstream="master"/>
- <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="a0f640e21e42f5905d760ec3df1dc5203d0d209b" upstream="master"/>
- <project groups="pdk" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
- <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="436dd293ff5503828a1fa33d725a1db87e4e03ed" upstream="master"/>
- <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="6cd19f65ff99f6deb836937c38fb9eedc113c101" upstream="master"/>
- <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="defabfc078080d60369d901d3c7662f05605cb29" upstream="master"/>
- <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="6a48629b7c7fc90326b2f959789828007b3cc184" upstream="master"/>
- <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="a7703b70699299f078a189e19b6915120cded732" upstream="master"/>
- <project groups="pdk" name="platform/external/libpcap" path="external/libpcap" revision="50a06a07f1dd408adf7607b76eaf02d0c254fe22" upstream="master"/>
- <project groups="pdk" name="platform/external/libphonenumber" path="external/libphonenumber" revision="9313c2ce2fb61213e66adcf8ab4893a5d9c48da1" upstream="master"/>
- <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="352e6a8ec05db372ccdfc80cb77de807d23e8432" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="76a0b9f6a9813311ddfd59aaa580339f36a2c510" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="93d99bf31d081198030380a946f4c29e38159b25" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb" path="external/libusb" revision="b81e632687e2380716ced43d28f7c95987959944" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
- <project groups="pdk" name="platform/external/libutf" path="external/libutf" revision="853ef375ba2ce430f5b13b556812b2d83ccc82e1" upstream="master"/>
- <project groups="pdk" name="platform/external/libvncserver" path="external/libvncserver" revision="d099c925eed901cedcb5f1b9079af45a3ca0e6b8" upstream="master"/>
- <project groups="pdk" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
- <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="8585b768902331df85f7d1bbbc11bee4715da97a" upstream="master"/>
- <project groups="pdk" name="platform/external/libvterm" path="external/libvterm" revision="f6cc826fe2eb9fc76fdf922d02ad86aecc5f1b18" upstream="master"/>
- <project groups="pdk,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="2975f91c5afcdc7c150e2db37430d958817270d0" upstream="master"/>
- <project groups="pdk,libyuv" name="platform/external/libyuv" path="external/libyuv" revision="7a6bee2e5623dcc471f49a283144fed44dfb3757" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="c33d1f8c4b98fa6aa24c67d484d31b58c0651933" upstream="master"/>
- <project groups="pdk" name="platform/external/littlemock" path="external/littlemock" revision="105f5b4352a348a3628b081f4906f5dbb8c120f6" upstream="master"/>
- <project groups="pdk" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
- <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="8cdd9f59ffb6bae793e50c7cfdb23e9eac0703c7" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/ltp" path="external/ltp" revision="9686e7bddb36f2d7297456eaf5c9b7d89463abfa" upstream="master"/>
- <project groups="pdk" name="platform/external/lz4" path="external/lz4" revision="de7f627c7958b9847e0d9e6e29fcb566e3bb1dde" upstream="master"/>
- <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="39a0299cfdac41a2631cfdb4bbb637ffa66170fd" upstream="master"/>
- <project groups="pdk" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
- <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="71b85f6e70ac758f735338e8a1681dfe014af2fa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="e855ba79dee7a2d4df11d72752e1079cd5e58f2e" upstream="master"/>
- <project groups="pdk" name="platform/external/messageformat" path="external/messageformat" revision="9e1e4dddc8aa0cae8279281488f8a6bf4f453192" upstream="master"/>
- <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="db19bfbfbdce0f2b86f53d36392e49cb8f1645d6" upstream="master"/>
- <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="bba8f4a328807772fc16027133a9d63e9185fab5" upstream="master"/>
- <project groups="pdk" name="platform/external/mmc-utils" path="external/mmc-utils" revision="6de31b2b8a09108f9b91bc12bee2b792f783dc62" upstream="master"/>
- <project groups="pdk" name="platform/external/mockftpserver" path="external/mockftpserver" revision="777eb7d351810721b2416c4e48fe08e4ce0476f7" upstream="master"/>
- <project groups="pdk" name="platform/external/mockito" path="external/mockito" revision="0211c64d5545015d76acda90d6013df67ec9124a" upstream="master"/>
- <project groups="pdk" name="platform/external/mockwebserver" path="external/mockwebserver" revision="d680f43b995aae01123ee6bc7adb690dafcc47fe" upstream="master"/>
- <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="68d0b5790fff5243aab59ae8108d7e69506ac4c4" upstream="master"/>
- <project groups="pdk" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
- <project groups="pdk" name="platform/external/mtpd" path="external/mtpd" revision="dfc7f34c62ee40f5ce47e0942021f96f62f937f7" upstream="master"/>
- <project groups="pdk" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
- <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="4b114fa241df177ec7fc36132d3bec20726c4f5f" upstream="master"/>
- <project groups="pdk" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
- <project groups="pdk" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
- <project groups="pdk" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
- <project groups="pdk" name="platform/external/neven" path="external/neven" revision="7a1bb8b2c5dfd9703c93a2ea09245091b14a92ea" upstream="master"/>
- <project groups="pdk" name="platform/external/nfacct" path="external/nfacct" revision="3872c41d0bfb0dbe6c37ea5db5cc1e1d7a0d7971" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-pkits" path="external/nist-pkits" revision="e79665e3657171f55a979ca558ebe3c3dbf108d2" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
- <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="60e126f1c096b20d4a3685e1de1147b6595e9012" upstream="master"/>
- <project groups="pdk" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
- <project groups="pdk" name="platform/external/objenesis" path="external/objenesis" revision="30c85e8178b11799cf08ad21339f52eaa787a13e" upstream="master"/>
- <project groups="pdk" name="platform/external/okhttp" path="external/okhttp" revision="b53397b37a05fd50529810c726e7214cdc5b191e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="6acb1f4a6e68f80b1cb0182f3d334dd8607697b5" upstream="master"/>
- <project groups="pdk" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
- <project groups="pdk" name="platform/external/parameter-framework" path="external/parameter-framework" revision="aac080ded4d4d645bee26777f0a419b9a8a07880" upstream="master"/>
- <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="97f96c13a5b0c22e9827279eb0dd38e9c889f244" upstream="master"/>
- <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e4e9d1b6b387072f9071f896993a9cfe5481ab4c" upstream="master"/>
- <project groups="pdk" name="platform/external/piex" path="external/piex" revision="ac5a3090cb5b5c2aaa7e1c68c9a68fc4f5a38c26" upstream="master"/>
- <project groups="pdk" name="platform/external/ppp" path="external/ppp" revision="7e60466a0009f58aa09b60bf6dbb96cacd6cb829" upstream="master"/>
- <project groups="pdk" name="platform/external/proguard" path="external/proguard" revision="af893cdc1242e4cfbeeb10e2323f9a689a825177" upstream="master"/>
- <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="7fca48d8ce97f7ba3ab8eea5c472f1ad3711762f" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="181a615a16fd15caa50a2e6f729456e2c9d42e42" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="9458f8e38d4fe0d58890c5867485dbbf2d538955" upstream="master"/>
- <project groups="pdk" name="platform/external/r8" path="external/r8" revision="30898dc8e86b34b7a06981c6d6c24e3f0fbc7ead" upstream="master"/>
- <project groups="pdk" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
- <project groups="pdk" name="platform/external/replicaisland" path="external/replicaisland" revision="23e53aa67dc788cd2fe0598eaf7c9f20eb93c392" upstream="master"/>
- <project groups="pdk" name="platform/external/rmi4utils" path="external/rmi4utils" revision="40eb2d785d3e367c01fc2a3d53820550e7f66739" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="797e01c269d344b03f6080d46926c91603465949" upstream="master"/>
- <project groups="pdk" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="25fa2dde3aacaeacb2797bcffddce96014f4fcc3" upstream="master"/>
- <project groups="pdk" name="platform/external/rootdev" path="external/rootdev" revision="1dd6771e0f2e7da8736c9b21603817bce0d55ea9" upstream="master"/>
- <project groups="pdk" name="platform/external/safe-iop" path="external/safe-iop" revision="cd76f998688d145235de78ecd5b340d0eac9239d" upstream="master"/>
- <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="a1026771ccb71c69a4b31d726473feaa32ab4e6a" upstream="master"/>
- <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="f815253f7724d207b311309fd8f340b151348b03" upstream="master"/>
- <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="7e29d17754156636a79c60f7ce195039b94d7197" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="a217f56dac15a71326445fa7f6a789ec00b22392" upstream="master"/>
- <project groups="pdk" name="platform/external/shflags" path="external/shflags" revision="c4876e01829b8cf110ee33267bb1bad1f8ebb51d" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="740dcbc14f4bb497082890c1c4a85c0a993120a9" upstream="master"/>
- <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="d0393a27bd6c37f8fcbbb4e687ccf0bd43eb953a" upstream="master"/>
- <project groups="pdk" name="platform/external/slf4j" path="external/slf4j" revision="b4eb5f69f088f53ede0b7ee4a1a3bf2c3ff58418" upstream="master"/>
- <project groups="pdk" name="platform/external/smali" path="external/smali" revision="78cf98bb8c439f99f06f7b609c5c533a9d41de68" upstream="master"/>
- <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="03d1dd1553534e717fdff5f7bed00b67dbb23431" upstream="master"/>
- <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="1163465de6c4b6c1816de74db60b28769cf5ac96" upstream="master"/>
- <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="95ad2973de15846e1f67c5c5c30eae877afb2ca4" upstream="master"/>
- <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a7d909edd14636c8934e1b61cce563ef9d29c477" upstream="master"/>
- <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="9ebe91915ecc1ca31c074c92e4f11b7625801f18" upstream="master"/>
- <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="39a32b46137c57b816e71d73438e4fac69b6b9d6" upstream="master"/>
- <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="393e365802711fb6969858f79d80104399d140c0" upstream="master"/>
- <project groups="pdk" name="platform/external/strace" path="external/strace" revision="222ec16d6073335c8bb5eb6e738ddc2df1c2cceb" upstream="master"/>
- <project groups="pdk" name="platform/external/svox" path="external/svox" revision="7e68d0e9aac1b5d2ad15e92ddaa3bceb27973fcb" upstream="master"/>
- <project groups="pdk" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
- <project groups="pdk" name="platform/external/tcpdump" path="external/tcpdump" revision="1aa1e7ffca235f716b36c0a4588f84e23ea1be38" upstream="master"/>
- <project groups="pdk" name="platform/external/testng" path="external/testng" revision="8f2e8231852f454b5903cf886be55e9f647cdd76" upstream="master"/>
- <project groups="pdk" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="7c703a6b307ae7c3ba69429ed0c71417e507faff" upstream="master"/>
- <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="6ded547e25cd1bbc20891d9c7d4653ff8f65b59c" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="ccc219c40a820afd30ad347c0e3d2bdbdf1df109" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="513377fb55558e0b570d354398467a12204ffb06" upstream="master"/>
- <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="4307f4735e9a4e3189e8d43f7493bb677a4d06ba" upstream="master"/>
- <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="3f4a99df44648fad709708ee68e55bec9afafeab" upstream="master"/>
- <project groups="pdk" name="platform/external/tpm2" path="external/tpm2" revision="00f7bc755f76f483f6a59f917727339e089a9cc4" upstream="master"/>
- <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="75c45ed3b5a684fb5bd3f09d64cd242adcda0752" upstream="master"/>
- <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="680f240bda39c798480bef3bb36c671af1f575c1" upstream="master"/>
- <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="5a8be7ee6337367a1dcf11bdad865e7917519e46" upstream="master"/>
- <project groups="pdk" name="platform/external/v8" path="external/v8" revision="7bde41a362a5746e44e9efc2ae8d1843f39d875e" upstream="master"/>
- <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="84dd75ab14160e18d95f2f3ea6120c03ce8c429c" upstream="master"/>
- <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="0ad090ffa37b9a1e9a0063a4d4b808c6fe4809e2" upstream="master"/>
- <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="2da09a48dc4d5a3c585f897f256c2c6c5fa4eb5a" upstream="master"/>
- <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="86bc48f5ce1c93ae3af07a67a70b79647571516a" upstream="master"/>
- <project groups="pdk" name="platform/external/volley" path="external/volley" revision="3a1232594eb627e9e59b22406816648a55a3f2ae" upstream="master"/>
- <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="4c40acb97e6df4a5895877f81cde4e9c0704a95f" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="e99d2e88295130a1874890b3b118969917de5a84" upstream="master"/>
- <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="3d524127baea097e01517db9ca1362910d016daa" upstream="master"/>
- <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="14c5ecd85f3fd6a703a8bef710690246c8dd42bb" upstream="master"/>
- <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="1187a7bf7b612a8c09b70e65ea52351a1c5c731b" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="1d7192fe0d2f788f8f150899c58b86c5ff10456a" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
- <project groups="pdk" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
- <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="03e7a3eae664d9ee1862b5f152310d17ae5c7428" upstream="master"/>
- <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="30595680d975bf98dd62e3c25d16562ab33c3d4d" upstream="master"/>
- <project groups="pdk" name="platform/external/zopfli" path="external/zopfli" revision="b36f966df9e7767a6b0aeb00fea29af0c57c89be" upstream="master"/>
- <project groups="pdk" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="f402866c6aab58d8f991f1122976714caebf7eee" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="f44ebf5fcba4dc5f7021a3b72a8f26b11ae23db2" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="5950103a67264d36e0c5c65330604916e462714d" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="829ab4b9b5a97eccc3f7662f8211e608a5db6ec0" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="017df777151c838f217f526662a0c4675a576c57" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="15281a01df0a5892d818080f1df669bdb8a319f7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="d2ea93572bd276e4b5b9bd86887603a35f9a0f5b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="b9d30cfae90bd5584a8e7926ec6d938ce323e0fd" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="71cca93f32991989369fef6a7ba1a96d6010e7a3" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="3d53a93c79beb608ca52f7e1ffbf2fc7d9c3722f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="6450225f3eaf865b0838e84c4656f6dd6048d87b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="d4a35a67a35e8dd2d03818e0cafa6e0271879b87" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/bitmap" path="frameworks/opt/bitmap" revision="a0d4e3108663202564a6833b76770075b8e5b767" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="991e0444ed6edb1a77b0feae73c14e2a886cbf0d" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="886d7d1277b82347c30ec5d79ba1576680947bb8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="02ced36ad1e062e79397296ebd1dc760870a4e42" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="c1d5eb2d31fb6a74ed129722754139c759aedbe8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="5348c906911a9ae65b165023e9e4ce45eee05c02" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="92eede13edbf22b501edb9aeb92366f91eab9781" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/inputconnectioncommon" path="frameworks/opt/inputconnectioncommon" revision="3baece9b20fa480da46d860acd7320fd9eee3386" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/inputmethodcommon" path="frameworks/opt/inputmethodcommon" revision="990fcb1a6dbb5d1204cc8ec86e4bc3f691f4aeeb" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="264bef96c82961029702fcf8e12b0fddfa0d09ab" upstream="master"/>
- <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="ff0979256d1a67a62c726d6fe15264c496990605" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="2e09c0ba8a11ee629a85582413598c60cca09e8e" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="75f798a125721ddd046389c052eaf9c6ddf44575" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="c0793686e13dafc2f45b0ad3e079f707938c6534" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="2cce48fde424bd078f024d5ddc7c564ca1161e2f" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="39443c82847983e81fb08422b5cf305153e9e4c7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="e344fd847c154f2d0680bf1089390326d634d847" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="15d297d8ac4664e4a491448d9c15158ee51714f9" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="8901edffd17d9d5cdcb7d09e4f94aa3b3ecc71c5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="684e045dc0efca4d5a8f0ed4b28036444ff9385f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="35975286092f329186f66cf346eb6b0dff3c2e61" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="7bfc4444b48f1f046d50fc799a3bc64fc8e3c7df" upstream="master"/>
- <project name="platform/hardware/akm" path="hardware/akm" revision="7889f98849ad3913586904e00d91b32cc0ceb75b" upstream="master"/>
- <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="1ed4bedf4af755edc61bccb8f468a0df008dcf1f" upstream="master"/>
- <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="5c73d53b0f5ea0e9259c48f40dca3ca9e58dfb3c" upstream="master"/>
- <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="89639347f950e29403fb78513fd6ffb75bf03942" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="218f0d6bc9532d0b707ea325fd96998249fe47bf" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="a644e4f384a7bd2afa4460da3a9f7951e9fa205e" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="9d15c1c031fdf9cd4fa153e76245d7a5f8b82ed8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="feff90bd79e7152d06f4275c30209af2826ae8ba" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="ac747113d4f6739b1462ca7fb40f2091691e209b" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="3db8bb9d44eef64553a88fdc2698ef3b593c49c7" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="6b9b06d89fd0e01037d3138c71886f2c315ae9ee" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="760b9713c84566e6a3a39d114d346d20389f47a8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="8c2ae7ccfd78fb4efaf4c0c61a697f2075584934" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="aed9716b5467e75728f761ac75a4ba5ca3c51ea0" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="7407927b0eda431b7d817cb9d78189f335f509b1" upstream="master"/>
- <project groups="intel_sensors,pdk" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
- <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="6ef70c9040773aa501ee54b54efc15a7ea61b25f" upstream="master"/>
- <project groups="invensense,pdk" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="7de0e9ceae69ada80a6c5a7b4c0c3bbdd83e012a" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="483a68f68a3f7f115f8909d663e93edaf89762f5" upstream="master"/>
- <project groups="marvell_bt,pdk" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
- <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="ba9bce36176b05695bd042acadc4a254ab911872" upstream="master"/>
- <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="6007fe6af3f7eb0c6b5fc3cab3c0f0cf5a7b50fe" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="5e2825785169ae647e80ce48ac814abe2ca57532" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/camera" path="hardware/qcom/camera" revision="383b6cb93b5952c2a87b3ea5ce2be50f006dd395" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="cc379d116231083e1b804fea9b0ef52d9e105ae1" upstream="master"/>
- <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="42ea1de6807fa5885f18cbd6c5fd96f80395fcea" upstream="master"/>
- <project groups="qcom,qcom_gps,pdk" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="45c0574442a01c2f6a9ccb2044b6f30c7ad288e4" upstream="master"/>
- <project groups="qcom,qcom_keymaster,pdk" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="3587a1a811c7baa8736d6cd54b8895370c4bdb58" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="63abe022daf627edac121f5c389d7f660db547ac" upstream="master"/>
- <project groups="qcom_msm8960,pdk" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
- <project groups="qcom_msm8994,pdk" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="60aaa00b2e0d537c0f51631dd88d919fc1baf439" upstream="master"/>
- <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="c552e34d90d0ff2b69660943c2060f17b5d59eb9" upstream="master"/>
- <project groups="qcom_msm8x26,pdk" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="5c60d76743ed98e7082b7f72927c17a7b86e0218" upstream="master"/>
- <project groups="qcom_msm8x27,pdk" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
- <project groups="qcom_msm8x84,pdk" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
- <project groups="qcom_wlan,pdk" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="ec9deb6e65d7c7816083d925255bbaefe16e4778" upstream="master"/>
- <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="78b80ee72d80793766a4ff91f1c11f96553108bc" upstream="master"/>
- <project groups="pdk" name="platform/libcore" path="libcore" revision="6ea6973dc177bb57a4558cb6203b4b27a20a8d1e" upstream="master"/>
- <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="9af782e03d4f2e736a85e2a7d645e68f865c53d4" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="0aa0611f9c6775575da56a1746fef1cf68267b0e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="a13d5ea7ffaa26b6def0928cb62177009e375373" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="ffc5f72f39de7f9bc956ab29d087596d0f55ef70" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calculator" path="packages/apps/Calculator" revision="e1bda28f1545111ba7734577f23e194bf3db3f5f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="2bbf7b8414ebcff2207b08224d8913241a766a5a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="8690a7317dcf64ece731e0f9e5fb2cdfb123b115" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="46d5820744888866cab227b38eaae21b6f93a39a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="dea5466530b3e1941aa83a556dac45490f12a85a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="7562fee50a9db5afa94786f1d3acb1f0452e3ea7" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="41e553f6ec13e860694a2790cea82a4300b6703e" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ContactsCommon" path="packages/apps/ContactsCommon" revision="c59284acd9283f2274fc18fe69ea9d08cf1245d4" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="b89bbe70df270c344123d7ce2bcecf1a84c399f1" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="85b25ee8ce0c5d19b53963c985869100282b55d1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="8e49b42b6fde177fb242da12bb05365ef03362e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1239cd59a0f4dfd0a96e1a83b8871bd2b18358c6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="b7282555b3b99fc9aa98b6c807662fa096c80e3c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="7c359e389457d7cb7cd4f696608355beb3fa13f0" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="ae5a3067f51cee6cfeec73d56815892bb3f6c4de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="5ffe93060777b92f221adbd0ddc67b9479852d80" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="f19c4a10890cafb17ceaf68cda835dc24aad455c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="64b7df195d2bfdcc41579e9ef5f3b49afde18116" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="44c1afdc7fe9f4420933ad0c9fd824931179ca27" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="7c35c64a9d5ca913fb160df63c033000915639f8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="a26fc3fd03f45851807a7f45d70817f6c094d0e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="2a68a11b2c9156f9f9747fe0b974d0baca157706" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="7b2c6ed6a50b10b698f0b0251ac3a9b532432d72" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="75df705a0f4e7f36050ea68fa8695325f2a691d8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="035fa0123d87b48554cbd294ee9681b25eb7049b" upstream="master"/>
- <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="af45ef4f1a786a3f1d23e9319dcb14eff0673868" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="01e429c08e51291315890de9677151a7e0b6ad35" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="0d467d56ce68a1bc26d721a5c3b9a6caf98aadb4" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Phone" path="packages/apps/Phone" revision="79731f02b7009206a01182d2cca15dfc8491da09" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="f962ad993640d79dc1d76494650cf6d3e83ee6de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="d686dc74168ed5324b2388133531f30255659ae6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="077fc59dd26cdecdfe2ea3af614291b103faa7e2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="b17f4ddf6719faef79535c76ea6af84f5009d4a1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="66244a5c528afb29b1a88aa788770063b91c89b2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="1e01c3e1bcc0ed83b3676e1d5c0b75d5ed873391" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="3a2e327741cad7a38cc91626f921af28a6307cc8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="5f67a8eaea9379d7fce53db77e9ed7b47e49f1e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="4db997871e3f4c3f84660815096e5276b47c5c91" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SpeechRecorder" path="packages/apps/SpeechRecorder" revision="51cc8462c082a26810f5d7c5a2648232a77e795c" upstream="master"/>
- <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="528f2dc222b43972fe7a019e7daa4f81c213fad4" upstream="master"/>
- <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="a1c249013e65ec1fc38076cc29830c4367c8cace" upstream="master"/>
- <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="7416628255cd3c95b6ffecd331fbb0add9c1eea9" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="60102ca02f1a93af59cc479f2a80a40a382d668c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="8ba8c509c8408b55083739e6b3cf3db32ca7606d" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="79ccd3543999c1cc8ea211ea54384a9096b693a9" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="f3a394eeb3408415314c4e816ef4638904940a85" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="ded915b9ea8908b1d72426c17003428b82c82d8d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="9648d6bc0a106576927264ab580e1a326fba920a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="a3efe60e6b9e0045eef5f88491bc966868357300" upstream="master"/>
- <project name="platform/packages/apps/WallpaperPicker" path="packages/apps/WallpaperPicker" revision="969934f908ff2ddda77bddbb80f206daf6a24281" upstream="master"/>
- <project name="platform/packages/experimental" path="packages/experimental" revision="e24ee92653e28ddf0020ffb9e5ddc99931117674" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="bde4c9a8dfa85ca71f034c371908358bf61a74f2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="59aefa242169b7a51c2381daee58ff22fd1834ce" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/ApplicationsProvider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="3aef9aef553a126b57fa9d7c271bf82abdb8ca9f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="3fa85d57a81d2cdfd08465d3dcb5e7ad4ad1f7ca" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="8da754fcd166e11363e4d031b0c42f2abe92238d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="8d79e5e0f0673f20aff55fdb6ccb297bdc509387" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="44c11b854e615a007eda9760f9c9d0323c9c73ba" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="ef033b3587853368d947c4d849eb5d6818cc612a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="654f73a379a36e5f4cdb2fc4cdfbc06971bff212" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="133b4fb575d32b7e2e887e2d1d6a9e6877b54440" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="22a5cfb7b166ad972c73d171a078a0932587bd44" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="374df0a9f8c1b92b1bdb7572f30543188c8c7a1c" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="12907529afb603d10bc133e808728cef12e5dad6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="e72ef139782ca896dced7524abe7cfcc9ed35db1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="a9c5d50340fcef49034add6766576e4aab7d1168" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/WebView" path="packages/screensavers/WebView" revision="6e0a80f6faed6191acc8ce1b6c79eada09e9e042" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="5bd17d4644dccb6cd5e23c95490ea925082d42d3" upstream="master"/>
- <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="b296575311b20808849701f4eaec4305dd17cc27" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="dfa0e3116b3ba72b9c2f308d8d11bc6ced6ad23b" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="87a0ebe5a071130fbb5d5117806964f4e8bc1a77" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="bc7f1814b29fcbf0c86e7f135393c9449ae7f344" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="dd18156f656ec28db6dd6a79530978c8ea99c15d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="313c31a2d7ff12d4f78d11458d8b268a5fe97d9c" upstream="master"/>
- <project groups="pdk" name="platform/pdk" path="pdk" revision="708589163e790eb3a7fec09f4832a0f78999bdf3" upstream="master"/>
- <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="bc78d219b148df89a1c1d91b29cae35c1156d696" upstream="master"/>
- <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="f36d67e0b8fa645428c4ebf6f05c2974bc8337d9" upstream="master"/>
- <project clone-depth="1" name="platform/prebuilts/abi-dumps/vndk" path="prebuilts/abi-dumps/vndk" revision="83a0ec4746ab945004a9e71f2253d5fed8a4cc75" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="3a47dbd8cf86afe7f72d48902a342a7894d9570a" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="f537089a258a89539154e8f3932f4c8bd1bdde30" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="5bebe70905a43b398bdb04a678bf6d50a2c4452e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="c052e7853ea000b972d163d1774a44516b8814a6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="1050067936dffa13d6aa30a8c1479444c620ef2d" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="a6937fe75c369ea26e416d5d725a32c9c7bbac3c" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="0c7d72c96f0e9c2b7cd8d4f33875f6424ab937e6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="7985a1e57e906ce50505fe37769773983cb2eb40" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="b33aaa2ad816c217c56d9226f28b4ca497957c2f" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="dd7afac0149e22ef324a440046d7d7e5411a2a63" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="ec5aa66aaa4964c27564d0ec84dc1f18a2d72b7e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="c3b7a175640fc59711614c0ad5269a037e06fe7a" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f4002189c0a7ac2e9e2c562cb5d598daba5f3e30" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="89aa77dc369931868dce6924b7997e7e5f0fefe7" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="0a70ca16caa61b4591c844df9e3c70f53c88fbd9" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="ed4f6b503e1d7f2bc03d87b90084e12e33f8be4f" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="9ee4f51e97bc4bc8f51b06912767018be4d65853" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="d3566f4f19b660d98ff237825ed775289c102420" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="a332df8dadd78866c2a57f2c7348d499952939c2" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8e874d5830214083475ed5a8576fef24f58bae1c" upstream="master"/>
- <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="4a696dd19df2fee0ce24f5bdbd8ae0e03049f97b" upstream="master"/>
- <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="172e21a7c836e6086c6faae7b080a38c779597ac" upstream="master"/>
- <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="3a0d506bad18e41d9cbffd196c24d70d0c40d0ab" upstream="master"/>
- <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="3377874f67bcc7d200408ceb8b02169c4c3b201d" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="ba09d77a59458527e92a4ee12bfdf0d7ac4ae6e2" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="fa0835a2da3bb4ce39a2a07f7749553e99ba170c" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/libs/libedit" path="prebuilts/libs/libedit" revision="d32685dba4011664b590b94ad156bc734c2c9bb5" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="e1ca35066d5b3ef63b188a3ffe8cb058feb9b83e" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="1ecf5205db0526c3afb006cc43ddfc805b3ad18c" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="2b88f8ee10044fe4b77a35c9587759d992561af2" upstream="master"/>
- <project clone-depth="1" groups="darwin,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/darwin-x86/2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0c5958b1636c47ed7c284f859c8e805fd06a0e63" upstream="master"/>
- <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="7bd52e8c08951d11ae4437e407c62566a1c3416d" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="263e5899e841844212c8d1b8e04fc0e52eff9810" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="c2d941b862e53bf0050a7cc18670d9340d705ecf" upstream="master"/>
- <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="3aca8cce121d427bc5cba6c355bfbfcd453a9395" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="7fcb50b6f76f57eaf5fecbb6b5a0cafcfdf95500" upstream="master"/>
- <project groups="pdk" name="platform/system/bt" path="system/bt" revision="014890b74878022db7d23be47db179ba06e01856" upstream="master"/>
- <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="e312bd5044fc07e85b8b0c21b8f21a9329ce9636" upstream="master"/>
- <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="483bd8dcfd508095113cfde82e8b79ce6e29759f" upstream="master"/>
- <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="796315a7e25212d6dc3a998405e25bc877d57cc8" upstream="master"/>
- <project groups="pdk" name="platform/system/core" path="system/core" revision="3e0b59461959cfc683fff13a42829780843b3601" upstream="master"/>
- <project groups="pdk" name="platform/system/extras" path="system/extras" revision="880d4e8574fefa3978b32eaa4d7d38abb187e7b5" upstream="master"/>
- <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="3d78edca770a570a8c4f7cf2cdc40dadcd5facd0" upstream="master"/>
- <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="13e5d8a98e919e5638f681f38550eddcaf890937" upstream="master"/>
- <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="6f4fbe1af7864aafa8236ca8e65d66e6a8974b44" upstream="master"/>
- <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="fc935cd780473b8cdfeeb28aab1b13f6b6572955" upstream="master"/>
- <project name="platform/system/libfmq" path="system/libfmq" revision="e8f31ca2381c558e9b389454c788674f1c78e59d" upstream="master"/>
- <project name="platform/system/libhidl" path="system/libhidl" revision="2a2678e402e440068bf24d012e294d65c9c0c8b9" upstream="master"/>
- <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="14c6e409a4b29f77e5ed2f24e62dc9d3366fc61a" upstream="master"/>
- <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="ea5d3f72aa01de436f8e1e5bcdd7748d255285ad" upstream="master"/>
- <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="488e16a67311194f0fb9aa4a33219af170e6316b" upstream="master"/>
- <project groups="pdk" name="platform/system/media" path="system/media" revision="9c351fa5f388fc22768549ccc512a2633263d183" upstream="master"/>
- <project groups="pdk" name="platform/system/netd" path="system/netd" revision="cf929f7cd853b68931af5ad94b984feb01917a8e" upstream="master"/>
- <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="33a1c932e0fcdb335a2d34a692307d15e1336c9d" upstream="master"/>
- <project name="platform/system/nvram" path="system/nvram" revision="48087181f977c4f75c81705361f455f5ee9c7c37" upstream="master"/>
- <project groups="pdk" name="platform/system/security" path="system/security" revision="975e1aae69f9bcdb35de5b2b8f466514f5fe4ba2" upstream="master"/>
- <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="21b4a9259052c3f311923b2d79c6c2dd79217732" upstream="master"/>
- <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="7b4b9e592d6c9010be93d018b8a7b594bf2c1ccf" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/aidl" path="system/tools/aidl" revision="babca26b0faa5e41ced0b39cb135fb181a81fa1a" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="a881c08273bc1fa518d0355f05c1827bffa69a52" upstream="master"/>
- <project name="platform/system/tpm" path="system/tpm" revision="3e1217d9b8b9d0bd549f202e5f1a528374872b40" upstream="master"/>
- <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="663ff4b30b9f629a130ef6d357d462b897d4071e" upstream="master"/>
- <project groups="pdk" name="platform/system/vold" path="system/vold" revision="3f8fa0c2155a14bab73d3d58362f5511de1b3277" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="f2b98353f7db3102d6392e8f9648b22e368bf221" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="30d457ce6613d587901379844b9d0dfb37a67a7b" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="0a064803e1ebbfd5e587e9baf677d458a4e3bbd8" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="52d33ddc83fc9bc54c9952e74143807bb5bba410" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="6af0bde5881d2ab0366bf9479f151e5f3bbc32b6" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="94d3b39f884f4513b8664c5d3cb911dd145de1f2" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="a0a4488258c74bb0c61a71b3c4c4aacfd4ed210d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="4e5056e0f537fb17e40ad3567c52a245ce8cc33d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="04538ffdca38754da367d51ed825999727654654" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="3c8938ec3c75b4b6a4649a22d3478822ac2dedd7" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="b2b66733c0b5717736d96945e02ee2926583cc5b" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="843d09e2fcd06d6486515f39e2e3eb3d1788846d" upstream="master"/>
- <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="70067d87eb7b1cf6eb84a5c3d476225898177eba" upstream="master"/>
- <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="bd3466bb3119802994f2d149bab648af567335a2" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="53720799c7f266384c3d2cb032082a94f0730cae" upstream="master"/>
- <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="4c4e78c4d9b52a1a5c5ed11c39ab36d258037a2c" upstream="master"/>
- <project groups="pdk" name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="28845c9a133d54f1160d834cda49186a3683ec86" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="ae0ae1f417d3a0aea8ae0478e625ec5a69331ba0" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="520eaa2ec95619705f8574c1b7e47e4fea28b654" upstream="master"/>
- <project name="toolchain/binutils" revision="e574f15757731e482584f3077979082740ae5a9c" upstream="master"/>
-
- <repo-hooks enabled-list="pre-upload" in-project="platform/tools/repohooks"/>
-</manifest>
diff --git a/tests/2017-07-27/art.tar.gz.sha1 b/tests/2017-07-27/art.tar.gz.sha1
deleted file mode 100644
index 63d4ca7..0000000
--- a/tests/2017-07-27/art.tar.gz.sha1
+++ /dev/null
@@ -1 +0,0 @@
-4cdd93fdbb53787835acbccac57ebb9727127840
\ No newline at end of file
diff --git a/tests/2017-10-04/aosp_master_manifest.xml b/tests/2017-10-04/aosp_master_manifest.xml
new file mode 100644
index 0000000..78ae521
--- /dev/null
+++ b/tests/2017-10-04/aosp_master_manifest.xml
@@ -0,0 +1,612 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<manifest>
+ <remote fetch=".." name="aosp" review="https://android-review.googlesource.com/"/>
+
+ <default remote="aosp" revision="master" sync-j="4"/>
+
+ <project groups="device,fugu,broadcom_pdk" name="device/asus/fugu" revision="3c9c11746af0f6d8f3abf30d3f32c9b0f3a342fe" upstream="master"/>
+ <project clone-depth="1" groups="device,fugu,broadcom_pdk" name="device/asus/fugu-kernel" revision="6c50d39cf6e1dabdfc5ba6ce22973b96650ae0b5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="device/common" revision="1401af3a0c8e9cf74f70bbdcae9299be30866563" upstream="master"/>
+ <project groups="pdk" name="device/generic/arm64" revision="392eec3cb4c64721cd5b76fa36535954b5d45309" upstream="master"/>
+ <project groups="pdk" name="device/generic/armv7-a-neon" revision="9e96e041bf3c9d5b57b11f921c6339e076478a7a" upstream="master"/>
+ <project groups="pdk" name="device/generic/car" revision="c4d08a9e781e9bc69b861428765e87f6cbb696ac" upstream="master"/>
+ <project groups="pdk" name="device/generic/common" revision="441c018a14a4b29d338bd62e01a0c014571ca241" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish" revision="ddbb24fd9ccf9978264a656cf92c193597b8df6e" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish-opengl" revision="9b2d1c3cee91b7ce39e22c47b58843037ebb78fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="1aba9d054f2e5e906000fe69eff8d168e99e74fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="258706fc0ddcf2c9be48967f4766ec90efb736a5" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-mips" revision="544e69736cff911c286a5d1d300dac228e23a73f" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-mips64" revision="b1c36d0847fe6366527efd38fdb29d757ea887ee" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-x86" revision="65d59e2be2cfd713513a05d80a0f75794ab60579" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="b62205d75073783e171fbcd5f675e25e57833479" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips" revision="bf27f9bcb56e483310507f78f0a4b93d3f5499c5" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips64" revision="34300f7753b7a9fa2f7ba16bdc1f1fb8625dd4e4" upstream="master"/>
+ <project name="device/generic/qemu" revision="97ef4f962aec451b00bfe562c1cb67471c4563d9" upstream="master"/>
+ <project groups="device,pdk" name="device/generic/uml" revision="f71ea7d194988fd6a64e071918f6e00e8db9ff0c" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86" revision="645e6e711b32f94ecbd9b1cc77a51559dfce5ebe" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="master"/>
+ <project groups="device" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
+ <project groups="device" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
+ <project groups="device,fugu,broadcom_pdk,generic_fs" name="device/google/atv" revision="a14f6c4a89589a7cc6919702f9f3fd3140cc273b" upstream="master"/>
+ <project groups="device" name="device/google/contexthub" revision="b6f95b69331caa8356ba3e1e9d8e77cb0d43c17b" upstream="master"/>
+ <project groups="device,dragon" name="device/google/dragon" revision="8a0490365df0ab52123e7e2ff99426b39c1df151" upstream="master"/>
+ <project clone-depth="1" groups="device,dragon" name="device/google/dragon-kernel" revision="01a873b040f63d8d030b2ec34338bc86aadd15b2" upstream="master"/>
+ <project groups="device,marlin" name="device/google/marlin" revision="44063c647bdd327ec5213f9c86b1cd28e198c1dc" upstream="master"/>
+ <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="8d4b71409708a68a7b1aa9614fecaf17a3e8749f" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="device/google/vrservices" revision="957cfc2a4e2244a83ddfaf6ba2da74aee24f0767" upstream="master"/>
+ <project groups="device,angler,broadcom_pdk" name="device/huawei/angler" revision="8c68626c01750f93ac8412de79dcf1e396e9af5c" upstream="master"/>
+ <project clone-depth="1" groups="device,angler,broadcom_pdk" name="device/huawei/angler-kernel" revision="5263f25b197ee09005570da6363b766281969c22" upstream="master"/>
+ <project groups="device,bullhead" name="device/lge/bullhead" revision="f91eab2f09279fb6159686b566563b9a4a8899f1" upstream="master"/>
+ <project clone-depth="1" groups="device,bullhead" name="device/lge/bullhead-kernel" revision="1d824f51ffa8950d7695829d849da183233d71e3" upstream="master"/>
+ <project name="device/linaro/bootloader/OpenPlatformPkg" revision="ca8a8eebc29ebbcc65edc8f3b4533867cbed9205" upstream="master"/>
+ <project name="device/linaro/bootloader/arm-trusted-firmware" revision="179eae6bcbfe21200b3dec42e0b56e5e6faf3272" upstream="master"/>
+ <project name="device/linaro/bootloader/edk2" revision="99d893a486546aa62d4088a16e86617ed3c74897" upstream="master"/>
+ <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="b266cd2109ae0bae7ab6aead0da8dcc74ce82b08" upstream="master"/>
+ <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="d194dc591ad93e25234e57acec4fe0dc6b0117a8" upstream="master"/>
+ <project groups="pdk" name="device/sample" revision="12cb28b2ab78a03feec243ed1f7d528b1aa6c753" upstream="master"/>
+ <project groups="vts,pdk" name="kernel/configs" revision="649be155f9e3dde06b379710074eeb9b80960afe" upstream="master"/>
+ <project name="kernel/tests" revision="3e8e23f0133d3b6071cb5b7f224a9361837e6f61" upstream="master"/>
+ <project groups="pdk" name="platform/art" path="art" revision="bfcd0d3da60d38bd072d898fa2db4d30307d540d" upstream="master"/>
+ <project groups="pdk" name="platform/bionic" path="bionic" revision="3e8584d4a7d617289e8a954711ba895415d781c4" upstream="master"/>
+ <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="2cedab7af95e1065cce1633de1b3acd5a40928f7" upstream="master"/>
+ <project groups="pdk" name="platform/build" path="build/make" revision="b33250278bd79f62d251c1339447f21d08fd7e81" upstream="master">
+ <copyfile dest="Makefile" src="core/root.mk"/>
+ <linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
+ <linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
+ <linkfile dest="build/core" src="core"/>
+ <linkfile dest="build/envsetup.sh" src="envsetup.sh"/>
+ <linkfile dest="build/target" src="target"/>
+ <linkfile dest="build/tools" src="tools"/>
+ </project>
+ <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="ac45bd1ea824a274d9347f3d01671d959065ac15" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="d120bfe21325e56229c01e07d0ac5aef7c94c778" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="c144b8601430e5de53d832dff0c4e2bbf1d2ff4c" upstream="master">
+ <linkfile dest="Android.bp" src="root.bp"/>
+ <linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
+ </project>
+ <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="706f8a00a26d09202f025023b07cdd719c285287" upstream="master"/>
+ <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="4a8c6eb8af9ec00a810c4df8f14095e02ad9f1b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="bc682afc86bfd43d92a9d01c6a26a7aecf9053bd" upstream="master"/>
+ <project name="platform/developers/build" path="developers/build" revision="dac7653ebb52f2de72352a3ba8e91b7d70837ee5" upstream="master"/>
+ <project name="platform/developers/demos" path="developers/demos" revision="baed7559c8272ae802aa581148851a7f81307d47" upstream="master"/>
+ <project name="platform/developers/samples/android" path="developers/samples/android" revision="0f2a748e3111611b65421dc42840def7ae2797de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="0e82eea2d4829d277566ae42182121d631f8d429" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="4ede9c52630a6da877e7ca9c1c3801a34ddb7179" upstream="master"/>
+ <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="5691a8ecaba367d04b2c2a13ec1e9e05f4f17b7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="c1b94b10a13f22e951c429e056b151d340238e27" upstream="master"/>
+ <project groups="pdk" name="platform/external/aac" path="external/aac" revision="32b8bd3dc952952a097fbaa87a626d15445f15c7" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="5453ac991183dc8dc856e8beced059edab94acaf" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="d972c9eaf4e7ccd0f79e779fe4621538cc9c9e90" upstream="master"/>
+ <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e477c862031613ca7bd05971bce05405638fb248" upstream="master"/>
+ <project groups="pdk" name="platform/external/androidplot" path="external/androidplot" revision="c66727ebf001607cee14521c35bc852b55fd9845" upstream="master"/>
+ <project groups="pdk" name="platform/external/ant-glob" path="external/ant-glob" revision="a73228afa9540b9c5518d360c5ae630bb634f975" upstream="master"/>
+ <project groups="pdk" name="platform/external/antlr" path="external/antlr" revision="dd5fa6d48b827c5d98b625adbc209f4a05567534" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-commons-math" path="external/apache-commons-math" revision="18f62fca59d387e3c1ccd8f80087d9c9af40bcc8" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="eb488e7ce61f67cfb0cec2b2f99e2769ba640199" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="6d301174f0502912ee7df6db4bc5c1f5cf4ee230" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-xml" path="external/apache-xml" revision="31d7642eb8f37a9166db7f1c9e313ab651bdb8ba" upstream="master"/>
+ <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="a764fc9e8810be26a51add8a79502e411e3ee1ee" upstream="master"/>
+ <project groups="vendor" name="platform/external/arm-neon-tests" path="external/arm-neon-tests" revision="104e2a662ec8443e9a7603b22efbb3b86c1e7094" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="acea5c1e9dfda8ab69a093fa82c61ef12f7688b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/avb" path="external/avb" revision="34ec123c606a0beed5cb29b49d748594a3242eb1" upstream="master"/>
+ <project groups="pdk" name="platform/external/bison" path="external/bison" revision="7467d52af437dd3dfea237a6865ab84bf258dee0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
+ <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="c9df3a1ff1d0cddebf2fc32ad8a03a429c0e834c" upstream="master"/>
+ <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="a7f9095ead5e2af9612c8cae35f6e11a2b8e1d77" upstream="master"/>
+ <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="018ee547112ca1327af9fbaa6c21b5e6ac063357" upstream="master"/>
+ <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="bfef6ef1022fe24a80387d34cebf16453451f1cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="a0df5d74ad301ea4dd1ec4214c32d9fd9ea52de8" upstream="master"/>
+ <project name="platform/external/c-ares" path="external/c-ares" revision="9f1b2827cb88c58a80c470a4bddb2485677ec57f" upstream="master"/>
+ <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="fc57a58a3420e4f3e2ab86233ef932efa266ec1e" upstream="master"/>
+ <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="08f39d72ed0f0c17308637a60018207829fed8e0" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="8c47eebd81c996f17198edb2fa504c04d48d567e" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="88bb68148bd0510a1564d673421f051011b4240c" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="955f673b041b96ffc383190797c3613ac8dba844" upstream="master"/>
+ <project groups="pdk" name="platform/external/clang" path="external/clang" revision="bbe7bb92eea6c3062b216be8d1d3fac14a62b2fa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
+ <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="1a323e5268f1a0c647db8e1a96c486f9aeecc1dd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="222a789123e327fb769ac10a22d5982648fc05f8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/crcalc" path="external/crcalc" revision="533bb2355d259f67743727a22a1ab974d3ca4524" upstream="master"/>
+ <project name="platform/external/cros/system_api" path="external/cros/system_api" revision="474f439bf34e678bf3b78e2362bc85db9174b882" upstream="master"/>
+ <project groups="pdk" name="platform/external/curl" path="external/curl" revision="98b0d14797cc42e32d18b289fbdc47dda1eaaeff" upstream="master"/>
+ <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="30909f76ef2849d6e048344b5f57588139acb181" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="3a1de9094d072324ef2c16a21c1893b881c2a8e7" upstream="master"/>
+ <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="14905bc6836b805fd3316e11368d7aad2907ecbb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/dexmaker" path="external/dexmaker" revision="a494e0736c1e97daf2e9d1df982efdb3bb8adca0" upstream="master"/>
+ <project name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="54d1fc2d574d21f788abb64b10c9a6352eba0b65" upstream="master"/>
+ <project groups="pdk" name="platform/external/dlmalloc" path="external/dlmalloc" revision="6661f3ca66b55d8f5a57b96fec97efaf8f3897a5" upstream="master"/>
+ <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="1ab71199fe8010a37492d46e324f171ce577e54d" upstream="master"/>
+ <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="d37f567618c3f5266d82b971a505f5a214a03f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="e15c52f95e09391629d4046a1ceb296ae29710cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/donuts" path="external/donuts" revision="005389fb31a67841b5de42f0d25fbfab843e208c" upstream="master"/>
+ <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="f2936dc85a5f92d4dcdfa7b46066c9cd64086720" upstream="master"/>
+ <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="4b54b818477fb0650dc563cf9196578816c34597" upstream="master"/>
+ <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="5ef7dc3be02aedf00fc3cc3f59379d598e5c8817" upstream="master"/>
+ <project groups="pdk" name="platform/external/drrickorang" path="external/drrickorang" revision="8ea137d1086e621188f70ffac34a6ba8924af2c6" upstream="master"/>
+ <project name="platform/external/dtc" path="external/dtc" revision="bea7af187e5d183b2c26ecc3366b1162c9f43060" upstream="master"/>
+ <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="944c4ea526024825eb874aa9a39cb11a6d4fd84b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-basebuilder" path="external/eclipse-basebuilder" revision="076f46888ed346775b8efc564d7694063ef5eea7" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
+ <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="a29a294104713629da49e50e1858a47b19ae97fb" upstream="master"/>
+ <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="86dd133095bb28f987e07319f22fa80fadf7281e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
+ <project groups="pdk" name="platform/external/error_prone" path="external/error_prone" revision="416b18dffadb4298024e93d2ede43d409f06ab2d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/expat" path="external/expat" revision="1071d2dbae1310e7ffcf1f6dbaf096753e0de934" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
+ <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="27a6ad377c141f95ac208a0302a1a50cabeeff3c" upstream="master"/>
+ <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="3a719a81a9d31e1cadf5d68ac94f5bd9f01e41c3" upstream="master"/>
+ <project groups="pdk" name="platform/external/fec" path="external/fec" revision="040b198ed24f5b67eaa6415459c05d68453b19f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fio" path="external/fio" revision="e3c205cb93b9cc720589913df3b9150b1fb6e9fe" upstream="master"/>
+ <project groups="pdk" name="platform/external/flac" path="external/flac" revision="a44d56a9c4ad0093a1dca3e3be7ddb1905da2648" upstream="master"/>
+ <project groups="pdk" name="platform/external/flatbuffers" path="external/flatbuffers" revision="83d6225e9b642ea069023e45a943d3e7f916fb62" upstream="master"/>
+ <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="5dd1ef030977a657056a0a26a691f97d7878ea80" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
+ <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="44d6b9bdc6cb90d7b0fa275dcf2be8631312ca9c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="4103a4ab7d45b439b4f7297a2129a1ca45ec91dd" upstream="master"/>
+ <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="bcfadfee0f9d74b3ba93771948b32440a63e57d2" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="db6d1840bcd6c13cc41456835127d6d7d1b0694c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
+ <project groups="pdk" name="platform/external/golang-protobuf" path="external/golang-protobuf" revision="c42093045dafe0406269b36c2e35b3acd7da63ae" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="1fa9c1ac24825098c622aec489155faf16a7a995" upstream="master"/>
+ <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="4125ccd15f21dbae3d521d0298ce90f1fbc29bdb" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="0062a10458d4c357f3082d66bcb129d11913aaae" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/coming-soon" path="external/google-fonts/coming-soon" revision="2c5cb418c690815545bbb0316eae5fd33b9fc859" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/cutive-mono" path="external/google-fonts/cutive-mono" revision="bce2136662854076023066602526ba299e6556b2" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-fonts/dancing-script" path="external/google-fonts/dancing-script" revision="7b6623bd54cee3e48ae8a4f477f616366643cc78" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="c731915e80d9e2ccb755b97e7fdd280bbea07f70" upstream="master"/>
+ <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="dd43b9998e9a44a579a7aba6c1309407d1a5ed95" upstream="master"/>
+ <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="8c834de12a855fee178f037a36705e72fe981c67" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/guava" path="external/guava" revision="5d824723beff81b246b327386fdb458decfd2af5" upstream="master"/>
+ <project groups="pdk" name="platform/external/guice" path="external/guice" revision="2f4c6dfce39d38e64a6e4993a808270e16d7dc1b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hamcrest" path="external/hamcrest" revision="2c2a845e1e8fdda704e4f2ccaa335d69d043ebf3" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="ea6cd46047ad211495e291edf75c4a9ee585639b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="ff853262e0f613e0ba2f677ae8b1f155544bb2ed" upstream="master"/>
+ <project groups="pdk" name="platform/external/icu" path="external/icu" revision="a6a68cfddd6e6af7bc4c6242ae596d7cb0f16936" upstream="master"/>
+ <project groups="pdk" name="platform/external/ims" path="external/ims" revision="12c79bb691c753c069facd0097293776bd7b56cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="842c7f0c1a62af00b79750de5b207c2782cbcb6a" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="16477a409310e8daa3ec5c8ecaa7a2f2d471fb93" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iptables" path="external/iptables" revision="8ae1dffe73609570ce73ab5430111a3d47400fb8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iputils" path="external/iputils" revision="2857b8009e1dfc751ef0659c9ba7358a89f83c34" upstream="master"/>
+ <project name="platform/external/iw" path="external/iw" revision="63d8bad2a5a8a9b443595762233692c5f6a6d36b" upstream="master"/>
+ <project name="platform/external/jacoco" path="external/jacoco" revision="9ef5ef62baa610d324b392e06bac956b383e870b" upstream="master"/>
+ <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="2acaac5c909fffeac65f3de54134828d7ec2140f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javasqlite" path="external/javasqlite" revision="16ac73c020e99ce6ca0899915cbfb35858ce6b16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="501341b4efff9c378ac4003899dd064586231550" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jdiff" path="external/jdiff" revision="915f756d47a2d2e5b1b5249ef1a05ae83d4c0ff1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="033b6fda4a854849db30955fd084158f6ce16c38" upstream="master"/>
+ <project groups="tradefed,pdk-fs" name="platform/external/jline" path="external/jline" revision="74812032f8d8eddbef387f18c96de9e5c38b8fdb" upstream="master"/>
+ <project groups="pdk" name="platform/external/jmdns" path="external/jmdns" revision="0c71647deb7f7835c473fd3dfb45943083e47794" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsilver" path="external/jsilver" revision="b9b84920ba47ddf7f15baa01c56b28e3d3f951ea" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="228d04d8c2b1c918c702a8132eaf2048aa24ff5f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jsoncpp" path="external/jsoncpp" revision="2aed88e521abb2b4e13966f73df8e753ac96f112" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/jsr305" path="external/jsr305" revision="f162f4b5d952208e4b6e0a7b2e1bf01058e429b4" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="d15be3f228885ce6ed2098ff2dcbf6c1085d83ba" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/junit" path="external/junit" revision="18fb5125096c703c1b2b83b79076a68dc6f1d743" upstream="master"/>
+ <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="3422818d91dfc550fe93355f6345c489d962c8f8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/kernel-headers" path="external/kernel-headers" revision="8357d9a3fa7a6ae0f7eda1bcd3ed69e46d2ae945" upstream="master"/>
+ <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="4082ee0d1ad5ce92c5ea6fdc5ca08e89cdd9801d" upstream="master"/>
+ <project groups="pdk" name="platform/external/kotlinc" path="external/kotlinc" revision="a69f6332d6fb99610d163b103338ca5c2e547805" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ksoap2" path="external/ksoap2" revision="9fdc4a6bb2b882bd1d6c822d2ad0c66585d66ba9" upstream="master"/>
+ <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="78002919cad58915616b635be1057a2324fbfd63" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="2c4cc2cc8dcd77f5f72db5c5c36db808c781dfca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="548b90b26b43f5766297e4395da5bc9819a096ab" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="d05a95e0607023d576ee17f3e7a2952174e33d34" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
+ <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="46f0186dae6932d059428e4919a154dd5722d4b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e2607d54fdb00903023e44a65220357ac66ffa30" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="8eacdf6145fd6b8d32ab431f867b08cf3e17e346" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="8204da4a163dd16bbbf051d9103d89b4ecc0c6d7" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="bb0e188762f569942766f8f25c9d38448c48cf9b" upstream="master"/>
+ <project name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="6e3b2d3dcc906a64d84ec2567de89b204d4a0c7e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="486358728120226bf5b48cc1ec7e14744bdaff33" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
+ <project groups="pdk" name="platform/external/libese" path="external/libese" revision="ed8aa2854c115ab49c0412135fe53326c1c2a621" upstream="master"/>
+ <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="707de56c3cbb0fcd33ec955c52a0fb1fdfacdab3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libexif" path="external/libexif" revision="60e63383329bdf3018696af6c9a1914e4ff0a920" upstream="master"/>
+ <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="95bc71811a7900d19723efa2dfc65eb7fc49c6d3" upstream="master"/>
+ <project groups="pdk,pdk-fs" name="platform/external/libhevc" path="external/libhevc" revision="36ff7b64f0c45d49ebe4f02828198c8ce4c1fcca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="85c8e7e73d9944b6a9603d03cc9a304eb09b4f68" upstream="master"/>
+ <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="14e7308c1b1a04f6aa38a6fde0d8c3331a2ad050" upstream="master"/>
+ <project groups="pdk" name="platform/external/liblzf" path="external/liblzf" revision="a88b9629447deabe8697d2f8fd4cc70aa6e1b563" upstream="master"/>
+ <project name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
+ <project name="platform/external/libmojo" path="external/libmojo" revision="d84255cc8594be661090ce2535f17a44f80f9916" upstream="master"/>
+ <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="46fd80678f5cd545e30daab588e88bc91a43ad19" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
+ <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="9e09f14b95885b73c72533a32b4ec86f84a36428" upstream="master"/>
+ <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="1c3e0db7d701d8bed90e9a65c0d581552912f8ea" upstream="master"/>
+ <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="ed2f4fe16617ec81b4cd906e681051ff0ae9d3df" upstream="master"/>
+ <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="5bab317e01c15cdccde1ac550aac701f436518a6" upstream="master"/>
+ <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="aecd1e10da5835a2714ba212283d04549b5543c2" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/libpcap" path="external/libpcap" revision="7b7f0b469ad512b9b5c759344eb0663e7c2eb191" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libphonenumber" path="external/libphonenumber" revision="6b5ff49a91b66b137b210e4869e980d083683f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="772123003e7fb8268251b418f559f71d8d4c202c" upstream="master"/>
+ <project groups="pdk" name="platform/external/libtextclassifier" path="external/libtextclassifier" revision="5e5fa7f6ed116972ebccc123c2e49427a882f4c5" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="dfc348fb2bf782fa558e4aa67298305743a63386" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="328ecd4d5f69480e18eb872759a41b7ec7217283" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb" path="external/libusb" revision="a439e228525c22a7a38ad26abb3e6d841612f7ac" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvncserver" path="external/libvncserver" revision="ed7c226e0c0c22704da70c2cfe85d8a0043a3ca0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
+ <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="811c563cd84877f5cab826756d977be33789c96e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvterm" path="external/libvterm" revision="a70e1c33cb5e1f298de2affa000950123656c4f6" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="6512e6efc03fa3bc9a1d708ae042fc33d0cab85c" upstream="master"/>
+ <project groups="libyuv,pdk-cw-fs,pdk-fs" name="platform/external/libyuv" path="external/libyuv" revision="018f68e1c2c6a2a7e1d8bdd33c4df444d4a8e552" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="739c390a918655fcfe689e8c1f0737a9f117038d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/littlemock" path="external/littlemock" revision="4dd43c74801149ded3e18eaba7d43ff6dfa192c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
+ <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="dc848d20803a93ae04e836185fc82b3e38ea0c3b" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/ltp" path="external/ltp" revision="36ef68ae9f9386cb99540726a8d73aaeb64501da" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/lz4" path="external/lz4" revision="d563c459a3290de6e72a05769bb34b6cc87e67a3" upstream="master"/>
+ <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="45d1ce03842801b212647d177d9a6c21726b80af" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
+ <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="37e2a6912ab36679883d241375cdd774372f6ebb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="2ab56bb4804d4afc99ba6845978c8720068a5aa2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/messageformat" path="external/messageformat" revision="7941896999a8a623683b888fd39095f32a7f49b6" upstream="master"/>
+ <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="2acbec5a9a8b8c3c9d0eee268af7121e31d0cb63" upstream="master"/>
+ <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="5677920e65b7b1504aa355bece165f1d67c05a1e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mmc-utils" path="external/mmc-utils" revision="f105db5bd1934f0c3e5f74bbc9a5aaeac7a6bf2b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/mockftpserver" path="external/mockftpserver" revision="a98e55fca4d6aa55549f8c2c80034f2d04118cf6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockito" path="external/mockito" revision="ddc7186be0a984376dccb13ab3850787abe8e821" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockwebserver" path="external/mockwebserver" revision="2440623105409d48ec0a3717bb6f3da711a0f15d" upstream="master"/>
+ <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="3df5466891f819567a709d03f08ac340bd678c48" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mtpd" path="external/mtpd" revision="cf7afdb28ea47ebe8a6b298a03cf89ba06ca333d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
+ <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="dd38963ae7d67e64366ad8345a6ce072854e889d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/neven" path="external/neven" revision="f03656c6632b57b4c52705847a7bcc96437e2ac9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nfacct" path="external/nfacct" revision="5df745ccb4ef5356a786bf63e075efd0ccaad333" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-pkits" path="external/nist-pkits" revision="fe530ae2c3d88eb5326151387028507b4949d751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
+ <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="c1172c51af9734ce03c0495c3a0a658590f51487" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/objenesis" path="external/objenesis" revision="fa27358374a5375586ac703a514860563323d94d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/okhttp" path="external/okhttp" revision="9ac02268c482b7920263e6f04ccc67d412f66b84" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="507669d9a3c8adb2b415488783efe10bf9a6b3a3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs" name="platform/external/parameter-framework" path="external/parameter-framework" revision="3b04336f88873ec4b63717035c7a30d76da89a7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="2ea2c73314f3518103195cf9250893f9e9b7dc4d" upstream="master"/>
+ <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e56ff935bcb3a395a841c069ef98c0077376d8b3" upstream="master"/>
+ <project groups="pdk" name="platform/external/perfetto" path="external/perfetto" revision="e0ccef982290b8353dcb9199a48a90b67bc51d8c" upstream="master"/>
+ <project groups="pdk" name="platform/external/piex" path="external/piex" revision="1ee57811ecdc88d3ed7b36f0c2b72dfcc86c8fd6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ppp" path="external/ppp" revision="90da8c8f15db2c82aece6e4085aaf9c116d481f2" upstream="master"/>
+ <project groups="pdk" name="platform/external/proguard" path="external/proguard" revision="af893cdc1242e4cfbeeb10e2323f9a689a825177" upstream="master"/>
+ <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="78b40ce73114edca9b97f4b8eb9cda85ffe2d24d" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="e41d4ced092815949ff47e5fcc80c367707426db" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="600f716d51b9501373f63e6081917289830754f2" upstream="master"/>
+ <project groups="pdk" name="platform/external/r8" path="external/r8" revision="223150d4ddd720205b644613541eefea2158a05e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/replicaisland" path="external/replicaisland" revision="7d9b8c6fd062bc37ee2265010eed37786b76a324" upstream="master"/>
+ <project name="platform/external/rmi4utils" path="external/rmi4utils" revision="d45cae258a3d831cd035ccecb3daa763d26346df" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="c35e9c5a25433d1e4beb65993bf8a326916fb2cb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="0fcc0daf8155d1f44eea124faa7309b01c4fbaaf" upstream="master"/>
+ <project name="platform/external/rootdev" path="external/rootdev" revision="6fab99202fdae8c540312a9d62be21246176d061" upstream="master"/>
+ <project groups="pdk" name="platform/external/safe-iop" path="external/safe-iop" revision="cd76f998688d145235de78ecd5b340d0eac9239d" upstream="master"/>
+ <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="9737bb84c923faa0b3dfe7cdece17f1b84d42784" upstream="master"/>
+ <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="c5c3309739e1178676139c0751f8ebdc8bcfca26" upstream="master"/>
+ <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="4a89b6358fa43dc1ec61d5788896c15be79d8abc" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="313d3399e181bb1eb213cde006896c5ed253045c" upstream="master"/>
+ <project groups="pdk" name="platform/external/shaderc/spirv-headers" path="external/shaderc/spirv-headers" revision="b252c470366118af0db2b4395217bedffb4c2e01" upstream="master"/>
+ <project groups="pdk" name="platform/external/shflags" path="external/shflags" revision="c4876e01829b8cf110ee33267bb1bad1f8ebb51d" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="d9ead8a8b93aac3131f453526865beaff2251ac3" upstream="master"/>
+ <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="506079aa4445d378d1b8699c337436fc0c6570fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/slf4j" path="external/slf4j" revision="63b140791fbb0bceabc496bdd29e108d9597b044" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/smali" path="external/smali" revision="a0f3b5890f2775f40456cf9514124285607acd59" upstream="master"/>
+ <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="462c5b2ece22a176d8f7ce81e7321a877e891815" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="a2f81e8e1f8c67a888b0e56dfc2f07e7e2030575" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="4c1426c96fd8848540aa903069b04afd29364ca0" upstream="master"/>
+ <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a5c452a7a5c5fd5648926eeb6d09085d428e6c77" upstream="master"/>
+ <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="cddc2024e95c5601bffb7878ed352b56ccd55747" upstream="master"/>
+ <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="7ecbb7ccdd9049fc30874fc89fa6813dfed0b365" upstream="master"/>
+ <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="096dd9a722334f14a48b3888390c4d1c6d3ca1a6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/strace" path="external/strace" revision="0d1c7e2b48b1fc2437f02ae25451dc2550e3ab3f" upstream="master"/>
+ <project groups="pdk" name="platform/external/stressapptest" path="external/stressapptest" revision="ea469443e9c2cd1fda87188df2b1ffe0e30656b2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/svox" path="external/svox" revision="1416c244af01c9b4b1952bae1b84c6a347a68b2f" upstream="master"/>
+ <project groups="pdk" name="platform/external/swiftshader" path="external/swiftshader" revision="0781219b0b2e38ab4ee4dfe24b038052cefcd61e" upstream="master"/>
+ <project groups="pdk" name="platform/external/syslinux" path="external/syslinux" revision="76d05dc695b06c4e987bb8078f78032441e1430c" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tcpdump" path="external/tcpdump" revision="5c80f87b56474c42c598880611a29ae013bef07a" upstream="master"/>
+ <project groups="pdk" name="platform/external/testng" path="external/testng" revision="2d09ec828c313edd6f9f5021c9b166854d742521" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="72ec97a21e4dc50c1e247c7bfeb285475fb90036" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="846573ce25e334e2709b3b4d7c5ab39d0a2b3bec" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="bd3c8f83c2149b809adb54dcbfd430e49a008bed" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="2b6bc2052f4a70363ad8660786b6c1077671cd9b" upstream="master"/>
+ <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="18caef1edd870ff3850fe2c417bbcec00c2ba7e0" upstream="master"/>
+ <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="89bb822f3e268237e8f31eb7276f72f58d616f70" upstream="master"/>
+ <project name="platform/external/tpm2" path="external/tpm2" revision="0cd05a180254e631b783b3100beecd90bb93fea9" upstream="master"/>
+ <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="38127ca33ab9436168c8595ee02233b1dc694a71" upstream="master"/>
+ <project groups="pdk" name="platform/external/turbine" path="external/turbine" revision="5ce188f8133ddf5bb8b598857b287255cffd8f6e" upstream="master"/>
+ <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="aa5100a5dfae7ac21df1ac13749faa55cf9f48df" upstream="master"/>
+ <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="efe8193526dea3b430aab4cf6d9a6c3d280ea5d3" upstream="master"/>
+ <project groups="pdk" name="platform/external/v8" path="external/v8" revision="37a3083841acc8d69e78889991dd4e6092f77445" upstream="master"/>
+ <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="523778cf4342740cca740f6756a204b61bf268b1" upstream="master"/>
+ <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="936bcaa501354e5ea008aa3088fd3852b49e418f" upstream="master"/>
+ <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="be06b8069e728a56f4f801e4748569a5de6cea06" upstream="master"/>
+ <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="737bce336c208129af1947ab22bdd964bd7ebb90" upstream="master"/>
+ <project groups="pdk" name="platform/external/volley" path="external/volley" revision="2021ca6a6c3fa80646220cb97746f0b1cd3ae103" upstream="master"/>
+ <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="727ecf10b5c219bf14c82bd1e58d856861f0cb86" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="75f26557017b2859b054802100a334552d3497dc" upstream="master"/>
+ <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="60c71f62eacd925c491863be665dfea23331a6f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="f7bcce468f1c1d8b2ba61744c305b29f46ce34e9" upstream="master"/>
+ <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="46d28ac44a242d84d610a294a640266d3b0e033b" upstream="master"/>
+ <project groups="pdk" name="platform/external/x264" path="external/x264" revision="7bf0b975cdfd5692a4598ab09e1258abe5ea5fff" upstream="master"/>
+ <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="c79d4eae757a81270915c2a7cf01c81b8d42785e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
+ <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="eb4f490242a36248365747f532c12b6621009210" upstream="master"/>
+ <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="3ff546926898d7d12b0b3915e735d1b9306e2076" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zopfli" path="external/zopfli" revision="f1db9c86a449024aadb8664e648227502018ac0c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="16f2c1559c5722a6cd69fef3c17dc5756ba73fe6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="a47e513464a473b135236df41a88acbf1ce460e4" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="2f3380574eaf140c22603d061d5576e8a874b33e" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="f14c19b75cb83750d70b87b3f766551d228931cb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="b20cc6ffbc544ca65984f332239bf3eda03142d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="0bb88fe21d26e675ceaaf455b46e74bbef5f6e03" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="77dfa2a9b4c5acafa45d7f09bd95dc44da54fc4d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="61ac1cf55fbaef1f72cf38de6fd135597e8f2f16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="26886917cc4b1e7b5daa1de182adaeb56ceb4a14" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="00cee902ec6ac3d80f3dab80097dbf13e0a475d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="afb74c2dfc474e50b2a0d3e7fb0ccba747681953" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="625d6a8cd8e093f85aea394865c970997ca33767" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/bitmap" path="frameworks/opt/bitmap" revision="a0d4e3108663202564a6833b76770075b8e5b767" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="9de9c5d49aaed7083ae886df6c61750529e51751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="3f01563afad6b3d2f0546a6260ef958a8173deb6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="27b256c8555b93cc69ca962051a8fe12b769efdc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="578f24e997333479fe5ff697d65e994033a62679" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="433cb3227c83234b2c58f3a8cf320bb441163daf" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="92eede13edbf22b501edb9aeb92366f91eab9781" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/inputconnectioncommon" path="frameworks/opt/inputconnectioncommon" revision="3baece9b20fa480da46d860acd7320fd9eee3386" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/inputmethodcommon" path="frameworks/opt/inputmethodcommon" revision="990fcb1a6dbb5d1204cc8ec86e4bc3f691f4aeeb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="230c0aae03841b1147e75bbd68dcc4feacded6f6" upstream="master"/>
+ <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="236b6f319ec913b241591f69d45684e8173b6a5e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="07e4fc6758c6c8053dafcbd1bbc03b163647081d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="e436be523fdfaca40084c68d729f74e97047a747" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="ca71bde33a57b9c0384fd185aabe41653806666f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="eaabb4f5914ace1a775675acc4f6d73a3ac5f9a2" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="0e454d9c78888ca761caa7069f5791b29db78afb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="34864043247588c0a1cceabf127fcf009ee74a9f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="8ed59aea836a09915c3d8cbf639627ad4f8120ac" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="61019c7e42067347dfaaf42f9475af5d1413dcfd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="cfa630e5921ae7bc64114b07047e0822ef9ca0fe" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="f205dee72d0bacf11b373c1bdaa4dcb049f9bdea" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="29862d783a985bc0c46de45253010b8ce4e0ea7d" upstream="master"/>
+ <project name="platform/hardware/akm" path="hardware/akm" revision="dabf66d32d1b1492e668f595a84b5221ac67e687" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="50b90f45144aacb1f67c9c18993be9aba82bc747" upstream="master"/>
+ <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="76e992b379e7d7fddbb7ea17c29b4227234f50c5" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="063c56133a805ce2e6ee65c35c30b76cfd25d997" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="0e60b77af3fa70393ee9fa0e80811d1b39c5f6fc" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="550aee8200015a67e32a5eb9d8d1f438f2028331" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="bfc9bda74643eedd4414e996d2a089a36d9acb24" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="2901b4bfb210c1c644e44f214fe7a3b825608da7" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="8cae226f534a504f385084d1b04f4af466a16990" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="34bb282eb4b4cf0bdb9cfdeb85d59f86e220e85f" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="8712cbc7851511b4aa61d1544078c8a9521578b1" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="8309367a3ad4446a1e2f07779955bc043ade8deb" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="ad2a78606b8c3fc85667f26cc46d5f4291badd55" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="333777baeae5d75efc1afa6719302ac5f93723dd" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="35ffe308d254bbc6213929935439510c3bd252fa" upstream="master"/>
+ <project groups="intel_sensors" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="31fba8cd408244be40c806f0e1d25e552e3890fa" upstream="master"/>
+ <project groups="invensense" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="ce1ed062440baa9037775c63f333c319fd7d67f4" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="53401d7c35cb7cce27d9f7f81c673f8be78dc56c" upstream="master"/>
+ <project groups="marvell_bt" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
+ <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="545beebc5add1dfd95dd9f6ca1539cd38920692c" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="483ce31f1ef6f45447445825abb958984c306f45" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="d7d7b9e56781fd49566e0b5e4097a6d75c52cbf5" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="5b5af67d19baf862f5a8d6a7226feb630ec2f81a" upstream="master"/>
+ <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="0a0cfb1377fde5a0bc5be567f27e3c3959e96417" upstream="master"/>
+ <project groups="qcom,qcom_gps,pdk-fs" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="18f5098237a20814c5c9943c4e96bfe1eb3526ea" upstream="master"/>
+ <project groups="qcom,qcom_keymaster" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="4428c1f0c0a9559870f976093bf7ed0ec8b4d0c1" upstream="master"/>
+ <project groups="qcom,pdk-fs" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="ad8d9a435b4fc96ce022709d47d9275c6db6ab4c" upstream="master"/>
+ <project groups="qcom_msm8960,pdk-fs" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
+ <project groups="qcom_msm8994,pdk-fs" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="76e6a531822718a6a9e8019e8343cd398492815e" upstream="master"/>
+ <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="f81ef30068fb7ef1dfb772ffe69b5cd846e81d9f" upstream="master"/>
+ <project groups="qcom_msm8x09" name="platform/hardware/qcom/msm8x09" path="hardware/qcom/msm8x09" revision="cee67f33014a0d25caa53a515bf2da11225880a9" upstream="master"/>
+ <project groups="qcom_msm8x26" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="master"/>
+ <project groups="qcom_msm8x27" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
+ <project groups="qcom_msm8x84" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
+ <project groups="qcom" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
+ <project groups="qcom_wlan" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="6c71dbce7a5b93982abc30d2bf4245247cb34efe" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="9fbd65c441ddcd5b51ea5a57a91bd4872a5f74f4" upstream="master"/>
+ <project groups="pdk" name="platform/libcore" path="libcore" revision="e400ad78c4705ebbb6afc6c16a6b1f03bed437c2" upstream="master"/>
+ <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="dcd3d3ae2171bf4e241ddb2d43808892fad7f2ef" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="d039943180c9cb8210d66d5e6bddfbf26ab70e17" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="7f90f9168fc412e9a79d4e8609a2c96c32dca133" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="9180bc72bcaa6d28156bc65ad2caf62aa50fd1ac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="956525423e51315015d6902e3b9487e72e9f4885" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="a4cb3c1c2d6cfa34a462bb04b38dca2eab7a62d7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Dialer" path="packages/apps/Car/Dialer" revision="732aaff8cb379728ea0359ea8cf913078d3534c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Hvac" path="packages/apps/Car/Hvac" revision="58772162c56dc8f893855e9fc27edc34a8f2bcac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LatinIME" path="packages/apps/Car/LatinIME" revision="22e301a603d844c0ef92e9cd95c721d6095ca19b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LensPicker" path="packages/apps/Car/LensPicker" revision="d509b2dfcbd4a51d28c496bd2f3fd8f40f42528d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LocalMediaPlayer" path="packages/apps/Car/LocalMediaPlayer" revision="9305871fc0013c451f33e56229507be0a1e120c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Media" path="packages/apps/Car/Media" revision="5cb58af61618d6c457685a5feba630540f25567c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Messenger" path="packages/apps/Car/Messenger" revision="22bc7d8f0b1a18737e951ff3352c089670cc7ab3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Overview" path="packages/apps/Car/Overview" revision="f6b3e8ba62d070b0870eb9b0e70aa34bb7c363a9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Radio" path="packages/apps/Car/Radio" revision="f5bdd9d38dd23ff55fd0fc7f7209d1ad28705f87" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Settings" path="packages/apps/Car/Settings" revision="d19f034f4211ce0d55bb38936e39c60b13bc509e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Stream" path="packages/apps/Car/Stream" revision="c19ea2d878bf135e36151e6d313eee8b1b743184" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/SystemUpdater" path="packages/apps/Car/SystemUpdater" revision="3506f3f39a1328465009ec080a741373b338bead" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/UserManagement" path="packages/apps/Car/UserManagement" revision="9391baedbf4ad645d7c125279a19d7a2b6b285f9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/libs" path="packages/apps/Car/libs" revision="7901432126584be2601424b0969092d0d1374c65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="28582d92cf380d431505fe9103a3ca99bcdb34de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="8cd439087aab7e0c3d530f0678a4944b697602fc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="1c43ca95cd444163e69e250f270714d7ba4cffaa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="3ba72351ae5bc808f86826e6d35bc6baee712d91" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="411d606453dd34b76a7af12c568872e6f98ffc86" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="90fdbf7460fbd255194455331c6a38a7b8f41dd2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="69ff7c1717c363027a79a454da91e1ca59c1dd3e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/DocumentsUI" path="packages/apps/DocumentsUI" revision="4501139b4ac250e5437007dc7f92adcb1068565f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1b70a229c444d3e893e6309e5191bb205fb1dcef" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="4877fa47dcb0275079b802054104811e4fedb9f1" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="9354ca48fbf8e8ea3372d01d024dd917a4c6f553" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="005fec50c2e22be3441ab9415ab17bd64bbd6b44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="65cdfbaad6c99efc1671510daea762a0876199b5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="e3269d171111f474c9240688c3da62e26f6a2093" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="1e1f4535d86dd49bf23108eb1a4c3d2543fc85fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="0269d850997f5d8c8f82d2f94a8c648ad0cb1543" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="fa5511133a6bf784955042966162e8635ab5b930" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="b717e128c1835dcee7efdbeedd5adc6c371f0b61" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="f1dde3461ec2d47adfd49a6752770ca654410b2d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="3fb6abb42199b98a23a6e0569b83519919f9d015" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="033375b60c90a9ecb1bb12197f978e31f95419bc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="e51ca133f48c3856d14a6f3230bd4f52a7a1283b" upstream="master"/>
+ <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="cb4361e698dfa069926a8e4293db933860d49483" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="d2762cc94e5ea13cc13b6665101220c2ddf06110" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="1677529d348d72daa1531ff5c1f1e4d5cd9ff19c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Phone" path="packages/apps/Phone" revision="79731f02b7009206a01182d2cca15dfc8491da09" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="742f2254b5fd8b8239724008dadcdac7debfe1c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="1e5d8a500dce6530a99cb952681889042dcfb63a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="6b2548213a9c7cf93ac9dc32f8b82db4ad8e9c4d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="5f6197edeea02d084a1a042374b8f15e7ed5131f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="bc538c50dae99678584ff9e2aff60ee11a78cb44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="e69ff22ef6c1ad43c5ff876b19fc492c94d4fc12" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="c4b0fa585849641f07ecfed395db3437eca27dbb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="ba7237540f779f1c7e67ae7a36aa7a63da8eb1c5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="f47fff0421153f4c20d155df8d0864a7036bdb06" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SpeechRecorder" path="packages/apps/SpeechRecorder" revision="51cc8462c082a26810f5d7c5a2648232a77e795c" upstream="master"/>
+ <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="4424ddfba1e07a4f749dc1a6233d87c9a1206df2" upstream="master"/>
+ <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="bf23305b3b201f91d9c06eafa2622b058ced93dd" upstream="master"/>
+ <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="0e0082535dc276086ee61ac156581a20e86609e7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="4ab03e1367fb23d75f1197a98c7a52dd3e3898b9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="6ef2b729b4e4ac070563efba29fca2b98ba09e56" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="b36b2efb68a392aafba13a2273278c155f9f9a28" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="bba3dfde202b7483b1e430d75d49e0389d42d644" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="4f154a7d574963466abaeded961b6c5f427a45fb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="51fb032a154fa756327c5dacce6a2540b1196c3b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="6087c3f339a76e9033f6c2991ef26d4401743429" upstream="master"/>
+ <project name="platform/packages/apps/WallpaperPicker" path="packages/apps/WallpaperPicker" revision="969934f908ff2ddda77bddbb80f206daf6a24281" upstream="master"/>
+ <project name="platform/packages/experimental" path="packages/experimental" revision="f664e1fad87d06f1ad738549db049011c84ca787" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="ad5da5881dcaf3a1b4ec0cbdda51401460b6e37a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="85ca997d8265739e94b5bd9d19460c9b87b9ec59" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/ApplicationsProvider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="aa0b531d60d27409d304d7e8bbad787181be4831" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="bf198c8c5cd3e128046a3f712709690734b61f43" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="1e487cd116214c0df34efea269595352b757e4c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="df0624f9cf6274ed67c70ef0d163aa27ad5bf2d3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="18a114896c47de3a2c29b5731afa658c57ca353c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="372fcac69b5033bba262ce871f4f54ff1dde48b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="428574d247cc821825721ca7fd3beb77b5e8895e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="9c4e2ffaf6344c6c6e3ec5884f29dc7999bdf363" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="b65323596e512b84fb9a5601e9a83d442ed9a2b2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="a22ab1935b10a91ac9eb9606d27f4290c5659894" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="ef263aa8c0557e3aab06d11c8914b53b59ee8e7e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="2d9323d2deeeaa720cfb35d15767dd90a256b2c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="f27f650d1184819984e47ecbd797ccff162c0eeb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/WebView" path="packages/screensavers/WebView" revision="6e0a80f6faed6191acc8ce1b6c79eada09e9e042" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="911db0bab1adfab02e551fb512e7fac8f8dccfe1" upstream="master"/>
+ <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="7a3f3ef53ec1541bf28f4b91677265ab353fcf6f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="7117bff6c1186110a6381c49b7eac3cebd3d23f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="9264ab18a037a78501f3ada2c1f307c436dfb8a1" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="dd6a7b317428252fbf0892364160656a2991c952" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="e4a7a8c5f21c74ff699eae449816fd0bc6843afc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="5afd06f0764ce8afc99e641794ca3a57bdf87c2a" upstream="master"/>
+ <project groups="pdk" name="platform/pdk" path="pdk" revision="c7bd144646f9e961a7ee5f10a0105d21f5bf8ff7" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="0606a72fb0360c96af13b9917e1248f9076e8f95" upstream="master"/>
+ <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="93ee4dea555579076cc5313e04ed95cfbb0523cd" upstream="master"/>
+ <project clone-depth="1" name="platform/prebuilts/abi-dumps/vndk" path="prebuilts/abi-dumps/vndk" revision="83a0ec4746ab945004a9e71f2253d5fed8a4cc75" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="25dec9283da1c6a3c281ab0eb123c44f70c27632" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="23909177eace37bb0b1b2fae7e37113ffea7f7ef" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkcolor" path="prebuilts/checkcolor" revision="f6f661b424f646bc5ddf9e1b1e644abb492b7547" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="b591a4c55c5fc6658e17875a642bb60923ed366a" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="e992d54510d52981e0e6338d342089301bc2ae81" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="5f633876c34ebd8c8fb31aabf3dedfe7e3141aac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="d055450404768f16ac199b13e51eecb37abb7c07" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="6f0b60e8759e67828288feccfe0e59ad02170bd0" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="efa717742380a2fe700a62f3ba5b26e7fb3cf0f2" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="6d90a91b8622bd5e4849aa684598d3f4b6a64f2e" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="679f23d33d0fa540915ef8d2b72b00128bcce0a0" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="ec5aa66aaa4964c27564d0ec84dc1f18a2d72b7e" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="d942564c9331f07026a8f78502d8571206eb7be4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="cb32df02ca49be4d2de4d05c1e46032abd30efc6" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="2d4cbf699c9217a3f4f0f6c82254643a0ed87f1f" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="bf4b366f48251c542c8aea15ec885f9fc6a01d5c" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="a461e1b3161b4817b743ddbfb58a3878e7985c8b" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="6e91bb7b816df8543cffe14287acbf0412f65550" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="e76a9a506d7ad132f107eb2f7c27b6a8ccb68b91" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="388fdc4995d374d76a0c4b292afabac91638e134" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="6a8906d0e6c3e18480796547e285866813b29ba3" upstream="master"/>
+ <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="0a8c90248264a8b26970b4473770bcc3df8515fe" upstream="master"/>
+ <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="4adfde8bc82dd39f59e0445588c3e599ada477d2" upstream="master"/>
+ <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="1336ba94c3bda2b2db8d6eab54036ae88423be55" upstream="master"/>
+ <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="cc0b9f5238fed2fb3b3a0dfa9cd1dd163b053a8c" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="10219421eac01ee74d80c86e97bebe1fd8e16bb2" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="d49ad92452c3ec4b859283f36372a3d12ad7a4ea" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/libs/libedit" path="prebuilts/libs/libedit" revision="d32685dba4011664b590b94ad156bc734c2c9bb5" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="f8ffcaa0b464b1275af6707e931beb0b4d4b0856" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/bumptech" path="prebuilts/maven_repo/bumptech" revision="ad29fe1a1b86eacbd04ac4ab23b90f38ca099f77" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="062009ffd95b0eb78fa0e75067390a00e042e730" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="3643dfc296d3cf65a8c5d618ef56f9ccf8ee40d7" upstream="master"/>
+ <project clone-depth="1" groups="darwin,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/darwin-x86/2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0c5958b1636c47ed7c284f859c8e805fd06a0e63" upstream="master"/>
+ <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="621d405f7e4db1d7046dde53c0c6e5add3e2743e" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="fe3a2d5cc210c45a5fa0bdadbbcba268aeafe60d" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="d8225e4f0b27de6bf8f15db5440d4e5b0a3b26f4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="f3fbb60b007f7a4a5f53b822d56a151bb95b8d65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="2e170ea4622aa5d63e562f2eea78817ada415373" upstream="master"/>
+ <project groups="pdk" name="platform/system/bt" path="system/bt" revision="2e08795a899d402dd9914c3e5098c04dccd4f680" upstream="master"/>
+ <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="db524b256a637f18588c1d5ecc4a7d43cdebf8fd" upstream="master"/>
+ <project groups="pdk" name="platform/system/chre" path="system/chre" revision="1355b80eaeeb2c63bdbc72a9f883d2391161700a" upstream="master"/>
+ <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="7a83a7b6ae1e0c8d7a3ec912eafca33d418608c1" upstream="master"/>
+ <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="2211b56ca924f4a810d48fc31bdec959dda8f5c1" upstream="master"/>
+ <project groups="pdk" name="platform/system/core" path="system/core" revision="fe3551e9dc173e81649ee7b5beb2b99bd6a3d2be" upstream="master"/>
+ <project groups="pdk" name="platform/system/extras" path="system/extras" revision="5da045dc1ac0709dba6eb61b0ac305ff031ed767" upstream="master"/>
+ <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="9414ec08188b5189eb393a2ffaa039ff1fcf6027" upstream="master"/>
+ <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="0bbe268d8519aa650af4a18ed4f9eefd69e3d1e3" upstream="master"/>
+ <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="e821b67b98d0ef49cb4e34e972f349a1deaa5555" upstream="master"/>
+ <project groups="pdk" name="platform/system/iot/attestation" path="system/iot/attestation" revision="e3823a75b7569794662fe2fbc9e3ca2ac2f60cce" upstream="master"/>
+ <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="109901d94c6e3f15768f3d9e1ba32803999db672" upstream="master"/>
+ <project name="platform/system/libfmq" path="system/libfmq" revision="8d1189c9399ff6e81296383bc480b104613d591e" upstream="master"/>
+ <project name="platform/system/libhidl" path="system/libhidl" revision="0109873dcaf0a416960fb2d6d4b99029b25047f0" upstream="master"/>
+ <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="80b88ab21170f7fde645212a9f6b6d7e28a40de4" upstream="master"/>
+ <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="4446f0cb437fea5e26b645990970afe7dc4f5085" upstream="master"/>
+ <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="a72bde7d4aed9704cca946c43563ff1983eb86fa" upstream="master"/>
+ <project groups="pdk" name="platform/system/media" path="system/media" revision="f1041f736a4747e51ab5b27e19aacc7d68ef92ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/netd" path="system/netd" revision="a767c597572bd016d19a571eb4caad7a63a18137" upstream="master"/>
+ <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="210fc92332b13067c0a2c4bc234167eeab6f2e85" upstream="master"/>
+ <project name="platform/system/nvram" path="system/nvram" revision="f490436ea7b11aadfeb37c2299e4565c41ffd0ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/security" path="system/security" revision="f3147f209c9537b30041a521fb4cc5fbd832ff3a" upstream="master"/>
+ <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="c5e32208a2ec7a483d8ef9d5c292313d5c229ebc" upstream="master"/>
+ <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="5faa530d1f732db066aa1bb27943f7db3bb5e7ab" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/system/tools/aidl" path="system/tools/aidl" revision="a2a10e895a779d633ab41e3b856d6e7979cedb3b" upstream="master"/>
+ <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="768250faa6806620d97968a3bd6e8e8fc744f029" upstream="master"/>
+ <project name="platform/system/tpm" path="system/tpm" revision="06e295b58139a538745835f45ed889a30507d008" upstream="master"/>
+ <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="3b15b599299a9a5f3ec965d568ea479383c2fe6a" upstream="master"/>
+ <project groups="pdk" name="platform/system/vold" path="system/vold" revision="2890b8d21565be4349956c67261cd370e4814c28" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/framework" path="test/framework" revision="246492cf54d880214952e9cbb1ea490cbdd56f52" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="378b0e7157ea84bfd5907a72ab6089aa37222c4f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="30d457ce6613d587901379844b9d0dfb37a67a7b" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="a77aaaf39ccb9967a9dc1b5d945b945747a00465" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="8246eb1c52bd095a440af7d12f3ef3a3c5efa43f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="d18f06f1a6b5076cd4a83ece72abbc4162c3bb44" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="27a8ac9577a8984d2c85c78640551cc647d1c7a3" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="02a4c1be279b9afa69a0003db73652980aa3e85f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="a5eb9c423ed7423ecc2842ef5fc0d42f5e000a8e" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="2dc30e9b9476a23015590ac4acd4c8d1ed857c85" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="5f9c0342d425bcaf20d6ed7027dcbc5cd9bd0943" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="358bf2cc437a04c5b671be2817e131ae7d628521" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="51ca09ff33d03da2db1340166440c85ec56b49c0" upstream="master"/>
+ <project groups="tools" name="platform/tools/dexter" path="tools/dexter" revision="7650a8d2d9f7f579e65eeccdcf3e486b6a61be49" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="9cdd712d65a9e3ce2db93867d0d4a8288ad3bd52" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="f055ebc3d4b63026076c1077b6116f0b36bc514c" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="5bf6d894a874141fa8f806693b6c0a7c171f44a9" upstream="master"/>
+ <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="f363ab9d13f3b8178b49f7a61a25f26aca19b6f6" upstream="master"/>
+ <project name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="ee9bbb6a41a3bef74b4b566e057e577d231f91c1" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="d06f52938e256429ae54159bd43d334c3e157209" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="a5a7a9fabbf14a8d600aa612e5667ff3217c319c" upstream="master"/>
+ <project name="toolchain/benchmark" revision="73fd86bfc65c3c644c3ec47e3f8c941866e46e23" upstream="master"/>
+ <project name="toolchain/binutils" revision="53dd00a1a34ebf5251f6210d778768b4157c5e11" upstream="master"/>
+
+ <repo-hooks enabled-list="pre-upload" in-project="platform/tools/repohooks"/>
+</manifest>
diff --git a/tests/2017-10-04/art.tar.gz.sha1 b/tests/2017-10-04/art.tar.gz.sha1
new file mode 100644
index 0000000..713ddd3
--- /dev/null
+++ b/tests/2017-10-04/art.tar.gz.sha1
@@ -0,0 +1 @@
+4530779be454f353e9c754991d37aee8c62e0056
\ No newline at end of file
diff --git a/third_party/jdwp-tests.tar.gz.sha1 b/third_party/jdwp-tests.tar.gz.sha1
index dd998eb..d3eeb60 100644
--- a/third_party/jdwp-tests.tar.gz.sha1
+++ b/third_party/jdwp-tests.tar.gz.sha1
@@ -1 +1 @@
-c1f8da93dfe1b811904ee19a670fb5ed1a35766f
\ No newline at end of file
+db49b6093abaa165e422734a755cdcecf36c03db
\ No newline at end of file
diff --git a/tools/create_art_tests.py b/tools/create_art_tests.py
index 600c140..54de423 100755
--- a/tools/create_art_tests.py
+++ b/tools/create_art_tests.py
@@ -12,7 +12,9 @@
OUTPUT_DIR = os.path.join('build', 'generated', 'test', 'java', 'com',
'android', 'tools', 'r8', 'art')
-TEST_DIR = os.path.join('tests', '2017-07-27', 'art')
+# Test that comes from Jack are generated from the legacy snapshot.
+JACK_TEST = os.path.join('tests', '2016-12-19', 'art')
+TEST_DIR = os.path.join('tests', '2017-10-04', 'art')
TOOLCHAINS = ["dx", "jack", "none"]
TOOLS = ["r8", "d8"]
TEMPLATE = Template(
@@ -60,6 +62,9 @@
def create_tests(toolchain):
source_dir = join(TEST_DIR, "dx" if toolchain == "none" else toolchain)
+ # For the toolchain "jack" tests are generated from a previous snapshot.
+ if (toolchain == "jack"):
+ source_dir = join(JACK_TEST, toolchain)
dirs = [d for d in listdir(source_dir)
if isdir(join(source_dir, d))]
for dir in dirs:
diff --git a/tools/linux/aosp_master_manifest.xml b/tools/linux/aosp_master_manifest.xml
index 8b9df23..78ae521 100644
--- a/tools/linux/aosp_master_manifest.xml
+++ b/tools/linux/aosp_master_manifest.xml
@@ -4,49 +4,52 @@
<default remote="aosp" revision="master" sync-j="4"/>
- <project groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu" revision="8eb496967a7640e08832b15ea3e1f26079e4f2d1" upstream="master"/>
- <project clone-depth="1" groups="device,fugu,broadcom_pdk,pdk" name="device/asus/fugu-kernel" revision="8a09131453b9326793261b6c9297f3c43336d6b5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk" name="device/common" revision="81fa95978b5542b9d2851b04d034b9a75ed8b43b" upstream="master"/>
- <project groups="pdk" name="device/generic/arm64" revision="23d9a6b57c63fbea914ae663a0be693b43d91ffc" upstream="master"/>
- <project groups="pdk" name="device/generic/armv7-a-neon" revision="dd168c481dcb14c7932c7026ac7c8b4af128e4a5" upstream="master"/>
- <project groups="pdk" name="device/generic/common" revision="11c092a6cbfcf6207f07a9a8e3398e747e7f5461" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish" revision="eb66ec9609a6c6422cfec97074eaefe9b3b436cd" upstream="master"/>
- <project groups="pdk" name="device/generic/goldfish-opengl" revision="b0a0e2f0297a1b379dd460dbb74153773196238c" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="6f2e6974a1b1dc0ef936aec732e33d553c000b5e" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="9d7cbb60819a1da8408a7148b965b4cd1ebbb570" upstream="master"/>
+ <project groups="device,fugu,broadcom_pdk" name="device/asus/fugu" revision="3c9c11746af0f6d8f3abf30d3f32c9b0f3a342fe" upstream="master"/>
+ <project clone-depth="1" groups="device,fugu,broadcom_pdk" name="device/asus/fugu-kernel" revision="6c50d39cf6e1dabdfc5ba6ce22973b96650ae0b5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="device/common" revision="1401af3a0c8e9cf74f70bbdcae9299be30866563" upstream="master"/>
+ <project groups="pdk" name="device/generic/arm64" revision="392eec3cb4c64721cd5b76fa36535954b5d45309" upstream="master"/>
+ <project groups="pdk" name="device/generic/armv7-a-neon" revision="9e96e041bf3c9d5b57b11f921c6339e076478a7a" upstream="master"/>
+ <project groups="pdk" name="device/generic/car" revision="c4d08a9e781e9bc69b861428765e87f6cbb696ac" upstream="master"/>
+ <project groups="pdk" name="device/generic/common" revision="441c018a14a4b29d338bd62e01a0c014571ca241" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish" revision="ddbb24fd9ccf9978264a656cf92c193597b8df6e" upstream="master"/>
+ <project groups="pdk" name="device/generic/goldfish-opengl" revision="9b2d1c3cee91b7ce39e22c47b58843037ebb78fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-arm64" revision="1aba9d054f2e5e906000fe69eff8d168e99e74fc" upstream="master"/>
+ <project groups="pdk" name="device/generic/mini-emulator-armv7-a-neon" revision="258706fc0ddcf2c9be48967f4766ec90efb736a5" upstream="master"/>
<project groups="pdk" name="device/generic/mini-emulator-mips" revision="544e69736cff911c286a5d1d300dac228e23a73f" upstream="master"/>
<project groups="pdk" name="device/generic/mini-emulator-mips64" revision="b1c36d0847fe6366527efd38fdb29d757ea887ee" upstream="master"/>
<project groups="pdk" name="device/generic/mini-emulator-x86" revision="65d59e2be2cfd713513a05d80a0f75794ab60579" upstream="master"/>
- <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="bcb1f5139c24bebbb0cc0ebd2f50d83cd21b01b9" upstream="master"/>
- <project groups="pdk" name="device/generic/mips" revision="23901a9cf7a62f5f8f9f0c1382b5707694a1661c" upstream="master"/>
- <project groups="pdk" name="device/generic/mips64" revision="03b4192ab5125e5d67636dc4c7121f089799e1fb" upstream="master"/>
- <project groups="pdk" name="device/generic/qemu" revision="99feb6138f39e392495057ef7f2c4a5ed27f9e2d" upstream="master"/>
- <project groups="device,pdk" name="device/generic/uml" revision="4f11280e3d70728fba24e572428e559b7b6f8093" upstream="master"/>
- <project groups="pdk" name="device/generic/x86" revision="dac918b4cd4a34342526588502e4b5a531183080" upstream="master"/>
- <project groups="pdk" name="device/generic/x86_64" revision="f00aa59b3af4937ed014701755e9b01c95122187" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
- <project groups="device,pdk" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
- <project groups="device,fugu,broadcom_pdk,generic_fs,pdk" name="device/google/atv" revision="fbc45fb7c00d9b0150acdb674c9525ab32abe349" upstream="master"/>
- <project groups="device,pdk" name="device/google/contexthub" revision="a70df4afbbcebd9693590dd8fbbb9edf3220609e" upstream="master"/>
- <project groups="device,dragon,pdk" name="device/google/dragon" revision="ee1ac65d5660fd80ce40165c165e09d4de3cada5" upstream="master"/>
- <project clone-depth="1" groups="device,dragon,pdk" name="device/google/dragon-kernel" revision="8c9e4d14540119e0815a453eb4fefbedeaf8794f" upstream="master"/>
- <project groups="device,marlin" name="device/google/marlin" revision="d191908f633ea003bcba5193ef781ae4b1ab0bcc" upstream="master"/>
- <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="48bde4626f5da9605b068b6c1bcc1e854a876d52" upstream="master"/>
- <project groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler" revision="40d2796a7f673102462f217e794cb3efb18e8dff" upstream="master"/>
- <project clone-depth="1" groups="device,angler,broadcom_pdk,pdk" name="device/huawei/angler-kernel" revision="db808069857bd03e573ce3c765dd6df43f2a4318" upstream="master"/>
- <project groups="device,bullhead,pdk" name="device/lge/bullhead" revision="422731a22e593103dfab7f2abaf7fa1804566ef0" upstream="master"/>
- <project clone-depth="1" groups="device,bullhead,pdk" name="device/lge/bullhead-kernel" revision="3f270065c17302930cc9319d399297436b65b3bc" upstream="master"/>
- <project name="device/linaro/bootloader/OpenPlatformPkg" revision="71183d6eabb1f91198f1bd3705a85b419cfd4685" upstream="master"/>
- <project name="device/linaro/bootloader/arm-trusted-firmware" revision="36aa82dda56169333aba6b2c55341404c1d631f0" upstream="master"/>
- <project name="device/linaro/bootloader/edk2" revision="b26de945921c8045494d7817e2c962b2b73c80dc" upstream="master"/>
- <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="8b50938d95ea98ee6e01d1bb5155fccaa375de1b" upstream="master"/>
- <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="f3509810fe7d8e6eeff6f0b8f902c5f7e4db7c2a" upstream="master"/>
- <project groups="pdk" name="device/sample" revision="15f7857fc7b7f7cfd99ec4f93b151dc02a71b837" upstream="master"/>
- <project name="kernel/tests" revision="abfe7a8bf1d0f26e376d977f55d2234fe297c5ec" upstream="master"/>
- <project groups="pdk" name="platform/art" path="art" revision="2c2e13ec24bff70db6e49270b9d4d787add9925e" upstream="master"/>
- <project groups="pdk" name="platform/bionic" path="bionic" revision="4f36cabd8d1b1f3ed6ad4586f86aad5731f4bdaf" upstream="master"/>
- <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="231c627a5527b92ae3d043e454e949cdfc4f38ea" upstream="master"/>
- <project groups="pdk" name="platform/build" path="build/make" revision="2aef19528e05d014db280ce9aa6431580cc19f7c" upstream="master">
+ <project groups="pdk" name="device/generic/mini-emulator-x86_64" revision="b62205d75073783e171fbcd5f675e25e57833479" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips" revision="bf27f9bcb56e483310507f78f0a4b93d3f5499c5" upstream="master"/>
+ <project groups="pdk" name="device/generic/mips64" revision="34300f7753b7a9fa2f7ba16bdc1f1fb8625dd4e4" upstream="master"/>
+ <project name="device/generic/qemu" revision="97ef4f962aec451b00bfe562c1cb67471c4563d9" upstream="master"/>
+ <project groups="device,pdk" name="device/generic/uml" revision="f71ea7d194988fd6a64e071918f6e00e8db9ff0c" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86" revision="645e6e711b32f94ecbd9b1cc77a51559dfce5ebe" upstream="master"/>
+ <project groups="pdk" name="device/generic/x86_64" revision="506952733fdebb5a2ef086b519ceebe86a95ae31" upstream="master"/>
+ <project groups="device" name="device/google/accessory/arduino" revision="abc5159a3ca9dbb5c7e364a1eab99901a4440ac5" upstream="master"/>
+ <project groups="device" name="device/google/accessory/demokit" revision="7dfe7f89a3b174709c773fe319531006e46440d9" upstream="master"/>
+ <project groups="device,fugu,broadcom_pdk,generic_fs" name="device/google/atv" revision="a14f6c4a89589a7cc6919702f9f3fd3140cc273b" upstream="master"/>
+ <project groups="device" name="device/google/contexthub" revision="b6f95b69331caa8356ba3e1e9d8e77cb0d43c17b" upstream="master"/>
+ <project groups="device,dragon" name="device/google/dragon" revision="8a0490365df0ab52123e7e2ff99426b39c1df151" upstream="master"/>
+ <project clone-depth="1" groups="device,dragon" name="device/google/dragon-kernel" revision="01a873b040f63d8d030b2ec34338bc86aadd15b2" upstream="master"/>
+ <project groups="device,marlin" name="device/google/marlin" revision="44063c647bdd327ec5213f9c86b1cd28e198c1dc" upstream="master"/>
+ <project clone-depth="1" groups="device,marlin" name="device/google/marlin-kernel" revision="8d4b71409708a68a7b1aa9614fecaf17a3e8749f" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="device/google/vrservices" revision="957cfc2a4e2244a83ddfaf6ba2da74aee24f0767" upstream="master"/>
+ <project groups="device,angler,broadcom_pdk" name="device/huawei/angler" revision="8c68626c01750f93ac8412de79dcf1e396e9af5c" upstream="master"/>
+ <project clone-depth="1" groups="device,angler,broadcom_pdk" name="device/huawei/angler-kernel" revision="5263f25b197ee09005570da6363b766281969c22" upstream="master"/>
+ <project groups="device,bullhead" name="device/lge/bullhead" revision="f91eab2f09279fb6159686b566563b9a4a8899f1" upstream="master"/>
+ <project clone-depth="1" groups="device,bullhead" name="device/lge/bullhead-kernel" revision="1d824f51ffa8950d7695829d849da183233d71e3" upstream="master"/>
+ <project name="device/linaro/bootloader/OpenPlatformPkg" revision="ca8a8eebc29ebbcc65edc8f3b4533867cbed9205" upstream="master"/>
+ <project name="device/linaro/bootloader/arm-trusted-firmware" revision="179eae6bcbfe21200b3dec42e0b56e5e6faf3272" upstream="master"/>
+ <project name="device/linaro/bootloader/edk2" revision="99d893a486546aa62d4088a16e86617ed3c74897" upstream="master"/>
+ <project groups="device,hikey,pdk" name="device/linaro/hikey" revision="b266cd2109ae0bae7ab6aead0da8dcc74ce82b08" upstream="master"/>
+ <project clone-depth="1" groups="device,hikey,pdk" name="device/linaro/hikey-kernel" revision="d194dc591ad93e25234e57acec4fe0dc6b0117a8" upstream="master"/>
+ <project groups="pdk" name="device/sample" revision="12cb28b2ab78a03feec243ed1f7d528b1aa6c753" upstream="master"/>
+ <project groups="vts,pdk" name="kernel/configs" revision="649be155f9e3dde06b379710074eeb9b80960afe" upstream="master"/>
+ <project name="kernel/tests" revision="3e8e23f0133d3b6071cb5b7f224a9361837e6f61" upstream="master"/>
+ <project groups="pdk" name="platform/art" path="art" revision="bfcd0d3da60d38bd072d898fa2db4d30307d540d" upstream="master"/>
+ <project groups="pdk" name="platform/bionic" path="bionic" revision="3e8584d4a7d617289e8a954711ba895415d781c4" upstream="master"/>
+ <project groups="pdk" name="platform/bootable/recovery" path="bootable/recovery" revision="2cedab7af95e1065cce1633de1b3acd5a40928f7" upstream="master"/>
+ <project groups="pdk" name="platform/build" path="build/make" revision="b33250278bd79f62d251c1339447f21d08fd7e81" upstream="master">
<copyfile dest="Makefile" src="core/root.mk"/>
<linkfile dest="build/CleanSpec.mk" src="CleanSpec.mk"/>
<linkfile dest="build/buildspec.mk.default" src="buildspec.mk.default"/>
@@ -55,525 +58,555 @@
<linkfile dest="build/target" src="target"/>
<linkfile dest="build/tools" src="tools"/>
</project>
- <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="9795c47773f2d79fdc0ace76bb47693c4a4d3b27" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="bcb31defde3e3fc248a1f11049e7722233003b6f" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="98be5836deff21fccb93d6fc342441d9858c042c" upstream="master">
+ <project groups="pdk,tradefed" name="platform/build/blueprint" path="build/blueprint" revision="ac45bd1ea824a274d9347f3d01671d959065ac15" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/kati" path="build/kati" revision="d120bfe21325e56229c01e07d0ac5aef7c94c778" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/build/soong" path="build/soong" revision="c144b8601430e5de53d832dff0c4e2bbf1d2ff4c" upstream="master">
<linkfile dest="Android.bp" src="root.bp"/>
<linkfile dest="bootstrap.bash" src="bootstrap.bash"/>
</project>
- <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="644a1933b78f1b08e86cecb58e199cd43ff7bd26" upstream="master"/>
- <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="226dd9c816388ccc82d332510ef65143757288f8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="dfdc080699f1bf92978b45e8e87649bde239a874" upstream="master"/>
- <project name="platform/developers/build" path="developers/build" revision="67343aa8a5faeb6b4df459dbfce4cc17bc7f21f9" upstream="master"/>
- <project name="platform/developers/demos" path="developers/demos" revision="95d49d216223e3431647abd79f5e376958353c95" upstream="master"/>
- <project name="platform/developers/samples/android" path="developers/samples/android" revision="b329d0bb80feecf6a27d38fe0bb3c018a2ba16aa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="fc7b5458c3a4cb311afca7ff0e10811514ca03ae" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="c78bdec26a7e8ae86feead11571d5fdc3203b98a" upstream="master"/>
- <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="7a8860406c015bbc63f382efed9372044eb0cb74" upstream="master"/>
- <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="44079759f93259a9694607502406dfe3717b04ba" upstream="master"/>
- <project groups="pdk" name="platform/external/aac" path="external/aac" revision="db596910262534891ecde361a71abe7ada57405a" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="c692633e1b2dddfb8f5ec7f60eb7a62ced325e4f" upstream="master"/>
- <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="9b76336c02d84eeea19a48108270e3bae4efd025" upstream="master"/>
- <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e700a73dd03a0c111a8a55ef2f9f22b264663138" upstream="master"/>
+ <project groups="pdk" name="platform/compatibility/cdd" path="compatibility/cdd" revision="706f8a00a26d09202f025023b07cdd719c285287" upstream="master"/>
+ <project groups="cts,pdk-cw-fs,pdk-fs" name="platform/cts" path="cts" revision="4a8c6eb8af9ec00a810c4df8f14095e02ad9f1b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/dalvik" path="dalvik" revision="bc682afc86bfd43d92a9d01c6a26a7aecf9053bd" upstream="master"/>
+ <project name="platform/developers/build" path="developers/build" revision="dac7653ebb52f2de72352a3ba8e91b7d70837ee5" upstream="master"/>
+ <project name="platform/developers/demos" path="developers/demos" revision="baed7559c8272ae802aa581148851a7f81307d47" upstream="master"/>
+ <project name="platform/developers/samples/android" path="developers/samples/android" revision="0f2a748e3111611b65421dc42840def7ae2797de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/development" path="development" revision="0e82eea2d4829d277566ae42182121d631f8d429" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/docs/source.android.com" path="docs/source.android.com" revision="4ede9c52630a6da877e7ca9c1c3801a34ddb7179" upstream="master"/>
+ <project groups="pdk" name="platform/external/ImageMagick" path="external/ImageMagick" revision="5691a8ecaba367d04b2c2a13ec1e9e05f4f17b7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/Microsoft-GSL" path="external/Microsoft-GSL" revision="c1b94b10a13f22e951c429e056b151d340238e27" upstream="master"/>
+ <project groups="pdk" name="platform/external/aac" path="external/aac" revision="32b8bd3dc952952a097fbaa87a626d15445f15c7" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-compliance-checker" path="external/abi-compliance-checker" revision="5453ac991183dc8dc856e8beced059edab94acaf" upstream="master"/>
+ <project groups="pdk" name="platform/external/abi-dumper" path="external/abi-dumper" revision="d972c9eaf4e7ccd0f79e779fe4621538cc9c9e90" upstream="master"/>
+ <project groups="pdk" name="platform/external/android-clat" path="external/android-clat" revision="e477c862031613ca7bd05971bce05405638fb248" upstream="master"/>
<project groups="pdk" name="platform/external/androidplot" path="external/androidplot" revision="c66727ebf001607cee14521c35bc852b55fd9845" upstream="master"/>
<project groups="pdk" name="platform/external/ant-glob" path="external/ant-glob" revision="a73228afa9540b9c5518d360c5ae630bb634f975" upstream="master"/>
<project groups="pdk" name="platform/external/antlr" path="external/antlr" revision="dd5fa6d48b827c5d98b625adbc209f4a05567534" upstream="master"/>
<project groups="pdk" name="platform/external/apache-commons-math" path="external/apache-commons-math" revision="18f62fca59d387e3c1ccd8f80087d9c9af40bcc8" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="3af05d75dc65fae5e073269db62563716c2ebd90" upstream="master"/>
- <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="a4b31e5eda3df5a0ffe844891edc5bbb33930e98" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-harmony" path="external/apache-harmony" revision="eb488e7ce61f67cfb0cec2b2f99e2769ba640199" upstream="master"/>
+ <project groups="pdk" name="platform/external/apache-http" path="external/apache-http" revision="6d301174f0502912ee7df6db4bc5c1f5cf4ee230" upstream="master"/>
<project groups="pdk" name="platform/external/apache-xml" path="external/apache-xml" revision="31d7642eb8f37a9166db7f1c9e313ab651bdb8ba" upstream="master"/>
- <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="66e3a02481a0fcfcaaea296c0ec4daf761d3a07c" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="9ab8d36c652aae3bd30cbf62243a788394494635" upstream="master"/>
- <project groups="pdk" name="platform/external/avb" path="external/avb" revision="047ecf7d2361ffcb39a5a4ec0709480f47ed76e2" upstream="master"/>
+ <project groups="pdk" name="platform/external/archive-patcher" path="external/archive-patcher" revision="a764fc9e8810be26a51add8a79502e411e3ee1ee" upstream="master"/>
+ <project groups="vendor" name="platform/external/arm-neon-tests" path="external/arm-neon-tests" revision="104e2a662ec8443e9a7603b22efbb3b86c1e7094" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/autotest" path="external/autotest" revision="acea5c1e9dfda8ab69a093fa82c61ef12f7688b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/avb" path="external/avb" revision="34ec123c606a0beed5cb29b49d748594a3242eb1" upstream="master"/>
<project groups="pdk" name="platform/external/bison" path="external/bison" revision="7467d52af437dd3dfea237a6865ab84bf258dee0" upstream="master"/>
- <project groups="pdk" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
- <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="b6d070c5081ba0ca11545eb50870817d6d72d926" upstream="master"/>
- <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="5efb6f27c6444cbef30ca253c831496c534a9198" upstream="master"/>
- <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="6a6ebf0b8d77d5cc527af49afc5731a2253779d2" upstream="master"/>
- <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="4ac53f28ec5554dd32c70298312a10078d5ce02c" upstream="master"/>
- <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="0600e5668b2b1590c2f908a5c420149c6581122e" upstream="master"/>
- <project groups="pdk" name="platform/external/c-ares" path="external/c-ares" revision="211489aeaed3157c34e46f350afea813960258af" upstream="master"/>
- <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="eef51080212521ca9c85eb880dd1d6620846cf92" upstream="master"/>
- <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="d7e8ee81279845e0f06103398b48d3f4624497b4" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="5bb2c7930cf34cfe7584b76139b5257feec81e6c" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="a70bd790dfd509cefb24534d02e3a1b349faf98d" upstream="master"/>
- <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="581a777a866d78be6cb4192e46891e418930fc1b" upstream="master"/>
- <project groups="pdk" name="platform/external/clang" path="external/clang" revision="0f9f1869a4596b973fb6d65324924365d3cf5884" upstream="master"/>
- <project groups="pdk" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
- <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="8bdaf98eeb4dd0f7b8cae390cd18c097a9eb4e2f" upstream="master"/>
- <project groups="pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="5ad04c656aeb7cece332922bd67e4b9bc08acc81" upstream="master"/>
- <project groups="pdk" name="platform/external/crcalc" path="external/crcalc" revision="5559610bea3b267abef3273868f2d6b8c01409a5" upstream="master"/>
- <project groups="pdk" name="platform/external/cros/system_api" path="external/cros/system_api" revision="d51655f606e0057f5fadcd17eb5ce1c1a5dcddcb" upstream="master"/>
- <project groups="pdk" name="platform/external/curl" path="external/curl" revision="f0f7cd5b375b317e7eef65b6573902c04ee80ecc" upstream="master"/>
- <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="671fbc2903016f5966c032a917caf3a800088ca9" upstream="master"/>
- <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="da231f19abbe6eafee0d1ac3d35351d281998a05" upstream="master"/>
- <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="d352976796a4ef22a8ec1e8056f51633c4b07d90" upstream="master"/>
- <project groups="pdk" name="platform/external/dexmaker" path="external/dexmaker" revision="9e6367a9399bb671b1b474bf21898d2ca68b6357" upstream="master"/>
- <project groups="pdk" name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="df64c96f01b3dd2a823d6aa788653c3bedd1efda" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/blktrace" path="external/blktrace" revision="d345431f16b8f76f30a58193ff2b26d5853e1109" upstream="master"/>
+ <project groups="pdk" name="platform/external/boringssl" path="external/boringssl" revision="c9df3a1ff1d0cddebf2fc32ad8a03a429c0e834c" upstream="master"/>
+ <project groups="pdk" name="platform/external/bouncycastle" path="external/bouncycastle" revision="a7f9095ead5e2af9612c8cae35f6e11a2b8e1d77" upstream="master"/>
+ <project groups="pdk" name="platform/external/brotli" path="external/brotli" revision="018ee547112ca1327af9fbaa6c21b5e6ac063357" upstream="master"/>
+ <project groups="pdk" name="platform/external/bsdiff" path="external/bsdiff" revision="bfef6ef1022fe24a80387d34cebf16453451f1cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/bzip2" path="external/bzip2" revision="a0df5d74ad301ea4dd1ec4214c32d9fd9ea52de8" upstream="master"/>
+ <project name="platform/external/c-ares" path="external/c-ares" revision="9f1b2827cb88c58a80c470a4bddb2485677ec57f" upstream="master"/>
+ <project groups="pdk" name="platform/external/caliper" path="external/caliper" revision="fc57a58a3420e4f3e2ab86233ef932efa266ec1e" upstream="master"/>
+ <project groups="pdk" name="platform/external/cblas" path="external/cblas" revision="08f39d72ed0f0c17308637a60018207829fed8e0" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/chromium-libpac" path="external/chromium-libpac" revision="8c47eebd81c996f17198edb2fa504c04d48d567e" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace" revision="88bb68148bd0510a1564d673421f051011b4240c" upstream="master"/>
+ <project groups="pdk" name="platform/external/chromium-webview" path="external/chromium-webview" revision="955f673b041b96ffc383190797c3613ac8dba844" upstream="master"/>
+ <project groups="pdk" name="platform/external/clang" path="external/clang" revision="bbe7bb92eea6c3062b216be8d1d3fac14a62b2fa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/cmockery" path="external/cmockery" revision="9199c7bfafefea32d1884182fa655b6e4578c1c4" upstream="master"/>
+ <project groups="pdk" name="platform/external/compiler-rt" path="external/compiler-rt" revision="1a323e5268f1a0c647db8e1a96c486f9aeecc1dd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/conscrypt" path="external/conscrypt" revision="222a789123e327fb769ac10a22d5982648fc05f8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/crcalc" path="external/crcalc" revision="533bb2355d259f67743727a22a1ab974d3ca4524" upstream="master"/>
+ <project name="platform/external/cros/system_api" path="external/cros/system_api" revision="474f439bf34e678bf3b78e2362bc85db9174b882" upstream="master"/>
+ <project groups="pdk" name="platform/external/curl" path="external/curl" revision="98b0d14797cc42e32d18b289fbdc47dda1eaaeff" upstream="master"/>
+ <project groups="pdk" name="platform/external/dagger2" path="external/dagger2" revision="30909f76ef2849d6e048344b5f57588139acb181" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/deqp" path="external/deqp" revision="3a1de9094d072324ef2c16a21c1893b881c2a8e7" upstream="master"/>
+ <project groups="pdk" name="platform/external/desugar" path="external/desugar" revision="14905bc6836b805fd3316e11368d7aad2907ecbb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/dexmaker" path="external/dexmaker" revision="a494e0736c1e97daf2e9d1df982efdb3bb8adca0" upstream="master"/>
+ <project name="platform/external/dhcpcd-6.8.2" path="external/dhcpcd-6.8.2" revision="54d1fc2d574d21f788abb64b10c9a6352eba0b65" upstream="master"/>
<project groups="pdk" name="platform/external/dlmalloc" path="external/dlmalloc" revision="6661f3ca66b55d8f5a57b96fec97efaf8f3897a5" upstream="master"/>
- <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="4cafaba2321b7b74f81c621aa01112156258adb3" upstream="master"/>
- <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="00d11a4477637375322692d0c5603c60d38c6f1a" upstream="master"/>
- <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="f381ec7f6fca0618fb01231a758402597b1239e3" upstream="master"/>
+ <project groups="pdk" name="platform/external/dng_sdk" path="external/dng_sdk" revision="1ab71199fe8010a37492d46e324f171ce577e54d" upstream="master"/>
+ <project groups="pdk" name="platform/external/dnsmasq" path="external/dnsmasq" revision="d37f567618c3f5266d82b971a505f5a214a03f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/doclava" path="external/doclava" revision="e15c52f95e09391629d4046a1ceb296ae29710cd" upstream="master"/>
<project groups="pdk" name="platform/external/donuts" path="external/donuts" revision="005389fb31a67841b5de42f0d25fbfab843e208c" upstream="master"/>
- <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="e19443ea00d3b27622590b920819e53da68f7fda" upstream="master"/>
- <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="cbfc5a5d6bd7f8e3913560d8d0e5fdf865773fce" upstream="master"/>
- <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="059f2d82efbcc733574b2b90dbf999280c04c4f1" upstream="master"/>
+ <project groups="drm_gralloc,pdk-fs" name="platform/external/drm_gralloc" path="external/drm_gralloc" revision="f2936dc85a5f92d4dcdfa7b46066c9cd64086720" upstream="master"/>
+ <project groups="drm_hwcomposer,pdk-fs" name="platform/external/drm_hwcomposer" path="external/drm_hwcomposer" revision="4b54b818477fb0650dc563cf9196578816c34597" upstream="master"/>
+ <project groups="pdk" name="platform/external/droiddriver" path="external/droiddriver" revision="5ef7dc3be02aedf00fc3cc3f59379d598e5c8817" upstream="master"/>
<project groups="pdk" name="platform/external/drrickorang" path="external/drrickorang" revision="8ea137d1086e621188f70ffac34a6ba8924af2c6" upstream="master"/>
- <project name="platform/external/dtc" path="external/dtc" revision="b1d8b2cd5e57a5c97bdd011624c06c40052b821e" upstream="master"/>
- <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="0e4687aea6893115b87e647db97e211c38beee30" upstream="master"/>
- <project groups="pdk" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
+ <project name="platform/external/dtc" path="external/dtc" revision="bea7af187e5d183b2c26ecc3366b1162c9f43060" upstream="master"/>
+ <project groups="pdk" name="platform/external/e2fsprogs" path="external/e2fsprogs" revision="944c4ea526024825eb874aa9a39cb11a6d4fd84b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/easymock" path="external/easymock" revision="8bc2748f2850c88ab6b86c6ceed1ce65bed5ee16" upstream="master"/>
<project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-basebuilder" path="external/eclipse-basebuilder" revision="076f46888ed346775b8efc564d7694063ef5eea7" upstream="master"/>
- <project groups="pdk" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
- <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="c905f05b1b1277cc5b913652b2d4a57da12b89f7" upstream="master"/>
- <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="2ed2550b8595fde721dbc6a12091609a598192af" upstream="master"/>
- <project groups="pdk" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
- <project groups="pdk" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
- <project groups="pdk" name="platform/external/expat" path="external/expat" revision="8954a5667c2941642b9f63bec3a0482a8e9eeab3" upstream="master"/>
- <project groups="pdk" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
- <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="85b4766bedbbe8b2dfdc23b401194c9dd3c60dd0" upstream="master"/>
- <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="b87f884d1ad7530a39318ddbe2f066aa1f268871" upstream="master"/>
- <project groups="pdk" name="platform/external/fec" path="external/fec" revision="b3e9d18f59759ff5407be13ef8c6d2e2a497305e" upstream="master"/>
- <project groups="pdk" name="platform/external/fio" path="external/fio" revision="138dfa04ca2e19c0f03b4d0b591ca2d5e3bad3df" upstream="master"/>
- <project groups="pdk" name="platform/external/flac" path="external/flac" revision="9654326e6af758bf25e50f15a7e7b9cff6755a78" upstream="master"/>
- <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="1ce26af6d14810a277a5f62a5619a372b93183cc" upstream="master"/>
- <project groups="pdk" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
- <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="613f720f08f579806a05f0e45927f4f9ff147885" upstream="master"/>
- <project groups="pdk" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="9d1e7e4558c8b53731ba1d06d33b5516934d1ff7" upstream="master"/>
- <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="2d71596ba7a5e2e9430683818f8800d8bea059e2" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="a6e0183cdd9f69b180b4adbd613e66772d9bc633" upstream="master"/>
- <project groups="pdk" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
- <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="74c716d37b9a39f55b7f18d7939e886c7f2c8881" upstream="master"/>
- <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="31bf6fed97629fd3420cda58a97469ec7e5389f0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eclipse-windowbuilder" path="external/eclipse-windowbuilder" revision="c533332008088ee5f61745b724361fbde5b7e770" upstream="master"/>
+ <project groups="pdk" name="platform/external/eigen" path="external/eigen" revision="a29a294104713629da49e50e1858a47b19ae97fb" upstream="master"/>
+ <project groups="pdk" name="platform/external/elfutils" path="external/elfutils" revision="86dd133095bb28f987e07319f22fa80fadf7281e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/emma" path="external/emma" revision="deb5711b2635ee9d332605e2e00b63b32bed6777" upstream="master"/>
+ <project groups="pdk" name="platform/external/error_prone" path="external/error_prone" revision="416b18dffadb4298024e93d2ede43d409f06ab2d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/esd" path="external/esd" revision="943c42b6f8e9afe821744aa4c039f4943ebf29f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/expat" path="external/expat" revision="1071d2dbae1310e7ffcf1f6dbaf096753e0de934" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/eyes-free" path="external/eyes-free" revision="16bd4c7a4d1bfe229068b637614dad7c48dd2ceb" upstream="master"/>
+ <project groups="pdk" name="platform/external/f2fs-tools" path="external/f2fs-tools" revision="27a6ad377c141f95ac208a0302a1a50cabeeff3c" upstream="master"/>
+ <project groups="pdk" name="platform/external/fdlibm" path="external/fdlibm" revision="3a719a81a9d31e1cadf5d68ac94f5bd9f01e41c3" upstream="master"/>
+ <project groups="pdk" name="platform/external/fec" path="external/fec" revision="040b198ed24f5b67eaa6415459c05d68453b19f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fio" path="external/fio" revision="e3c205cb93b9cc720589913df3b9150b1fb6e9fe" upstream="master"/>
+ <project groups="pdk" name="platform/external/flac" path="external/flac" revision="a44d56a9c4ad0093a1dca3e3be7ddb1905da2648" upstream="master"/>
+ <project groups="pdk" name="platform/external/flatbuffers" path="external/flatbuffers" revision="83d6225e9b642ea069023e45a943d3e7f916fb62" upstream="master"/>
+ <project groups="pdk" name="platform/external/fmtlib" path="external/fmtlib" revision="5dd1ef030977a657056a0a26a691f97d7878ea80" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/fonttools" path="external/fonttools" revision="fede58680958e96e6e8f61c3cc6282f798452c53" upstream="master"/>
+ <project groups="pdk" name="platform/external/freetype" path="external/freetype" revision="44d6b9bdc6cb90d7b0fa275dcf2be8631312ca9c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/fsck_msdos" path="external/fsck_msdos" revision="4103a4ab7d45b439b4f7297a2129a1ca45ec91dd" upstream="master"/>
+ <project groups="pdk" name="platform/external/gemmlowp" path="external/gemmlowp" revision="bcfadfee0f9d74b3ba93771948b32440a63e57d2" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/giflib" path="external/giflib" revision="db6d1840bcd6c13cc41456835127d6d7d1b0694c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/glide" path="external/glide" revision="31e64acd1e65045471124267a06241eff1f55d26" upstream="master"/>
+ <project groups="pdk" name="platform/external/golang-protobuf" path="external/golang-protobuf" revision="c42093045dafe0406269b36c2e35b3acd7da63ae" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-benchmark" path="external/google-benchmark" revision="1fa9c1ac24825098c622aec489155faf16a7a995" upstream="master"/>
+ <project groups="dragon,pdk-fs" name="platform/external/google-breakpad" path="external/google-breakpad" revision="4125ccd15f21dbae3d521d0298ce90f1fbc29bdb" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/carrois-gothic-sc" path="external/google-fonts/carrois-gothic-sc" revision="0062a10458d4c357f3082d66bcb129d11913aaae" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/coming-soon" path="external/google-fonts/coming-soon" revision="2c5cb418c690815545bbb0316eae5fd33b9fc859" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/cutive-mono" path="external/google-fonts/cutive-mono" revision="bce2136662854076023066602526ba299e6556b2" upstream="master"/>
<project groups="pdk" name="platform/external/google-fonts/dancing-script" path="external/google-fonts/dancing-script" revision="7b6623bd54cee3e48ae8a4f477f616366643cc78" upstream="master"/>
- <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="84cad11e5d8c3000472e8bb22dc698cf9b3c8612" upstream="master"/>
- <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="ff9b10309a390a7d631edc7808e129237972245b" upstream="master"/>
- <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="165c596ac3c69ecbc5a424ad9c1f1be6d44d0bb3" upstream="master"/>
- <project groups="pdk" name="platform/external/guava" path="external/guava" revision="5000b35f73a42ddb5554aa4c1c5ffea9c999741d" upstream="master"/>
- <project groups="pdk" name="platform/external/guice" path="external/guice" revision="411312e790280e72c08e018134d7e3a0e7ebab76" upstream="master"/>
- <project groups="pdk" name="platform/external/hamcrest" path="external/hamcrest" revision="0d446c0a6f5ab27bf24d8e046f1d03ce40f09594" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="6dd5ce2e32bc4a474b6ae7f0c3b6059a995ea5a7" upstream="master"/>
- <project groups="pdk" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="dedeff64279b77bafff72b6d866efc93e829b4ab" upstream="master"/>
- <project groups="pdk" name="platform/external/icu" path="external/icu" revision="f891f489da942890fd01c83b860b6448b77ce042" upstream="master"/>
- <project groups="pdk" name="platform/external/ims" path="external/ims" revision="711f9d55979cfe28b19a502cbe13a4d7e7e674f0" upstream="master"/>
- <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="989b8c667872ae21ea536d6419a506706a1e89ed" upstream="master"/>
- <project groups="pdk" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="afbdf60e1d4cafe0f894fe8e8e5bfa49e47c80b2" upstream="master"/>
- <project groups="pdk" name="platform/external/iptables" path="external/iptables" revision="204461a170e92764b41512463f49ef4164bee2e3" upstream="master"/>
- <project groups="pdk" name="platform/external/iputils" path="external/iputils" revision="0e79d155b36fdedf6f02908f72d4d156dbe3b335" upstream="master"/>
- <project groups="pdk" name="platform/external/iw" path="external/iw" revision="6a3e9a164c98577c28c0c9b1b9a0fbe7d7436e47" upstream="master"/>
- <project groups="pdk" name="platform/external/jacoco" path="external/jacoco" revision="b1b164ac860eddaed3abfb819df73bfcccdaa327" upstream="master"/>
- <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="7adc960353812730b4fb15a72901056cf3b3c516" upstream="master"/>
- <project groups="pdk" name="platform/external/javasqlite" path="external/javasqlite" revision="ee41d81872eedc632f42bd231b95bc945690d159" upstream="master"/>
- <project groups="pdk" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
- <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="68545397d8332a61f800ce9617715a22445ed9a9" upstream="master"/>
- <project groups="pdk" name="platform/external/jdiff" path="external/jdiff" revision="62f4ca1f64eaeb0896416949d6120b912ac67d3b" upstream="master"/>
- <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="a6f685beacaa3f8da06cb28f38bb559eac7d4dda" upstream="master"/>
- <project groups="pdk" name="platform/external/jetty" path="external/jetty" revision="3077b6f9426ccafb6bd5c00a748e1d40af9e1ae5" upstream="master"/>
+ <project groups="pdk" name="platform/external/google-tv-pairing-protocol" path="external/google-tv-pairing-protocol" revision="c731915e80d9e2ccb755b97e7fdd280bbea07f70" upstream="master"/>
+ <project groups="pdk" name="platform/external/googletest" path="external/googletest" revision="dd43b9998e9a44a579a7aba6c1309407d1a5ed95" upstream="master"/>
+ <project groups="pdk" name="platform/external/gptfdisk" path="external/gptfdisk" revision="8c834de12a855fee178f037a36705e72fe981c67" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/guava" path="external/guava" revision="5d824723beff81b246b327386fdb458decfd2af5" upstream="master"/>
+ <project groups="pdk" name="platform/external/guice" path="external/guice" revision="2f4c6dfce39d38e64a6e4993a808270e16d7dc1b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hamcrest" path="external/hamcrest" revision="2c2a845e1e8fdda704e4f2ccaa335d69d043ebf3" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/harfbuzz_ng" path="external/harfbuzz_ng" revision="ea6cd46047ad211495e291edf75c4a9ee585639b" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/hyphenation-patterns" path="external/hyphenation-patterns" revision="ff853262e0f613e0ba2f677ae8b1f155544bb2ed" upstream="master"/>
+ <project groups="pdk" name="platform/external/icu" path="external/icu" revision="a6a68cfddd6e6af7bc4c6242ae596d7cb0f16936" upstream="master"/>
+ <project groups="pdk" name="platform/external/ims" path="external/ims" revision="12c79bb691c753c069facd0097293776bd7b56cd" upstream="master"/>
+ <project groups="pdk" name="platform/external/iproute2" path="external/iproute2" revision="842c7f0c1a62af00b79750de5b207c2782cbcb6a" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ipsec-tools" path="external/ipsec-tools" revision="16477a409310e8daa3ec5c8ecaa7a2f2d471fb93" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iptables" path="external/iptables" revision="8ae1dffe73609570ce73ab5430111a3d47400fb8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/iputils" path="external/iputils" revision="2857b8009e1dfc751ef0659c9ba7358a89f83c34" upstream="master"/>
+ <project name="platform/external/iw" path="external/iw" revision="63d8bad2a5a8a9b443595762233692c5f6a6d36b" upstream="master"/>
+ <project name="platform/external/jacoco" path="external/jacoco" revision="9ef5ef62baa610d324b392e06bac956b383e870b" upstream="master"/>
+ <project groups="pdk" name="platform/external/jarjar" path="external/jarjar" revision="2acaac5c909fffeac65f3de54134828d7ec2140f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javasqlite" path="external/javasqlite" revision="16ac73c020e99ce6ca0899915cbfb35858ce6b16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/javassist" path="external/javassist" revision="f7c4b954072e563b75f6910c25bb689bbf38a3d1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jcommander" path="external/jcommander" revision="501341b4efff9c378ac4003899dd064586231550" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jdiff" path="external/jdiff" revision="915f756d47a2d2e5b1b5249ef1a05ae83d4c0ff1" upstream="master"/>
+ <project groups="pdk" name="platform/external/jemalloc" path="external/jemalloc" revision="033b6fda4a854849db30955fd084158f6ce16c38" upstream="master"/>
<project groups="tradefed,pdk-fs" name="platform/external/jline" path="external/jline" revision="74812032f8d8eddbef387f18c96de9e5c38b8fdb" upstream="master"/>
<project groups="pdk" name="platform/external/jmdns" path="external/jmdns" revision="0c71647deb7f7835c473fd3dfb45943083e47794" upstream="master"/>
<project groups="pdk" name="platform/external/jsilver" path="external/jsilver" revision="b9b84920ba47ddf7f15baa01c56b28e3d3f951ea" upstream="master"/>
- <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="45f59951efef6cd2924738c39a5f52d61e06eb79" upstream="master"/>
- <project groups="pdk" name="platform/external/jsoncpp" path="external/jsoncpp" revision="ecd640d0acf7c93c5dbfc37702e4eedbc18aa850" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr305" path="external/jsr305" revision="333c5e0ea34930a10785f53e74dbe997d93ad2d8" upstream="master"/>
- <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="de30ee496a13d0f71d8ddaee1e247c3e8e43e58d" upstream="master"/>
- <project groups="pdk" name="platform/external/junit" path="external/junit" revision="2faf8f4ae953dd2e847536c2712bbc563e34949a" upstream="master"/>
- <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="b03560c32573b9057dc1daaf877501dbb4e16f8d" upstream="master"/>
- <project groups="pdk" name="platform/external/kernel-headers" path="external/kernel-headers" revision="ab0b76f533c12b642cfbe4adb6e601e340599ad6" upstream="master"/>
- <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="087bd70f9a816bc37d77ef71c0b8f4253e60169e" upstream="master"/>
- <project groups="pdk" name="platform/external/ksoap2" path="external/ksoap2" revision="3f3695df2e974811a5759d43f3532dcd9d6be26c" upstream="master"/>
- <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="f4a17ae216f420f5d46e8680d4aa9317e6a9a4d8" upstream="master"/>
- <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="a645153b0a97663636bacdc5527c0d304fa79657" upstream="master"/>
- <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="2dc254ac567d43b060356ed4d660aca64fdc14a2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="64dcb22b223e3aae866d44ff35dc3acc2a9c58e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
- <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="0601274935e7f632eb0d6ce0fd223b744349d20b" upstream="master"/>
- <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e1a8625038e715f0b14fd5466c02f0142673b1ec" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="2447373f182dbfeb47fb86c0f5a6ac5773c65ac2" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="0aea6aeca494754446dd1e5fe638fe68da128036" upstream="master"/>
- <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="c41479a1d7de7fe6e9cfbff9be21382f7b23ace7" upstream="master"/>
- <project groups="pdk" name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
- <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="90d90b27c0b82cac20deabac79e97e274856eaf8" upstream="master"/>
- <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="791d9b9fd9bd768bc81f5f224fb5fc2904035fa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
- <project groups="pdk" name="platform/external/libese" path="external/libese" revision="4dcd39f5fc3b5a33078dcd5ee698f08c7ae664e8" upstream="master"/>
- <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="596447c7ff2881a67e7082c905112584c3e61a17" upstream="master"/>
- <project groups="pdk" name="platform/external/libexif" path="external/libexif" revision="2431bfa79df74fbb6e30b77ab9f3d89c300d18ae" upstream="master"/>
- <project groups="pdk" name="platform/external/libgdx" path="external/libgdx" revision="5f9bb1dadc7e51a5fdb7171280366f8b3ec86eb8" upstream="master"/>
- <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="4a3459a3528b7f11cf09acfa2d2a1fb5142c1c2b" upstream="master"/>
- <project groups="pdk" name="platform/external/libhevc" path="external/libhevc" revision="5d3d1a0a65949b09035cc366429f7f85215c2731" upstream="master"/>
- <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="b8a887c09706633ac22ad6d13c9464b2ee539e77" upstream="master"/>
- <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="94b3caf1fecd5261e6929469924b1e25aaeca0ff" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsmn" path="external/jsmn" revision="228d04d8c2b1c918c702a8132eaf2048aa24ff5f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/jsoncpp" path="external/jsoncpp" revision="2aed88e521abb2b4e13966f73df8e753ac96f112" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs,pdk" name="platform/external/jsr305" path="external/jsr305" revision="f162f4b5d952208e4b6e0a7b2e1bf01058e429b4" upstream="master"/>
+ <project groups="pdk" name="platform/external/jsr330" path="external/jsr330" revision="d15be3f228885ce6ed2098ff2dcbf6c1085d83ba" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/junit" path="external/junit" revision="18fb5125096c703c1b2b83b79076a68dc6f1d743" upstream="master"/>
+ <project groups="pdk" name="platform/external/junit-params" path="external/junit-params" revision="3422818d91dfc550fe93355f6345c489d962c8f8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/kernel-headers" path="external/kernel-headers" revision="8357d9a3fa7a6ae0f7eda1bcd3ed69e46d2ae945" upstream="master"/>
+ <project groups="pdk" name="platform/external/kmod" path="external/kmod" revision="4082ee0d1ad5ce92c5ea6fdc5ca08e89cdd9801d" upstream="master"/>
+ <project groups="pdk" name="platform/external/kotlinc" path="external/kotlinc" revision="a69f6332d6fb99610d163b103338ca5c2e547805" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ksoap2" path="external/ksoap2" revision="9fdc4a6bb2b882bd1d6c822d2ad0c66585d66ba9" upstream="master"/>
+ <project groups="pdk" name="platform/external/libavc" path="external/libavc" revision="78002919cad58915616b635be1057a2324fbfd63" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbackup" path="external/libbackup" revision="2c4cc2cc8dcd77f5f72db5c5c36db808c781dfca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libbrillo" path="external/libbrillo" revision="548b90b26b43f5766297e4395da5bc9819a096ab" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcap" path="external/libcap" revision="d05a95e0607023d576ee17f3e7a2952174e33d34" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcap-ng" path="external/libcap-ng" revision="835f318b9785a70415980fba96c34ee5c6b7e415" upstream="master"/>
+ <project groups="pdk" name="platform/external/libchrome" path="external/libchrome" revision="46f0186dae6932d059428e4919a154dd5722d4b8" upstream="master"/>
+ <project groups="pdk" name="platform/external/libconstrainedcrypto" path="external/libconstrainedcrypto" revision="e2607d54fdb00903023e44a65220357ac66ffa30" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libcups" path="external/libcups" revision="8eacdf6145fd6b8d32ab431f867b08cf3e17e346" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxx" path="external/libcxx" revision="8204da4a163dd16bbbf051d9103d89b4ecc0c6d7" upstream="master"/>
+ <project groups="pdk" name="platform/external/libcxxabi" path="external/libcxxabi" revision="bb0e188762f569942766f8f25c9d38448c48cf9b" upstream="master"/>
+ <project name="platform/external/libdaemon" path="external/libdaemon" revision="e2f604066d97431c95856c73d7b9ee46b348d37e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdivsufsort" path="external/libdivsufsort" revision="6e3b2d3dcc906a64d84ec2567de89b204d4a0c7e" upstream="master"/>
+ <project groups="pdk" name="platform/external/libdrm" path="external/libdrm" revision="486358728120226bf5b48cc1ec7e14744bdaff33" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/libedit" path="external/libedit" revision="67e14dfc833aafa400a3aad8cb329cbaec503445" upstream="master"/>
+ <project groups="pdk" name="platform/external/libese" path="external/libese" revision="ed8aa2854c115ab49c0412135fe53326c1c2a621" upstream="master"/>
+ <project groups="pdk" name="platform/external/libevent" path="external/libevent" revision="707de56c3cbb0fcd33ec955c52a0fb1fdfacdab3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libexif" path="external/libexif" revision="60e63383329bdf3018696af6c9a1914e4ff0a920" upstream="master"/>
+ <project groups="pdk" name="platform/external/libgsm" path="external/libgsm" revision="95bc71811a7900d19723efa2dfc65eb7fc49c6d3" upstream="master"/>
+ <project groups="pdk,pdk-fs" name="platform/external/libhevc" path="external/libhevc" revision="36ff7b64f0c45d49ebe4f02828198c8ce4c1fcca" upstream="master"/>
+ <project groups="pdk" name="platform/external/libjpeg-turbo" path="external/libjpeg-turbo" revision="85c8e7e73d9944b6a9603d03cc9a304eb09b4f68" upstream="master"/>
+ <project groups="pdk" name="platform/external/libldac" path="external/libldac" revision="14e7308c1b1a04f6aa38a6fde0d8c3331a2ad050" upstream="master"/>
<project groups="pdk" name="platform/external/liblzf" path="external/liblzf" revision="a88b9629447deabe8697d2f8fd4cc70aa6e1b563" upstream="master"/>
- <project groups="pdk" name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
- <project groups="pdk" name="platform/external/libmojo" path="external/libmojo" revision="8ac9103e05b66812c25348943383f9365d1ce3e0" upstream="master"/>
- <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="a0f640e21e42f5905d760ec3df1dc5203d0d209b" upstream="master"/>
- <project groups="pdk" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
- <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="436dd293ff5503828a1fa33d725a1db87e4e03ed" upstream="master"/>
- <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="6cd19f65ff99f6deb836937c38fb9eedc113c101" upstream="master"/>
- <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="defabfc078080d60369d901d3c7662f05605cb29" upstream="master"/>
- <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="6a48629b7c7fc90326b2f959789828007b3cc184" upstream="master"/>
- <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="a7703b70699299f078a189e19b6915120cded732" upstream="master"/>
- <project groups="pdk" name="platform/external/libpcap" path="external/libpcap" revision="50a06a07f1dd408adf7607b76eaf02d0c254fe22" upstream="master"/>
- <project groups="pdk" name="platform/external/libphonenumber" path="external/libphonenumber" revision="9313c2ce2fb61213e66adcf8ab4893a5d9c48da1" upstream="master"/>
- <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="352e6a8ec05db372ccdfc80cb77de807d23e8432" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="76a0b9f6a9813311ddfd59aaa580339f36a2c510" upstream="master"/>
- <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="93d99bf31d081198030380a946f4c29e38159b25" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb" path="external/libusb" revision="b81e632687e2380716ced43d28f7c95987959944" upstream="master"/>
- <project groups="pdk" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
- <project groups="pdk" name="platform/external/libutf" path="external/libutf" revision="853ef375ba2ce430f5b13b556812b2d83ccc82e1" upstream="master"/>
- <project groups="pdk" name="platform/external/libvncserver" path="external/libvncserver" revision="d099c925eed901cedcb5f1b9079af45a3ca0e6b8" upstream="master"/>
- <project groups="pdk" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
- <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="8585b768902331df85f7d1bbbc11bee4715da97a" upstream="master"/>
- <project groups="pdk" name="platform/external/libvterm" path="external/libvterm" revision="f6cc826fe2eb9fc76fdf922d02ad86aecc5f1b18" upstream="master"/>
- <project groups="pdk,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="2975f91c5afcdc7c150e2db37430d958817270d0" upstream="master"/>
- <project groups="pdk,libyuv" name="platform/external/libyuv" path="external/libyuv" revision="7a6bee2e5623dcc471f49a283144fed44dfb3757" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="c33d1f8c4b98fa6aa24c67d484d31b58c0651933" upstream="master"/>
- <project groups="pdk" name="platform/external/littlemock" path="external/littlemock" revision="105f5b4352a348a3628b081f4906f5dbb8c120f6" upstream="master"/>
- <project groups="pdk" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
- <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="8cdd9f59ffb6bae793e50c7cfdb23e9eac0703c7" upstream="master"/>
- <project groups="vts,pdk" name="platform/external/ltp" path="external/ltp" revision="9686e7bddb36f2d7297456eaf5c9b7d89463abfa" upstream="master"/>
- <project groups="pdk" name="platform/external/lz4" path="external/lz4" revision="de7f627c7958b9847e0d9e6e29fcb566e3bb1dde" upstream="master"/>
- <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="39a0299cfdac41a2631cfdb4bbb637ffa66170fd" upstream="master"/>
- <project groups="pdk" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
- <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="71b85f6e70ac758f735338e8a1681dfe014af2fa" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="e855ba79dee7a2d4df11d72752e1079cd5e58f2e" upstream="master"/>
- <project groups="pdk" name="platform/external/messageformat" path="external/messageformat" revision="9e1e4dddc8aa0cae8279281488f8a6bf4f453192" upstream="master"/>
- <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="db19bfbfbdce0f2b86f53d36392e49cb8f1645d6" upstream="master"/>
- <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="bba8f4a328807772fc16027133a9d63e9185fab5" upstream="master"/>
- <project groups="pdk" name="platform/external/mmc-utils" path="external/mmc-utils" revision="6de31b2b8a09108f9b91bc12bee2b792f783dc62" upstream="master"/>
- <project groups="pdk" name="platform/external/mockftpserver" path="external/mockftpserver" revision="777eb7d351810721b2416c4e48fe08e4ce0476f7" upstream="master"/>
- <project groups="pdk" name="platform/external/mockito" path="external/mockito" revision="0211c64d5545015d76acda90d6013df67ec9124a" upstream="master"/>
- <project groups="pdk" name="platform/external/mockwebserver" path="external/mockwebserver" revision="d680f43b995aae01123ee6bc7adb690dafcc47fe" upstream="master"/>
- <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="68d0b5790fff5243aab59ae8108d7e69506ac4c4" upstream="master"/>
- <project groups="pdk" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
- <project groups="pdk" name="platform/external/mtpd" path="external/mtpd" revision="dfc7f34c62ee40f5ce47e0942021f96f62f937f7" upstream="master"/>
- <project groups="pdk" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
- <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="4b114fa241df177ec7fc36132d3bec20726c4f5f" upstream="master"/>
- <project groups="pdk" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
- <project groups="pdk" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
- <project groups="pdk" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
- <project groups="pdk" name="platform/external/neven" path="external/neven" revision="7a1bb8b2c5dfd9703c93a2ea09245091b14a92ea" upstream="master"/>
- <project groups="pdk" name="platform/external/nfacct" path="external/nfacct" revision="3872c41d0bfb0dbe6c37ea5db5cc1e1d7a0d7971" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-pkits" path="external/nist-pkits" revision="e79665e3657171f55a979ca558ebe3c3dbf108d2" upstream="master"/>
- <project groups="pdk" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
- <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="60e126f1c096b20d4a3685e1de1147b6595e9012" upstream="master"/>
- <project groups="pdk" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
- <project groups="pdk" name="platform/external/objenesis" path="external/objenesis" revision="30c85e8178b11799cf08ad21339f52eaa787a13e" upstream="master"/>
- <project groups="pdk" name="platform/external/okhttp" path="external/okhttp" revision="b53397b37a05fd50529810c726e7214cdc5b191e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="6acb1f4a6e68f80b1cb0182f3d334dd8607697b5" upstream="master"/>
- <project groups="pdk" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
- <project groups="pdk" name="platform/external/parameter-framework" path="external/parameter-framework" revision="aac080ded4d4d645bee26777f0a419b9a8a07880" upstream="master"/>
- <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="97f96c13a5b0c22e9827279eb0dd38e9c889f244" upstream="master"/>
- <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e4e9d1b6b387072f9071f896993a9cfe5481ab4c" upstream="master"/>
- <project groups="pdk" name="platform/external/piex" path="external/piex" revision="ac5a3090cb5b5c2aaa7e1c68c9a68fc4f5a38c26" upstream="master"/>
- <project groups="pdk" name="platform/external/ppp" path="external/ppp" revision="7e60466a0009f58aa09b60bf6dbb96cacd6cb829" upstream="master"/>
+ <project name="platform/external/libmicrohttpd" path="external/libmicrohttpd" revision="1e68f5d827a859ba3b7ab6a70a60247e0b96afa5" upstream="master"/>
+ <project name="platform/external/libmojo" path="external/libmojo" revision="d84255cc8594be661090ce2535f17a44f80f9916" upstream="master"/>
+ <project groups="pdk" name="platform/external/libmpeg2" path="external/libmpeg2" revision="46fd80678f5cd545e30daab588e88bc91a43ad19" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libmtp" path="external/libmtp" revision="7ed2065db3ab9851f47426f3a35ba7045ce528b2" upstream="master"/>
+ <project name="platform/external/libnetfilter_conntrack" path="external/libnetfilter_conntrack" revision="9e09f14b95885b73c72533a32b4ec86f84a36428" upstream="master"/>
+ <project name="platform/external/libnfnetlink" path="external/libnfnetlink" revision="1c3e0db7d701d8bed90e9a65c0d581552912f8ea" upstream="master"/>
+ <project groups="pdk" name="platform/external/libnl" path="external/libnl" revision="ed2f4fe16617ec81b4cd906e681051ff0ae9d3df" upstream="master"/>
+ <project groups="pdk" name="platform/external/libogg" path="external/libogg" revision="5bab317e01c15cdccde1ac550aac701f436518a6" upstream="master"/>
+ <project groups="pdk" name="platform/external/libopus" path="external/libopus" revision="aecd1e10da5835a2714ba212283d04549b5543c2" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/libpcap" path="external/libpcap" revision="7b7f0b469ad512b9b5c759344eb0663e7c2eb191" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libphonenumber" path="external/libphonenumber" revision="6b5ff49a91b66b137b210e4869e980d083683f34" upstream="master"/>
+ <project groups="pdk" name="platform/external/libpng" path="external/libpng" revision="772123003e7fb8268251b418f559f71d8d4c202c" upstream="master"/>
+ <project groups="pdk" name="platform/external/libtextclassifier" path="external/libtextclassifier" revision="5e5fa7f6ed116972ebccc123c2e49427a882f4c5" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind" path="external/libunwind" revision="dfc348fb2bf782fa558e4aa67298305743a63386" upstream="master"/>
+ <project groups="pdk" name="platform/external/libunwind_llvm" path="external/libunwind_llvm" revision="328ecd4d5f69480e18eb872759a41b7ec7217283" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb" path="external/libusb" revision="a439e228525c22a7a38ad26abb3e6d841612f7ac" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libusb-compat" path="external/libusb-compat" revision="759481ae400d02fe99488dcdcd653b4f8139a39c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvncserver" path="external/libvncserver" revision="ed7c226e0c0c22704da70c2cfe85d8a0043a3ca0" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvorbis" path="external/libvorbis" revision="dee2e0a12822ec62c89c2d7582f1a7d32cd0875b" upstream="master"/>
+ <project groups="pdk" name="platform/external/libvpx" path="external/libvpx" revision="811c563cd84877f5cab826756d977be33789c96e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/libvterm" path="external/libvterm" revision="a70e1c33cb5e1f298de2affa000950123656c4f6" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs,libxml2" name="platform/external/libxml2" path="external/libxml2" revision="6512e6efc03fa3bc9a1d708ae042fc33d0cab85c" upstream="master"/>
+ <project groups="libyuv,pdk-cw-fs,pdk-fs" name="platform/external/libyuv" path="external/libyuv" revision="018f68e1c2c6a2a7e1d8bdd33c4df444d4a8e552" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/linux-kselftest" path="external/linux-kselftest" revision="739c390a918655fcfe689e8c1f0737a9f117038d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/littlemock" path="external/littlemock" revision="4dd43c74801149ded3e18eaba7d43ff6dfa192c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/lld" path="external/lld" revision="26c9bb3b51a7ac4bc45f73d532a03cfd9982043a" upstream="master"/>
+ <project groups="pdk" name="platform/external/llvm" path="external/llvm" revision="dc848d20803a93ae04e836185fc82b3e38ea0c3b" upstream="master"/>
+ <project groups="vts,pdk-fs" name="platform/external/ltp" path="external/ltp" revision="36ef68ae9f9386cb99540726a8d73aaeb64501da" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/lz4" path="external/lz4" revision="d563c459a3290de6e72a05769bb34b6cc87e67a3" upstream="master"/>
+ <project groups="pdk" name="platform/external/lzma" path="external/lzma" revision="45d1ce03842801b212647d177d9a6c21726b80af" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/markdown" path="external/markdown" revision="06a8f8b914d477183f68b84424bce8ff4dae7e84" upstream="master"/>
+ <project groups="pdk" name="platform/external/mdnsresponder" path="external/mdnsresponder" revision="37e2a6912ab36679883d241375cdd774372f6ebb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mesa3d" path="external/mesa3d" revision="2ab56bb4804d4afc99ba6845978c8720068a5aa2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/messageformat" path="external/messageformat" revision="7941896999a8a623683b888fd39095f32a7f49b6" upstream="master"/>
+ <project groups="pdk" name="platform/external/minijail" path="external/minijail" revision="2acbec5a9a8b8c3c9d0eee268af7121e31d0cb63" upstream="master"/>
+ <project groups="pdk" name="platform/external/mksh" path="external/mksh" revision="5677920e65b7b1504aa355bece165f1d67c05a1e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mmc-utils" path="external/mmc-utils" revision="f105db5bd1934f0c3e5f74bbc9a5aaeac7a6bf2b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/mockftpserver" path="external/mockftpserver" revision="a98e55fca4d6aa55549f8c2c80034f2d04118cf6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockito" path="external/mockito" revision="ddc7186be0a984376dccb13ab3850787abe8e821" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mockwebserver" path="external/mockwebserver" revision="2440623105409d48ec0a3717bb6f3da711a0f15d" upstream="master"/>
+ <project groups="pdk" name="platform/external/modp_b64" path="external/modp_b64" revision="3df5466891f819567a709d03f08ac340bd678c48" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mp4parser" path="external/mp4parser" revision="88bd0c6cfa7fcfbbebcc15c2c565f714cb36b065" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/mtpd" path="external/mtpd" revision="cf7afdb28ea47ebe8a6b298a03cf89ba06ca333d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/nanohttpd" path="external/nanohttpd" revision="c6783c32331b3fe78ffd5077e7f180995d0e268e" upstream="master"/>
+ <project groups="pdk" name="platform/external/nanopb-c" path="external/nanopb-c" revision="dd38963ae7d67e64366ad8345a6ce072854e889d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/naver-fonts" path="external/naver-fonts" revision="91e6e9f94d1d769a8f742649674149ba98ce7d45" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netcat" path="external/netcat" revision="b023a43765b15f0b0fd5b52b7d8021f515c59c23" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/netperf" path="external/netperf" revision="e100a0c4105b94f7044b243287a5da22f5e8e4e7" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/neven" path="external/neven" revision="f03656c6632b57b4c52705847a7bcc96437e2ac9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nfacct" path="external/nfacct" revision="5df745ccb4ef5356a786bf63e075efd0ccaad333" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-pkits" path="external/nist-pkits" revision="fe530ae2c3d88eb5326151387028507b4949d751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/nist-sip" path="external/nist-sip" revision="8445067c3b53e5bd56c32f1c4fb688083c4f4005" upstream="master"/>
+ <project groups="pdk" name="platform/external/noto-fonts" path="external/noto-fonts" revision="c1172c51af9734ce03c0495c3a0a658590f51487" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/oauth" path="external/oauth" revision="49f3624a6d3307b640a012f15b94d04174473501" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/objenesis" path="external/objenesis" revision="fa27358374a5375586ac703a514860563323d94d" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/okhttp" path="external/okhttp" revision="9ac02268c482b7920263e6f04ccc67d412f66b84" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/opencv" path="external/opencv" revision="507669d9a3c8adb2b415488783efe10bf9a6b3a3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/owasp/sanitizer" path="external/owasp/sanitizer" revision="bbfb25464ff30c5a62dce351d719a8c533afb2a3" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs" name="platform/external/parameter-framework" path="external/parameter-framework" revision="3b04336f88873ec4b63717035c7a30d76da89a7c" upstream="master"/>
+ <project groups="pdk" name="platform/external/pcre" path="external/pcre" revision="2ea2c73314f3518103195cf9250893f9e9b7dc4d" upstream="master"/>
+ <project groups="pdk" name="platform/external/pdfium" path="external/pdfium" revision="e56ff935bcb3a395a841c069ef98c0077376d8b3" upstream="master"/>
+ <project groups="pdk" name="platform/external/perfetto" path="external/perfetto" revision="e0ccef982290b8353dcb9199a48a90b67bc51d8c" upstream="master"/>
+ <project groups="pdk" name="platform/external/piex" path="external/piex" revision="1ee57811ecdc88d3ed7b36f0c2b72dfcc86c8fd6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/ppp" path="external/ppp" revision="90da8c8f15db2c82aece6e4085aaf9c116d481f2" upstream="master"/>
<project groups="pdk" name="platform/external/proguard" path="external/proguard" revision="af893cdc1242e4cfbeeb10e2323f9a689a825177" upstream="master"/>
- <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="7fca48d8ce97f7ba3ab8eea5c472f1ad3711762f" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="181a615a16fd15caa50a2e6f729456e2c9d42e42" upstream="master"/>
- <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="9458f8e38d4fe0d58890c5867485dbbf2d538955" upstream="master"/>
- <project groups="pdk" name="platform/external/r8" path="external/r8" revision="30898dc8e86b34b7a06981c6d6c24e3f0fbc7ead" upstream="master"/>
- <project groups="pdk" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
- <project groups="pdk" name="platform/external/replicaisland" path="external/replicaisland" revision="23e53aa67dc788cd2fe0598eaf7c9f20eb93c392" upstream="master"/>
- <project groups="pdk" name="platform/external/rmi4utils" path="external/rmi4utils" revision="40eb2d785d3e367c01fc2a3d53820550e7f66739" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="797e01c269d344b03f6080d46926c91603465949" upstream="master"/>
- <project groups="pdk" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="25fa2dde3aacaeacb2797bcffddce96014f4fcc3" upstream="master"/>
- <project groups="pdk" name="platform/external/rootdev" path="external/rootdev" revision="1dd6771e0f2e7da8736c9b21603817bce0d55ea9" upstream="master"/>
+ <project groups="pdk" name="platform/external/protobuf" path="external/protobuf" revision="78b40ce73114edca9b97f4b8eb9cda85ffe2d24d" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython2" path="external/python/cpython2" revision="e41d4ced092815949ff47e5fcc80c367707426db" upstream="master"/>
+ <project groups="pdk" name="platform/external/python/cpython3" path="external/python/cpython3" revision="600f716d51b9501373f63e6081917289830754f2" upstream="master"/>
+ <project groups="pdk" name="platform/external/r8" path="external/r8" revision="223150d4ddd720205b644613541eefea2158a05e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/regex-re2" path="external/regex-re2" revision="79cce43a82abc1bc56c65de07a7df47d54e163a9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/replicaisland" path="external/replicaisland" revision="7d9b8c6fd062bc37ee2265010eed37786b76a324" upstream="master"/>
+ <project name="platform/external/rmi4utils" path="external/rmi4utils" revision="d45cae258a3d831cd035ccecb3daa763d26346df" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/robolectric" path="external/robolectric" revision="c35e9c5a25433d1e4beb65993bf8a326916fb2cb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/roboto-fonts" path="external/roboto-fonts" revision="0fcc0daf8155d1f44eea124faa7309b01c4fbaaf" upstream="master"/>
+ <project name="platform/external/rootdev" path="external/rootdev" revision="6fab99202fdae8c540312a9d62be21246176d061" upstream="master"/>
<project groups="pdk" name="platform/external/safe-iop" path="external/safe-iop" revision="cd76f998688d145235de78ecd5b340d0eac9239d" upstream="master"/>
- <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="a1026771ccb71c69a4b31d726473feaa32ab4e6a" upstream="master"/>
- <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="f815253f7724d207b311309fd8f340b151348b03" upstream="master"/>
- <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="7e29d17754156636a79c60f7ce195039b94d7197" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="a217f56dac15a71326445fa7f6a789ec00b22392" upstream="master"/>
+ <project groups="pdk" name="platform/external/scrypt" path="external/scrypt" revision="9737bb84c923faa0b3dfe7cdece17f1b84d42784" upstream="master"/>
+ <project name="platform/external/seccomp-tests" path="external/seccomp-tests" revision="c5c3309739e1178676139c0751f8ebdc8bcfca26" upstream="master"/>
+ <project groups="pdk" name="platform/external/selinux" path="external/selinux" revision="4a89b6358fa43dc1ec61d5788896c15be79d8abc" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/sfntly" path="external/sfntly" revision="313d3399e181bb1eb213cde006896c5ed253045c" upstream="master"/>
+ <project groups="pdk" name="platform/external/shaderc/spirv-headers" path="external/shaderc/spirv-headers" revision="b252c470366118af0db2b4395217bedffb4c2e01" upstream="master"/>
<project groups="pdk" name="platform/external/shflags" path="external/shflags" revision="c4876e01829b8cf110ee33267bb1bad1f8ebb51d" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="740dcbc14f4bb497082890c1c4a85c0a993120a9" upstream="master"/>
- <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="d0393a27bd6c37f8fcbbb4e687ccf0bd43eb953a" upstream="master"/>
- <project groups="pdk" name="platform/external/slf4j" path="external/slf4j" revision="b4eb5f69f088f53ede0b7ee4a1a3bf2c3ff58418" upstream="master"/>
- <project groups="pdk" name="platform/external/smali" path="external/smali" revision="78cf98bb8c439f99f06f7b609c5c533a9d41de68" upstream="master"/>
- <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="03d1dd1553534e717fdff5f7bed00b67dbb23431" upstream="master"/>
- <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="1163465de6c4b6c1816de74db60b28769cf5ac96" upstream="master"/>
- <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="95ad2973de15846e1f67c5c5c30eae877afb2ca4" upstream="master"/>
- <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a7d909edd14636c8934e1b61cce563ef9d29c477" upstream="master"/>
- <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="9ebe91915ecc1ca31c074c92e4f11b7625801f18" upstream="master"/>
- <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="39a32b46137c57b816e71d73438e4fac69b6b9d6" upstream="master"/>
- <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="393e365802711fb6969858f79d80104399d140c0" upstream="master"/>
- <project groups="pdk" name="platform/external/strace" path="external/strace" revision="222ec16d6073335c8bb5eb6e738ddc2df1c2cceb" upstream="master"/>
- <project groups="pdk" name="platform/external/svox" path="external/svox" revision="7e68d0e9aac1b5d2ad15e92ddaa3bceb27973fcb" upstream="master"/>
- <project groups="pdk" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
- <project groups="pdk" name="platform/external/tcpdump" path="external/tcpdump" revision="1aa1e7ffca235f716b36c0a4588f84e23ea1be38" upstream="master"/>
- <project groups="pdk" name="platform/external/testng" path="external/testng" revision="8f2e8231852f454b5903cf886be55e9f647cdd76" upstream="master"/>
- <project groups="pdk" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="7c703a6b307ae7c3ba69429ed0c71417e507faff" upstream="master"/>
- <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="6ded547e25cd1bbc20891d9c7d4653ff8f65b59c" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="ccc219c40a820afd30ad347c0e3d2bdbdf1df109" upstream="master"/>
- <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="513377fb55558e0b570d354398467a12204ffb06" upstream="master"/>
- <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="4307f4735e9a4e3189e8d43f7493bb677a4d06ba" upstream="master"/>
- <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="3f4a99df44648fad709708ee68e55bec9afafeab" upstream="master"/>
- <project groups="pdk" name="platform/external/tpm2" path="external/tpm2" revision="00f7bc755f76f483f6a59f917727339e089a9cc4" upstream="master"/>
- <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="75c45ed3b5a684fb5bd3f09d64cd242adcda0752" upstream="master"/>
- <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="680f240bda39c798480bef3bb36c671af1f575c1" upstream="master"/>
- <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="5a8be7ee6337367a1dcf11bdad865e7917519e46" upstream="master"/>
- <project groups="pdk" name="platform/external/v8" path="external/v8" revision="7bde41a362a5746e44e9efc2ae8d1843f39d875e" upstream="master"/>
- <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="84dd75ab14160e18d95f2f3ea6120c03ce8c429c" upstream="master"/>
- <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="0ad090ffa37b9a1e9a0063a4d4b808c6fe4809e2" upstream="master"/>
- <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="2da09a48dc4d5a3c585f897f256c2c6c5fa4eb5a" upstream="master"/>
- <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="86bc48f5ce1c93ae3af07a67a70b79647571516a" upstream="master"/>
- <project groups="pdk" name="platform/external/volley" path="external/volley" revision="3a1232594eb627e9e59b22406816648a55a3f2ae" upstream="master"/>
- <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="4c40acb97e6df4a5895877f81cde4e9c0704a95f" upstream="master"/>
- <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="e99d2e88295130a1874890b3b118969917de5a84" upstream="master"/>
- <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="3d524127baea097e01517db9ca1362910d016daa" upstream="master"/>
- <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="14c5ecd85f3fd6a703a8bef710690246c8dd42bb" upstream="master"/>
- <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="1187a7bf7b612a8c09b70e65ea52351a1c5c731b" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="1d7192fe0d2f788f8f150899c58b86c5ff10456a" upstream="master"/>
- <project groups="pdk" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
- <project groups="pdk" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
- <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="03e7a3eae664d9ee1862b5f152310d17ae5c7428" upstream="master"/>
- <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="30595680d975bf98dd62e3c25d16562ab33c3d4d" upstream="master"/>
- <project groups="pdk" name="platform/external/zopfli" path="external/zopfli" revision="b36f966df9e7767a6b0aeb00fea29af0c57c89be" upstream="master"/>
- <project groups="pdk" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="f402866c6aab58d8f991f1122976714caebf7eee" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="f44ebf5fcba4dc5f7021a3b72a8f26b11ae23db2" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="5950103a67264d36e0c5c65330604916e462714d" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="829ab4b9b5a97eccc3f7662f8211e608a5db6ec0" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="017df777151c838f217f526662a0c4675a576c57" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="15281a01df0a5892d818080f1df669bdb8a319f7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="d2ea93572bd276e4b5b9bd86887603a35f9a0f5b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="b9d30cfae90bd5584a8e7926ec6d938ce323e0fd" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="71cca93f32991989369fef6a7ba1a96d6010e7a3" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="3d53a93c79beb608ca52f7e1ffbf2fc7d9c3722f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="6450225f3eaf865b0838e84c4656f6dd6048d87b" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="d4a35a67a35e8dd2d03818e0cafa6e0271879b87" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/skia" path="external/skia" revision="d9ead8a8b93aac3131f453526865beaff2251ac3" upstream="master"/>
+ <project groups="pdk" name="platform/external/sl4a" path="external/sl4a" revision="506079aa4445d378d1b8699c337436fc0c6570fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/external/slf4j" path="external/slf4j" revision="63b140791fbb0bceabc496bdd29e108d9597b044" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/smali" path="external/smali" revision="a0f3b5890f2775f40456cf9514124285607acd59" upstream="master"/>
+ <project groups="pdk" name="platform/external/snakeyaml" path="external/snakeyaml" revision="462c5b2ece22a176d8f7ce81e7321a877e891815" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonic" path="external/sonic" revision="a2f81e8e1f8c67a888b0e56dfc2f07e7e2030575" upstream="master"/>
+ <project groups="pdk" name="platform/external/sonivox" path="external/sonivox" revision="4c1426c96fd8848540aa903069b04afd29364ca0" upstream="master"/>
+ <project groups="pdk" name="platform/external/speex" path="external/speex" revision="a5c452a7a5c5fd5648926eeb6d09085d428e6c77" upstream="master"/>
+ <project name="platform/external/spirv-llvm" path="external/spirv-llvm" revision="cddc2024e95c5601bffb7878ed352b56ccd55747" upstream="master"/>
+ <project groups="pdk" name="platform/external/sqlite" path="external/sqlite" revision="7ecbb7ccdd9049fc30874fc89fa6813dfed0b365" upstream="master"/>
+ <project groups="pdk" name="platform/external/squashfs-tools" path="external/squashfs-tools" revision="096dd9a722334f14a48b3888390c4d1c6d3ca1a6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/strace" path="external/strace" revision="0d1c7e2b48b1fc2437f02ae25451dc2550e3ab3f" upstream="master"/>
+ <project groups="pdk" name="platform/external/stressapptest" path="external/stressapptest" revision="ea469443e9c2cd1fda87188df2b1ffe0e30656b2" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/svox" path="external/svox" revision="1416c244af01c9b4b1952bae1b84c6a347a68b2f" upstream="master"/>
+ <project groups="pdk" name="platform/external/swiftshader" path="external/swiftshader" revision="0781219b0b2e38ab4ee4dfe24b038052cefcd61e" upstream="master"/>
+ <project groups="pdk" name="platform/external/syslinux" path="external/syslinux" revision="76d05dc695b06c4e987bb8078f78032441e1430c" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tagsoup" path="external/tagsoup" revision="9c02d9f506855965ec513685788890dfc856a5bc" upstream="master"/>
+ <project groups="pdk,pdk-cw-fs,pdk-fs" name="platform/external/tcpdump" path="external/tcpdump" revision="5c80f87b56474c42c598880611a29ae013bef07a" upstream="master"/>
+ <project groups="pdk" name="platform/external/testng" path="external/testng" revision="2d09ec828c313edd6f9f5021c9b166854d742521" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/timezonepicker-support" path="external/timezonepicker-support" revision="99e91a76fd74bad10266623d67cdb98d011f709e" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyalsa" path="external/tinyalsa" revision="72ec97a21e4dc50c1e247c7bfeb285475fb90036" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinycompress" path="external/tinycompress" revision="846573ce25e334e2709b3b4d7c5ab39d0a2b3bec" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml" path="external/tinyxml" revision="bd3c8f83c2149b809adb54dcbfd430e49a008bed" upstream="master"/>
+ <project groups="pdk" name="platform/external/tinyxml2" path="external/tinyxml2" revision="2b6bc2052f4a70363ad8660786b6c1077671cd9b" upstream="master"/>
+ <project name="platform/external/toolchain-utils" path="external/toolchain-utils" revision="18caef1edd870ff3850fe2c417bbcec00c2ba7e0" upstream="master"/>
+ <project groups="pdk" name="platform/external/toybox" path="external/toybox" revision="89bb822f3e268237e8f31eb7276f72f58d616f70" upstream="master"/>
+ <project name="platform/external/tpm2" path="external/tpm2" revision="0cd05a180254e631b783b3100beecd90bb93fea9" upstream="master"/>
+ <project groups="pdk" name="platform/external/tremolo" path="external/tremolo" revision="38127ca33ab9436168c8595ee02233b1dc694a71" upstream="master"/>
+ <project groups="pdk" name="platform/external/turbine" path="external/turbine" revision="5ce188f8133ddf5bb8b598857b287255cffd8f6e" upstream="master"/>
+ <project groups="pdk" name="platform/external/unicode" path="external/unicode" revision="aa5100a5dfae7ac21df1ac13749faa55cf9f48df" upstream="master"/>
+ <project name="platform/external/universal-tween-engine" path="external/universal-tween-engine" revision="efe8193526dea3b430aab4cf6d9a6c3d280ea5d3" upstream="master"/>
+ <project groups="pdk" name="platform/external/v8" path="external/v8" revision="37a3083841acc8d69e78889991dd4e6092f77445" upstream="master"/>
+ <project groups="pdk" name="platform/external/valgrind" path="external/valgrind" revision="523778cf4342740cca740f6756a204b61bf268b1" upstream="master"/>
+ <project groups="vboot,pdk-fs" name="platform/external/vboot_reference" path="external/vboot_reference" revision="936bcaa501354e5ea008aa3088fd3852b49e418f" upstream="master"/>
+ <project groups="pdk" name="platform/external/vixl" path="external/vixl" revision="be06b8069e728a56f4f801e4748569a5de6cea06" upstream="master"/>
+ <project groups="pdk" name="platform/external/vogar" path="external/vogar" revision="737bce336c208129af1947ab22bdd964bd7ebb90" upstream="master"/>
+ <project groups="pdk" name="platform/external/volley" path="external/volley" revision="2021ca6a6c3fa80646220cb97746f0b1cd3ae103" upstream="master"/>
+ <project groups="pdk" name="platform/external/vulkan-validation-layers" path="external/vulkan-validation-layers" revision="727ecf10b5c219bf14c82bd1e58d856861f0cb86" upstream="master"/>
+ <project groups="pdk,qcom_msm8x26" name="platform/external/webp" path="external/webp" revision="75f26557017b2859b054802100a334552d3497dc" upstream="master"/>
+ <project groups="pdk" name="platform/external/webrtc" path="external/webrtc" revision="60c71f62eacd925c491863be665dfea23331a6f5" upstream="master"/>
+ <project groups="pdk" name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="f7bcce468f1c1d8b2ba61744c305b29f46ce34e9" upstream="master"/>
+ <project groups="pdk" name="platform/external/wycheproof" path="external/wycheproof" revision="46d28ac44a242d84d610a294a640266d3b0e033b" upstream="master"/>
+ <project groups="pdk" name="platform/external/x264" path="external/x264" revision="7bf0b975cdfd5692a4598ab09e1258abe5ea5fff" upstream="master"/>
+ <project groups="pdk" name="platform/external/xmlrpcpp" path="external/xmlrpcpp" revision="c79d4eae757a81270915c2a7cf01c81b8d42785e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmlwriter" path="external/xmlwriter" revision="e95d92246ee35273dde2bee8b00485cc14c12be5" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/xmp_toolkit" path="external/xmp_toolkit" revision="42ea4dc6d1fc2206a7778029070ed9213e3b0fbf" upstream="master"/>
+ <project groups="pdk" name="platform/external/xz-embedded" path="external/xz-embedded" revision="eb4f490242a36248365747f532c12b6621009210" upstream="master"/>
+ <project groups="pdk" name="platform/external/zlib" path="external/zlib" revision="3ff546926898d7d12b0b3915e735d1b9306e2076" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zopfli" path="external/zopfli" revision="f1db9c86a449024aadb8664e648227502018ac0c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/external/zxing" path="external/zxing" revision="fedf8f2d8099bf7bb85dc3db8699343d56617deb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/av" path="frameworks/av" revision="16f2c1559c5722a6cd69fef3c17dc5756ba73fe6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/base" path="frameworks/base" revision="a47e513464a473b135236df41a88acbf1ce460e4" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/libbcc" path="frameworks/compile/libbcc" revision="2f3380574eaf140c22603d061d5576e8a874b33e" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/mclinker" path="frameworks/compile/mclinker" revision="f14c19b75cb83750d70b87b3f766551d228931cb" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/compile/slang" path="frameworks/compile/slang" revision="b20cc6ffbc544ca65984f332239bf3eda03142d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/data-binding" path="frameworks/data-binding" revision="0bb88fe21d26e675ceaaf455b46e74bbef5f6e03" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ex" path="frameworks/ex" revision="77dfa2a9b4c5acafa45d7f09bd95dc44da54fc4d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/hardware/interfaces" path="frameworks/hardware/interfaces" revision="61ac1cf55fbaef1f72cf38de6fd135597e8f2f16" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/minikin" path="frameworks/minikin" revision="26886917cc4b1e7b5daa1de182adaeb56ceb4a14" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/ml" path="frameworks/ml" revision="00cee902ec6ac3d80f3dab80097dbf13e0a475d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/multidex" path="frameworks/multidex" revision="afb74c2dfc474e50b2a0d3e7fb0ccba747681953" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/native" path="frameworks/native" revision="625d6a8cd8e093f85aea394865c970997ca33767" upstream="master"/>
<project groups="pdk-fs" name="platform/frameworks/opt/bitmap" path="frameworks/opt/bitmap" revision="a0d4e3108663202564a6833b76770075b8e5b767" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="991e0444ed6edb1a77b0feae73c14e2a886cbf0d" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="886d7d1277b82347c30ec5d79ba1576680947bb8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="02ced36ad1e062e79397296ebd1dc760870a4e42" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="c1d5eb2d31fb6a74ed129722754139c759aedbe8" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="5348c906911a9ae65b165023e9e4ce45eee05c02" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/bluetooth" path="frameworks/opt/bluetooth" revision="9de9c5d49aaed7083ae886df6c61750529e51751" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/calendar" path="frameworks/opt/calendar" revision="3f01563afad6b3d2f0546a6260ef958a8173deb6" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/chips" path="frameworks/opt/chips" revision="27b256c8555b93cc69ca962051a8fe12b769efdc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/colorpicker" path="frameworks/opt/colorpicker" revision="578f24e997333479fe5ff697d65e994033a62679" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/datetimepicker" path="frameworks/opt/datetimepicker" revision="433cb3227c83234b2c58f3a8cf320bb441163daf" upstream="master"/>
<project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/emoji" path="frameworks/opt/emoji" revision="92eede13edbf22b501edb9aeb92366f91eab9781" upstream="master"/>
<project groups="pdk-fs" name="platform/frameworks/opt/inputconnectioncommon" path="frameworks/opt/inputconnectioncommon" revision="3baece9b20fa480da46d860acd7320fd9eee3386" upstream="master"/>
<project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/inputmethodcommon" path="frameworks/opt/inputmethodcommon" revision="990fcb1a6dbb5d1204cc8ec86e4bc3f691f4aeeb" upstream="master"/>
- <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="264bef96c82961029702fcf8e12b0fddfa0d09ab" upstream="master"/>
- <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="ff0979256d1a67a62c726d6fe15264c496990605" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="2e09c0ba8a11ee629a85582413598c60cca09e8e" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="75f798a125721ddd046389c052eaf9c6ddf44575" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="c0793686e13dafc2f45b0ad3e079f707938c6534" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="2cce48fde424bd078f024d5ddc7c564ca1161e2f" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="39443c82847983e81fb08422b5cf305153e9e4c7" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="e344fd847c154f2d0680bf1089390326d634d847" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="15d297d8ac4664e4a491448d9c15158ee51714f9" upstream="master"/>
- <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="8901edffd17d9d5cdcb7d09e4f94aa3b3ecc71c5" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="684e045dc0efca4d5a8f0ed4b28036444ff9385f" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="35975286092f329186f66cf346eb6b0dff3c2e61" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="7bfc4444b48f1f046d50fc799a3bc64fc8e3c7df" upstream="master"/>
- <project name="platform/hardware/akm" path="hardware/akm" revision="7889f98849ad3913586904e00d91b32cc0ceb75b" upstream="master"/>
- <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="1ed4bedf4af755edc61bccb8f468a0df008dcf1f" upstream="master"/>
- <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="5c73d53b0f5ea0e9259c48f40dca3ca9e58dfb3c" upstream="master"/>
- <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="89639347f950e29403fb78513fd6ffb75bf03942" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="218f0d6bc9532d0b707ea325fd96998249fe47bf" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="a644e4f384a7bd2afa4460da3a9f7951e9fa205e" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="9d15c1c031fdf9cd4fa153e76245d7a5f8b82ed8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="feff90bd79e7152d06f4275c30209af2826ae8ba" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="ac747113d4f6739b1462ca7fb40f2091691e209b" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="3db8bb9d44eef64553a88fdc2698ef3b593c49c7" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="6b9b06d89fd0e01037d3138c71886f2c315ae9ee" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="760b9713c84566e6a3a39d114d346d20389f47a8" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="8c2ae7ccfd78fb4efaf4c0c61a697f2075584934" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="aed9716b5467e75728f761ac75a4ba5ca3c51ea0" upstream="master"/>
- <project groups="intel,pdk" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="7407927b0eda431b7d817cb9d78189f335f509b1" upstream="master"/>
- <project groups="intel_sensors,pdk" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
- <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="6ef70c9040773aa501ee54b54efc15a7ea61b25f" upstream="master"/>
- <project groups="invensense,pdk" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="7de0e9ceae69ada80a6c5a7b4c0c3bbdd83e012a" upstream="master"/>
- <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="483a68f68a3f7f115f8909d663e93edaf89762f5" upstream="master"/>
- <project groups="marvell_bt,pdk" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
- <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="ba9bce36176b05695bd042acadc4a254ab911872" upstream="master"/>
- <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="6007fe6af3f7eb0c6b5fc3cab3c0f0cf5a7b50fe" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="5e2825785169ae647e80ce48ac814abe2ca57532" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/camera" path="hardware/qcom/camera" revision="383b6cb93b5952c2a87b3ea5ce2be50f006dd395" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="cc379d116231083e1b804fea9b0ef52d9e105ae1" upstream="master"/>
- <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="42ea1de6807fa5885f18cbd6c5fd96f80395fcea" upstream="master"/>
- <project groups="qcom,qcom_gps,pdk" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="45c0574442a01c2f6a9ccb2044b6f30c7ad288e4" upstream="master"/>
- <project groups="qcom,qcom_keymaster,pdk" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="3587a1a811c7baa8736d6cd54b8895370c4bdb58" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="63abe022daf627edac121f5c389d7f660db547ac" upstream="master"/>
- <project groups="qcom_msm8960,pdk" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
- <project groups="qcom_msm8994,pdk" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="60aaa00b2e0d537c0f51631dd88d919fc1baf439" upstream="master"/>
- <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="c552e34d90d0ff2b69660943c2060f17b5d59eb9" upstream="master"/>
- <project groups="qcom_msm8x26,pdk" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="5c60d76743ed98e7082b7f72927c17a7b86e0218" upstream="master"/>
- <project groups="qcom_msm8x27,pdk" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
- <project groups="qcom_msm8x84,pdk" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
- <project groups="qcom,pdk" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
- <project groups="qcom_wlan,pdk" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="ec9deb6e65d7c7816083d925255bbaefe16e4778" upstream="master"/>
- <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="78b80ee72d80793766a4ff91f1c11f96553108bc" upstream="master"/>
- <project groups="pdk" name="platform/libcore" path="libcore" revision="6ea6973dc177bb57a4558cb6203b4b27a20a8d1e" upstream="master"/>
- <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="9af782e03d4f2e736a85e2a7d645e68f865c53d4" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="0aa0611f9c6775575da56a1746fef1cf68267b0e" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="a13d5ea7ffaa26b6def0928cb62177009e375373" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="ffc5f72f39de7f9bc956ab29d087596d0f55ef70" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calculator" path="packages/apps/Calculator" revision="e1bda28f1545111ba7734577f23e194bf3db3f5f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="2bbf7b8414ebcff2207b08224d8913241a766a5a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="8690a7317dcf64ece731e0f9e5fb2cdfb123b115" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="46d5820744888866cab227b38eaae21b6f93a39a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="dea5466530b3e1941aa83a556dac45490f12a85a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="7562fee50a9db5afa94786f1d3acb1f0452e3ea7" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="41e553f6ec13e860694a2790cea82a4300b6703e" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ContactsCommon" path="packages/apps/ContactsCommon" revision="c59284acd9283f2274fc18fe69ea9d08cf1245d4" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="b89bbe70df270c344123d7ce2bcecf1a84c399f1" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="85b25ee8ce0c5d19b53963c985869100282b55d1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="8e49b42b6fde177fb242da12bb05365ef03362e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1239cd59a0f4dfd0a96e1a83b8871bd2b18358c6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="b7282555b3b99fc9aa98b6c807662fa096c80e3c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="7c359e389457d7cb7cd4f696608355beb3fa13f0" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="ae5a3067f51cee6cfeec73d56815892bb3f6c4de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="5ffe93060777b92f221adbd0ddc67b9479852d80" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="f19c4a10890cafb17ceaf68cda835dc24aad455c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="64b7df195d2bfdcc41579e9ef5f3b49afde18116" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="44c1afdc7fe9f4420933ad0c9fd824931179ca27" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="7c35c64a9d5ca913fb160df63c033000915639f8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="a26fc3fd03f45851807a7f45d70817f6c094d0e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="2a68a11b2c9156f9f9747fe0b974d0baca157706" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="7b2c6ed6a50b10b698f0b0251ac3a9b532432d72" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="75df705a0f4e7f36050ea68fa8695325f2a691d8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="035fa0123d87b48554cbd294ee9681b25eb7049b" upstream="master"/>
- <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="af45ef4f1a786a3f1d23e9319dcb14eff0673868" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="01e429c08e51291315890de9677151a7e0b6ad35" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="0d467d56ce68a1bc26d721a5c3b9a6caf98aadb4" upstream="master"/>
+ <project groups="pdk-fs" name="platform/frameworks/opt/net/ethernet" path="frameworks/opt/net/ethernet" revision="230c0aae03841b1147e75bbd68dcc4feacded6f6" upstream="master"/>
+ <project groups="frameworks_ims,pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/ims" path="frameworks/opt/net/ims" revision="236b6f319ec913b241591f69d45684e8173b6a5e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/net/voip" path="frameworks/opt/net/voip" revision="07e4fc6758c6c8053dafcbd1bbc03b163647081d" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/net/wifi" path="frameworks/opt/net/wifi" revision="e436be523fdfaca40084c68d729f74e97047a747" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/photoviewer" path="frameworks/opt/photoviewer" revision="ca71bde33a57b9c0384fd185aabe41653806666f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/setupwizard" path="frameworks/opt/setupwizard" revision="eaabb4f5914ace1a775675acc4f6d73a3ac5f9a2" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/opt/telephony" path="frameworks/opt/telephony" revision="0e454d9c78888ca761caa7069f5791b29db78afb" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/timezonepicker" path="frameworks/opt/timezonepicker" revision="34864043247588c0a1cceabf127fcf009ee74a9f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/opt/vcard" path="frameworks/opt/vcard" revision="8ed59aea836a09915c3d8cbf639627ad4f8120ac" upstream="master"/>
+ <project groups="pdk" name="platform/frameworks/rs" path="frameworks/rs" revision="61019c7e42067347dfaaf42f9475af5d1413dcfd" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/support" path="frameworks/support" revision="cfa630e5921ae7bc64114b07047e0822ef9ca0fe" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/webview" path="frameworks/webview" revision="f205dee72d0bacf11b373c1bdaa4dcb049f9bdea" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/frameworks/wilhelm" path="frameworks/wilhelm" revision="29862d783a985bc0c46de45253010b8ce4e0ea7d" upstream="master"/>
+ <project name="platform/hardware/akm" path="hardware/akm" revision="dabf66d32d1b1492e668f595a84b5221ac67e687" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/broadcom/libbt" path="hardware/broadcom/libbt" revision="50b90f45144aacb1f67c9c18993be9aba82bc747" upstream="master"/>
+ <project groups="pdk,broadcom_wlan" name="platform/hardware/broadcom/wlan" path="hardware/broadcom/wlan" revision="76e992b379e7d7fddbb7ea17c29b4227234f50c5" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/google/apf" path="hardware/google/apf" revision="063c56133a805ce2e6ee65c35c30b76cfd25d997" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/audio_media" path="hardware/intel/audio_media" revision="0e60b77af3fa70393ee9fa0e80811d1b39c5f6fc" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/bootstub" path="hardware/intel/bootstub" revision="c759e5127aa582ac515ee1446da15f601b15a99a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/bd_prov" path="hardware/intel/common/bd_prov" revision="8af329f2d2b54dfcfa84051d3ce1fae95f79011a" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libmix" path="hardware/intel/common/libmix" revision="550aee8200015a67e32a5eb9d8d1f438f2028331" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libstagefrighthw" path="hardware/intel/common/libstagefrighthw" revision="bfc9bda74643eedd4414e996d2a089a36d9acb24" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libva" path="hardware/intel/common/libva" revision="2901b4bfb210c1c644e44f214fe7a3b825608da7" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/libwsbm" path="hardware/intel/common/libwsbm" revision="8cae226f534a504f385084d1b04f4af466a16990" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/omx-components" path="hardware/intel/common/omx-components" revision="34bb282eb4b4cf0bdb9cfdeb85d59f86e220e85f" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/utils" path="hardware/intel/common/utils" revision="8712cbc7851511b4aa61d1544078c8a9521578b1" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/common/wrs_omxil_core" path="hardware/intel/common/wrs_omxil_core" revision="8309367a3ad4446a1e2f07779955bc043ade8deb" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/hwcomposer" path="hardware/intel/img/hwcomposer" revision="ad2a78606b8c3fc85667f26cc46d5f4291badd55" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_headers" path="hardware/intel/img/psb_headers" revision="333777baeae5d75efc1afa6719302ac5f93723dd" upstream="master"/>
+ <project groups="intel" name="platform/hardware/intel/img/psb_video" path="hardware/intel/img/psb_video" revision="35ffe308d254bbc6213929935439510c3bd252fa" upstream="master"/>
+ <project groups="intel_sensors" name="platform/hardware/intel/sensors" path="hardware/intel/sensors" revision="68dc9e70b79dacddc4e0bf00af0de7f764b04eed" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/interfaces" path="hardware/interfaces" revision="31fba8cd408244be40c806f0e1d25e552e3890fa" upstream="master"/>
+ <project groups="invensense" name="platform/hardware/invensense" path="hardware/invensense" revision="11e5ff75af866f91622b6008fa13db1c3685ae69" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware" path="hardware/libhardware" revision="ce1ed062440baa9037775c63f333c319fd7d67f4" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/libhardware_legacy" path="hardware/libhardware_legacy" revision="53401d7c35cb7cce27d9f7f81c673f8be78dc56c" upstream="master"/>
+ <project groups="marvell_bt" name="platform/hardware/marvell/bt" path="hardware/marvell/bt" revision="3f33d194e8300816b94d1d7b68b1d48c8f903251" upstream="master"/>
+ <project groups="qcom,qcom_audio,pdk" name="platform/hardware/qcom/audio" path="hardware/qcom/audio" revision="545beebc5add1dfd95dd9f6ca1539cd38920692c" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/qcom/bootctrl" path="hardware/qcom/bootctrl" revision="483ce31f1ef6f45447445825abb958984c306f45" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/bt" path="hardware/qcom/bt" revision="d7d7b9e56781fd49566e0b5e4097a6d75c52cbf5" upstream="master"/>
+ <project groups="qcom,pdk" name="platform/hardware/qcom/data/ipacfg-mgr" path="hardware/qcom/data/ipacfg-mgr" revision="5b5af67d19baf862f5a8d6a7226feb630ec2f81a" upstream="master"/>
+ <project groups="pdk,qcom,qcom_display" name="platform/hardware/qcom/display" path="hardware/qcom/display" revision="0a0cfb1377fde5a0bc5be567f27e3c3959e96417" upstream="master"/>
+ <project groups="qcom,qcom_gps,pdk-fs" name="platform/hardware/qcom/gps" path="hardware/qcom/gps" revision="18f5098237a20814c5c9943c4e96bfe1eb3526ea" upstream="master"/>
+ <project groups="qcom,qcom_keymaster" name="platform/hardware/qcom/keymaster" path="hardware/qcom/keymaster" revision="4428c1f0c0a9559870f976093bf7ed0ec8b4d0c1" upstream="master"/>
+ <project groups="qcom,pdk-fs" name="platform/hardware/qcom/media" path="hardware/qcom/media" revision="ad8d9a435b4fc96ce022709d47d9275c6db6ab4c" upstream="master"/>
+ <project groups="qcom_msm8960,pdk-fs" name="platform/hardware/qcom/msm8960" path="hardware/qcom/msm8960" revision="c25a431842a26b5756b58a9d4a42c776e0457ba2" upstream="master"/>
+ <project groups="qcom_msm8994,pdk-fs" name="platform/hardware/qcom/msm8994" path="hardware/qcom/msm8994" revision="76e6a531822718a6a9e8019e8343cd398492815e" upstream="master"/>
+ <project groups="qcom_msm8996" name="platform/hardware/qcom/msm8996" path="hardware/qcom/msm8996" revision="f81ef30068fb7ef1dfb772ffe69b5cd846e81d9f" upstream="master"/>
+ <project groups="qcom_msm8x09" name="platform/hardware/qcom/msm8x09" path="hardware/qcom/msm8x09" revision="cee67f33014a0d25caa53a515bf2da11225880a9" upstream="master"/>
+ <project groups="qcom_msm8x26" name="platform/hardware/qcom/msm8x26" path="hardware/qcom/msm8x26" revision="85c1a5282ae28663335e55ce96a4c0487de6c578" upstream="master"/>
+ <project groups="qcom_msm8x27" name="platform/hardware/qcom/msm8x27" path="hardware/qcom/msm8x27" revision="8ff5c0057cbdecfa09410c1710ba043e191a2862" upstream="master"/>
+ <project groups="qcom_msm8x84" name="platform/hardware/qcom/msm8x84" path="hardware/qcom/msm8x84" revision="582b414269d8472d17eef65d8a8965aa8105042f" upstream="master"/>
+ <project groups="qcom" name="platform/hardware/qcom/power" path="hardware/qcom/power" revision="3a098ee1f89c398b9d6e7b5dfae9c694994f8bc4" upstream="master"/>
+ <project groups="qcom_wlan" name="platform/hardware/qcom/wlan" path="hardware/qcom/wlan" revision="6c71dbce7a5b93982abc30d2bf4245247cb34efe" upstream="master"/>
+ <project groups="pdk" name="platform/hardware/ril" path="hardware/ril" revision="9fbd65c441ddcd5b51ea5a57a91bd4872a5f74f4" upstream="master"/>
+ <project groups="pdk" name="platform/libcore" path="libcore" revision="e400ad78c4705ebbb6afc6c16a6b1f03bed437c2" upstream="master"/>
+ <project groups="pdk" name="platform/libnativehelper" path="libnativehelper" revision="dcd3d3ae2171bf4e241ddb2d43808892fad7f2ef" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/BasicSmsReceiver" path="packages/apps/BasicSmsReceiver" revision="d039943180c9cb8210d66d5e6bddfbf26ab70e17" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/Bluetooth" path="packages/apps/Bluetooth" revision="7f90f9168fc412e9a79d4e8609a2c96c32dca133" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Browser2" path="packages/apps/Browser2" revision="9180bc72bcaa6d28156bc65ad2caf62aa50fd1ac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Calendar" path="packages/apps/Calendar" revision="956525423e51315015d6902e3b9487e72e9f4885" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Camera2" path="packages/apps/Camera2" revision="a4cb3c1c2d6cfa34a462bb04b38dca2eab7a62d7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Dialer" path="packages/apps/Car/Dialer" revision="732aaff8cb379728ea0359ea8cf913078d3534c8" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Hvac" path="packages/apps/Car/Hvac" revision="58772162c56dc8f893855e9fc27edc34a8f2bcac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LatinIME" path="packages/apps/Car/LatinIME" revision="22e301a603d844c0ef92e9cd95c721d6095ca19b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LensPicker" path="packages/apps/Car/LensPicker" revision="d509b2dfcbd4a51d28c496bd2f3fd8f40f42528d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/LocalMediaPlayer" path="packages/apps/Car/LocalMediaPlayer" revision="9305871fc0013c451f33e56229507be0a1e120c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Media" path="packages/apps/Car/Media" revision="5cb58af61618d6c457685a5feba630540f25567c" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Messenger" path="packages/apps/Car/Messenger" revision="22bc7d8f0b1a18737e951ff3352c089670cc7ab3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Overview" path="packages/apps/Car/Overview" revision="f6b3e8ba62d070b0870eb9b0e70aa34bb7c363a9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Radio" path="packages/apps/Car/Radio" revision="f5bdd9d38dd23ff55fd0fc7f7209d1ad28705f87" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Settings" path="packages/apps/Car/Settings" revision="d19f034f4211ce0d55bb38936e39c60b13bc509e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/Stream" path="packages/apps/Car/Stream" revision="c19ea2d878bf135e36151e6d313eee8b1b743184" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/SystemUpdater" path="packages/apps/Car/SystemUpdater" revision="3506f3f39a1328465009ec080a741373b338bead" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/UserManagement" path="packages/apps/Car/UserManagement" revision="9391baedbf4ad645d7c125279a19d7a2b6b285f9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Car/libs" path="packages/apps/Car/libs" revision="7901432126584be2601424b0969092d0d1374c65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CarrierConfig" path="packages/apps/CarrierConfig" revision="28582d92cf380d431505fe9103a3ca99bcdb34de" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CellBroadcastReceiver" path="packages/apps/CellBroadcastReceiver" revision="8cd439087aab7e0c3d530f0678a4944b697602fc" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/CertInstaller" path="packages/apps/CertInstaller" revision="1c43ca95cd444163e69e250f270714d7ba4cffaa" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Contacts" path="packages/apps/Contacts" revision="3ba72351ae5bc808f86826e6d35bc6baee712d91" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/DeskClock" path="packages/apps/DeskClock" revision="411d606453dd34b76a7af12c568872e6f98ffc86" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/DevCamera" path="packages/apps/DevCamera" revision="90fdbf7460fbd255194455331c6a38a7b8f41dd2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Dialer" path="packages/apps/Dialer" revision="69ff7c1717c363027a79a454da91e1ca59c1dd3e" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/DocumentsUI" path="packages/apps/DocumentsUI" revision="4501139b4ac250e5437007dc7f92adcb1068565f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Email" path="packages/apps/Email" revision="1b70a229c444d3e893e6309e5191bb205fb1dcef" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/EmergencyInfo" path="packages/apps/EmergencyInfo" revision="4877fa47dcb0275079b802054104811e4fedb9f1" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ExactCalculator" path="packages/apps/ExactCalculator" revision="9354ca48fbf8e8ea3372d01d024dd917a4c6f553" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery" path="packages/apps/Gallery" revision="005fec50c2e22be3441ab9415ab17bd64bbd6b44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Gallery2" path="packages/apps/Gallery2" revision="65cdfbaad6c99efc1671510daea762a0876199b5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/HTMLViewer" path="packages/apps/HTMLViewer" revision="e3269d171111f474c9240688c3da62e26f6a2093" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/KeyChain" path="packages/apps/KeyChain" revision="1e1f4535d86dd49bf23108eb1a4c3d2543fc85fe" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher2" path="packages/apps/Launcher2" revision="0269d850997f5d8c8f82d2f94a8c648ad0cb1543" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Launcher3" path="packages/apps/Launcher3" revision="fa5511133a6bf784955042966162e8635ab5b930" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/LegacyCamera" path="packages/apps/LegacyCamera" revision="b717e128c1835dcee7efdbeedd5adc6c371f0b61" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/ManagedProvisioning" path="packages/apps/ManagedProvisioning" revision="f1dde3461ec2d47adfd49a6752770ca654410b2d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Messaging" path="packages/apps/Messaging" revision="3fb6abb42199b98a23a6e0569b83519919f9d015" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Music" path="packages/apps/Music" revision="033375b60c90a9ecb1bb12197f978e31f95419bc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/MusicFX" path="packages/apps/MusicFX" revision="e51ca133f48c3856d14a6f3230bd4f52a7a1283b" upstream="master"/>
+ <project groups="apps_nfc,pdk-fs" name="platform/packages/apps/Nfc" path="packages/apps/Nfc" revision="cb4361e698dfa069926a8e4293db933860d49483" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/OneTimeInitializer" path="packages/apps/OneTimeInitializer" revision="d2762cc94e5ea13cc13b6665101220c2ddf06110" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PackageInstaller" path="packages/apps/PackageInstaller" revision="1677529d348d72daa1531ff5c1f1e4d5cd9ff19c" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/apps/Phone" path="packages/apps/Phone" revision="79731f02b7009206a01182d2cca15dfc8491da09" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="f962ad993640d79dc1d76494650cf6d3e83ee6de" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="d686dc74168ed5324b2388133531f30255659ae6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="077fc59dd26cdecdfe2ea3af614291b103faa7e2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="b17f4ddf6719faef79535c76ea6af84f5009d4a1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="66244a5c528afb29b1a88aa788770063b91c89b2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="1e01c3e1bcc0ed83b3676e1d5c0b75d5ed873391" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="3a2e327741cad7a38cc91626f921af28a6307cc8" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="5f67a8eaea9379d7fce53db77e9ed7b47e49f1e1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="4db997871e3f4c3f84660815096e5276b47c5c91" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/apps/PhoneCommon" path="packages/apps/PhoneCommon" revision="742f2254b5fd8b8239724008dadcdac7debfe1c6" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Protips" path="packages/apps/Protips" revision="1e5d8a500dce6530a99cb952681889042dcfb63a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Provision" path="packages/apps/Provision" revision="6b2548213a9c7cf93ac9dc32f8b82db4ad8e9c4d" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/QuickSearchBox" path="packages/apps/QuickSearchBox" revision="5f6197edeea02d084a1a042374b8f15e7ed5131f" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/RetailDemo" path="packages/apps/RetailDemo" revision="bc538c50dae99678584ff9e2aff60ee11a78cb44" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SafetyRegulatoryInfo" path="packages/apps/SafetyRegulatoryInfo" revision="e69ff22ef6c1ad43c5ff876b19fc492c94d4fc12" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Settings" path="packages/apps/Settings" revision="c4b0fa585849641f07ecfed395db3437eca27dbb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SoundRecorder" path="packages/apps/SoundRecorder" revision="ba7237540f779f1c7e67ae7a36aa7a63da8eb1c5" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/SpareParts" path="packages/apps/SpareParts" revision="f47fff0421153f4c20d155df8d0864a7036bdb06" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/apps/SpeechRecorder" path="packages/apps/SpeechRecorder" revision="51cc8462c082a26810f5d7c5a2648232a77e795c" upstream="master"/>
- <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="528f2dc222b43972fe7a019e7daa4f81c213fad4" upstream="master"/>
- <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="a1c249013e65ec1fc38076cc29830c4367c8cace" upstream="master"/>
- <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="7416628255cd3c95b6ffecd331fbb0add9c1eea9" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="60102ca02f1a93af59cc479f2a80a40a382d668c" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="8ba8c509c8408b55083739e6b3cf3db32ca7606d" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="79ccd3543999c1cc8ea211ea54384a9096b693a9" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="f3a394eeb3408415314c4e816ef4638904940a85" upstream="master"/>
- <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="ded915b9ea8908b1d72426c17003428b82c82d8d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="9648d6bc0a106576927264ab580e1a326fba920a" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="a3efe60e6b9e0045eef5f88491bc966868357300" upstream="master"/>
+ <project groups="apps_stk,pdk-fs" name="platform/packages/apps/Stk" path="packages/apps/Stk" revision="4424ddfba1e07a4f749dc1a6233d87c9a1206df2" upstream="master"/>
+ <project name="platform/packages/apps/StorageManager" path="packages/apps/StorageManager" revision="bf23305b3b201f91d9c06eafa2622b058ced93dd" upstream="master"/>
+ <project name="platform/packages/apps/TV" path="packages/apps/TV" revision="0e0082535dc276086ee61ac156581a20e86609e7" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Tag" path="packages/apps/Tag" revision="4ab03e1367fb23d75f1197a98c7a52dd3e3898b9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/Terminal" path="packages/apps/Terminal" revision="6ef2b729b4e4ac070563efba29fca2b98ba09e56" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/Test/connectivity" path="packages/apps/Test/connectivity" revision="b36b2efb68a392aafba13a2273278c155f9f9a28" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneData" path="packages/apps/TimeZoneData" revision="bba3dfde202b7483b1e430d75d49e0389d42d644" upstream="master"/>
+ <project groups="pdk" name="platform/packages/apps/TimeZoneUpdater" path="packages/apps/TimeZoneUpdater" revision="4f154a7d574963466abaeded961b6c5f427a45fb" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/TvSettings" path="packages/apps/TvSettings" revision="51fb032a154fa756327c5dacce6a2540b1196c3b" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/apps/UnifiedEmail" path="packages/apps/UnifiedEmail" revision="6087c3f339a76e9033f6c2991ef26d4401743429" upstream="master"/>
<project name="platform/packages/apps/WallpaperPicker" path="packages/apps/WallpaperPicker" revision="969934f908ff2ddda77bddbb80f206daf6a24281" upstream="master"/>
- <project name="platform/packages/experimental" path="packages/experimental" revision="e24ee92653e28ddf0020ffb9e5ddc99931117674" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="bde4c9a8dfa85ca71f034c371908358bf61a74f2" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="59aefa242169b7a51c2381daee58ff22fd1834ce" upstream="master"/>
+ <project name="platform/packages/experimental" path="packages/experimental" revision="f664e1fad87d06f1ad738549db049011c84ca787" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/LatinIME" path="packages/inputmethods/LatinIME" revision="ad5da5881dcaf3a1b4ec0cbdda51401460b6e37a" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/inputmethods/OpenWnn" path="packages/inputmethods/OpenWnn" revision="85ca997d8265739e94b5bd9d19460c9b87b9ec59" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/providers/ApplicationsProvider" path="packages/providers/ApplicationsProvider" revision="33d26f5eedb3d3011762ce5b2de66e931bf64b35" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="3aef9aef553a126b57fa9d7c271bf82abdb8ca9f" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="3fa85d57a81d2cdfd08465d3dcb5e7ad4ad1f7ca" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="8da754fcd166e11363e4d031b0c42f2abe92238d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="8d79e5e0f0673f20aff55fdb6ccb297bdc509387" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="44c11b854e615a007eda9760f9c9d0323c9c73ba" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="ef033b3587853368d947c4d849eb5d6818cc612a" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="654f73a379a36e5f4cdb2fc4cdfbc06971bff212" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="133b4fb575d32b7e2e887e2d1d6a9e6877b54440" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="22a5cfb7b166ad972c73d171a078a0932587bd44" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="374df0a9f8c1b92b1bdb7572f30543188c8c7a1c" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="12907529afb603d10bc133e808728cef12e5dad6" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="e72ef139782ca896dced7524abe7cfcc9ed35db1" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="a9c5d50340fcef49034add6766576e4aab7d1168" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BlockedNumberProvider" path="packages/providers/BlockedNumberProvider" revision="aa0b531d60d27409d304d7e8bbad787181be4831" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/BookmarkProvider" path="packages/providers/BookmarkProvider" revision="bf198c8c5cd3e128046a3f712709690734b61f43" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/CalendarProvider" path="packages/providers/CalendarProvider" revision="1e487cd116214c0df34efea269595352b757e4c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/CallLogProvider" path="packages/providers/CallLogProvider" revision="df0624f9cf6274ed67c70ef0d163aa27ad5bf2d3" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/ContactsProvider" path="packages/providers/ContactsProvider" revision="18a114896c47de3a2c29b5731afa658c57ca353c" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/DownloadProvider" path="packages/providers/DownloadProvider" revision="372fcac69b5033bba262ce871f4f54ff1dde48b8" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/MediaProvider" path="packages/providers/MediaProvider" revision="428574d247cc821825721ca7fd3beb77b5e8895e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/PartnerBookmarksProvider" path="packages/providers/PartnerBookmarksProvider" revision="9c4e2ffaf6344c6c6e3ec5884f29dc7999bdf363" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/TelephonyProvider" path="packages/providers/TelephonyProvider" revision="b65323596e512b84fb9a5601e9a83d442ed9a2b2" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/providers/TvProvider" path="packages/providers/TvProvider" revision="a22ab1935b10a91ac9eb9606d27f4290c5659894" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/providers/UserDictionaryProvider" path="packages/providers/UserDictionaryProvider" revision="ef263aa8c0557e3aab06d11c8914b53b59ee8e7e" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/Basic" path="packages/screensavers/Basic" revision="2d9323d2deeeaa720cfb35d15767dd90a256b2c9" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/screensavers/PhotoTable" path="packages/screensavers/PhotoTable" revision="f27f650d1184819984e47ecbd797ccff162c0eeb" upstream="master"/>
<project groups="pdk-fs" name="platform/packages/screensavers/WebView" path="packages/screensavers/WebView" revision="6e0a80f6faed6191acc8ce1b6c79eada09e9e042" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="5bd17d4644dccb6cd5e23c95490ea925082d42d3" upstream="master"/>
- <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="b296575311b20808849701f4eaec4305dd17cc27" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="dfa0e3116b3ba72b9c2f308d8d11bc6ced6ad23b" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="87a0ebe5a071130fbb5d5117806964f4e8bc1a77" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="bc7f1814b29fcbf0c86e7f135393c9449ae7f344" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="dd18156f656ec28db6dd6a79530978c8ea99c15d" upstream="master"/>
- <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="313c31a2d7ff12d4f78d11458d8b268a5fe97d9c" upstream="master"/>
- <project groups="pdk" name="platform/pdk" path="pdk" revision="708589163e790eb3a7fec09f4832a0f78999bdf3" upstream="master"/>
- <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="bc78d219b148df89a1c1d91b29cae35c1156d696" upstream="master"/>
- <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="f36d67e0b8fa645428c4ebf6f05c2974bc8337d9" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/BuiltInPrintService" path="packages/services/BuiltInPrintService" revision="911db0bab1adfab02e551fb512e7fac8f8dccfe1" upstream="master"/>
+ <project groups="adp8064,pdk-cw-fs,pdk-fs" name="platform/packages/services/Car" path="packages/services/Car" revision="7a3f3ef53ec1541bf28f4b91677265ab353fcf6f" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Mms" path="packages/services/Mms" revision="7117bff6c1186110a6381c49b7eac3cebd3d23f3" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/services/NetworkRecommendation" path="packages/services/NetworkRecommendation" revision="9264ab18a037a78501f3ada2c1f307c436dfb8a1" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telecomm" path="packages/services/Telecomm" revision="dd6a7b317428252fbf0892364160656a2991c952" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/packages/services/Telephony" path="packages/services/Telephony" revision="e4a7a8c5f21c74ff699eae449816fd0bc6843afc" upstream="master"/>
+ <project groups="pdk-fs" name="platform/packages/wallpapers/LivePicker" path="packages/wallpapers/LivePicker" revision="5afd06f0764ce8afc99e641794ca3a57bdf87c2a" upstream="master"/>
+ <project groups="pdk" name="platform/pdk" path="pdk" revision="c7bd144646f9e961a7ee5f10a0105d21f5bf8ff7" upstream="master"/>
+ <project groups="pdk-fs,pdk-cw-fs,cts" name="platform/platform_testing" path="platform_testing" revision="0606a72fb0360c96af13b9917e1248f9076e8f95" upstream="master"/>
+ <project clone-depth="1" name="platform/prebuilts/abi-dumps/ndk" path="prebuilts/abi-dumps/ndk" revision="93ee4dea555579076cc5313e04ed95cfbb0523cd" upstream="master"/>
<project clone-depth="1" name="platform/prebuilts/abi-dumps/vndk" path="prebuilts/abi-dumps/vndk" revision="83a0ec4746ab945004a9e71f2253d5fed8a4cc75" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="3a47dbd8cf86afe7f72d48902a342a7894d9570a" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="f537089a258a89539154e8f3932f4c8bd1bdde30" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="5bebe70905a43b398bdb04a678bf6d50a2c4452e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="c052e7853ea000b972d163d1774a44516b8814a6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="1050067936dffa13d6aa30a8c1479444c620ef2d" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="a6937fe75c369ea26e416d5d725a32c9c7bbac3c" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="0c7d72c96f0e9c2b7cd8d4f33875f6424ab937e6" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="7985a1e57e906ce50505fe37769773983cb2eb40" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="b33aaa2ad816c217c56d9226f28b4ca497957c2f" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="dd7afac0149e22ef324a440046d7d7e5411a2a63" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/android-emulator" path="prebuilts/android-emulator" revision="25dec9283da1c6a3c281ab0eb123c44f70c27632" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/build-tools" path="prebuilts/build-tools" revision="23909177eace37bb0b1b2fae7e37113ffea7f7ef" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkcolor" path="prebuilts/checkcolor" revision="f6f661b424f646bc5ddf9e1b1e644abb492b7547" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/checkstyle" path="prebuilts/checkstyle" revision="b591a4c55c5fc6658e17875a642bb60923ed366a" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/clang/host/darwin-x86" path="prebuilts/clang/host/darwin-x86" revision="e992d54510d52981e0e6338d342089301bc2ae81" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/clang/host/linux-x86" path="prebuilts/clang/host/linux-x86" revision="5f633876c34ebd8c8fb31aabf3dedfe7e3141aac" upstream="master"/>
+ <project groups="pdk-fs" name="platform/prebuilts/deqp" path="prebuilts/deqp" revision="d055450404768f16ac199b13e51eecb37abb7c07" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/devtools" path="prebuilts/devtools" revision="6f0b60e8759e67828288feccfe0e59ad02170bd0" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/eclipse" path="prebuilts/eclipse" revision="efa717742380a2fe700a62f3ba5b26e7fb3cf0f2" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9" revision="6d90a91b8622bd5e4849aa684598d3f4b6a64f2e" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,arm" name="platform/prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/darwin-x86/arm/arm-linux-androideabi-4.9" revision="679f23d33d0fa540915ef8d2b72b00128bcce0a0" upstream="master"/>
<project clone-depth="1" groups="pdk,darwin" name="platform/prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" path="prebuilts/gcc/darwin-x86/host/i686-apple-darwin-4.2.1" revision="ec5aa66aaa4964c27564d0ec84dc1f18a2d72b7e" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="c3b7a175640fc59711614c0ad5269a037e06fe7a" upstream="master"/>
- <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="f4002189c0a7ac2e9e2c562cb5d598daba5f3e30" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="89aa77dc369931868dce6924b7997e7e5f0fefe7" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="0a70ca16caa61b4591c844df9e3c70f53c88fbd9" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="ed4f6b503e1d7f2bc03d87b90084e12e33f8be4f" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="9ee4f51e97bc4bc8f51b06912767018be4d65853" upstream="master"/>
- <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="d3566f4f19b660d98ff237825ed775289c102420" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="a332df8dadd78866c2a57f2c7348d499952939c2" upstream="master"/>
- <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="8e874d5830214083475ed5a8576fef24f58bae1c" upstream="master"/>
- <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="4a696dd19df2fee0ce24f5bdbd8ae0e03049f97b" upstream="master"/>
- <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="172e21a7c836e6086c6faae7b080a38c779597ac" upstream="master"/>
- <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="3a0d506bad18e41d9cbffd196c24d70d0c40d0ab" upstream="master"/>
- <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="3377874f67bcc7d200408ceb8b02169c4c3b201d" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="ba09d77a59458527e92a4ee12bfdf0d7ac4ae6e2" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="fa0835a2da3bb4ce39a2a07f7749553e99ba170c" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,mips" name="platform/prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/darwin-x86/mips/mips64el-linux-android-4.9" revision="d942564c9331f07026a8f78502d8571206eb7be4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,darwin,x86" name="platform/prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9" revision="cb32df02ca49be4d2de4d05c1e46032abd30efc6" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" path="prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9" revision="2d4cbf699c9217a3f4f0f6c82254643a0ed87f1f" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,arm" name="platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" path="prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9" revision="bf4b366f48251c542c8aea15ec885f9fc6a01d5c" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8" revision="a461e1b3161b4817b743ddbfb58a3878e7985c8b" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8" revision="6e91bb7b816df8543cffe14287acbf0412f65550" upstream="master"/>
+ <project clone-depth="1" groups="pdk-fs" name="platform/prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" path="prebuilts/gcc/linux-x86/host/x86_64-w64-mingw32-4.8" revision="e76a9a506d7ad132f107eb2f7c27b6a8ccb68b91" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,mips" name="platform/prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" path="prebuilts/gcc/linux-x86/mips/mips64el-linux-android-4.9" revision="388fdc4995d374d76a0c4b292afabac91638e134" upstream="master"/>
+ <project clone-depth="1" groups="pdk,linux,x86" name="platform/prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" path="prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9" revision="6a8906d0e6c3e18480796547e285866813b29ba3" upstream="master"/>
+ <project clone-depth="1" groups="darwin" name="platform/prebuilts/gdb/darwin-x86" path="prebuilts/gdb/darwin-x86" revision="0a8c90248264a8b26970b4473770bcc3df8515fe" upstream="master"/>
+ <project clone-depth="1" groups="linux" name="platform/prebuilts/gdb/linux-x86" path="prebuilts/gdb/linux-x86" revision="4adfde8bc82dd39f59e0445588c3e599ada477d2" upstream="master"/>
+ <project clone-depth="1" groups="darwin,tradefed" name="platform/prebuilts/go/darwin-x86" path="prebuilts/go/darwin-x86" revision="1336ba94c3bda2b2db8d6eab54036ae88423be55" upstream="master"/>
+ <project clone-depth="1" groups="linux,tradefed" name="platform/prebuilts/go/linux-x86" path="prebuilts/go/linux-x86" revision="cc0b9f5238fed2fb3b3a0dfa9cd1dd163b053a8c" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/gradle-plugin" path="prebuilts/gradle-plugin" revision="10219421eac01ee74d80c86e97bebe1fd8e16bb2" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/jdk/jdk8" path="prebuilts/jdk/jdk8" revision="d49ad92452c3ec4b859283f36372a3d12ad7a4ea" upstream="master"/>
<project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/libs/libedit" path="prebuilts/libs/libedit" revision="d32685dba4011664b590b94ad156bc734c2c9bb5" upstream="master"/>
- <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="e1ca35066d5b3ef63b188a3ffe8cb058feb9b83e" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="1ecf5205db0526c3afb006cc43ddfc805b3ad18c" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="2b88f8ee10044fe4b77a35c9587759d992561af2" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/android" path="prebuilts/maven_repo/android" revision="f8ffcaa0b464b1275af6707e931beb0b4d4b0856" upstream="master"/>
+ <project clone-depth="1" groups="pdk-cw-fs,pdk-fs" name="platform/prebuilts/maven_repo/bumptech" path="prebuilts/maven_repo/bumptech" revision="ad29fe1a1b86eacbd04ac4ab23b90f38ca099f77" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/misc" path="prebuilts/misc" revision="062009ffd95b0eb78fa0e75067390a00e042e730" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/ndk" path="prebuilts/ndk" revision="3643dfc296d3cf65a8c5d618ef56f9ccf8ee40d7" upstream="master"/>
<project clone-depth="1" groups="darwin,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/darwin-x86/2.7.5" path="prebuilts/python/darwin-x86/2.7.5" revision="0c5958b1636c47ed7c284f859c8e805fd06a0e63" upstream="master"/>
- <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="7bd52e8c08951d11ae4437e407c62566a1c3416d" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="263e5899e841844212c8d1b8e04fc0e52eff9810" upstream="master"/>
- <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="c2d941b862e53bf0050a7cc18670d9340d705ecf" upstream="master"/>
- <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="3aca8cce121d427bc5cba6c355bfbfcd453a9395" upstream="master"/>
- <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="7fcb50b6f76f57eaf5fecbb6b5a0cafcfdf95500" upstream="master"/>
- <project groups="pdk" name="platform/system/bt" path="system/bt" revision="014890b74878022db7d23be47db179ba06e01856" upstream="master"/>
- <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="e312bd5044fc07e85b8b0c21b8f21a9329ce9636" upstream="master"/>
- <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="483bd8dcfd508095113cfde82e8b79ce6e29759f" upstream="master"/>
- <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="796315a7e25212d6dc3a998405e25bc877d57cc8" upstream="master"/>
- <project groups="pdk" name="platform/system/core" path="system/core" revision="3e0b59461959cfc683fff13a42829780843b3601" upstream="master"/>
- <project groups="pdk" name="platform/system/extras" path="system/extras" revision="880d4e8574fefa3978b32eaa4d7d38abb187e7b5" upstream="master"/>
- <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="3d78edca770a570a8c4f7cf2cdc40dadcd5facd0" upstream="master"/>
- <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="13e5d8a98e919e5638f681f38550eddcaf890937" upstream="master"/>
- <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="6f4fbe1af7864aafa8236ca8e65d66e6a8974b44" upstream="master"/>
- <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="fc935cd780473b8cdfeeb28aab1b13f6b6572955" upstream="master"/>
- <project name="platform/system/libfmq" path="system/libfmq" revision="e8f31ca2381c558e9b389454c788674f1c78e59d" upstream="master"/>
- <project name="platform/system/libhidl" path="system/libhidl" revision="2a2678e402e440068bf24d012e294d65c9c0c8b9" upstream="master"/>
- <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="14c6e409a4b29f77e5ed2f24e62dc9d3366fc61a" upstream="master"/>
- <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="ea5d3f72aa01de436f8e1e5bcdd7748d255285ad" upstream="master"/>
- <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="488e16a67311194f0fb9aa4a33219af170e6316b" upstream="master"/>
- <project groups="pdk" name="platform/system/media" path="system/media" revision="9c351fa5f388fc22768549ccc512a2633263d183" upstream="master"/>
- <project groups="pdk" name="platform/system/netd" path="system/netd" revision="cf929f7cd853b68931af5ad94b984feb01917a8e" upstream="master"/>
- <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="33a1c932e0fcdb335a2d34a692307d15e1336c9d" upstream="master"/>
- <project name="platform/system/nvram" path="system/nvram" revision="48087181f977c4f75c81705361f455f5ee9c7c37" upstream="master"/>
- <project groups="pdk" name="platform/system/security" path="system/security" revision="975e1aae69f9bcdb35de5b2b8f466514f5fe4ba2" upstream="master"/>
- <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="21b4a9259052c3f311923b2d79c6c2dd79217732" upstream="master"/>
- <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="7b4b9e592d6c9010be93d018b8a7b594bf2c1ccf" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/aidl" path="system/tools/aidl" revision="babca26b0faa5e41ced0b39cb135fb181a81fa1a" upstream="master"/>
- <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="a881c08273bc1fa518d0355f05c1827bffa69a52" upstream="master"/>
- <project name="platform/system/tpm" path="system/tpm" revision="3e1217d9b8b9d0bd549f202e5f1a528374872b40" upstream="master"/>
- <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="663ff4b30b9f629a130ef6d357d462b897d4071e" upstream="master"/>
- <project groups="pdk" name="platform/system/vold" path="system/vold" revision="3f8fa0c2155a14bab73d3d58362f5511de1b3277" upstream="master"/>
+ <project clone-depth="1" groups="linux,pdk,pdk-cw-fs,pdk-fs" name="platform/prebuilts/python/linux-x86/2.7.5" path="prebuilts/python/linux-x86/2.7.5" revision="621d405f7e4db1d7046dde53c0c6e5add3e2743e" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/qemu-kernel" path="prebuilts/qemu-kernel" revision="fe3a2d5cc210c45a5fa0bdadbbcba268aeafe60d" upstream="master"/>
+ <project clone-depth="1" groups="pdk" name="platform/prebuilts/sdk" path="prebuilts/sdk" revision="d8225e4f0b27de6bf8f15db5440d4e5b0a3b26f4" upstream="master"/>
+ <project clone-depth="1" groups="pdk,tools" name="platform/prebuilts/tools" path="prebuilts/tools" revision="f3fbb60b007f7a4a5f53b822d56a151bb95b8d65" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/sdk" path="sdk" revision="2e170ea4622aa5d63e562f2eea78817ada415373" upstream="master"/>
+ <project groups="pdk" name="platform/system/bt" path="system/bt" revision="2e08795a899d402dd9914c3e5098c04dccd4f680" upstream="master"/>
+ <project groups="pdk" name="platform/system/ca-certificates" path="system/ca-certificates" revision="db524b256a637f18588c1d5ecc4a7d43cdebf8fd" upstream="master"/>
+ <project groups="pdk" name="platform/system/chre" path="system/chre" revision="1355b80eaeeb2c63bdbc72a9f883d2391161700a" upstream="master"/>
+ <project name="platform/system/connectivity/wificond" path="system/connectivity/wificond" revision="7a83a7b6ae1e0c8d7a3ec912eafca33d418608c1" upstream="master"/>
+ <project name="platform/system/connectivity/wifilogd" path="system/connectivity/wifilogd" revision="2211b56ca924f4a810d48fc31bdec959dda8f5c1" upstream="master"/>
+ <project groups="pdk" name="platform/system/core" path="system/core" revision="fe3551e9dc173e81649ee7b5beb2b99bd6a3d2be" upstream="master"/>
+ <project groups="pdk" name="platform/system/extras" path="system/extras" revision="5da045dc1ac0709dba6eb61b0ac305ff031ed767" upstream="master"/>
+ <project groups="pdk" name="platform/system/gatekeeper" path="system/gatekeeper" revision="9414ec08188b5189eb393a2ffaa039ff1fcf6027" upstream="master"/>
+ <project groups="pdk" name="platform/system/hardware/interfaces" path="system/hardware/interfaces" revision="0bbe268d8519aa650af4a18ed4f9eefd69e3d1e3" upstream="master"/>
+ <project groups="pdk" name="platform/system/hwservicemanager" path="system/hwservicemanager" revision="e821b67b98d0ef49cb4e34e972f349a1deaa5555" upstream="master"/>
+ <project groups="pdk" name="platform/system/iot/attestation" path="system/iot/attestation" revision="e3823a75b7569794662fe2fbc9e3ca2ac2f60cce" upstream="master"/>
+ <project groups="pdk" name="platform/system/keymaster" path="system/keymaster" revision="109901d94c6e3f15768f3d9e1ba32803999db672" upstream="master"/>
+ <project name="platform/system/libfmq" path="system/libfmq" revision="8d1189c9399ff6e81296383bc480b104613d591e" upstream="master"/>
+ <project name="platform/system/libhidl" path="system/libhidl" revision="0109873dcaf0a416960fb2d6d4b99029b25047f0" upstream="master"/>
+ <project groups="pdk" name="platform/system/libhwbinder" path="system/libhwbinder" revision="80b88ab21170f7fde645212a9f6b6d7e28a40de4" upstream="master"/>
+ <project groups="pdk" name="platform/system/libufdt" path="system/libufdt" revision="4446f0cb437fea5e26b645990970afe7dc4f5085" upstream="master"/>
+ <project groups="pdk" name="platform/system/libvintf" path="system/libvintf" revision="a72bde7d4aed9704cca946c43563ff1983eb86fa" upstream="master"/>
+ <project groups="pdk" name="platform/system/media" path="system/media" revision="f1041f736a4747e51ab5b27e19aacc7d68ef92ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/netd" path="system/netd" revision="a767c597572bd016d19a571eb4caad7a63a18137" upstream="master"/>
+ <project groups="pdk" name="platform/system/nfc" path="system/nfc" revision="210fc92332b13067c0a2c4bc234167eeab6f2e85" upstream="master"/>
+ <project name="platform/system/nvram" path="system/nvram" revision="f490436ea7b11aadfeb37c2299e4565c41ffd0ef" upstream="master"/>
+ <project groups="pdk" name="platform/system/security" path="system/security" revision="f3147f209c9537b30041a521fb4cc5fbd832ff3a" upstream="master"/>
+ <project groups="pdk" name="platform/system/sepolicy" path="system/sepolicy" revision="c5e32208a2ec7a483d8ef9d5c292313d5c229ebc" upstream="master"/>
+ <project groups="pdk" name="platform/system/timezone" path="system/timezone" revision="5faa530d1f732db066aa1bb27943f7db3bb5e7ab" upstream="master"/>
+ <project groups="pdk-cw-fs,pdk-fs" name="platform/system/tools/aidl" path="system/tools/aidl" revision="a2a10e895a779d633ab41e3b856d6e7979cedb3b" upstream="master"/>
+ <project groups="pdk" name="platform/system/tools/hidl" path="system/tools/hidl" revision="768250faa6806620d97968a3bd6e8e8fc744f029" upstream="master"/>
+ <project name="platform/system/tpm" path="system/tpm" revision="06e295b58139a538745835f45ed889a30507d008" upstream="master"/>
+ <project groups="pdk" name="platform/system/update_engine" path="system/update_engine" revision="3b15b599299a9a5f3ec965d568ea479383c2fe6a" upstream="master"/>
+ <project groups="pdk" name="platform/system/vold" path="system/vold" revision="2890b8d21565be4349956c67261cd370e4814c28" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/framework" path="test/framework" revision="246492cf54d880214952e9cbb1ea490cbdd56f52" upstream="master"/>
<project groups="vts,pdk" name="platform/test/vti/alert" path="test/vti/alert" revision="2270d160e38f0623d708cce36754fe14168dce64" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="f2b98353f7db3102d6392e8f9648b22e368bf221" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/dashboard" path="test/vti/dashboard" revision="378b0e7157ea84bfd5907a72ab6089aa37222c4f" upstream="master"/>
<project groups="vts,pdk" name="platform/test/vti/fuzz_test_serving" path="test/vti/fuzz_test_serving" revision="30d457ce6613d587901379844b9d0dfb37a67a7b" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="0a064803e1ebbfd5e587e9baf677d458a4e3bbd8" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="52d33ddc83fc9bc54c9952e74143807bb5bba410" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="6af0bde5881d2ab0366bf9479f151e5f3bbc32b6" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="94d3b39f884f4513b8664c5d3cb911dd145de1f2" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="a0a4488258c74bb0c61a71b3c4c4aacfd4ed210d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="4e5056e0f537fb17e40ad3567c52a245ce8cc33d" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="04538ffdca38754da367d51ed825999727654654" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="3c8938ec3c75b4b6a4649a22d3478822ac2dedd7" upstream="master"/>
- <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="b2b66733c0b5717736d96945e02ee2926583cc5b" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="843d09e2fcd06d6486515f39e2e3eb3d1788846d" upstream="master"/>
- <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="70067d87eb7b1cf6eb84a5c3d476225898177eba" upstream="master"/>
- <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="bd3466bb3119802994f2d149bab648af567335a2" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="53720799c7f266384c3d2cb032082a94f0730cae" upstream="master"/>
- <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="4c4e78c4d9b52a1a5c5ed11c39ab36d258037a2c" upstream="master"/>
- <project groups="pdk" name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="28845c9a133d54f1160d834cda49186a3683ec86" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="ae0ae1f417d3a0aea8ae0478e625ec5a69331ba0" upstream="master"/>
- <project groups="pdk,tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="520eaa2ec95619705f8574c1b7e47e4fea28b654" upstream="master"/>
- <project name="toolchain/binutils" revision="e574f15757731e482584f3077979082740ae5a9c" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vti/test_serving" path="test/vti/test_serving" revision="a77aaaf39ccb9967a9dc1b5d945b945747a00465" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts" path="test/vts" revision="8246eb1c52bd095a440af7d12f3ef3a3c5efa43f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/fuzz" path="test/vts-testcase/fuzz" revision="d18f06f1a6b5076cd4a83ece72abbc4162c3bb44" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal" path="test/vts-testcase/hal" revision="27a8ac9577a8984d2c85c78640551cc647d1c7a3" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/hal-trace" path="test/vts-testcase/hal-trace" revision="02a4c1be279b9afa69a0003db73652980aa3e85f" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/kernel" path="test/vts-testcase/kernel" revision="a5eb9c423ed7423ecc2842ef5fc0d42f5e000a8e" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/performance" path="test/vts-testcase/performance" revision="2dc30e9b9476a23015590ac4acd4c8d1ed857c85" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/security" path="test/vts-testcase/security" revision="5f9c0342d425bcaf20d6ed7027dcbc5cd9bd0943" upstream="master"/>
+ <project groups="vts,pdk" name="platform/test/vts-testcase/vndk" path="test/vts-testcase/vndk" revision="358bf2cc437a04c5b671be2817e131ae7d628521" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/apksig" path="tools/apksig" revision="51ca09ff33d03da2db1340166440c85ec56b49c0" upstream="master"/>
+ <project groups="tools" name="platform/tools/dexter" path="tools/dexter" revision="7650a8d2d9f7f579e65eeccdcf3e486b6a61be49" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/fat32lib" path="tools/external/fat32lib" revision="9cdd712d65a9e3ce2db93867d0d4a8288ad3bd52" upstream="master"/>
+ <project groups="tools" name="platform/tools/external/gradle" path="tools/external/gradle" revision="f055ebc3d4b63026076c1077b6116f0b36bc514c" upstream="master"/>
+ <project groups="pdk,tradefed" name="platform/tools/loganalysis" path="tools/loganalysis" revision="5bf6d894a874141fa8f806693b6c0a7c171f44a9" upstream="master"/>
+ <project groups="adt-infra,cts,eclipse,motodev,pdk,tools,tradefed" name="platform/tools/repohooks" path="tools/repohooks" revision="f363ab9d13f3b8178b49f7a61a25f26aca19b6f6" upstream="master"/>
+ <project name="platform/tools/test/connectivity" path="tools/test/connectivity" revision="ee9bbb6a41a3bef74b4b566e057e577d231f91c1" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation" path="tools/tradefederation/core" revision="d06f52938e256429ae54159bd43d334c3e157209" upstream="master"/>
+ <project groups="tradefed" name="platform/tools/tradefederation/contrib" path="tools/tradefederation/contrib" revision="a5a7a9fabbf14a8d600aa612e5667ff3217c319c" upstream="master"/>
+ <project name="toolchain/benchmark" revision="73fd86bfc65c3c644c3ec47e3f8c941866e46e23" upstream="master"/>
+ <project name="toolchain/binutils" revision="53dd00a1a34ebf5251f6210d778768b4157c5e11" upstream="master"/>
<repo-hooks enabled-list="pre-upload" in-project="platform/tools/repohooks"/>
</manifest>
diff --git a/tools/linux/art.tar.gz.sha1 b/tools/linux/art.tar.gz.sha1
index c1950a5..98bc420 100644
--- a/tools/linux/art.tar.gz.sha1
+++ b/tools/linux/art.tar.gz.sha1
@@ -1 +1 @@
-892bd8e09e120ad827d56700631ba2a7b15ebfbb
\ No newline at end of file
+1b4c4528315324c023e888ee5c53fc57edb3d5bf
\ No newline at end of file
diff --git a/tools/run-jdwp-tests.py b/tools/run-jdwp-tests.py
index ff61dcc..15b69c8 100755
--- a/tools/run-jdwp-tests.py
+++ b/tools/run-jdwp-tests.py
@@ -18,12 +18,7 @@
'7.0.0',
'6.0.1',
'5.1.1',
-]
-
-BOOT_LIBS = [
- 'core-libart-hostdex.jar',
- 'core-oj-hostdex.jar',
- 'apache-xml-hostdex.jar',
+ '4.4.4'
]
JUNIT_HOSTDEX = os.path.join(
@@ -53,7 +48,10 @@
]
def get_art_dir(version):
- art_dir = version == 'default' and 'art' or 'art-%s' % version
+ if version == '4.4.4':
+ art_dir = 'dalvik'
+ else:
+ art_dir = version == 'default' and 'art' or 'art-%s' % version
return os.path.join(utils.REPO_ROOT, 'tools', 'linux', art_dir)
def get_lib_dir(version):
@@ -63,7 +61,7 @@
return os.path.join(get_art_dir(version), 'framework')
def get_vm(version):
- return os.path.join(get_art_dir(version), 'bin', 'dalvikvm64')
+ return os.path.join(get_art_dir(version), 'bin', 'dalvikvm')
def setup_environment(version):
art_dir = get_art_dir(version)
@@ -71,6 +69,11 @@
android_data = os.path.join(utils.REPO_ROOT, 'build', 'tmp', version)
if not os.path.isdir(android_data):
os.mkdir(android_data)
+ if version == '4.4.4':
+ # Dalvik expects that the dalvik-cache dir already exists.
+ dalvik_cache_dir = os.path.join(android_data, 'dalvik-cache')
+ if not os.path.isdir(dalvik_cache_dir):
+ os.mkdir(dalvik_cache_dir)
os.environ['ANDROID_DATA'] = android_data
os.environ['ANDROID_ROOT'] = art_dir
os.environ['LD_LIBRARY_PATH'] = lib_dir
@@ -78,12 +81,25 @@
os.environ['LD_USE_LOAD_BIAS'] = '1'
def get_boot_libs(version):
- return [os.path.join(get_fw_dir(version), lib) for lib in BOOT_LIBS]
+ boot_libs = []
+ if version == '4.4.4':
+ # Dalvik
+ boot_libs.extend(['core-hostdex.jar'])
+ else:
+ # ART
+ boot_libs.extend(['core-libart-hostdex.jar'])
+ if version != '5.1.1' and version != '6.0.1':
+ boot_libs.extend(['core-oj-hostdex.jar'])
+ boot_libs.extend(['apache-xml-hostdex.jar'])
+ return [os.path.join(get_fw_dir(version), lib) for lib in boot_libs]
def get_common_flags(version):
- flags = ['-Ximage:%s' % IMAGE]
- if version != '5.1.1':
- flags.extend(['-Xcompiler-option', '--debuggable'])
+ flags = []
+ flags.extend(['-Xbootclasspath:%s' % ':'.join(get_boot_libs(version))])
+ if version != '4.4.4':
+ flags.extend(['-Ximage:%s' % IMAGE])
+ if version != '5.1.1':
+ flags.extend(['-Xcompiler-option', '--debuggable'])
return flags
def get_debuggee_flags(version):
@@ -97,7 +113,6 @@
lib_dir = get_lib_dir(version)
fw_dir = get_fw_dir(version)
cmd = [get_vm(version)]
- cmd.append('-Xbootclasspath:%s' % ':'.join(get_boot_libs(version)))
cmd.extend(get_debuggee_flags(version))
cmd.extend(args)
setup_environment(version)
@@ -108,10 +123,9 @@
art_dir = get_art_dir(version)
lib_dir = get_lib_dir(version)
fw_dir = get_fw_dir(version)
- dalvikvm = os.path.join(art_dir, 'bin', 'dalvikvm64')
+ dalvikvm = os.path.join(art_dir, 'bin', 'dalvikvm')
cmd = [dalvikvm]
cmd.extend(['-classpath', '%s:%s' % (classpath, JUNIT_HOSTDEX)])
- cmd.append('-Xbootclasspath:%s' % ':'.join(get_boot_libs(version)))
cmd.extend(get_debugger_flags(version))
cmd.append('-Djpda.settings.debuggeeJavaPath=%s %s' %\
(dalvikvm, ' '.join(get_debuggee_flags(version))))