Merge commit '0bb618cad3eae2929b265f626ab8e9084660fbef' into dev-release
Change-Id: I7b8e3fbaf454f20266db314689191e354907cd60
diff --git a/infra/config/global/generated/cr-buildbucket.cfg b/infra/config/global/generated/cr-buildbucket.cfg
index 0e4e8a2..35c7e74 100644
--- a/infra/config/global/generated/cr-buildbucket.cfg
+++ b/infra/config/global/generated/cr-buildbucket.cfg
@@ -1092,43 +1092,6 @@
}
}
builders {
- name: "linux-dex_default-new_gradle"
- swarming_host: "chrome-swarming.appspot.com"
- swarming_tags: "vpython:native-python-wrapper"
- dimensions: "cpu:x86-64"
- dimensions: "normal:true"
- dimensions: "os:Ubuntu-20.04"
- dimensions: "pool:luci.r8.ci"
- exe {
- cipd_package: "infra_internal/recipe_bundles/chrome-internal.googlesource.com/chrome/tools/build_limited/scripts/slave"
- cipd_version: "refs/heads/master"
- cmd: "luciexe"
- }
- properties:
- '{'
- ' "builder_group": "internal.client.r8",'
- ' "recipe": "rex",'
- ' "test_options": ['
- ' "--runtimes=dex-default",'
- ' "--command_cache_dir=/tmp/ccache",'
- ' "--new-gradle",'
- ' "--tool=r8",'
- ' "--no_internal",'
- ' "--one_line_per_test",'
- ' "--archive_failures"'
- ' ]'
- '}'
- priority: 26
- execution_timeout_secs: 21600
- expiration_secs: 126000
- build_numbers: YES
- service_account: "r8-ci-builder@chops-service-accounts.iam.gserviceaccount.com"
- experiments {
- key: "luci.recipes.use_python3"
- value: 100
- }
- }
- builders {
name: "linux-dex_default_release"
swarming_host: "chrome-swarming.appspot.com"
swarming_tags: "vpython:native-python-wrapper"
diff --git a/infra/config/global/generated/luci-milo.cfg b/infra/config/global/generated/luci-milo.cfg
index 5421e9b..0f163d5 100644
--- a/infra/config/global/generated/luci-milo.cfg
+++ b/infra/config/global/generated/luci-milo.cfg
@@ -21,11 +21,6 @@
short_name: "check"
}
builders {
- name: "buildbucket/luci.r8.ci/linux-dex_default-new_gradle"
- category: "R8"
- short_name: "new_gradle"
- }
- builders {
name: "buildbucket/luci.r8.ci/linux-dex_default"
category: "R8"
short_name: "dex_default"
diff --git a/infra/config/global/generated/luci-notify.cfg b/infra/config/global/generated/luci-notify.cfg
index 26f944f..ff77a2b 100644
--- a/infra/config/global/generated/luci-notify.cfg
+++ b/infra/config/global/generated/luci-notify.cfg
@@ -336,18 +336,6 @@
}
builders {
bucket: "ci"
- name: "linux-dex_default-new_gradle"
- repository: "https://r8.googlesource.com/r8"
- }
-}
-notifiers {
- notifications {
- on_failure: true
- on_new_failure: true
- notify_blamelist {}
- }
- builders {
- bucket: "ci"
name: "linux-dex_default_release"
repository: "https://r8.googlesource.com/r8"
}
diff --git a/infra/config/global/generated/luci-scheduler.cfg b/infra/config/global/generated/luci-scheduler.cfg
index 9ad6e3f..60c9a25 100644
--- a/infra/config/global/generated/luci-scheduler.cfg
+++ b/infra/config/global/generated/luci-scheduler.cfg
@@ -442,20 +442,6 @@
}
}
job {
- id: "linux-dex_default-new_gradle"
- realm: "ci"
- acl_sets: "ci"
- triggering_policy {
- kind: GREEDY_BATCHING
- max_concurrent_invocations: 1
- }
- buildbucket {
- server: "cr-buildbucket.appspot.com"
- bucket: "ci"
- builder: "linux-dex_default-new_gradle"
- }
-}
-job {
id: "linux-dex_default_release"
realm: "ci"
acl_sets: "ci"
@@ -826,7 +812,6 @@
triggers: "linux-android-8.1.0"
triggers: "linux-android-9.0.0"
triggers: "linux-dex_default"
- triggers: "linux-dex_default-new_gradle"
triggers: "linux-internal"
triggers: "linux-jdk11"
triggers: "linux-jdk17"
diff --git a/infra/config/global/generated/project.cfg b/infra/config/global/generated/project.cfg
index 755c550..dcf12da 100644
--- a/infra/config/global/generated/project.cfg
+++ b/infra/config/global/generated/project.cfg
@@ -7,7 +7,7 @@
name: "r8"
access: "group:all"
lucicfg {
- version: "1.39.15"
+ version: "1.39.20"
package_dir: ".."
config_dir: "generated"
entry_point: "main.star"
diff --git a/infra/config/global/main.star b/infra/config/global/main.star
index 86bbec8..11fbd09 100755
--- a/infra/config/global/main.star
+++ b/infra/config/global/main.star
@@ -312,18 +312,6 @@
expiration_timeout = time.hour * 35,
)
-r8_builder(
- name = "linux-dex_default-new_gradle",
- execution_timeout = time.hour * 6,
- expiration_timeout = time.hour * 35,
- dimensions = get_dimensions(),
- max_concurrent_invocations = 1,
- properties = {
- "test_options" : ["--runtimes=dex-default", "--command_cache_dir=/tmp/ccache", "--new-gradle"] + common_test_options,
- "builder_group" : "internal.client.r8"
- }
-)
-
r8_tester_with_default("linux-dex_default",
["--runtimes=dex-default", "--command_cache_dir=/tmp/ccache"],
max_concurrent_invocations = 2)
diff --git a/src/main/java/com/android/tools/r8/BackportedMethodList.java b/src/main/java/com/android/tools/r8/BackportedMethodList.java
index bffd580..04c4886 100644
--- a/src/main/java/com/android/tools/r8/BackportedMethodList.java
+++ b/src/main/java/com/android/tools/r8/BackportedMethodList.java
@@ -4,14 +4,11 @@
package com.android.tools.r8;
-import com.android.tools.r8.graph.DexMethod;
-import com.android.tools.r8.ir.desugar.BackportedMethodRewriter;
-import com.android.tools.r8.utils.DescriptorUtils;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.DesugaredMethodsList;
+import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.DesugaredMethodsListCommand;
+import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.ExceptionUtils;
-import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.StringUtils;
-import com.android.tools.r8.utils.ThreadUtils;
-import java.util.concurrent.ExecutorService;
/**
* Tool to extract the list of methods which is backported by the D8 and R8 compilers.
@@ -62,13 +59,6 @@
" --version # Print the version of BackportedMethodList.",
" --help # Print this message.");
- private static String formatMethod(DexMethod method) {
- return DescriptorUtils.getClassBinaryNameFromDescriptor(method.holder.descriptor.toString())
- + '#'
- + method.name
- + method.proto.toDescriptorString();
- }
-
public static void run(BackportedMethodListCommand command) throws CompilationFailedException {
if (command.isPrintHelp()) {
System.out.println(USAGE_MESSAGE);
@@ -78,28 +68,25 @@
System.out.println("BackportedMethodList " + Version.getVersionString());
return;
}
- InternalOptions options = command.getInternalOptions();
+ DesugaredMethodsList.run(convert(command));
+ }
- ExecutorService executorService = ThreadUtils.getExecutorService(options);
- try {
- ExceptionUtils.withD8CompilationHandler(
- command.getReporter(),
- () -> {
- BackportedMethodRewriter.generateListOfBackportedMethods(
- command.getInputApp(), options, executorService)
- .stream()
- .map(BackportedMethodList::formatMethod)
- .sorted()
- .forEach(
- formattedMethod ->
- command
- .getBackportedMethodListConsumer()
- .accept(formattedMethod, command.getReporter()));
- command.getBackportedMethodListConsumer().finished(command.getReporter());
- });
- } finally {
- executorService.shutdown();
+ private static DesugaredMethodsListCommand convert(BackportedMethodListCommand command) {
+ DesugaredMethodsListCommand.Builder builder =
+ DesugaredMethodsListCommand.builder(command.getReporter());
+ for (ClassFileResourceProvider libraryResourceProvider :
+ command.getInputApp().getLibraryResourceProviders()) {
+ builder.addLibrary(libraryResourceProvider);
}
+ String jsonSource = command.getDesugaredLibraryConfiguration().getJsonSource();
+ if (jsonSource != null) {
+ builder.setDesugarLibrarySpecification(
+ StringResource.fromString(jsonSource, Origin.unknown()));
+ }
+ return builder
+ .setMinApi(command.getMinApiLevel())
+ .setOutputConsumer(command.getBackportedMethodListConsumer())
+ .build();
}
public static void run(String[] args) throws CompilationFailedException {
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java b/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java
index c154471..b77b311 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDebugEventBuilder.java
@@ -35,7 +35,6 @@
public static final int NO_PC_INFO = -1;
private static final int NO_LINE_INFO = -1;
- private final AppView<?> appView;
private final DexEncodedMethod method;
private final DexItemFactory factory;
private final InternalOptions options;
@@ -66,7 +65,6 @@
private int startLine = NO_LINE_INFO;
public DexDebugEventBuilder(AppView<?> appView, IRCode code) {
- this.appView = appView;
method = code.context().getDefinition();
factory = appView.dexItemFactory();
options = appView.options();
@@ -76,7 +74,7 @@
}
/** Add events at pc for instruction. */
- public void add(int pc, int postPc, Instruction instruction, ProgramMethod context) {
+ public void add(int pc, int postPc, Instruction instruction) {
boolean isBlockEntry = instruction.getBlock().entry() == instruction;
boolean isBlockExit = instruction.getBlock().exit() == instruction;
@@ -98,9 +96,7 @@
updateLocals(instruction.asDebugLocalsChange());
} else if (pcAdvancing) {
if (!position.isNone() && !position.equals(emittedPosition)) {
- if (options.debug
- || instruction.instructionInstanceCanThrow(appView, context)
- || isComposing) {
+ if (options.debug || instruction.instructionTypeCanThrow() || isComposing) {
emitDebugPosition(pc, position);
}
}
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 18fc132..3c9c7f3 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -261,8 +261,7 @@
dexInstruction.setOffset(instructionOffset);
instructionOffset += dexInstruction.getSize();
}
- debugEventBuilder.add(
- instructionStartOffset, instructionOffset, irInstruction, getProgramMethod());
+ debugEventBuilder.add(instructionStartOffset, instructionOffset, irInstruction);
}
// Workaround dalvik tracing bug, where the dalvik tracing JIT can end up tracing
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
index f263c2e..5d6e15c 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
@@ -22,14 +22,7 @@
// If we increment this api level, we need to verify everything works correctly.
static final AndroidApiLevel MAX_TESTED_ANDROID_API_LEVEL = AndroidApiLevel.U;
- private final DexItemFactory factory = new DexItemFactory();
- private final Reporter reporter = new Reporter();
- final InternalOptions options =
- new InternalOptions(factory, reporter)
- .getArtProfileOptions()
- .setAllowReadingEmptyArtProfileProvidersMultipleTimesForTesting(true)
- .getOptions();
-
+ final InternalOptions options;
final DesugaredLibrarySpecification desugaredLibrarySpecification;
final StringResource desugaredLibrarySpecificationResource;
final Collection<ProgramResourceProvider> desugaredLibraryImplementation;
@@ -37,11 +30,13 @@
final Collection<ClassFileResourceProvider> androidJar;
AbstractGenerateFiles(
+ Reporter reporter,
StringResource desugaredLibrarySpecificationResource,
Collection<ProgramResourceProvider> desugarImplementation,
Path output,
Collection<ClassFileResourceProvider> androidJar) {
assert androidJar != null;
+ this.options = createOptions(reporter);
this.desugaredLibrarySpecificationResource = desugaredLibrarySpecificationResource;
this.androidJar = androidJar;
this.desugaredLibrarySpecification = readDesugaredLibrarySpecification();
@@ -49,14 +44,21 @@
this.output = output;
}
+ private InternalOptions createOptions(Reporter reporter) {
+ return new InternalOptions(new DexItemFactory(), reporter)
+ .getArtProfileOptions()
+ .setAllowReadingEmptyArtProfileProvidersMultipleTimesForTesting(true)
+ .getOptions();
+ }
+
private DesugaredLibrarySpecification readDesugaredLibrarySpecification() {
if (desugaredLibrarySpecificationResource == null) {
return MachineDesugaredLibrarySpecification.empty();
}
return DesugaredLibrarySpecificationParser.parseDesugaredLibrarySpecification(
desugaredLibrarySpecificationResource,
- factory,
- reporter,
+ options.dexItemFactory(),
+ options.reporter,
false,
AndroidApiLevel.B.getLevel());
}
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
index c2261d4..169dcfe 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsList.java
@@ -9,38 +9,43 @@
import com.android.tools.r8.ArchiveClassFileProvider;
import com.android.tools.r8.ArchiveProgramResourceProvider;
import com.android.tools.r8.ClassFileResourceProvider;
+import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.Keep;
import com.android.tools.r8.ProgramResourceProvider;
import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.StringResource;
import com.android.tools.r8.Version;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.ExceptionUtils;
+import com.android.tools.r8.utils.Reporter;
import com.android.tools.r8.utils.StringUtils;
+import com.android.tools.r8.utils.ThreadUtils;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
import java.nio.file.Paths;
import java.util.Collection;
import java.util.List;
+import java.util.concurrent.ExecutorService;
@Keep
public class DesugaredMethodsList extends GenerateDesugaredLibraryLintFiles {
private final AndroidApiLevel minApi;
-
private final StringConsumer outputConsumer;
DesugaredMethodsList(
int minApi,
+ Reporter reporter,
StringResource desugarConfiguration,
Collection<ProgramResourceProvider> desugarImplementation,
StringConsumer outputConsumer,
Collection<ClassFileResourceProvider> androidJar) {
- super(desugarConfiguration, desugarImplementation, null, androidJar);
+ super(reporter, desugarConfiguration, desugarImplementation, null, androidJar);
this.minApi = AndroidApiLevel.getAndroidApiLevel(minApi);
this.outputConsumer = outputConsumer;
}
- public static void run(DesugaredMethodsListCommand command) throws IOException {
+ public static void run(DesugaredMethodsListCommand command) throws CompilationFailedException {
if (command.isHelp()) {
System.out.println(DesugaredMethodsListCommand.getUsageMessage());
return;
@@ -49,13 +54,23 @@
System.out.println("DesugaredMethodsList " + Version.getVersionString());
return;
}
- new DesugaredMethodsList(
- command.getMinApi(),
- command.getDesugarLibrarySpecification(),
- command.getDesugarLibraryImplementation(),
- command.getOutputConsumer(),
- command.getLibrary())
- .run();
+ ExecutorService executorService = ThreadUtils.getExecutorService(ThreadUtils.NOT_SPECIFIED);
+ try {
+ ExceptionUtils.withD8CompilationHandler(
+ command.getReporter(),
+ () -> {
+ new DesugaredMethodsList(
+ command.getMinApi(),
+ command.getReporter(),
+ command.getDesugarLibrarySpecification(),
+ command.getDesugarLibraryImplementation(),
+ command.getOutputConsumer(),
+ command.getLibrary())
+ .run();
+ });
+ } finally {
+ executorService.shutdown();
+ }
}
@Override
@@ -100,7 +115,7 @@
public static void main(String[] args) throws Exception {
if (args.length == 4 || args.length == 5) {
DesugaredMethodsListCommand.Builder builder =
- DesugaredMethodsListCommand.builder()
+ DesugaredMethodsListCommand.builder(new Reporter())
.setMinApi(parseInt(args[0]))
.setDesugarLibrarySpecification(getSpecificationArg(args[1]))
.setOutputPath(Paths.get(args[3]));
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java
index 924a0e6..726d445 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/DesugaredMethodsListCommand.java
@@ -15,9 +15,8 @@
import com.android.tools.r8.ProgramResourceProvider;
import com.android.tools.r8.StringConsumer;
import com.android.tools.r8.StringResource;
-import com.android.tools.r8.errors.CompilationError;
-import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.Reporter;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.io.IOException;
@@ -33,6 +32,8 @@
private final boolean help;
private final boolean version;
private final int minApi;
+
+ private final Reporter reporter;
private final StringResource desugarLibrarySpecification;
private final Collection<ProgramResourceProvider> desugarLibraryImplementation;
private final StringConsumer outputConsumer;
@@ -40,6 +41,7 @@
DesugaredMethodsListCommand(
int minApi,
+ Reporter reporter,
StringResource desugarLibrarySpecification,
Collection<ProgramResourceProvider> desugarLibraryImplementation,
StringConsumer outputConsumer,
@@ -47,6 +49,7 @@
this.help = false;
this.version = false;
this.minApi = minApi;
+ this.reporter = reporter;
this.desugarLibrarySpecification = desugarLibrarySpecification;
this.desugarLibraryImplementation = desugarLibraryImplementation;
this.outputConsumer = outputConsumer;
@@ -57,6 +60,7 @@
this.help = help;
this.version = version;
this.minApi = -1;
+ this.reporter = null;
this.desugarLibrarySpecification = null;
this.desugarLibraryImplementation = null;
this.outputConsumer = null;
@@ -100,14 +104,19 @@
return builder.toString();
}
- public static Builder builder() {
- return new Builder();
+ public Reporter getReporter() {
+ return reporter;
+ }
+
+ public static Builder builder(DiagnosticsHandler diagnosticsHandler) {
+ return new Builder(diagnosticsHandler);
}
@Keep
public static class Builder {
private int minApi = AndroidApiLevel.B.getLevel();
+ private final Reporter reporter;
private StringResource desugarLibrarySpecification = null;
private Collection<ProgramResourceProvider> desugarLibraryImplementation = new ArrayList<>();
private StringConsumer outputConsumer;
@@ -116,6 +125,10 @@
private boolean help = false;
private boolean version = false;
+ public Builder(DiagnosticsHandler diagnosticsHandler) {
+ this.reporter = new Reporter(diagnosticsHandler);
+ }
+
public Builder setMinApi(int minApi) {
this.minApi = minApi;
return this;
@@ -173,11 +186,11 @@
}
if (desugarLibrarySpecification != null && library.isEmpty()) {
- throw new CompilationError("With desugared library configuration a library is required");
+ reporter.error("With desugared library configuration a library is required");
}
if (!desugarLibraryImplementation.isEmpty() && desugarLibrarySpecification == null) {
- throw new CompilationError(
+ reporter.error(
"desugarLibrarySpecification is required when desugared library implementation is"
+ " present.");
}
@@ -196,6 +209,7 @@
}
return new DesugaredMethodsListCommand(
minApi,
+ reporter,
desugarLibrarySpecification,
desugarLibraryImplementation,
outputConsumer,
@@ -219,8 +233,9 @@
.build();
}
- public DesugaredMethodsListCommand parse(String[] args, Origin origin) throws IOException {
- DesugaredMethodsListCommand.Builder builder = DesugaredMethodsListCommand.builder();
+ public DesugaredMethodsListCommand parse(String[] args, DiagnosticsHandler handler)
+ throws IOException {
+ DesugaredMethodsListCommand.Builder builder = DesugaredMethodsListCommand.builder(handler);
for (int i = 0; i < args.length; i += 2) {
String arg = args[i].trim();
if (arg.length() == 0) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java
index 49d979b..47d7b9f 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateDesugaredLibraryLintFiles.java
@@ -14,6 +14,7 @@
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.DescriptorUtils;
import com.android.tools.r8.utils.FileUtils;
+import com.android.tools.r8.utils.Reporter;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.io.File;
@@ -32,11 +33,12 @@
private static final boolean FORMAT_WITH_FIELD = true;
public GenerateDesugaredLibraryLintFiles(
+ Reporter reporter,
StringResource desugarConfiguration,
Collection<ProgramResourceProvider> desugarImplementation,
Path output,
Collection<ClassFileResourceProvider> androidJar) {
- super(desugarConfiguration, desugarImplementation, output, androidJar);
+ super(reporter, desugarConfiguration, desugarImplementation, output, androidJar);
}
private String lintBaseFileName(
@@ -175,6 +177,7 @@
public static void main(String[] args) throws Exception {
if (args.length == 4) {
new GenerateDesugaredLibraryLintFiles(
+ new Reporter(),
StringResource.fromFile(Paths.get(args[0])),
ImmutableList.of(ArchiveProgramResourceProvider.fromArchive(Paths.get(args[1]))),
Paths.get(args[2]),
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java
index 4bc0821..d1394058 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/GenerateHtmlDoc.java
@@ -23,6 +23,7 @@
import com.android.tools.r8.ir.desugar.desugaredlibrary.lint.SupportedClasses.SupportedClass;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.ListUtils;
+import com.android.tools.r8.utils.Reporter;
import com.android.tools.r8.utils.StringUtils;
import com.google.common.collect.ImmutableList;
import java.io.PrintStream;
@@ -50,7 +51,7 @@
Collection<ProgramResourceProvider> desugarImplementation,
Path outputDirectory,
Collection<ClassFileResourceProvider> androidJar) {
- super(desugarSpecification, desugarImplementation, outputDirectory, androidJar);
+ super(new Reporter(), desugarSpecification, desugarImplementation, outputDirectory, androidJar);
}
private static class StringBuilderWithIndent {
diff --git a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java
index 9e0f71b..6c16ab7 100644
--- a/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java
+++ b/src/main/java/com/android/tools/r8/retrace/PartitionMappingSupplierAsync.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.references.FieldReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.retrace.internal.PartitionMappingSupplierBase;
-import com.android.tools.r8.retrace.internal.RetracerImpl;
@Keep
public class PartitionMappingSupplierAsync
@@ -80,7 +79,7 @@
}
@Override
- public RetracerImpl createRetracer(
+ public Retracer createRetracer(
DiagnosticsHandler diagnosticsHandler, MappingPartitionFromKeySupplier supplier) {
return createRetracerFromPartitionSupplier(diagnosticsHandler, supplier);
}
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
index e07b779..106486b 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
@@ -259,6 +259,7 @@
Path lint = top.resolve("lint_" + spec);
Files.createDirectories(lint);
new GenerateDesugaredLibraryLintFiles(
+ new Reporter(),
StringResource.fromFile(spec.getSpecification()),
ImmutableList.of(ArchiveProgramResourceProvider.fromArchive(jdkLibJar)),
lint,
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
index 07539ed..22c3669 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/KotlinMetadataTestBase.java
@@ -178,4 +178,18 @@
equalTo("Resource 'META-INF/MANIFEST.MF' already exists."),
equalTo("Resource 'META-INF/versions/9/module-info.class' already exists.")));
}
+
+ protected String unresolvedReferenceMessage(KotlinTestParameters param, String ref) {
+ if (param.isKotlinDev()) {
+ return "unresolved reference '" + ref + "'";
+ }
+ return "unresolved reference: " + ref;
+ }
+
+ protected String cannotAccessMessage(KotlinTestParameters param, String ref) {
+ if (param.isKotlinDev()) {
+ return "cannot access 'class " + ref + " : Any'";
+ }
+ return "cannot access '" + ref + "'";
+ }
}
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java
index a1fe961..912504e 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteAllowAccessModificationTest.java
@@ -124,7 +124,8 @@
.disableAssertions()
.compileRaw();
assertEquals(1, mainResult.exitCode);
- assertThat(mainResult.stderr, containsString("cannot access 'LibReference'"));
+ assertThat(
+ mainResult.stderr, containsString(cannotAccessMessage(kotlinParameters, "LibReference")));
}
private void inspect(CodeInspector inspector) {
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java
index 2cdb09a..2ad1340 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInMultifileClassTest.java
@@ -102,7 +102,9 @@
.setOutputPath(temp.newFolder().toPath())
.compileRaw();
assertNotEquals(0, kotlinTestCompileResult.exitCode);
- assertThat(kotlinTestCompileResult.stderr, containsString("unresolved reference: join"));
+ assertThat(
+ kotlinTestCompileResult.stderr,
+ containsString(unresolvedReferenceMessage(kotlinParameters, "join")));
}
private void inspectMerged(CodeInspector inspector) {
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java
index e4243c4..42b5af2 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInSealedClassTest.java
@@ -163,16 +163,20 @@
assertNotEquals(0, kotlinTestCompileResult.exitCode);
if (kotlinParameters.isNewerThanOrEqualTo(KotlinCompilerVersion.KOTLINC_1_5_0)) {
- assertThat(
- kotlinTestCompileResult.stderr,
- containsString(
- "inheritance of sealed classes or interfaces from different module is prohibited"));
+ assertThat(kotlinTestCompileResult.stderr, containsString(sealedClassErrorMessage()));
} else {
assertThat(kotlinTestCompileResult.stderr, containsString("cannot access"));
assertThat(kotlinTestCompileResult.stderr, containsString("private in 'Expr'"));
}
}
+ private String sealedClassErrorMessage() {
+ if (kotlinParameters.isKotlinDev()) {
+ return "a class can only extend a sealed class or interface declared in the same package";
+ }
+ return "inheritance of sealed classes or interfaces from different module is prohibited";
+ }
+
private void inspectInvalid(CodeInspector inspector) {
String exprClassName = PKG + ".sealed_lib.Expr";
String libClassName = PKG + ".sealed_lib.LibKt";
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java
index b5e22d8..a872390 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInTypeAliasTest.java
@@ -30,6 +30,7 @@
import com.android.tools.r8.utils.codeinspector.MethodSubject;
import java.nio.file.Path;
import java.util.Collection;
+import org.junit.Assume;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
@@ -193,6 +194,7 @@
KmTypeProjectionSubject expandedArgument = apIs.expandedType().typeArguments().get(0);
assertThat(expandedArgument.type(), isDexClass(itf.getDexProgramClass()));
+ Assume.assumeFalse("TODO(b/303374432)", kotlinParameters.isKotlinDev());
assertEquals(myAliasedArray.descriptor(packageName), apIs.underlyingType().descriptor());
assertEquals(1, apIs.underlyingType().typeArguments().size());
KmTypeProjectionSubject underlyingArgument = apIs.underlyingType().typeArguments().get(0);
diff --git a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java
index cf513eb..36aa493 100644
--- a/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/metadata/MetadataRewriteInlineClassIncludeDescriptorClassesTest.java
@@ -107,6 +107,8 @@
.setOutputPath(temp.newFolder().toPath())
.compileRaw();
assertEquals(1, kotlinCompileAppResult.exitCode);
- assertThat(kotlinCompileAppResult.stderr, containsString("unresolved reference: Password"));
+ assertThat(
+ kotlinCompileAppResult.stderr,
+ containsString(unresolvedReferenceMessage(kotlinParameters, "Password")));
}
}
diff --git a/src/test/java/com/android/tools/r8/regress/Regress302826300.java b/src/test/java/com/android/tools/r8/regress/Regress302826300.java
new file mode 100644
index 0000000..f87eb90
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/regress/Regress302826300.java
@@ -0,0 +1,79 @@
+// Copyright (c) 2023, 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.regress;
+
+import static org.hamcrest.CoreMatchers.containsString;
+
+import com.android.tools.r8.D8TestRunResult;
+import com.android.tools.r8.TestBase;
+import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.TestParametersCollection;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+@RunWith(Parameterized.class)
+public class Regress302826300 extends TestBase {
+
+ static final String EXPECTED = "foobar";
+
+ private final TestParameters parameters;
+
+ @Parameterized.Parameters(name = "{0}")
+ public static TestParametersCollection data() {
+ return getTestParameters().withDexRuntimes().withAllApiLevels().build();
+ }
+
+ public Regress302826300(TestParameters parameters) {
+ this.parameters = parameters;
+ }
+
+ @Test
+ public void testD8() throws Exception {
+ D8TestRunResult run =
+ testForD8(parameters.getBackend())
+ // We simply pass LibraryBaseClass as program, but could also compile it separately and
+ // pass as bootclasspath when running.
+ .addProgramClasses(
+ Foo.class, Bar.class, ProgramClassExtendsLibrary.class, LibraryBaseClass.class)
+ // LibraryClass is passed when compiling - but not passed when running
+ .addLibraryClasses(LibraryClass.class)
+ .setMinApi(parameters)
+ .run(parameters.getRuntime(), Foo.class);
+ if (parameters.getRuntime().asDex().getVersion().isDalvik()) {
+ run.assertFailureWithErrorThatMatches(containsString("rejecting opcode 0x6e"));
+ } else {
+ run.assertSuccessWithOutputLines(EXPECTED);
+ }
+ }
+
+ public static class Foo {
+ public static void main(String[] args) {
+ new Bar().x("foobar");
+ }
+ }
+
+ public static class Bar {
+ public void x(ProgramClassExtendsLibrary value) {
+ // To trigger the hard verification error it is important that the invoke virtual is to
+ // a class actually known at runtime - but not the ProgramClassExtendsLibrary which we
+ // don't know so it only triggers a soft verification error.
+ ((LibraryBaseClass) value).z();
+ }
+
+ public void x(String s) {
+ System.out.println(s);
+ }
+ }
+
+ public static class ProgramClassExtendsLibrary extends LibraryClass {}
+
+ public static class LibraryClass extends LibraryBaseClass {}
+
+ public static class LibraryBaseClass {
+ public void z() {
+ System.out.println("z()");
+ }
+ }
+}
diff --git a/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java b/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java
index 1afb1c3..3f11198 100644
--- a/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/TreeShakingSpecificTest.java
@@ -18,7 +18,6 @@
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.StringUtils;
import java.io.BufferedReader;
-import java.io.IOException;
import java.io.StringReader;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
@@ -27,11 +26,13 @@
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;
+@Ignore("Will be fixed by update in CL 84843")
@RunWith(Parameterized.class)
public class TreeShakingSpecificTest extends TestBase {
diff --git a/tools/archive.py b/tools/archive.py
index 7beaede..8ec73ea 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -74,35 +74,27 @@
def GetStorageDestination(storage_prefix,
version_or_path,
file_name,
- is_main,
- new_gradle=False):
+ is_main):
# We archive main commits under raw/main instead of directly under raw
version_dir = GetVersionDestination(storage_prefix,
version_or_path,
- is_main,
- new_gradle)
+ is_main)
return '%s/%s' % (version_dir, file_name)
-def GetVersionDestination(storage_prefix, version_or_path, is_main,
- new_gradle=False):
- assert new_gradle
+def GetVersionDestination(storage_prefix, version_or_path, is_main):
archive_dir = 'raw/main' if is_main else 'raw'
- bucket = ARCHIVE_BUCKET
- return '%s%s/%s/%s' % (storage_prefix, bucket,
+ return '%s%s/%s/%s' % (storage_prefix, ARCHIVE_BUCKET,
archive_dir, version_or_path)
-def GetUploadDestination(version_or_path, file_name, is_main,
- new_gradle=False):
- return GetStorageDestination('gs://', version_or_path, file_name, is_main,
- new_gradle)
+def GetUploadDestination(version_or_path, file_name, is_main):
+ return GetStorageDestination('gs://', version_or_path, file_name, is_main)
-def GetUrl(version_or_path, file_name, is_main, new_gradle=False):
+def GetUrl(version_or_path, file_name, is_main):
return GetStorageDestination('https://storage.googleapis.com/',
- version_or_path, file_name, is_main, new_gradle)
+ version_or_path, file_name, is_main)
-def GetMavenUrl(is_main, new_gradle=False):
- return GetVersionDestination('https://storage.googleapis.com/', '', is_main,
- new_gradle)
+def GetMavenUrl(is_main):
+ return GetVersionDestination('https://storage.googleapis.com/', '', is_main)
def SetRLimitToMax():
(soft, hard) = resource.getrlimit(resource.RLIMIT_NOFILE)
@@ -116,10 +108,9 @@
def Main():
(options, args) = ParseOptions()
- Run(options, True)
+ Run(options)
-def Run(options, new_gradle):
- assert new_gradle
+def Run(options):
if not utils.is_bot() and not options.dry_run:
raise Exception('You are not a bot, don\'t archive builds. '
+ 'Use --dry-run to test locally')
@@ -153,49 +144,25 @@
create_maven_release.generate_r8_maven_zip(
utils.MAVEN_ZIP_LIB,
version_file=version_file,
- skip_gradle_build=options.skip_gradle_build,
- new_gradle=new_gradle)
-
-
- # Generate and copy a full build without dependencies.
- if (not options.skip_gradle_build):
- if (new_gradle):
- gradle.RunGradle([':main:swissArmyKnife'], new_gradle=True)
- else:
- gradle.RunGradleExcludeDeps([utils.R8, utils.R8_SRC])
- if (not new_gradle):
- shutil.copyfile(utils.R8_JAR, utils.R8_FULL_EXCLUDE_DEPS_JAR)
+ skip_gradle_build=options.skip_gradle_build)
# Ensure all archived artifacts has been built before archiving.
# The target tasks postfixed by 'lib' depend on the actual target task so
# building it invokes the original task first.
# The '-Pno_internal' flag is important because we generate the lib based on uses in tests.
if (not options.skip_gradle_build):
- if (new_gradle):
- gradle.RunGradle([
- ':keepanno:keepAnnoAnnotationsJar',
- ':main:consolidatedLicense',
- ':main:r8WithRelocatedDeps',
- ':main:swissArmyKnife',
- ':test:r8LibNoDeps',
- ':test:r8LibWithRelocatedDeps',
- ':test:retraceNoDeps',
- ':test:retraceWithRelocatedDeps',
- ':test:sourcesJar',
- ':test:sourcesJar',
- '-Pno_internal'
- ], new_gradle=True)
- else:
- gradle.RunGradle([
- utils.R8,
- utils.R8LIB,
- utils.R8LIB_NO_DEPS,
- utils.R8RETRACE,
- utils.R8RETRACE_NO_DEPS,
- utils.LIBRARY_DESUGAR_CONVERSIONS,
- utils.KEEPANNO_ANNOTATIONS_TARGET,
- '-Pno_internal'
- ])
+ gradle.RunGradle([
+ utils.GRADLE_TASK_CONSOLIDATED_LICENSE,
+ utils.GRADLE_TASK_KEEP_ANNO_JAR,
+ utils.GRADLE_TASK_R8,
+ utils.GRADLE_TASK_R8LIB,
+ utils.GRADLE_TASK_R8LIB_NO_DEPS,
+ utils.GRADLE_TASK_RETRACE,
+ utils.GRADLE_TASK_RETRACE_NO_DEPS,
+ utils.GRADLE_TASK_SOURCE_JAR,
+ utils.GRADLE_TASK_SWISS_ARMY_KNIFE,
+ '-Pno_internal'
+ ], new_gradle=True)
# Create maven release of the desuage_jdk_libs configuration. This require
# an r8.jar with dependencies to have been built.
@@ -233,7 +200,7 @@
print('On main, using git hash for archiving')
version = GetGitHash()
- destination = GetVersionDestination('gs://', version, is_main, new_gradle)
+ destination = GetVersionDestination('gs://', version, is_main)
if utils.cloud_storage_exists(destination) and not options.dry_run:
raise Exception('Target archive directory %s already exists' % destination)
@@ -273,8 +240,7 @@
if file_name.endswith('.jar') and not file_name.endswith('-src.jar'):
with zipfile.ZipFile(tagged_jar, 'a') as zip:
zip.write(version_file, os.path.basename(version_file))
- destination = GetUploadDestination(version, file_name, is_main,
- new_gradle=new_gradle)
+ destination = GetUploadDestination(version, file_name, is_main)
print('Uploading %s to %s' % (tagged_jar, destination))
if options.dry_run:
if options.dry_run_output:
@@ -286,24 +252,21 @@
print('Dry run, not actually uploading')
else:
utils.upload_file_to_cloud_storage(tagged_jar, destination)
- print('File available at: %s' % GetUrl(version, file_name, is_main,
- new_gradle=new_gradle))
+ print('File available at: %s' % GetUrl(version, file_name, is_main))
# Upload R8 to a maven compatible location.
if file == utils.R8_JAR:
maven_dst = GetUploadDestination(utils.get_maven_path('r8', version),
- 'r8-%s.jar' % version, is_main,
- new_gradle=new_gradle)
+ 'r8-%s.jar' % version, is_main)
maven_pom_dst = GetUploadDestination(
utils.get_maven_path('r8', version),
- 'r8-%s.pom' % version, is_main, new_gradle=new_gradle)
+ 'r8-%s.pom' % version, is_main)
if options.dry_run:
print('Dry run, not actually creating maven repo for R8')
else:
utils.upload_file_to_cloud_storage(tagged_jar, maven_dst)
utils.upload_file_to_cloud_storage(default_pom_file, maven_pom_dst)
- print('Maven repo root available at: %s' % GetMavenUrl(
- is_main, new_gradle=new_gradle))
+ print('Maven repo root available at: %s' % GetMavenUrl(is_main))
# Upload desugar_jdk_libs configuration to a maven compatible location.
if file == utils.DESUGAR_CONFIGURATION:
@@ -311,8 +274,7 @@
jar_version_name = 'desugar_jdk_libs_configuration-%s.jar' % version
maven_dst = GetUploadDestination(
utils.get_maven_path('desugar_jdk_libs_configuration', version),
- jar_version_name, is_main,
- new_gradle=new_gradle)
+ jar_version_name, is_main)
with utils.TempDir() as tmp_dir:
desugar_jdk_libs_configuration_jar = os.path.join(tmp_dir,
@@ -333,11 +295,10 @@
else:
utils.upload_file_to_cloud_storage(
desugar_jdk_libs_configuration_jar, maven_dst)
- print('Maven repo root available at: %s' % GetMavenUrl(is_main,
- new_gradle=new_gradle))
+ print('Maven repo root available at: %s' % GetMavenUrl(is_main))
# Also archive the jar as non maven destination for Google3
jar_destination = GetUploadDestination(
- version, jar_basename, is_main, new_gradle=new_gradle)
+ version, jar_basename, is_main)
utils.upload_file_to_cloud_storage(
desugar_jdk_libs_configuration_jar, jar_destination)
@@ -348,8 +309,7 @@
jar_version_name = 'desugar_jdk_libs_configuration-%s-jdk11-legacy.jar' % version
maven_dst = GetUploadDestination(
utils.get_maven_path('desugar_jdk_libs_configuration', version),
- jar_version_name, is_main,
- new_gradle=new_gradle)
+ jar_version_name, is_main)
with utils.TempDir() as tmp_dir:
desugar_jdk_libs_configuration_jar = os.path.join(tmp_dir,
@@ -370,11 +330,10 @@
else:
utils.upload_file_to_cloud_storage(
desugar_jdk_libs_configuration_jar, maven_dst)
- print('Maven repo root available at: %s' % GetMavenUrl(
- is_main, new_gradle=new_gradle))
+ print('Maven repo root available at: %s' % GetMavenUrl(is_main))
# Also archive the jar as non maven destination for Google3
jar_destination = GetUploadDestination(
- version, jar_basename, is_main, new_gradle=new_gradle)
+ version, jar_basename, is_main)
utils.upload_file_to_cloud_storage(
desugar_jdk_libs_configuration_jar, jar_destination)
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py
index f93213a..8079c61 100755
--- a/tools/create_maven_release.py
+++ b/tools/create_maven_release.py
@@ -252,7 +252,7 @@
new_gradle=False):
if not skip_gradle_build:
if (new_gradle):
- gradle.RunGradle([':test:r8LibWithRelocatedDeps',
+ gradle.RunGradle([utils.GRADLE_TASK_R8LIB,
'-Pno_internal'], new_gradle=True)
else:
gradle.RunGradle([utils.R8LIB, '-Pno_internal'])
diff --git a/tools/run_benchmark.py b/tools/run_benchmark.py
index c066678..929a672 100755
--- a/tools/run_benchmark.py
+++ b/tools/run_benchmark.py
@@ -16,8 +16,7 @@
NONLIB_BUILD_TARGET = 'R8WithRelocatedDeps'
NONLIB_TEST_BUILD_TARGETS = [utils.R8_TESTS_TARGET, utils.R8_TESTS_DEPS_TARGET]
-# TODO(b/300387869): Cleanup targets
-R8LIB_BUILD_TARGET = ':test:r8LibWithRelocatedDeps'
+R8LIB_BUILD_TARGET = utils.GRADLE_TASK_R8LIB
R8LIB_TEST_BUILD_TARGETS = [utils.R8LIB_TESTS_TARGET, utils.R8LIB_TESTS_DEPS_TARGET]
# The r8lib target is always the golem target.
diff --git a/tools/run_on_app_dump.py b/tools/run_on_app_dump.py
index 8602ea9..feb584d 100755
--- a/tools/run_on_app_dump.py
+++ b/tools/run_on_app_dump.py
@@ -24,8 +24,8 @@
import utils
# TODO(b/300387869): Cleanup targets
-GOLEM_BUILD_TARGETS = [':test:r8LibWithRelocatedDeps',
- ':test:retraceWithRelocatedDeps']
+GOLEM_BUILD_TARGETS = [utils.GRADLE_TASK_R8LIB,
+ utils.GRADLE_TASK_RETRACE]
SHRINKERS = ['r8', 'r8-full', 'r8-nolib', 'r8-nolib-full']
class AttrDict(dict):
diff --git a/tools/test.py b/tools/test.py
index 0437701..07adad9 100755
--- a/tools/test.py
+++ b/tools/test.py
@@ -205,9 +205,6 @@
result.add_argument('--kotlin-compiler-old',
help='Specify to run tests on older kotlin compilers',
default=False, action='store_true')
- result.add_argument('--new-gradle',
- help='Specify to run in the new gradle setup',
- default=True, action='store_true')
return result.parse_known_args()
def has_failures(classes_file):
@@ -244,7 +241,7 @@
def Main():
(options, args) = ParseOptions()
if utils.is_bot():
- gradle.RunGradle(['--no-daemon', 'clean'], new_gradle=options.new_gradle)
+ gradle.RunGradle(['--no-daemon', 'clean'], new_gradle=True)
print('Running with python ' + str(sys.version_info))
# Always print stats on bots if command cache is enabled
options.command_cache_stats = options.command_cache_dir is not None
@@ -302,7 +299,7 @@
gradle_args.append('-Pslow_tests=1')
if options.tool:
gradle_args.append('-Ptool=%s' % options.tool)
- if options.one_line_per_test and not options.new_gradle:
+ if options.one_line_per_test:
gradle_args.append('-Pone_line_per_test')
if options.test_namespace:
gradle_args.append('-Ptest_namespace=%s' % options.test_namespace)
@@ -357,14 +354,6 @@
exit(1)
if not options.no_r8lib:
gradle_args.append('-Pr8lib')
- if options.new_gradle:
- gradle_args.append(':test:r8LibNoDeps')
- gradle_args.append(':test:retraceWithRelocatedDeps')
- else:
- # Force gradle to build a version of r8lib without dependencies for
- # BootstrapCurrentEqualityTest.
- gradle_args.append('R8LibNoDeps')
- gradle_args.append('R8Retrace')
if options.r8lib_no_deps:
gradle_args.append('-Pr8lib_no_deps')
if options.worktree:
@@ -379,26 +368,18 @@
if options.no_arttests:
gradle_args.append('-Pno_arttests=true')
- # Testing state is only supported in new-gradle going forward
- if options.new_gradle and options.rerun:
+ if options.rerun:
testing_state.set_up_test_state(gradle_args, options.rerun, options.testing_state_dir)
# Enable completeness testing of ART profile rewriting.
gradle_args.append('-Part_profile_rewriting_completeness_check=true')
# Build an R8 with dependencies for bootstrapping tests before adding test sources.
- if options.new_gradle:
- gradle_args.append(':main:r8WithRelocatedDeps')
- gradle_args.append(':test:cleanTest')
- gradle_args.append('test:test')
- gradle_args.append('--stacktrace')
- gradle_args.append('-Pprint_full_stacktraces')
- else:
- gradle_args.append('r8WithRelocatedDeps')
- gradle_args.append('r8WithRelocatedDeps17')
- # Add Gradle tasks
- gradle_args.append('cleanTest')
- gradle_args.append('test')
+ gradle_args.append(utils.GRADLE_TASK_R8)
+ gradle_args.append(utils.GRADLE_TASK_CLEAN_TEST)
+ gradle_args.append(utils.GRADLE_TASK_TEST)
+ gradle_args.append('--stacktrace')
+ gradle_args.append('-Pprint_full_stacktraces')
if options.debug_agent:
gradle_args.append('--debug-jvm')
@@ -476,7 +457,7 @@
gradle_args.append('-Pruntimes=%s' % ':'.join(runtimes))
return_code = gradle.RunGradle(
- gradle_args, throw_on_failure=False, new_gradle=options.new_gradle)
+ gradle_args, throw_on_failure=False, new_gradle=True)
return archive_and_return(return_code, options)
# Legacy testing populates the runtimes based on dex_vm.
@@ -496,7 +477,7 @@
'-Pruntimes=%s' % ':'.join(runtimes),
],
throw_on_failure=False,
- new_gradle=options.new_gradle)
+ new_gradle=True)
if options.generate_golden_files_to:
sha1 = '%s' % utils.get_HEAD_sha1()
with utils.ChangedWorkingDirectory(options.generate_golden_files_to):
diff --git a/tools/utils.py b/tools/utils.py
index 4c671b9..4b07b6f 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -42,6 +42,18 @@
TEST_ROOT = os.path.join(REPO_ROOT, 'src', 'test', 'java')
REPO_SOURCE = 'https://r8.googlesource.com/r8'
+GRADLE_TASK_CLEAN_TEST = ':test:cleanTest'
+GRADLE_TASK_CONSOLIDATED_LICENSE = ':main:consolidatedLicense'
+GRADLE_TASK_KEEP_ANNO_JAR = ':keepanno:keepAnnoAnnotationsJar'
+GRADLE_TASK_R8 = ':main:r8WithRelocatedDeps'
+GRADLE_TASK_R8LIB = ':test:r8LibWithRelocatedDeps'
+GRADLE_TASK_R8LIB_NO_DEPS = ':test:r8LibNoDeps'
+GRADLE_TASK_RETRACE = ':test:retraceWithRelocatedDeps'
+GRADLE_TASK_RETRACE_NO_DEPS = ':test:retraceNoDeps'
+GRADLE_TASK_SOURCE_JAR = ':test:sourcesJar'
+GRADLE_TASK_SWISS_ARMY_KNIFE = ':main:swissArmyKnife'
+GRADLE_TASK_TEST = ':test:test'
+
D8 = 'd8'
R8 = 'r8'
R8LIB = 'r8lib'