From 276591254da669286dbb49a8c9c3328299354300 Mon Sep 17 00:00:00 2001 From: gregce Date: Wed, 12 Apr 2017 17:40:13 +0000 Subject: [PATCH] Make Android data binding rules explicitly depend on the runtime library. Before this change Bazel was adding this implicitly. But that wasn't working properly with --incremental_dexing. And that implementation is a lot messier and bug-prone vs. just including it as a standard dependency. Issue: #2694 PiperOrigin-RevId: 152956638 --- .../lib/rules/android/AndroidCommon.java | 10 ++------- .../build/lib/rules/android/DataBinding.java | 21 ------------------- 2 files changed, 2 insertions(+), 29 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java index 3f1b60998c519e..e3f2417cd754a0 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidCommon.java @@ -918,19 +918,13 @@ static JavaCommon createJavaCommonWithAndroidDataBinding(RuleContext ruleContext if (isLibrary) { compileDeps = JavaCommon.defaultDeps(ruleContext, semantics, ClasspathType.COMPILE_ONLY); - if (useDataBinding) { - compileDeps = DataBinding.addSupportLibs(ruleContext, compileDeps); - } compileDeps = AndroidIdlHelper.maybeAddSupportLibs(ruleContext, compileDeps); runtimeDeps = JavaCommon.defaultDeps(ruleContext, semantics, ClasspathType.RUNTIME_ONLY); bothDeps = JavaCommon.defaultDeps(ruleContext, semantics, ClasspathType.BOTH); } else { // Binary: - List ruleDeps = - ruleContext.getPrerequisites("deps", RuleConfiguredTarget.Mode.TARGET); - compileDeps = useDataBinding - ? DataBinding.addSupportLibs(ruleContext, ruleDeps) - : ImmutableList.copyOf(ruleDeps); + compileDeps = ImmutableList.copyOf( + ruleContext.getPrerequisites("deps", RuleConfiguredTarget.Mode.TARGET)); runtimeDeps = compileDeps; bothDeps = compileDeps; } 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 a66d4b186cc69a..6b74a7270de9fe 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 @@ -19,7 +19,6 @@ import com.google.devtools.build.lib.analysis.RuleConfiguredTarget; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; import com.google.devtools.build.lib.analysis.RuleContext; -import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.actions.FileWriteAction; import com.google.devtools.build.lib.analysis.actions.SymlinkAction; import com.google.devtools.build.lib.cmdline.Label; @@ -61,11 +60,6 @@ * */ public final class DataBinding { - /** - * The rule attribute supplying the data binding runtime/compile-time support libraries. - */ - private static final String DATABINDING_RUNTIME_ATTR = "$databinding_runtime"; - /** * The rule attribute supplying the data binding annotation processor. */ @@ -161,21 +155,6 @@ static Artifact getLayoutInfoFile(RuleContext ruleContext) { ruleContext.getBinOrGenfilesDirectory()); } - /** - * Adds the support libraries needed to compile/run Java code with data binding. - * - *

This excludes the annotation processor, which is injected separately as a Java plugin - * (see {@link #addAnnotationProcessor}). - */ - static ImmutableList addSupportLibs(RuleContext ruleContext, - List deps) { - RuleConfiguredTarget.Mode mode = RuleConfiguredTarget.Mode.TARGET; - return ImmutableList.builder() - .addAll(deps) - .addAll(ruleContext.getPrerequisites(DATABINDING_RUNTIME_ATTR, mode)) - .build(); - } - /** * Adds data binding's annotation processor as a plugin to the given Java compilation context. *