aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar asteinb <asteinb@google.com>2018-08-09 07:04:24 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-08-09 07:06:28 -0700
commitf28626035176d8934d741e23defb0569c6064081 (patch)
treee494bdb309765d56dbeafa98704f1c9710b8cab4 /src
parent6620107fb57598450d2cb7327f6b82c0a6e9afc3 (diff)
Final asset/resource decoupling cleanup
- Remove MergableAndroidData interface, and clean up various converters to explicitly use ParsedAndroid{Resources|Assets} - Remove calls to getters that always return an empty list (based on the above cleanup) - Stop passing around empty transitiveAssets in ResourceDependencies and AndroidResourcesInfo - Remove no-op getter method for decoupling settings in AndroidConfiguration Also, consolidate all AndroidDataConverter instances that were used in multiple places into the AndroidDataConverter class, rather than declaring them in multiple places. Add a bit of documentation as to which objects they represent in the action code, which should make mapping between one and the other easier. RELNOTES: none PiperOrigin-RevId: 208042452
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidConfiguration.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java90
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java32
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java65
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/MergableAndroidData.java54
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidAssets.java8
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidAssets.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java20
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java28
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java8
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java1
13 files changed, 113 insertions, 217 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 f7657ed8b2..7231690afa 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
@@ -1200,11 +1200,6 @@ public class AndroidConfiguration extends BuildConfiguration.Fragment
return robolectricTestDeprecationLevel;
}
- public boolean decoupleDataProcessing() {
- // TODO(b/76418450): Entirely remove this method and code that depends on it
- return true;
- }
-
public boolean checkForMigrationTag() {
return checkForMigrationTag;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java
index 874f328ad9..ef4f8d8574 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidDataConverter.java
@@ -37,16 +37,86 @@ import javax.annotation.Nullable;
public class AndroidDataConverter<T> extends ParametrizedMapFn<T> {
/**
- * Converts Android data to the "SerializedAndroidData" format used by the Android data processing
- * actions.
+ * Converts parsed Android resources to the "SerializedAndroidData" format used by the Android
+ * data processing actions.
*/
@AutoCodec
- static final AndroidDataConverter<MergableAndroidData> MERGABLE_DATA_CONVERTER =
- AndroidDataConverter.<MergableAndroidData>builder(JoinerType.SEMICOLON_AMPERSAND)
- .withRoots(MergableAndroidData::getResourceRoots)
- .withRoots(MergableAndroidData::getAssetRoots)
- .withLabel(MergableAndroidData::getLabel)
- .maybeWithArtifact(MergableAndroidData::getSymbols)
+ static final AndroidDataConverter<ParsedAndroidResources> PARSED_RESOURCE_CONVERTER =
+ AndroidDataConverter.<ParsedAndroidResources>builder(JoinerType.SEMICOLON_AMPERSAND)
+ .withRoots(ParsedAndroidResources::getResourceRoots)
+ .withEmpty()
+ .withLabel(ParsedAndroidResources::getLabel)
+ .maybeWithArtifact(ParsedAndroidResources::getSymbols)
+ .build();
+
+ /**
+ * Converts compiled Android resources to the "SerializedAndroidData" format used by the Android
+ * data processing actions.
+ */
+ @AutoCodec
+ static final AndroidDataConverter<ParsedAndroidResources> COMPILED_RESOURCE_CONVERTER =
+ AndroidDataConverter.<ParsedAndroidResources>builder(JoinerType.SEMICOLON_AMPERSAND)
+ .withRoots(ParsedAndroidResources::getResourceRoots)
+ .withEmpty()
+ .withLabel(ParsedAndroidResources::getLabel)
+ .maybeWithArtifact(ParsedAndroidResources::getCompiledSymbols)
+ .build();
+
+ /**
+ * Converts processed Android resources produced by aapt to the "DependencyAndroidData" format
+ * used by the Android data processing actions.
+ */
+ @AutoCodec
+ static final AndroidDataConverter<ValidatedAndroidResources>
+ AAPT_RESOURCES_AND_MANIFEST_CONVERTER =
+ AndroidDataConverter.<ValidatedAndroidResources>builder(JoinerType.COLON_COMMA)
+ .withRoots(ValidatedAndroidResources::getResourceRoots)
+ .withEmpty()
+ .withArtifact(ValidatedAndroidResources::getManifest)
+ .maybeWithArtifact(ValidatedAndroidResources::getRTxt)
+ .maybeWithArtifact(ValidatedAndroidResources::getSymbols)
+ .build();
+
+ /**
+ * Converts processed Android resources produced by aapt2 to the "DependencyAndroidData" format
+ * used by the Android data processing actions.
+ */
+ @AutoCodec
+ static final AndroidDataConverter<ValidatedAndroidResources>
+ AAPT2_RESOURCES_AND_MANIFEST_CONVERTER =
+ AndroidDataConverter.<ValidatedAndroidResources>builder(JoinerType.COLON_COMMA)
+ .withRoots(ValidatedAndroidResources::getResourceRoots)
+ .withEmpty()
+ .withArtifact(ValidatedAndroidResources::getManifest)
+ .maybeWithArtifact(ValidatedAndroidResources::getAapt2RTxt)
+ .maybeWithArtifact(ValidatedAndroidResources::getCompiledSymbols)
+ .maybeWithArtifact(ValidatedAndroidResources::getSymbols)
+ .build();
+
+ /**
+ * Converts parsed Android assets to the "SerializedAndroidData" format used by the Android data
+ * processing actions.
+ */
+ @AutoCodec
+ static final AndroidDataConverter<ParsedAndroidAssets> PARSED_ASSET_CONVERTER =
+ AndroidDataConverter.<ParsedAndroidAssets>builder(JoinerType.SEMICOLON_AMPERSAND)
+ .withEmpty()
+ .withRoots(ParsedAndroidAssets::getAssetRoots)
+ .withLabel(ParsedAndroidAssets::getLabel)
+ .maybeWithArtifact(ParsedAndroidAssets::getSymbols)
+ .build();
+
+ /**
+ * Converts compiled Android assets to the "SerializedAndroidData" format used by the Android data
+ * processing actions.
+ */
+ @AutoCodec
+ static final AndroidDataConverter<ParsedAndroidAssets> COMPILED_ASSET_CONVERTER =
+ AndroidDataConverter.<ParsedAndroidAssets>builder(JoinerType.SEMICOLON_AMPERSAND)
+ .withEmpty()
+ .withRoots(ParsedAndroidAssets::getAssetRoots)
+ .withLabel(ParsedAndroidAssets::getLabel)
+ .maybeWithArtifact(ParsedAndroidAssets::getCompiledSymbols)
.build();
/** Indicates the type of joiner between options expected by the command line. */
@@ -150,6 +220,10 @@ public class AndroidDataConverter<T> extends ParametrizedMapFn<T> {
return with(t -> artifactFunction.apply(t).getExecPathString());
}
+ Builder<T> withEmpty() {
+ return with(t -> "");
+ }
+
Builder<T> maybeWithArtifact(Function<T, Artifact> nullableArtifactFunction) {
return with(
t -> {
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java
index 650d39cada..9d0b1ba6cd 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourceMergingActionBuilder.java
@@ -17,8 +17,6 @@ import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.rules.android.AndroidDataConverter.JoinerType;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import javax.annotation.Nullable;
/**
@@ -30,18 +28,6 @@ import javax.annotation.Nullable;
*/
public class AndroidResourceMergingActionBuilder {
- private static final AndroidDataConverter<MergableAndroidData> RESOURCE_CONTAINER_TO_ARG =
- AndroidDataConverter.MERGABLE_DATA_CONVERTER;
-
- @AutoCodec @AutoCodec.VisibleForSerialization
- static final AndroidDataConverter<ParsedAndroidResources> RESOURCE_CONTAINER_TO_ARG_FOR_COMPILED =
- AndroidDataConverter.<ParsedAndroidResources>builder(JoinerType.SEMICOLON_AMPERSAND)
- .withRoots(ParsedAndroidResources::getResourceRoots)
- .withRoots(ParsedAndroidResources::getAssetRoots)
- .withLabel(ParsedAndroidResources::getLabel)
- .withArtifact(ParsedAndroidResources::getCompiledSymbols)
- .build();
-
// Inputs
private ParsedAndroidResources primary;
private ResourceDependencies dependencies;
@@ -127,7 +113,7 @@ public class AndroidResourceMergingActionBuilder {
createInputsForBuilder(builder)
.addInput(
"--primaryData",
- RESOURCE_CONTAINER_TO_ARG_FOR_COMPILED.map(primary),
+ AndroidDataConverter.COMPILED_RESOURCE_CONVERTER.map(primary),
Iterables.concat(
primary.getArtifacts(), ImmutableList.of(primary.getCompiledSymbols())));
@@ -136,13 +122,12 @@ public class AndroidResourceMergingActionBuilder {
.addTransitiveFlag(
"--data",
dependencies.getTransitiveResourceContainers(),
- RESOURCE_CONTAINER_TO_ARG_FOR_COMPILED)
+ AndroidDataConverter.COMPILED_RESOURCE_CONVERTER)
.addTransitiveFlag(
"--directData",
dependencies.getDirectResourceContainers(),
- RESOURCE_CONTAINER_TO_ARG_FOR_COMPILED)
+ AndroidDataConverter.COMPILED_RESOURCE_CONVERTER)
.addTransitiveInputValues(dependencies.getTransitiveResources())
- .addTransitiveInputValues(dependencies.getTransitiveAssets())
.addTransitiveInputValues(dependencies.getTransitiveCompiledSymbols());
}
@@ -155,17 +140,20 @@ public class AndroidResourceMergingActionBuilder {
createInputsForBuilder(builder)
.addInput(
"--primaryData",
- RESOURCE_CONTAINER_TO_ARG.map(primary),
+ AndroidDataConverter.PARSED_RESOURCE_CONVERTER.map(primary),
Iterables.concat(primary.getArtifacts(), ImmutableList.of(primary.getSymbols())));
if (dependencies != null) {
builder
.addTransitiveFlag(
- "--data", dependencies.getTransitiveResourceContainers(), RESOURCE_CONTAINER_TO_ARG)
+ "--data",
+ dependencies.getTransitiveResourceContainers(),
+ AndroidDataConverter.PARSED_RESOURCE_CONVERTER)
.addTransitiveFlag(
- "--directData", dependencies.getDirectResourceContainers(), RESOURCE_CONTAINER_TO_ARG)
+ "--directData",
+ dependencies.getDirectResourceContainers(),
+ AndroidDataConverter.PARSED_RESOURCE_CONVERTER)
.addTransitiveInputValues(dependencies.getTransitiveResources())
- .addTransitiveInputValues(dependencies.getTransitiveAssets())
.addTransitiveInputValues(dependencies.getTransitiveSymbolsBin());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java
index d374239a55..2f4db3ca14 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesInfo.java
@@ -56,7 +56,6 @@ public class AndroidResourcesInfo extends NativeInfo
private final NestedSet<ValidatedAndroidResources> transitiveAndroidResources;
private final NestedSet<ValidatedAndroidResources> directAndroidResources;
private final NestedSet<Artifact> transitiveResources;
- private final NestedSet<Artifact> transitiveAssets;
private final NestedSet<Artifact> transitiveManifests;
private final NestedSet<Artifact> transitiveAapt2RTxt;
private final NestedSet<Artifact> transitiveSymbolsBin;
@@ -71,7 +70,6 @@ public class AndroidResourcesInfo extends NativeInfo
NestedSet<ValidatedAndroidResources> transitiveAndroidResources,
NestedSet<ValidatedAndroidResources> directAndroidResources,
NestedSet<Artifact> transitiveResources,
- NestedSet<Artifact> transitiveAssets,
NestedSet<Artifact> transitiveManifests,
NestedSet<Artifact> transitiveAapt2RTxt,
NestedSet<Artifact> transitiveSymbolsBin,
@@ -85,7 +83,6 @@ public class AndroidResourcesInfo extends NativeInfo
this.transitiveAndroidResources = transitiveAndroidResources;
this.directAndroidResources = directAndroidResources;
this.transitiveResources = transitiveResources;
- this.transitiveAssets = transitiveAssets;
this.transitiveManifests = transitiveManifests;
this.transitiveAapt2RTxt = transitiveAapt2RTxt;
this.transitiveSymbolsBin = transitiveSymbolsBin;
@@ -124,12 +121,6 @@ public class AndroidResourcesInfo extends NativeInfo
return transitiveResources;
}
- /** @deprecated Assets are being decoupled from resources */
- @Deprecated
- public NestedSet<Artifact> getTransitiveAssets() {
- return transitiveAssets;
- }
-
@Override
public NestedSet<Artifact> getTransitiveManifests() {
return transitiveManifests;
@@ -177,7 +168,6 @@ public class AndroidResourcesInfo extends NativeInfo
SkylarkNestedSet transitiveAndroidResources,
SkylarkNestedSet directAndroidResources,
SkylarkNestedSet transitiveResources,
- SkylarkNestedSet transitiveAssets,
SkylarkNestedSet transitiveManifests,
SkylarkNestedSet transitiveAapt2RTxt,
SkylarkNestedSet transitiveSymbolsBin,
@@ -192,7 +182,6 @@ public class AndroidResourcesInfo extends NativeInfo
nestedSet(transitiveAndroidResources, ValidatedAndroidResources.class),
nestedSet(directAndroidResources, ValidatedAndroidResources.class),
nestedSet(transitiveResources, Artifact.class),
- nestedSet(transitiveAssets, Artifact.class),
nestedSet(transitiveManifests, Artifact.class),
nestedSet(transitiveAapt2RTxt, Artifact.class),
nestedSet(transitiveSymbolsBin, Artifact.class),
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
index 6f7bb122e5..398d4397c2 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidResourcesProcessorBuilder.java
@@ -28,54 +28,15 @@ import java.util.List;
public class AndroidResourcesProcessorBuilder {
@AutoCodec @VisibleForSerialization
- static final AndroidDataConverter<ParsedAndroidAssets> AAPT2_ASSET_DEP_TO_ARG =
- AndroidDataConverter.<ParsedAndroidAssets>builder(JoinerType.SEMICOLON_AMPERSAND)
- .withRoots(ParsedAndroidAssets::getResourceRoots)
- .withRoots(ParsedAndroidAssets::getAssetRoots)
- .withLabel(ParsedAndroidAssets::getLabel)
- .withArtifact(ParsedAndroidAssets::getSymbols)
- .build();
-
- @AutoCodec @VisibleForSerialization
- static final AndroidDataConverter<ParsedAndroidAssets> AAPT2_ASSET_DEP_TO_ARG_NO_PARSE =
- AndroidDataConverter.<ParsedAndroidAssets>builder(JoinerType.SEMICOLON_AMPERSAND)
- .withRoots(ParsedAndroidAssets::getResourceRoots)
- .withRoots(ParsedAndroidAssets::getAssetRoots)
- .withLabel(ParsedAndroidAssets::getLabel)
- .withArtifact(ParsedAndroidAssets::getCompiledSymbols)
- .build();
-
- @AutoCodec @VisibleForSerialization
- static final AndroidDataConverter<ValidatedAndroidResources> AAPT2_RESOURCE_DEP_TO_ARG =
- AndroidDataConverter.<ValidatedAndroidResources>builder(JoinerType.COLON_COMMA)
- .withRoots(ValidatedAndroidResources::getResourceRoots)
- .withRoots(ValidatedAndroidResources::getAssetRoots)
- .withArtifact(ValidatedAndroidResources::getManifest)
- .maybeWithArtifact(ValidatedAndroidResources::getAapt2RTxt)
- .maybeWithArtifact(ValidatedAndroidResources::getCompiledSymbols)
- .maybeWithArtifact(ValidatedAndroidResources::getSymbols)
- .build();
-
- @AutoCodec @VisibleForSerialization
static final AndroidDataConverter<ValidatedAndroidResources> AAPT2_RESOURCE_DEP_TO_ARG_NO_PARSE =
AndroidDataConverter.<ValidatedAndroidResources>builder(JoinerType.COLON_COMMA)
.withRoots(ValidatedAndroidResources::getResourceRoots)
- .withRoots(ValidatedAndroidResources::getAssetRoots)
+ .withEmpty()
.withArtifact(ValidatedAndroidResources::getManifest)
.maybeWithArtifact(ValidatedAndroidResources::getAapt2RTxt)
.maybeWithArtifact(ValidatedAndroidResources::getCompiledSymbols)
.build();
- @AutoCodec @VisibleForSerialization
- static final AndroidDataConverter<ValidatedAndroidResources> RESOURCE_DEP_TO_ARG =
- AndroidDataConverter.<ValidatedAndroidResources>builder(JoinerType.COLON_COMMA)
- .withRoots(ValidatedAndroidResources::getResourceRoots)
- .withRoots(ValidatedAndroidResources::getAssetRoots)
- .withArtifact(ValidatedAndroidResources::getManifest)
- .maybeWithArtifact(ValidatedAndroidResources::getRTxt)
- .maybeWithArtifact(ValidatedAndroidResources::getSymbols)
- .build();
-
private ResourceDependencies resourceDependencies = ResourceDependencies.empty();
private AssetDependencies assetDependencies = AssetDependencies.empty();
@@ -349,15 +310,14 @@ public class AndroidResourcesProcessorBuilder {
resourceDependencies.getTransitiveResourceContainers(),
useCompiledResourcesForMerge
? AAPT2_RESOURCE_DEP_TO_ARG_NO_PARSE
- : AAPT2_RESOURCE_DEP_TO_ARG)
+ : AndroidDataConverter.AAPT2_RESOURCES_AND_MANIFEST_CONVERTER)
.addTransitiveFlag(
"--directData",
resourceDependencies.getDirectResourceContainers(),
useCompiledResourcesForMerge
? AAPT2_RESOURCE_DEP_TO_ARG_NO_PARSE
- : AAPT2_RESOURCE_DEP_TO_ARG)
+ : AndroidDataConverter.AAPT2_RESOURCES_AND_MANIFEST_CONVERTER)
.addTransitiveInputValues(resourceDependencies.getTransitiveResources())
- .addTransitiveInputValues(resourceDependencies.getTransitiveAssets())
.addTransitiveInputValues(resourceDependencies.getTransitiveManifests())
.addTransitiveInputValues(resourceDependencies.getTransitiveAapt2RTxt())
.addTransitiveInputValues(resourceDependencies.getTransitiveCompiledSymbols());
@@ -373,14 +333,14 @@ public class AndroidResourcesProcessorBuilder {
"--directAssets",
assetDependencies.getDirectParsedAssets(),
useCompiledResourcesForMerge
- ? AAPT2_ASSET_DEP_TO_ARG_NO_PARSE
- : AAPT2_ASSET_DEP_TO_ARG)
+ ? AndroidDataConverter.COMPILED_ASSET_CONVERTER
+ : AndroidDataConverter.PARSED_ASSET_CONVERTER)
.addTransitiveFlag(
"--assets",
assetDependencies.getTransitiveParsedAssets(),
useCompiledResourcesForMerge
- ? AAPT2_ASSET_DEP_TO_ARG_NO_PARSE
- : AAPT2_ASSET_DEP_TO_ARG)
+ ? AndroidDataConverter.COMPILED_ASSET_CONVERTER
+ : AndroidDataConverter.PARSED_ASSET_CONVERTER)
.addTransitiveInputValues(assetDependencies.getTransitiveAssets())
.addTransitiveInputValues(
useCompiledResourcesForMerge
@@ -406,13 +366,14 @@ public class AndroidResourcesProcessorBuilder {
if (resourceDependencies != null) {
builder
.addTransitiveFlag(
- "--data", resourceDependencies.getTransitiveResourceContainers(), RESOURCE_DEP_TO_ARG)
+ "--data",
+ resourceDependencies.getTransitiveResourceContainers(),
+ AndroidDataConverter.AAPT_RESOURCES_AND_MANIFEST_CONVERTER)
.addTransitiveFlag(
"--directData",
resourceDependencies.getDirectResourceContainers(),
- RESOURCE_DEP_TO_ARG)
+ AndroidDataConverter.AAPT_RESOURCES_AND_MANIFEST_CONVERTER)
.addTransitiveInputValues(resourceDependencies.getTransitiveResources())
- .addTransitiveInputValues(resourceDependencies.getTransitiveAssets())
.addTransitiveInputValues(resourceDependencies.getTransitiveManifests())
.addTransitiveInputValues(resourceDependencies.getTransitiveRTxt())
.addTransitiveInputValues(resourceDependencies.getTransitiveSymbolsBin());
@@ -423,11 +384,11 @@ public class AndroidResourcesProcessorBuilder {
.addTransitiveFlag(
"--directAssets",
assetDependencies.getDirectParsedAssets(),
- AndroidDataConverter.MERGABLE_DATA_CONVERTER)
+ AndroidDataConverter.PARSED_ASSET_CONVERTER)
.addTransitiveFlag(
"--assets",
assetDependencies.getTransitiveParsedAssets(),
- AndroidDataConverter.MERGABLE_DATA_CONVERTER)
+ AndroidDataConverter.PARSED_ASSET_CONVERTER)
.addTransitiveInputValues(assetDependencies.getTransitiveAssets())
.addTransitiveInputValues(assetDependencies.getTransitiveSymbols());
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/MergableAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/MergableAndroidData.java
deleted file mode 100644
index ecfd26cfdd..0000000000
--- a/src/main/java/com/google/devtools/build/lib/rules/android/MergableAndroidData.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2018 The Bazel Authors. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package com.google.devtools.build.lib.rules.android;
-
-import com.google.common.collect.ImmutableList;
-import com.google.devtools.build.lib.actions.Artifact;
-import com.google.devtools.build.lib.cmdline.Label;
-import com.google.devtools.build.lib.vfs.PathFragment;
-import javax.annotation.Nullable;
-
-/**
- * Interface used to indicate a container for resources, assets, or both can be merged.
- *
- * <p>Currently, resources and assets invoke the same action for merging, so virtually all the code
- * to generate that action is identical. Implementing this interface allows it to be reused.
- */
-public interface MergableAndroidData {
-
- /** @return the roots of all resources to be merged */
- default ImmutableList<PathFragment> getResourceRoots() {
- return ImmutableList.of();
- }
-
- /** @return the roots of all assets to be merged */
- default ImmutableList<PathFragment> getAssetRoots() {
- return ImmutableList.of();
- }
-
- default ImmutableList<Artifact> getResources() {
- return ImmutableList.of();
- }
-
- default ImmutableList<Artifact> getAssets() {
- return ImmutableList.of();
- }
-
- Label getLabel();
-
- Artifact getSymbols();
-
- @Nullable
- Artifact getCompiledSymbols();
-}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidAssets.java b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidAssets.java
index ea6411b355..f727f8ac11 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidAssets.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidAssets.java
@@ -39,16 +39,14 @@ public class MergedAndroidAssets extends ParsedAndroidAssets {
.addOutput("--assetsOutput", mergedAssets)
.addInput(
"--primaryData",
- AndroidDataConverter.MERGABLE_DATA_CONVERTER.map(parsed),
+ AndroidDataConverter.PARSED_ASSET_CONVERTER.map(parsed),
Iterables.concat(parsed.getAssets(), ImmutableList.of(parsed.getSymbols())))
.addTransitiveFlag(
"--directData",
deps.getDirectParsedAssets(),
- AndroidDataConverter.MERGABLE_DATA_CONVERTER)
+ AndroidDataConverter.PARSED_ASSET_CONVERTER)
.addTransitiveFlag(
- "--data",
- deps.getTransitiveParsedAssets(),
- AndroidDataConverter.MERGABLE_DATA_CONVERTER)
+ "--data", deps.getTransitiveParsedAssets(), AndroidDataConverter.PARSED_ASSET_CONVERTER)
.addTransitiveInputValues(deps.getTransitiveAssets())
.addTransitiveInputValues(deps.getTransitiveSymbols())
.buildAndRegister("Merging Android assets", "AndroidAssetMerger");
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidAssets.java b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidAssets.java
index 09784b7df9..dae1f9971b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidAssets.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidAssets.java
@@ -21,8 +21,7 @@ import java.util.Objects;
import javax.annotation.Nullable;
/** Parsed Android assets which can be merged together with assets from dependencies. */
-public class ParsedAndroidAssets extends AndroidAssets
- implements MergableAndroidData, ParsedAndroidAssetsApi {
+public class ParsedAndroidAssets extends AndroidAssets implements ParsedAndroidAssetsApi {
private final Artifact symbols;
@Nullable private final Artifact compiledSymbols;
private final Label label;
@@ -64,17 +63,14 @@ public class ParsedAndroidAssets extends AndroidAssets
return MergedAndroidAssets.mergeFrom(dataContext, this, assetDeps);
}
- @Override
public Label getLabel() {
return label;
}
- @Override
public Artifact getSymbols() {
return symbols;
}
- @Override
@Nullable
public Artifact getCompiledSymbols() {
return compiledSymbols;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
index f58047cc6e..78cb128b5b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ParsedAndroidResources.java
@@ -27,7 +27,7 @@ import java.util.Optional;
import javax.annotation.Nullable;
/** Wraps parsed (and, if requested, compiled) android resources. */
-public class ParsedAndroidResources extends AndroidResources implements MergableAndroidData {
+public class ParsedAndroidResources extends AndroidResources {
private final Artifact symbols;
@Nullable private final Artifact compiledSymbols;
private final Label label;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
index 01effdaab9..faea37c757 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ResourceDependencies.java
@@ -70,9 +70,6 @@ public final class ResourceDependencies {
*/
private final NestedSet<Artifact> transitiveResources;
- /** Transitive asset files for this target. */
- private final NestedSet<Artifact> transitiveAssets;
-
private final NestedSet<Artifact> transitiveManifests;
private final NestedSet<Artifact> transitiveAapt2RTxt;
@@ -102,7 +99,6 @@ public final class ResourceDependencies {
NestedSetBuilder<ValidatedAndroidResources> directDependencies =
NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveResources = NestedSetBuilder.naiveLinkOrder();
- NestedSetBuilder<Artifact> transitiveAssets = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveManifests = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveAapt2RTxt = NestedSetBuilder.naiveLinkOrder();
NestedSetBuilder<Artifact> transitiveSymbolsBin = NestedSetBuilder.naiveLinkOrder();
@@ -114,7 +110,6 @@ public final class ResourceDependencies {
transitiveDependencies.addTransitive(resources.getTransitiveAndroidResources());
directDependencies.addTransitive(resources.getDirectAndroidResources());
transitiveResources.addTransitive(resources.getTransitiveResources());
- transitiveAssets.addTransitive(resources.getTransitiveAssets());
transitiveManifests.addTransitive(resources.getTransitiveManifests());
transitiveAapt2RTxt.addTransitive(resources.getTransitiveAapt2RTxt());
transitiveSymbolsBin.addTransitive(resources.getTransitiveSymbolsBin());
@@ -128,7 +123,6 @@ public final class ResourceDependencies {
transitiveDependencies.build(),
directDependencies.build(),
transitiveResources.build(),
- transitiveAssets.build(),
transitiveManifests.build(),
transitiveAapt2RTxt.build(),
transitiveSymbolsBin.build(),
@@ -143,7 +137,6 @@ public final class ResourceDependencies {
.add("transitiveResourceContainers", transitiveResourceContainers)
.add("directResourceContainers", directResourceContainers)
.add("transitiveResources", transitiveResources)
- .add("transitiveAssets", transitiveAssets)
.add("transitiveManifests", transitiveManifests)
.add("transitiveAapt2RTxt", transitiveAapt2RTxt)
.add("transitiveSymbolsBin", transitiveSymbolsBin)
@@ -169,7 +162,6 @@ public final class ResourceDependencies {
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
- NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER),
NestedSetBuilder.emptySet(Order.NAIVE_LINK_ORDER));
}
@@ -178,7 +170,6 @@ public final class ResourceDependencies {
NestedSet<ValidatedAndroidResources> transitiveResourceContainers,
NestedSet<ValidatedAndroidResources> directResourceContainers,
NestedSet<Artifact> transitiveResources,
- NestedSet<Artifact> transitiveAssets,
NestedSet<Artifact> transitiveManifests,
NestedSet<Artifact> transitiveAapt2RTxt,
NestedSet<Artifact> transitiveSymbolsBin,
@@ -189,7 +180,6 @@ public final class ResourceDependencies {
this.transitiveResourceContainers = transitiveResourceContainers;
this.directResourceContainers = directResourceContainers;
this.transitiveResources = transitiveResources;
- this.transitiveAssets = transitiveAssets;
this.transitiveManifests = transitiveManifests;
this.transitiveAapt2RTxt = transitiveAapt2RTxt;
this.transitiveSymbolsBin = transitiveSymbolsBin;
@@ -228,7 +218,6 @@ public final class ResourceDependencies {
transitiveResourceContainers,
directResourceContainers,
transitiveResources,
- transitiveAssets,
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
@@ -271,10 +260,6 @@ public final class ResourceDependencies {
.addTransitive(transitiveResources)
.addAll(newDirectResource.getResources())
.build(),
- NestedSetBuilder.<Artifact>naiveLinkOrder()
- .addTransitive(transitiveAssets)
- .addAll(newDirectResource.getAssets())
- .build(),
withDirectAndTransitive(newDirectResource.getManifest(), transitiveManifests),
withDirectAndTransitive(newDirectResource.getAapt2RTxt(), transitiveAapt2RTxt),
withDirectAndTransitive(newDirectResource.getSymbols(), transitiveSymbolsBin),
@@ -305,7 +290,6 @@ public final class ResourceDependencies {
transitiveResourceContainers,
directResourceContainers,
transitiveResources,
- transitiveAssets,
transitiveManifests,
transitiveAapt2RTxt,
transitiveSymbolsBin,
@@ -361,10 +345,6 @@ public final class ResourceDependencies {
return transitiveResources;
}
- public NestedSet<Artifact> getTransitiveAssets() {
- return transitiveAssets;
- }
-
public NestedSet<Artifact> getTransitiveManifests() {
return transitiveManifests;
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java
index dd9fb13b6c..30bc0bbba3 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/RobolectricResourceSymbolsActionBuilder.java
@@ -17,9 +17,6 @@ import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidAaptVersion;
-import com.google.devtools.build.lib.rules.android.AndroidDataConverter.JoinerType;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
-import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.VisibleForSerialization;
/**
* Builder for generating R classes for robolectric action.
@@ -29,26 +26,6 @@ import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec.
*/
public class RobolectricResourceSymbolsActionBuilder {
- @AutoCodec @VisibleForSerialization
- static final AndroidDataConverter<ValidatedAndroidResources> TO_ARG =
- AndroidDataConverter.<ValidatedAndroidResources>builder(JoinerType.COLON_COMMA)
- .withRoots(ValidatedAndroidResources::getResourceRoots)
- .withRoots(ValidatedAndroidResources::getAssetRoots)
- .withArtifact(ValidatedAndroidResources::getManifest)
- .maybeWithArtifact(ValidatedAndroidResources::getRTxt)
- .maybeWithArtifact(ValidatedAndroidResources::getSymbols)
- .build();
-
- @AutoCodec @VisibleForSerialization
- static final AndroidDataConverter<ValidatedAndroidResources> TO_ARG_AAPT2 =
- AndroidDataConverter.<ValidatedAndroidResources>builder(JoinerType.COLON_COMMA)
- .withRoots(ValidatedAndroidResources::getResourceRoots)
- .withRoots(ValidatedAndroidResources::getAssetRoots)
- .withArtifact(ValidatedAndroidResources::getManifest)
- .maybeWithArtifact(ValidatedAndroidResources::getAapt2RTxt)
- .maybeWithArtifact(ValidatedAndroidResources::getSymbols)
- .build();
-
private Artifact classJarOut;
private final ResourceDependencies dependencies;
private AndroidAaptVersion androidAaptVersion;
@@ -81,13 +58,14 @@ public class RobolectricResourceSymbolsActionBuilder {
.addTransitiveFlag(
"--data",
dependencies.getResourceContainers(),
- androidAaptVersion == AndroidAaptVersion.AAPT2 ? TO_ARG_AAPT2 : TO_ARG)
+ androidAaptVersion == AndroidAaptVersion.AAPT2
+ ? AndroidDataConverter.AAPT2_RESOURCES_AND_MANIFEST_CONVERTER
+ : AndroidDataConverter.AAPT_RESOURCES_AND_MANIFEST_CONVERTER)
.addTransitiveInputValues(
androidAaptVersion == AndroidAaptVersion.AAPT2
? dependencies.getTransitiveAapt2RTxt()
: dependencies.getTransitiveRTxt())
.addTransitiveInputValues(dependencies.getTransitiveResources())
- .addTransitiveInputValues(dependencies.getTransitiveAssets())
.addTransitiveInputValues(dependencies.getTransitiveManifests())
.addTransitiveInputValues(dependencies.getTransitiveSymbolsBin());
}
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java
index a723c7f467..ea0705a15f 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android/AndroidResourcesInfoApi.java
@@ -157,13 +157,6 @@ public interface AndroidResourcesInfoApi<
type = SkylarkNestedSet.class,
generic1 = FileApi.class),
@Param(
- name = "transitive_assets",
- doc = "A depset of Artifacts of Android Assets in the transitive closure.",
- positional = true,
- named = false,
- type = SkylarkNestedSet.class,
- generic1 = FileApi.class),
- @Param(
name = "transitive_manifests",
doc = "A depset of Artifacts of Android Manifests in the transitive closure.",
positional = true,
@@ -217,7 +210,6 @@ public interface AndroidResourcesInfoApi<
SkylarkNestedSet transitiveAndroidResources,
SkylarkNestedSet directAndroidResources,
SkylarkNestedSet transitiveResources,
- SkylarkNestedSet transitiveAssets,
SkylarkNestedSet transitiveManifests,
SkylarkNestedSet transitiveAapt2RTxt,
SkylarkNestedSet transitiveSymbolsBin,
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
index ecf8c1232f..96654cda87 100644
--- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/android/FakeAndroidResourcesInfo.java
@@ -135,7 +135,6 @@ public class FakeAndroidResourcesInfo extends NativeInfo
SkylarkNestedSet transitiveAndroidResources,
SkylarkNestedSet directAndroidResources,
SkylarkNestedSet transitiveResources,
- SkylarkNestedSet transitiveAssets,
SkylarkNestedSet transitiveManifests,
SkylarkNestedSet transitiveAapt2RTxt,
SkylarkNestedSet transitiveSymbolsBin,