aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/rules/android
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/android')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java15
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/BusyBoxActionBuilder.java22
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidAssets.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java11
7 files changed, 36 insertions, 32 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
index b023c46031..ffaeb6fc58 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java
@@ -44,6 +44,7 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTargetFactory;
import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.Runfiles;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
+import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
@@ -51,6 +52,7 @@ import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.analysis.whitelisting.Whitelist;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
@@ -265,7 +267,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
ruleContext.getExpander().withDataLocations().tokenized("nocompress_extensions"),
ruleContext.attributes().get("crunch_png", Type.BOOLEAN),
ProguardHelper.getProguardConfigArtifact(ruleContext, ""),
- createMainDexProguardSpec(ruleContext),
+ createMainDexProguardSpec(ruleContext.getLabel(), ruleContext),
shouldShrinkResourceCycles(
dataContext.getAndroidConfig(), ruleContext, shrinkResources),
ruleContext.getImplicitOutputArtifact(AndroidRuleClasses.ANDROID_PROCESSED_MANIFEST),
@@ -809,7 +811,8 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
ImmutableList<Artifact> proguardSpecs =
ProguardHelper.collectTransitiveProguardSpecs(
- dataContext.getRuleContext(),
+ dataContext.getLabel(),
+ dataContext.getActionConstructionContext(),
Iterables.concat(ImmutableList.of(resourceProguardConfig), extraProguardSpecs),
localProguardSpecs,
proguardDeps);
@@ -820,9 +823,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
// specs so that they can override values.
proguardSpecs =
ImmutableList.<Artifact>builder()
- .addAll(
- androidSemantics.getProguardSpecsForManifest(
- dataContext.getRuleContext(), mergedManifest))
+ .addAll(androidSemantics.getProguardSpecsForManifest(dataContext, mergedManifest))
.addAll(proguardSpecs)
.build();
}
@@ -1788,8 +1789,8 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory {
return mainDexList;
}
- public static Artifact createMainDexProguardSpec(RuleContext ruleContext) {
- return ProguardHelper.getProguardConfigArtifact(ruleContext, "main_dex");
+ public static Artifact createMainDexProguardSpec(Label label, ActionConstructionContext context) {
+ return ProguardHelper.getProguardConfigArtifact(label, context, "main_dex");
}
/** Returns the multidex mode to apply to this target. */
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
index ae8fa2fe65..a1b33d6601 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidSemantics.java
@@ -74,7 +74,8 @@ public interface AndroidSemantics {
throws InterruptedException;
/** Given an Android {@code manifest}, returns a list of relevant Proguard specs. */
- ImmutableList<Artifact> getProguardSpecsForManifest(RuleContext ruleContext, Artifact manifest);
+ ImmutableList<Artifact> getProguardSpecsForManifest(
+ AndroidDataContext dataContext, Artifact manifest);
/**
* Add coverage instrumentation to the Java compilation of an Android binary.
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/BusyBoxActionBuilder.java b/src/main/java/com/google/devtools/build/lib/rules/android/BusyBoxActionBuilder.java
index 463022c295..b459f07df6 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/BusyBoxActionBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/BusyBoxActionBuilder.java
@@ -17,10 +17,8 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ParamFileInfo;
import com.google.devtools.build.lib.actions.ParameterFile.ParameterFileType;
-import com.google.devtools.build.lib.analysis.RuleContext;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
-import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.util.OS;
@@ -42,20 +40,20 @@ public final class BusyBoxActionBuilder {
.setUseAlways(OS.getCurrent() == OS.WINDOWS)
.build();
- private final RuleContext ruleContext;
+ private final AndroidDataContext dataContext;
private final NestedSetBuilder<Artifact> inputs = NestedSetBuilder.naiveLinkOrder();
private final ImmutableList.Builder<Artifact> outputs = ImmutableList.builder();
private final CustomCommandLine.Builder commandLine = CustomCommandLine.builder();
public static BusyBoxActionBuilder create(
- RuleContext ruleContext, @CompileTimeConstant String toolName) {
- BusyBoxActionBuilder builder = new BusyBoxActionBuilder(ruleContext);
+ AndroidDataContext dataContext, @CompileTimeConstant String toolName) {
+ BusyBoxActionBuilder builder = new BusyBoxActionBuilder(dataContext);
builder.commandLine.add("--tool").add(toolName).add("--");
return builder;
}
- private BusyBoxActionBuilder(RuleContext ruleContext) {
- this.ruleContext = ruleContext;
+ private BusyBoxActionBuilder(AndroidDataContext dataContext) {
+ this.dataContext = dataContext;
}
public BusyBoxActionBuilder addInput(@CompileTimeConstant String arg, Artifact value) {
@@ -122,16 +120,14 @@ public final class BusyBoxActionBuilder {
* @param mnemonic a mnemonic used to indicate the tool being run, for example, "BusyBoxTool".
*/
public void buildAndRegister(String message, String mnemonic) {
- ruleContext.registerAction(
+ dataContext.registerAction(
new SpawnAction.Builder()
.useDefaultShellEnvironment()
.addTransitiveInputs(inputs.build())
.addOutputs(outputs.build())
.addCommandLine(commandLine.build(), FORCED_PARAM_FILE_INFO)
- .setExecutable(
- ruleContext.getExecutablePrerequisite("$android_resources_busybox", Mode.HOST))
- .setProgressMessage("%s for %s", message, ruleContext.getLabel())
- .setMnemonic(mnemonic)
- .build(ruleContext));
+ .setExecutable(dataContext.getBusybox())
+ .setProgressMessage("%s for %s", message, dataContext.getLabel())
+ .setMnemonic(mnemonic));
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java b/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
index 9f6ac28ea6..c589342614 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DataBinding.java
@@ -17,6 +17,7 @@ import com.google.common.collect.ImmutableList;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder;
import com.google.devtools.build.lib.analysis.RuleContext;
+import com.google.devtools.build.lib.analysis.actions.ActionConstructionContext;
import com.google.devtools.build.lib.analysis.actions.FileWriteAction;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
@@ -131,14 +132,14 @@ public final class DataBinding {
* for each layout file with data binding expressions. Since this may produce multiple files,
* outputs are zipped up into a single container.
*/
- static Artifact getLayoutInfoFile(RuleContext ruleContext) {
- return getSuffixedInfoFile(ruleContext, "");
+ static Artifact getLayoutInfoFile(ActionConstructionContext context) {
+ return getSuffixedInfoFile(context, "");
}
/** Gets a layout info file with the specified suffix (for use in having different outputs) */
- static Artifact getSuffixedInfoFile(RuleContext ruleContext, String suffix) {
- return ruleContext.getUniqueDirectoryArtifact(
- "databinding", "layout-info" + suffix + ".zip", ruleContext.getBinOrGenfilesDirectory());
+ static Artifact getSuffixedInfoFile(ActionConstructionContext context, String suffix) {
+ return context.getUniqueDirectoryArtifact(
+ "databinding", "layout-info" + suffix + ".zip");
}
/**
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 7aa6196427..ea6411b355 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
@@ -30,8 +30,7 @@ public class MergedAndroidAssets extends ParsedAndroidAssets {
Artifact mergedAssets =
dataContext.createOutputArtifact(AndroidRuleClasses.ANDROID_ASSETS_ZIP);
- BusyBoxActionBuilder builder =
- BusyBoxActionBuilder.create(dataContext.getRuleContext(), "MERGE_ASSETS");
+ BusyBoxActionBuilder builder = BusyBoxActionBuilder.create(dataContext, "MERGE_ASSETS");
if (dataContext.getAndroidConfig().throwOnResourceConflict()) {
builder.addFlag("--throwOnAssetConflict");
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
index cbe830244f..da7ceda7b4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/MergedAndroidResources.java
@@ -61,7 +61,8 @@ public class MergedAndroidResources extends ParsedAndroidResources {
.setUseCompiledMerge(useCompiledMerge);
if (enableDataBinding) {
- builder.setDataBindingInfoZip(DataBinding.getLayoutInfoFile(dataContext.getRuleContext()));
+ builder.setDataBindingInfoZip(
+ DataBinding.getLayoutInfoFile(dataContext.getActionConstructionContext()));
}
return builder
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
index 7e468823eb..cbb1034924 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/ProcessedAndroidData.java
@@ -85,7 +85,8 @@ public class ProcessedAndroidData {
.setMergedResourcesOut(
dataContext.createOutputArtifact(AndroidRuleClasses.ANDROID_RESOURCES_ZIP))
.setMainDexProguardOut(
- AndroidBinary.createMainDexProguardSpec(dataContext.getRuleContext()))
+ AndroidBinary.createMainDexProguardSpec(
+ dataContext.getLabel(), dataContext.getActionConstructionContext()))
.conditionalKeepRules(conditionalKeepRules)
.setDataBindingInfoZip(
dataBindingEnabled
@@ -205,7 +206,8 @@ public class ProcessedAndroidData {
builderForNonIncrementalTopLevelTarget(
dataContext, manifest, ImmutableMap.of(), aaptVersion)
.setMainDexProguardOut(
- AndroidBinary.createMainDexProguardSpec(dataContext.getRuleContext()))
+ AndroidBinary.createMainDexProguardSpec(
+ dataContext.getLabel(), dataContext.getActionConstructionContext()))
.setPackageUnderTest(packageUnderTest)
.setIsTestWithResources(hasLocalResourceFiles)
.withResourceDependencies(resourceDeps)
@@ -258,7 +260,10 @@ public class ProcessedAndroidData {
// Output
.setProguardOut(
- ProguardHelper.getProguardConfigArtifact(dataContext.getRuleContext(), proguardPrefix));
+ ProguardHelper.getProguardConfigArtifact(
+ dataContext.getLabel(),
+ dataContext.getActionConstructionContext(),
+ proguardPrefix));
}
static ProcessedAndroidData of(