3939import com .google .devtools .common .options .OptionEffectTag ;
4040import com .google .devtools .common .options .OptionMetadataTag ;
4141import java .util .List ;
42+ import java .util .Locale ;
4243import javax .annotation .Nullable ;
4344import net .starlark .java .eval .StarlarkValue ;
4445
@@ -163,11 +164,11 @@ public enum AndroidManifestMerger {
163164 ANDROID ,
164165 FORCE_ANDROID ;
165166
166- public static List <String > getAttributeValues () {
167+ public static ImmutableList <String > getAttributeValues () {
167168 return ImmutableList .of (
168- LEGACY .name ().toLowerCase (),
169- ANDROID .name ().toLowerCase (),
170- FORCE_ANDROID .name ().toLowerCase (),
169+ LEGACY .name ().toLowerCase (Locale . ROOT ),
170+ ANDROID .name ().toLowerCase (Locale . ROOT ),
171+ FORCE_ANDROID .name ().toLowerCase (Locale . ROOT ),
171172 getRuleAttributeDefault ());
172173 }
173174
@@ -533,14 +534,6 @@ public static class Options extends FragmentOptions {
533534 help = "dx flags supported in tool that groups classes for inclusion in final .dex files." )
534535 public List <String > dexoptsSupportedInDexSharder ;
535536
536- @ Option (
537- name = "use_workers_with_dexbuilder" ,
538- defaultValue = "true" ,
539- documentationCategory = OptionDocumentationCategory .UNDOCUMENTED ,
540- effectTags = {OptionEffectTag .EXECUTION },
541- help = "Whether dexbuilder supports being run in local worker mode." )
542- public boolean useWorkersWithDexbuilder ;
543-
544537 @ Option (
545538 name = "experimental_android_rewrite_dexes_with_rex" ,
546539 defaultValue = "false" ,
@@ -905,10 +898,11 @@ public static class Options extends FragmentOptions {
905898 },
906899 help = "Enable persistent Android dex and desugar actions by using workers." ,
907900 expansion = {
901+ "--internal_persistent_android_dex_desugar" ,
908902 "--strategy=Desugar=worker" ,
909903 "--strategy=DexBuilder=worker" ,
910904 })
911- public Void persistentDexDesugar ;
905+ public Void persistentAndroidDexDesugar ;
912906
913907 @ Option (
914908 name = "persistent_multiplex_android_dex_desugar" ,
@@ -921,10 +915,9 @@ public static class Options extends FragmentOptions {
921915 help = "Enable persistent multiplexed Android dex and desugar actions by using workers." ,
922916 expansion = {
923917 "--persistent_android_dex_desugar" ,
924- "--modify_execution_info=Desugar=+supports-multiplex-workers" ,
925- "--modify_execution_info=DexBuilder=+supports-multiplex-workers" ,
918+ "--internal_persistent_multiplex_android_dex_desugar" ,
926919 })
927- public Void persistentMultiplexDexDesugar ;
920+ public Void persistentMultiplexAndroidDexDesugar ;
928921
929922 @ Option (
930923 name = "persistent_multiplex_android_tools" ,
@@ -974,6 +967,36 @@ public static class Options extends FragmentOptions {
974967 help = "Tracking flag for when multiplexed busybox workers are enabled." )
975968 public boolean persistentMultiplexBusyboxTools ;
976969
970+ /**
971+ * We use this option to decide when to enable workers for busybox tools. This flag is also a
972+ * guard against enabling workers using nothing but --persistent_android_resource_processor.
973+ *
974+ * <p>Consequently, we use this option to decide between param files or regular command line
975+ * parameters. If we're not using workers or on Windows, there's no need to always use param
976+ * files for I/O performance reasons.
977+ */
978+ @ Option (
979+ name = "internal_persistent_android_dex_desugar" ,
980+ documentationCategory = OptionDocumentationCategory .UNDOCUMENTED ,
981+ effectTags = {
982+ OptionEffectTag .HOST_MACHINE_RESOURCE_OPTIMIZATIONS ,
983+ OptionEffectTag .EXECUTION ,
984+ },
985+ defaultValue = "false" ,
986+ help = "Tracking flag for when dexing and desugaring workers are enabled." )
987+ public boolean persistentDexDesugar ;
988+
989+ @ Option (
990+ name = "internal_persistent_multiplex_android_dex_desugar" ,
991+ documentationCategory = OptionDocumentationCategory .UNDOCUMENTED ,
992+ effectTags = {
993+ OptionEffectTag .HOST_MACHINE_RESOURCE_OPTIMIZATIONS ,
994+ OptionEffectTag .EXECUTION ,
995+ },
996+ defaultValue = "false" ,
997+ help = "Tracking flag for when multiplexed dexing and desugaring workers are enabled." )
998+ public boolean persistentMultiplexDexDesugar ;
999+
9771000 @ Option (
9781001 name = "experimental_remove_r_classes_from_instrumentation_test_jar" ,
9791002 defaultValue = "true" ,
@@ -1100,7 +1123,6 @@ public FragmentOptions getExec() {
11001123 exec .dexoptsSupportedInIncrementalDexing = dexoptsSupportedInIncrementalDexing ;
11011124 exec .dexoptsSupportedInDexMerger = dexoptsSupportedInDexMerger ;
11021125 exec .dexoptsSupportedInDexSharder = dexoptsSupportedInDexSharder ;
1103- exec .useWorkersWithDexbuilder = useWorkersWithDexbuilder ;
11041126 exec .manifestMerger = manifestMerger ;
11051127 exec .manifestMergerOrder = manifestMergerOrder ;
11061128 exec .allowAndroidLibraryDepsWithoutSrcs = allowAndroidLibraryDepsWithoutSrcs ;
@@ -1128,7 +1150,6 @@ public FragmentOptions getExec() {
11281150 private final ImmutableList <String > targetDexoptsThatPreventIncrementalDexing ;
11291151 private final ImmutableList <String > dexoptsSupportedInDexMerger ;
11301152 private final ImmutableList <String > dexoptsSupportedInDexSharder ;
1131- private final boolean useWorkersWithDexbuilder ;
11321153 private final boolean desugarJava8 ;
11331154 private final boolean desugarJava8Libs ;
11341155 private final boolean checkDesugarDeps ;
@@ -1155,6 +1176,8 @@ public FragmentOptions getExec() {
11551176 private final boolean dataBindingAndroidX ;
11561177 private final boolean persistentBusyboxTools ;
11571178 private final boolean persistentMultiplexBusyboxTools ;
1179+ private final boolean persistentDexDesugar ;
1180+ private final boolean persistentMultiplexDexDesugar ;
11581181 private final boolean filterRJarsFromAndroidTest ;
11591182 private final boolean removeRClassesFromInstrumentationTestJar ;
11601183 private final boolean alwaysFilterDuplicateClassesFromAndroidTest ;
@@ -1184,7 +1207,6 @@ public AndroidConfiguration(BuildOptions buildOptions) throws InvalidConfigurati
11841207 ImmutableList .copyOf (options .nonIncrementalPerTargetDexopts );
11851208 this .dexoptsSupportedInDexMerger = ImmutableList .copyOf (options .dexoptsSupportedInDexMerger );
11861209 this .dexoptsSupportedInDexSharder = ImmutableList .copyOf (options .dexoptsSupportedInDexSharder );
1187- this .useWorkersWithDexbuilder = options .useWorkersWithDexbuilder ;
11881210 this .desugarJava8 = options .desugarJava8 ;
11891211 this .desugarJava8Libs = options .desugarJava8Libs ;
11901212 this .checkDesugarDeps = options .checkDesugarDeps ;
@@ -1216,6 +1238,8 @@ public AndroidConfiguration(BuildOptions buildOptions) throws InvalidConfigurati
12161238 this .dataBindingAndroidX = options .dataBindingAndroidX ;
12171239 this .persistentBusyboxTools = options .persistentBusyboxTools ;
12181240 this .persistentMultiplexBusyboxTools = options .persistentMultiplexBusyboxTools ;
1241+ this .persistentDexDesugar = options .persistentDexDesugar ;
1242+ this .persistentMultiplexDexDesugar = options .persistentMultiplexDexDesugar ;
12191243 this .filterRJarsFromAndroidTest = options .filterRJarsFromAndroidTest ;
12201244 this .removeRClassesFromInstrumentationTestJar =
12211245 options .removeRClassesFromInstrumentationTestJar ;
@@ -1319,12 +1343,6 @@ public ImmutableList<String> getTargetDexoptsThatPreventIncrementalDexing() {
13191343 return targetDexoptsThatPreventIncrementalDexing ;
13201344 }
13211345
1322- /** Whether to assume the dexbuilder tool supports local worker mode. */
1323- @ Override
1324- public boolean useWorkersWithDexbuilder () {
1325- return useWorkersWithDexbuilder ;
1326- }
1327-
13281346 @ Override
13291347 public boolean desugarJava8 () {
13301348 return desugarJava8 ;
@@ -1473,6 +1491,16 @@ public boolean persistentMultiplexBusyboxTools() {
14731491 return persistentMultiplexBusyboxTools ;
14741492 }
14751493
1494+ @ Override
1495+ public boolean persistentDexDesugar () {
1496+ return persistentDexDesugar ;
1497+ }
1498+
1499+ @ Override
1500+ public boolean persistentMultiplexDexDesugar () {
1501+ return persistentMultiplexDexDesugar ;
1502+ }
1503+
14761504 @ Override
14771505 public boolean incompatibleUseToolchainResolution () {
14781506 return incompatibleUseToolchainResolution ;
0 commit comments