Skip to content

Commit 166ef61

Browse files
ahumeskycopybara-github
authored andcommitted
Add options converters specific to R8 to avoid depending on android_builder_lib which causes classpath conflicts with D8 classes.
RELNOTE: None PiperOrigin-RevId: 526149555 Change-Id: Iacfce24cc3d2327ef63c47f3bfd76813beaefc7a
1 parent 3befa47 commit 166ef61

File tree

5 files changed

+76
-7
lines changed

5 files changed

+76
-7
lines changed

src/tools/android/java/com/google/devtools/build/android/r8/BUILD

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@ java_library(
4747
deps = [
4848
"//src/main/java/com/google/devtools/build/lib/worker:work_request_handlers",
4949
"//src/main/java/com/google/devtools/common/options",
50-
"//src/tools/android/java/com/google/devtools/build/android:android_builder_lib",
5150
"//third_party:asm",
5251
"//third_party:auto_value",
5352
"//third_party:guava",

src/tools/android/java/com/google/devtools/build/android/r8/CoreLibraryDesugar.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import com.android.tools.r8.L8Command;
2727
import com.android.tools.r8.errors.InterfaceDesugarMissingTypeDiagnostic;
2828
import com.google.common.collect.ImmutableList;
29-
import com.google.devtools.build.android.Converters.ExistingPathConverter;
30-
import com.google.devtools.build.android.Converters.PathConverter;
29+
import com.google.devtools.build.android.r8.OptionsConverters.ExistingPathConverter;
30+
import com.google.devtools.build.android.r8.OptionsConverters.PathConverter;
3131
import com.google.devtools.build.android.r8.desugar.OrderedClassFileResourceProvider;
3232
import com.google.devtools.build.android.r8.desugar.OutputConsumer;
3333
import com.google.devtools.common.options.Option;

src/tools/android/java/com/google/devtools/build/android/r8/Desugar.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@
2929
import com.android.tools.r8.errors.InterfaceDesugarMissingTypeDiagnostic;
3030
import com.android.tools.r8.utils.StringDiagnostic;
3131
import com.google.common.collect.ImmutableList;
32-
import com.google.devtools.build.android.Converters.ExistingPathConverter;
33-
import com.google.devtools.build.android.Converters.PathConverter;
32+
import com.google.devtools.build.android.r8.OptionsConverters.ExistingPathConverter;
33+
import com.google.devtools.build.android.r8.OptionsConverters.PathConverter;
3434
import com.google.devtools.build.android.r8.desugar.OrderedClassFileResourceProvider;
3535
import com.google.devtools.build.android.r8.desugar.OutputConsumer;
3636
import com.google.devtools.build.lib.worker.ProtoWorkerMessageProcessor;

src/tools/android/java/com/google/devtools/build/android/r8/DexFileMerger.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import com.android.tools.r8.utils.ExceptionDiagnostic;
2525
import com.android.tools.r8.utils.StringDiagnostic;
2626
import com.google.common.collect.Maps;
27-
import com.google.devtools.build.android.Converters.ExistingPathConverter;
28-
import com.google.devtools.build.android.Converters.PathConverter;
27+
import com.google.devtools.build.android.r8.OptionsConverters.ExistingPathConverter;
28+
import com.google.devtools.build.android.r8.OptionsConverters.PathConverter;
2929
import com.google.devtools.common.options.EnumConverter;
3030
import com.google.devtools.common.options.Option;
3131
import com.google.devtools.common.options.OptionDocumentationCategory;
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
// Copyright 2023 The Bazel Authors. All rights reserved.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
package com.google.devtools.build.android.r8;
15+
16+
import com.google.devtools.common.options.Converter;
17+
import com.google.devtools.common.options.OptionsParsingException;
18+
import java.nio.file.FileSystems;
19+
import java.nio.file.Files;
20+
import java.nio.file.InvalidPathException;
21+
import java.nio.file.Path;
22+
23+
/** Options converters used by R8. */
24+
public class OptionsConverters {
25+
26+
/** Validating converter for Paths. A Path is considered valid if it resolves to a file. */
27+
public static class PathConverter extends Converter.Contextless<Path> {
28+
29+
private final boolean mustExist;
30+
31+
public PathConverter() {
32+
this.mustExist = false;
33+
}
34+
35+
protected PathConverter(boolean mustExist) {
36+
this.mustExist = mustExist;
37+
}
38+
39+
@Override
40+
public Path convert(String input) throws OptionsParsingException {
41+
try {
42+
Path path = FileSystems.getDefault().getPath(input);
43+
if (mustExist && !Files.exists(path)) {
44+
throw new OptionsParsingException(
45+
String.format("%s is not a valid path: it does not exist.", input));
46+
}
47+
return path;
48+
} catch (InvalidPathException e) {
49+
throw new OptionsParsingException(
50+
String.format("%s is not a valid path: %s.", input, e.getMessage()), e);
51+
}
52+
}
53+
54+
@Override
55+
public String getTypeDescription() {
56+
return "a valid filesystem path";
57+
}
58+
}
59+
60+
/**
61+
* Validating converter for Paths. A Path is considered valid if it resolves to a file and exists.
62+
*/
63+
public static class ExistingPathConverter extends PathConverter {
64+
public ExistingPathConverter() {
65+
super(true);
66+
}
67+
}
68+
69+
private OptionsConverters() {}
70+
}

0 commit comments

Comments
 (0)