Revert "Add 11-char unique build ID to marker and Proguard map."
This reverts commit 45ba73ee4b6833e689ae2d4ad41f9355a08f697f.
Reason for revert: Intentional nondeterminism breaks tests.
Bug: 123428923
Change-Id: Id4977baa9e4510626349329678b8e283e40a35e6
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index e920ad3..466a26f 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -148,12 +148,10 @@
if (options.testing.dontCreateMarkerInD8) {
return null;
}
- Marker marker =
- new Marker(Tool.D8)
- .setVersion(Version.LABEL)
- .setCompilationMode(options.debug ? CompilationMode.DEBUG : CompilationMode.RELEASE)
- .setMinApi(options.minApiLevel)
- .setBuildId(options.buildId);
+ Marker marker = new Marker(Tool.D8)
+ .setVersion(Version.LABEL)
+ .setCompilationMode(options.debug ? CompilationMode.DEBUG : CompilationMode.RELEASE)
+ .setMinApi(options.minApiLevel);
if (Version.isDev()) {
marker.setSha1(VersionProperties.INSTANCE.getSha());
}
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 36d4cf7..75b0c81 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -169,14 +169,10 @@
if (options.hasMarker()) {
return options.getMarker();
}
- Marker marker =
- new Marker(Tool.R8)
- .setVersion(Version.LABEL)
- .setCompilationMode(options.debug ? CompilationMode.DEBUG : CompilationMode.RELEASE)
- .setBuildId(options.buildId);
- if (!options.isGeneratingClassFiles()) {
- marker.setMinApi(options.minApiLevel);
- }
+ Marker marker = new Marker(Tool.R8)
+ .setVersion(Version.LABEL)
+ .setCompilationMode(options.debug ? CompilationMode.DEBUG : CompilationMode.RELEASE)
+ .setMinApi(options.minApiLevel);
if (Version.isDev()) {
marker.setSha1(VersionProperties.INSTANCE.getSha());
}
@@ -633,7 +629,8 @@
namingLens,
options.lineNumberOptimization == LineNumberOptimization.OFF);
timing.end();
- proguardMapSupplier = ProguardMapSupplier.fromClassNameMapper(classNameMapper, options);
+ proguardMapSupplier =
+ ProguardMapSupplier.fromClassNameMapper(classNameMapper, options.minApiLevel);
// If a method filter is present don't produce output since the application is likely partial.
if (options.hasMethodsFilter()) {
diff --git a/src/main/java/com/android/tools/r8/dex/Marker.java b/src/main/java/com/android/tools/r8/dex/Marker.java
index 41270da..3d977f6 100644
--- a/src/main/java/com/android/tools/r8/dex/Marker.java
+++ b/src/main/java/com/android/tools/r8/dex/Marker.java
@@ -21,7 +21,6 @@
public static final String MIN_API = "min-api";
public static final String SHA1 = "sha-1";
public static final String COMPILATION_MODE = "compilation-mode";
- public static final String BUILD_ID = "build-id";
public enum Tool {D8, R8}
@@ -94,16 +93,6 @@
return this;
}
- public String getBuildId() {
- return jsonObject.get(BUILD_ID).getAsString();
- }
-
- public Marker setBuildId(String uuid) {
- assert !jsonObject.has(BUILD_ID);
- jsonObject.addProperty(BUILD_ID, uuid);
- return this;
- }
-
@Override
public String toString() {
// In order to make printing of markers deterministic we sort the entries by key.
diff --git a/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java b/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java
index d905116..5ee5891 100644
--- a/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java
+++ b/src/main/java/com/android/tools/r8/naming/ProguardMapSupplier.java
@@ -5,7 +5,6 @@
import com.android.tools.r8.Version;
import com.android.tools.r8.graph.DexApplication;
-import com.android.tools.r8.utils.InternalOptions;
import com.android.tools.r8.utils.VersionProperties;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -19,38 +18,39 @@
public static final String MARKER_KEY_COMPILER_VERSION = "compiler_version";
public static final String MARKER_KEY_COMPILER_HASH = "compiler_hash";
public static final String MARKER_KEY_MIN_API = "min_api";
- public static final String MARKER_KEY_BUILD_ID = "build_id";
public static ProguardMapSupplier fromClassNameMapper(
- ClassNameMapper classNameMapper, InternalOptions options) {
- return new ProguardMapSupplier(true, classNameMapper, null, null, options);
+ ClassNameMapper classNameMapper, int minApiLevel) {
+ return new ProguardMapSupplier(classNameMapper, minApiLevel);
}
public static ProguardMapSupplier fromNamingLens(
- NamingLens namingLens, DexApplication dexApplication, InternalOptions options) {
- return new ProguardMapSupplier(false, null, namingLens, dexApplication, options);
+ NamingLens namingLens, DexApplication dexApplication, int minApiLevel) {
+ return new ProguardMapSupplier(namingLens, dexApplication, minApiLevel);
}
- public ProguardMapSupplier(
- boolean useClassNameMapper,
- ClassNameMapper classNameMapper,
- NamingLens namingLens,
- DexApplication application,
- InternalOptions options) {
- this.useClassNameMapper = useClassNameMapper;
+ private ProguardMapSupplier(ClassNameMapper classNameMapper, int minApiLevel) {
+ this.useClassNameMapper = true;
this.classNameMapper = classNameMapper;
+ this.namingLens = null;
+ this.application = null;
+ this.minApiLevel = minApiLevel;
+ }
+
+ private ProguardMapSupplier(
+ NamingLens namingLens, DexApplication dexApplication, int minApiLevel) {
+ this.useClassNameMapper = false;
+ this.classNameMapper = null;
this.namingLens = namingLens;
- this.application = application;
- this.minApiLevel = options.isGeneratingClassFiles() ? null : options.minApiLevel;
- this.buildId = options.buildId;
+ this.application = dexApplication;
+ this.minApiLevel = minApiLevel;
}
private final boolean useClassNameMapper;
private final ClassNameMapper classNameMapper;
private final NamingLens namingLens;
private final DexApplication application;
- private final Integer minApiLevel;
- private final String buildId;
+ private final int minApiLevel;
public String get() {
String body = getBody();
@@ -61,23 +61,23 @@
if (Version.isDev()) {
shaLine = "# " + MARKER_KEY_COMPILER_HASH + ": " + VersionProperties.INSTANCE.getSha() + "\n";
}
- StringBuilder builder = new StringBuilder();
- builder.append(
- "# "
- + MARKER_KEY_COMPILER
- + ": "
- + MARKER_VALUE_COMPILER
- + "\n"
- + "# "
- + MARKER_KEY_COMPILER_VERSION
- + ": "
- + Version.LABEL
- + "\n");
- if (minApiLevel != null) {
- builder.append("# " + MARKER_KEY_MIN_API + ": " + minApiLevel + "\n");
- }
- builder.append(shaLine + "# " + MARKER_KEY_BUILD_ID + ": " + buildId + "\n" + body);
- return builder.toString();
+ return "# "
+ + MARKER_KEY_COMPILER
+ + ": "
+ + MARKER_VALUE_COMPILER
+ + "\n"
+ + "# "
+ + MARKER_KEY_COMPILER_VERSION
+ + ": "
+ + Version.LABEL
+ + "\n"
+ + "# "
+ + MARKER_KEY_MIN_API
+ + ": "
+ + minApiLevel
+ + "\n"
+ + shaLine
+ + body;
}
private String getBody() {
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 09f2ef7..3997982 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -28,16 +28,13 @@
import com.android.tools.r8.utils.IROrdering.NondeterministicIROrdering;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
-import java.nio.ByteBuffer;
import java.nio.file.Path;
import java.util.ArrayList;
-import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-import java.util.UUID;
import java.util.function.Consumer;
public class InternalOptions {
@@ -66,19 +63,6 @@
public final List<DataResourceProvider> dataResourceProviders = new ArrayList<>();
public DataResourceConsumer dataResourceConsumer;
- // Generate 11-char unique random string using the UUID generator.
- private static String generateBuildId() {
- UUID uuid = UUID.randomUUID();
- return Base64.getEncoder()
- .withoutPadding()
- .encodeToString(
- ByteBuffer.allocate(8)
- .putLong(uuid.getLeastSignificantBits() ^ uuid.getMostSignificantBits())
- .array());
- }
-
- public final String buildId = generateBuildId();
-
// Constructor for testing and/or other utilities.
public InternalOptions() {
reporter = new Reporter();
diff --git a/src/test/java/com/android/tools/r8/ExtractMarkerTest.java b/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
index 48482f8..6a47607 100644
--- a/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/ExtractMarkerTest.java
@@ -4,36 +4,24 @@
package com.android.tools.r8;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertTrue;
import com.android.tools.r8.dex.Marker;
import com.android.tools.r8.dex.Marker.Tool;
-import com.android.tools.r8.utils.InternalOptions;
import java.nio.file.Paths;
import java.util.Collection;
import java.util.Set;
import org.junit.Test;
public class ExtractMarkerTest {
- private static final String CLASS_FILE =
- ToolHelper.EXAMPLES_BUILD_DIR + "classes/trivial/Trivial.class";
-
- private static void verifyMarker(Marker marker, Tool tool) {
- assertEquals(tool, marker.getTool());
- assertEquals(Version.LABEL, marker.getVersion());
- assertEquals(CompilationMode.DEBUG.toString().toLowerCase(), marker.getCompilationMode());
- String anotherBuildId = new InternalOptions().buildId;
- assertNotEquals(anotherBuildId, marker.getBuildId());
- }
@Test
public void extractMarkerTestDex() throws CompilationFailedException {
+ String classFile = ToolHelper.EXAMPLES_BUILD_DIR + "classes/trivial/Trivial.class";
boolean[] testExecuted = {false};
-
D8.run(
D8Command.builder()
- .addProgramFiles(Paths.get(CLASS_FILE))
+ .addProgramFiles(Paths.get(classFile))
.setProgramConsumer(
new DexIndexedConsumer.ForwardingConsumer(null) {
@Override
@@ -51,7 +39,11 @@
} catch (Exception e) {
throw new RuntimeException(e);
}
- verifyMarker(marker, Tool.D8);
+ assertEquals(Tool.D8, marker.getTool());
+ assertEquals(Version.LABEL, marker.getVersion());
+ assertEquals(
+ CompilationMode.DEBUG.toString().toLowerCase(),
+ marker.getCompilationMode());
testExecuted[0] = true;
}
})
@@ -61,10 +53,11 @@
@Test
public void extractMarkerTestCf() throws CompilationFailedException {
+ String classFile = ToolHelper.EXAMPLES_BUILD_DIR + "classes/trivial/Trivial.class";
boolean[] testExecuted = {false};
R8.run(
R8Command.builder()
- .addProgramFiles(Paths.get(CLASS_FILE))
+ .addProgramFiles(Paths.get(classFile))
.addLibraryFiles(ToolHelper.getJava8RuntimeJar())
.setMode(CompilationMode.DEBUG)
.setDisableTreeShaking(true)
@@ -82,7 +75,11 @@
} catch (Exception e) {
throw new RuntimeException(e);
}
- verifyMarker(marker, Tool.R8);
+ assertEquals(Tool.R8, marker.getTool());
+ assertEquals(Version.LABEL, marker.getVersion());
+ assertEquals(
+ CompilationMode.DEBUG.toString().toLowerCase(),
+ marker.getCompilationMode());
testExecuted[0] = true;
}
})
diff --git a/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java b/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
index a3dedd9..6310054 100644
--- a/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
+++ b/src/test/java/com/android/tools/r8/ProguardMapMarkerTest.java
@@ -6,125 +6,55 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import com.android.tools.r8.dex.Marker;
import com.android.tools.r8.naming.ProguardMapSupplier;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.VersionProperties;
import java.nio.file.Paths;
-import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import org.junit.Test;
public class ProguardMapMarkerTest {
- private static final int EXPECTED_NUMBER_OF_KEYS_DEX = 5;
- private static final int EXPECTED_NUMBER_OF_KEYS_CF = 4;
- private static final String CLASS_FILE =
- ToolHelper.EXAMPLES_BUILD_DIR + "classes/trivial/Trivial.class";
-
@Test
public void proguardMapMarkerTest24() throws CompilationFailedException {
- proguardMapMarkerTestDex(AndroidApiLevel.N);
+ proguardMapMarkerTest(AndroidApiLevel.N);
}
@Test
public void proguardMapMarkerTest26() throws CompilationFailedException {
- proguardMapMarkerTestDex(AndroidApiLevel.O);
+ proguardMapMarkerTest(AndroidApiLevel.O);
}
- private static class BuildIds {
- String fromProgram = null;
- String fromMap = null;
- }
-
- private void proguardMapMarkerTestDex(AndroidApiLevel minApiLevel)
- throws CompilationFailedException {
- BuildIds buildIds = new BuildIds();
+ private void proguardMapMarkerTest(AndroidApiLevel minApiLevel) throws CompilationFailedException {
+ String classFile = ToolHelper.EXAMPLES_BUILD_DIR + "classes/trivial/Trivial.class";
R8.run(
R8Command.builder()
- .addProgramFiles(Paths.get(CLASS_FILE))
- .setDisableTreeShaking(true)
+ .addProgramFiles(Paths.get(classFile))
.setProgramConsumer(
- new DexIndexedConsumer.ForwardingConsumer(null) {
+ new DexIndexedConsumer() {
@Override
public void accept(
int fileIndex,
ByteDataView data,
Set<String> descriptors,
- DiagnosticsHandler handler) {
- Marker marker;
- try {
- Collection<Marker> markers =
- ExtractMarker.extractMarkerFromDexProgramData(data.copyByteData());
- assertEquals(1, markers.size());
- marker = markers.iterator().next();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- buildIds.fromProgram = marker.getBuildId();
- }
+ DiagnosticsHandler handler) {}
+
+ @Override
+ public void finished(DiagnosticsHandler handler) {}
})
.addLibraryFiles(ToolHelper.getAndroidJar(minApiLevel))
.setMinApiLevel(minApiLevel.getLevel())
.setProguardMapConsumer(
(proguardMap, handler) -> {
- buildIds.fromMap =
- verifyMarkersGetBuildId(
- proguardMap, minApiLevel.getLevel(), EXPECTED_NUMBER_OF_KEYS_DEX);
+ verifyMarkers(proguardMap, minApiLevel.getLevel());
})
.build());
- verifyBuildIds(buildIds);
}
- private void verifyBuildIds(BuildIds buildIds) {
- assertTrue(buildIds.fromProgram != null && buildIds.fromProgram.length() > 0);
- assertTrue(buildIds.fromMap != null && buildIds.fromMap.length() > 0);
- assertEquals(buildIds.fromMap, buildIds.fromProgram);
- }
-
- @Test
- public void proguardMapMarkerTestCf() throws CompilationFailedException {
- BuildIds buildIds = new BuildIds();
- R8.run(
- R8Command.builder()
- .addProgramFiles(Paths.get(CLASS_FILE))
- .setDisableTreeShaking(true)
- .setProgramConsumer(
- new ClassFileConsumer.ForwardingConsumer(null) {
- @Override
- public void accept(
- ByteDataView data, String descriptor, DiagnosticsHandler handler) {
- Marker marker;
- try {
- Collection<Marker> markers =
- ExtractMarker.extractMarkerFromClassProgramData(data.copyByteData());
- assertEquals(1, markers.size());
- marker = markers.iterator().next();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- buildIds.fromProgram = marker.getBuildId();
- }
- })
- .addLibraryFiles(ToolHelper.getJava8RuntimeJar())
- .setProguardMapConsumer(
- (proguardMap, handler) -> {
- buildIds.fromMap =
- verifyMarkersGetBuildId(proguardMap, null, EXPECTED_NUMBER_OF_KEYS_CF);
- })
- .build());
- verifyBuildIds(buildIds);
- }
-
- private static String verifyMarkersGetBuildId(
- String proguardMap, Integer minApiLevel, int expectedNumberOfKeys) {
+ private static void verifyMarkers(String proguardMap, int minApiLevel) {
String[] lines = proguardMap.split("\n");
Set<String> keysFound = new HashSet<>();
- String buildId = null;
for (String line : lines) {
if (!line.startsWith("#")) {
continue;
@@ -141,20 +71,14 @@
} else if (key.equals(ProguardMapSupplier.MARKER_KEY_COMPILER_VERSION)) {
assertEquals(Version.LABEL, value);
} else if (key.equals(ProguardMapSupplier.MARKER_KEY_MIN_API)) {
- assertNotNull(minApiLevel);
- assertEquals(minApiLevel.intValue(), Integer.parseInt(value));
+ assertEquals(minApiLevel, Integer.parseInt(value));
} else if (key.equals(ProguardMapSupplier.MARKER_KEY_COMPILER_HASH)) {
assertEquals(VersionProperties.INSTANCE.getSha(), value);
- } else if (key.equals(ProguardMapSupplier.MARKER_KEY_BUILD_ID)) {
- assertNull(buildId);
- buildId = value;
} else {
continue;
}
assertFalse(keysFound.contains(key));
keysFound.add(key);
}
- assertEquals(expectedNumberOfKeys, keysFound.size());
- return buildId;
}
}