diff options
author | asteinb <asteinb@google.com> | 2018-08-09 07:04:24 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-08-09 07:06:28 -0700 |
commit | f28626035176d8934d741e23defb0569c6064081 (patch) | |
tree | e494bdb309765d56dbeafa98704f1c9710b8cab4 /src | |
parent | 6620107fb57598450d2cb7327f6b82c0a6e9afc3 (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')
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, |