aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-01-16 13:07:33 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-01-16 13:10:17 -0800
commit53e45318ad8da0a244639a44c1c9a1720d8c4b10 (patch)
treee9ec6b7651f02de510e1a10a19c490378f5e2b0f
parent5418362f878afc6c61ce7e5c190b9d234584d40f (diff)
Default to filtering resources in analysis
RELNOTES: none PiperOrigin-RevId: 182100169
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java9
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java41
2 files changed, 5 insertions, 45 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
index 6e94e00632..08d4a0c611 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java
@@ -664,7 +664,7 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
@Option(
name = "experimental_android_resource_filtering_method",
converter = ResourceFilterFactory.Converter.class,
- defaultValue = "filter_in_execution",
+ defaultValue = "filter_in_analysis",
documentationCategory = OptionDocumentationCategory.BUILD_TIME_OPTIMIZATION,
effectTags = {
OptionEffectTag.CHANGES_INPUTS,
@@ -675,13 +675,12 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment {
help =
"Determines when resource filtering attributes, such as the android_binary "
+ "'resource_configuration_filters' and 'densities' attributes, are applied. "
- + "By default, bazel will 'filter_in_execution'. The experimental "
- + "'filter_in_analysis' option instead applies these filters earlier in the build "
- + "process, with corresponding gains in speed. The experimental "
+ + "By default, bazel will 'filter_in_analysis'. The experimental "
+ "'filter_in_analysis_with_dynamic_configuration' option also passes these options "
+ "to the android_binary's dependencies, which also filter their internal resources "
+ "in analysis, possibly making the build even faster (especially in systems that "
- + "do not cache the results of those dependencies)."
+ + "do not cache the results of those dependencies). When using aapt2, filtering is "
+ + "only performed in execution, and this setting does nothing."
)
// The ResourceFilterFactory object holds the filtering behavior as well as settings for which
// resources should be filtered. The filtering behavior is set from the command line, but the
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
index 25755bff87..e3971f489c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/AndroidBinaryTest.java
@@ -1199,8 +1199,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
public void testFilteredResourcesInvalidFilter() throws Exception {
String badQualifier = "invalid-qualifier";
- useConfiguration("--experimental_android_resource_filtering_method", "filter_in_analysis");
-
checkError(
"java/r/android",
"r",
@@ -1268,10 +1266,7 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
mockAndroidSdkWithAapt2();
- useConfiguration(
- "--android_sdk=//sdk:sdk",
- "--experimental_android_resource_filtering_method",
- "filter_in_analysis");
+ useConfiguration("--android_sdk=//sdk:sdk");
ConfiguredTarget binary =
scratchConfiguredTarget(
@@ -1298,32 +1293,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
}
@Test
- public void testFilteredResourcesFilteringNotSpecified() throws Exception {
- // TODO(asteinb): Once prefiltering is run by default, remove this test and remove the
- // prefilter_resources flag from tests that currently explicitly specify to filter
- List<String> resources =
- ImmutableList.of("res/values/foo.xml", "res/values-en/foo.xml", "res/values-fr/foo.xml");
- String dir = "java/r/android";
-
- ConfiguredTarget binary =
- scratchConfiguredTarget(
- dir,
- "r",
- "android_binary(name = 'r',",
- " manifest = 'AndroidManifest.xml',",
- " resource_configuration_filters = ['en'],",
- " resource_files = ['" + Joiner.on("', '").join(resources) + "'])");
-
- ResourceContainer directResources = getResourceContainer(binary, /* transitive= */ false);
-
- // Validate that the AndroidResourceProvider for this binary contains all values.
- assertThat(resourceContentsPaths(dir, directResources)).containsExactlyElementsIn(resources);
-
- // Validate that the input to resource processing contains all values.
- assertThat(resourceInputPaths(dir, directResources)).containsAllIn(resources);
- }
-
- @Test
public void testFilteredResourcesSimple() throws Exception {
testDirectResourceFiltering(
"en",
@@ -1641,8 +1610,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
String dir = "java/r/android";
- useConfiguration("--experimental_android_resource_filtering_method", "filter_in_analysis");
-
ConfiguredTarget binary =
scratchConfiguredTarget(
dir,
@@ -1695,8 +1662,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
String dir = "java/r/android";
- useConfiguration("--experimental_android_resource_filtering_method", "filter_in_analysis");
-
ConfiguredTarget binary =
scratchConfiguredTarget(
dir,
@@ -1733,8 +1698,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
public void testFilteredTransitiveResourcesDifferentDensities() throws Exception {
String dir = "java/r/android";
- useConfiguration("--experimental_android_resource_filtering_method", "filter_in_analysis");
-
ConfiguredTarget binary =
scratchConfiguredTarget(
dir,
@@ -1781,8 +1744,6 @@ public class AndroidBinaryTest extends AndroidBuildViewTestCase {
public void testFilteredResourcesAllFilteredOut() throws Exception {
String dir = "java/r/android";
- useConfiguration("--experimental_android_resource_filtering_method", "filter_in_analysis");
-
final String keptBaseDir = "partly_filtered_dir";
String removedLibraryDir = "fully_filtered_library_dir";
String removedBinaryDir = "fully_filtered_binary_dir";