aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules
diff options
context:
space:
mode:
authorGravatar apell <apell@google.com>2017-05-09 15:04:27 -0400
committerGravatar Kristina Chodorow <kchodorow@google.com>2017-05-10 13:35:53 -0400
commit0973ace17e17c289ddfccd086e38c97caeb6c900 (patch)
treeafdbc2b7db9871585267ad2650ba9451f7efbe2f /src/main/java/com/google/devtools/build/lib/rules
parent8040b0b7690420be2f92071e635cd1d7f18a38e9 (diff)
Add manifest_merger and manifest_values attributes to android_test to allow manifest placeholders to be used for test APKs.
RELNOTES: android_test may use manifest placeholders with 'manifest_merger = "android"'. PiperOrigin-RevId: 155534958
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java38
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java36
2 files changed, 36 insertions, 38 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java
index 3d8efbaade..8991bdfe3f 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryOnlyRule.java
@@ -18,17 +18,13 @@ import static com.google.devtools.build.lib.packages.Attribute.attr;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;
import static com.google.devtools.build.lib.packages.BuildType.TRISTATE;
import static com.google.devtools.build.lib.syntax.Type.BOOLEAN;
-import static com.google.devtools.build.lib.syntax.Type.STRING;
-import static com.google.devtools.build.lib.syntax.Type.STRING_DICT;
import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
import com.google.devtools.build.lib.analysis.RuleDefinition;
import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment;
-import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet;
import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
import com.google.devtools.build.lib.packages.TriState;
-import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidManifestMerger;
/**
* Attributes for {@code android_binary} that are not present on {@code android_test}.
@@ -37,40 +33,6 @@ public final class AndroidBinaryOnlyRule implements RuleDefinition {
@Override
public RuleClass build(RuleClass.Builder builder, final RuleDefinitionEnvironment env) {
return builder
- /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_merger) -->
- Select the manifest merger to use for this rule.<br/>
- Possible values:
- <ul>
- <li><code>manifest_merger = "legacy"</code>: Use the legacy manifest merger. Does not
- allow features of the android merger like placeholder substitution and tools
- attributes for defining merge behavior. Removes all
- <code>&lt;uses-permission&gt;</code> and <code>&lt;uses-permission-sdk-23&gt;</code>
- tags. Performs a tag-level merge.</li>
- <li><code>manifest_merger = "android"</code>: Use the android manifest merger. Allows
- features like placeholder substitution and tools attributes for defining merge
- behavior. Follows the semantics from
- <a href="http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger">
- the documentation</a> except it has been modified to also remove all
- <code>&lt;uses-permission&gt;</code> and <code>&lt;uses-permission-sdk-23&gt;</code>
- tags. Performs an attribute-level merge.</li>
- <li><code>manifest_merger = "auto"</code>: Merger is controlled by the
- <a href="../blaze-user-manual.html#flag--android_manifest_merger">
- --android_manifest_merger</a> flag.</li>
- </ul>
- <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
- .add(attr("manifest_merger", STRING)
- .allowedValues(new AllowedValueSet(AndroidManifestMerger.getAttributeValues()))
- .value(AndroidManifestMerger.getRuleAttributeDefault()))
- /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_values) -->
- A dictionary of values to be overridden in the manifest. Any instance of ${name} in the
- manifest will be replaced with the value corresponding to name in this dictionary.
- applicationId, versionCode, versionName, minSdkVersion, targetSdkVersion and
- maxSdkVersion will also override the corresponding attributes of the manifest and
- uses-sdk tags. packageName will be ignored and will be set from either applicationId if
- specified or the package in manifest. When manifest_merger is set to legacy, only
- applicationId, versionCode and versionName will have any effect.
- <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
- .add(attr("manifest_values", STRING_DICT))
/* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(nocompress_extensions) -->
A list of file extension to leave uncompressed in apk.
<!-- #END_BLAZE_RULE.ATTRIBUTE --> */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
index d70894dabf..d770d54bd8 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java
@@ -23,6 +23,7 @@ import static com.google.devtools.build.lib.packages.ImplicitOutputsFunction.fro
import static com.google.devtools.build.lib.syntax.Type.BOOLEAN;
import static com.google.devtools.build.lib.syntax.Type.INTEGER;
import static com.google.devtools.build.lib.syntax.Type.STRING;
+import static com.google.devtools.build.lib.syntax.Type.STRING_DICT;
import static com.google.devtools.build.lib.syntax.Type.STRING_LIST;
import static com.google.devtools.build.lib.util.FileTypeSet.ANY_FILE;
@@ -48,6 +49,7 @@ import com.google.devtools.build.lib.packages.RuleClass;
import com.google.devtools.build.lib.packages.RuleClass.Builder;
import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType;
import com.google.devtools.build.lib.packages.TriState;
+import com.google.devtools.build.lib.rules.android.AndroidConfiguration.AndroidManifestMerger;
import com.google.devtools.build.lib.rules.android.AndroidConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.config.ConfigFeatureFlagProvider;
import com.google.devtools.build.lib.rules.cpp.CppOptions;
@@ -828,6 +830,40 @@ public final class AndroidRuleClasses {
Rex suggests an updated package map that can be saved and reused for subsequent builds.
*/
.add(attr("rex_package_map", LABEL).legacyAllowAnyFileType().undocumented("experimental"))
+ /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_merger) -->
+ Select the manifest merger to use for this rule.<br/>
+ Possible values:
+ <ul>
+ <li><code>manifest_merger = "legacy"</code>: Use the legacy manifest merger. Does not
+ allow features of the android merger like placeholder substitution and tools
+ attributes for defining merge behavior. Removes all
+ <code>&lt;uses-permission&gt;</code> and <code>&lt;uses-permission-sdk-23&gt;</code>
+ tags. Performs a tag-level merge.</li>
+ <li><code>manifest_merger = "android"</code>: Use the android manifest merger. Allows
+ features like placeholder substitution and tools attributes for defining merge
+ behavior. Follows the semantics from
+ <a href="http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger">
+ the documentation</a> except it has been modified to also remove all
+ <code>&lt;uses-permission&gt;</code> and <code>&lt;uses-permission-sdk-23&gt;</code>
+ tags. Performs an attribute-level merge.</li>
+ <li><code>manifest_merger = "auto"</code>: Merger is controlled by the
+ <a href="../blaze-user-manual.html#flag--android_manifest_merger">
+ --android_manifest_merger</a> flag.</li>
+ </ul>
+ <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
+ .add(attr("manifest_merger", STRING)
+ .allowedValues(new AllowedValueSet(AndroidManifestMerger.getAttributeValues()))
+ .value(AndroidManifestMerger.getRuleAttributeDefault()))
+ /* <!-- #BLAZE_RULE(android_binary).ATTRIBUTE(manifest_values) -->
+ A dictionary of values to be overridden in the manifest. Any instance of ${name} in the
+ manifest will be replaced with the value corresponding to name in this dictionary.
+ applicationId, versionCode, versionName, minSdkVersion, targetSdkVersion and
+ maxSdkVersion will also override the corresponding attributes of the manifest and
+ uses-sdk tags. packageName will be ignored and will be set from either applicationId if
+ specified or the package in manifest. When manifest_merger is set to legacy, only
+ applicationId, versionCode and versionName will have any effect.
+ <!-- #END_BLAZE_RULE.ATTRIBUTE --> */
+ .add(attr("manifest_values", STRING_DICT))
.add(attr(AndroidFeatureFlagSetProvider.FEATURE_FLAG_ATTR, LABEL_KEYED_STRING_DICT)
.undocumented("the feature flag feature has not yet been launched")
.allowedRuleClasses("config_feature_flag")