aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar kmb <kmb@google.com>2018-04-27 16:34:51 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-27 16:36:32 -0700
commit8fe4bec124fe5ec8324ad9c2efbc19d0e7c899f9 (patch)
tree7d968ffabd69a9c91f1f9711f7e8dabec222de9d /src
parent7f22066cbcebecb0a0b7133b907c0ef448825e6e (diff)
Preemptively propagate DexArchiveAspect to skylark _toolchain attributes
This allows incremental dexing to work with any Skylark rules that have implicit runtime dependencies. Rules should define a _toolchain attribute pointing to a Skylark toolchain. The toolchain should list all implicit runtime dependencies in a "runtime" attribute. PiperOrigin-RevId: 194611124
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/BUILD1
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java8
2 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index 57cd61440a..67966f3c88 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -1085,6 +1085,7 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:util",
"//src/main/java/com/google/devtools/build/lib/actions",
"//src/main/java/com/google/devtools/build/lib/actions:commandline_item",
+ "//src/main/java/com/google/devtools/build/lib/analysis/platform",
"//src/main/java/com/google/devtools/build/lib/analysis/skylark/annotations",
"//src/main/java/com/google/devtools/build/lib/analysis/whitelisting",
"//src/main/java/com/google/devtools/build/lib/collect",
diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
index c2b1a488ef..bf09dc9165 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java
@@ -18,6 +18,7 @@ import static com.google.devtools.build.lib.actions.ParameterFile.ParameterFileT
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.packages.SkylarkProviderIdentifier.forKey;
import static com.google.devtools.build.lib.rules.android.AndroidCommon.getAndroidConfig;
import com.google.common.base.Function;
@@ -45,6 +46,7 @@ import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorAr
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.config.HostTransition;
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget.Mode;
+import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.IterablesChain;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
@@ -54,7 +56,6 @@ import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper;
import com.google.devtools.build.lib.packages.Rule;
-import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier;
import com.google.devtools.build.lib.packages.TriState;
import com.google.devtools.build.lib.rules.java.JavaCommon;
import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider;
@@ -111,6 +112,7 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
"runtime_deps",
":android_sdk",
"aidl_lib", // for the aidl runtime in the android_sdk rule
+ "$toolchain", // this is _toolchain in Skylark rules (b/78647825)
// To get from proto_library through proto_lang_toolchain rule to proto runtime library.
JavaProtoAspectCommon.LITE_PROTO_TOOLCHAIN_ATTR, "runtime");
@@ -128,7 +130,9 @@ public final class DexArchiveAspect extends NativeAspectClass implements Configu
public AspectDefinition getDefinition(AspectParameters params) {
AspectDefinition.Builder result =
new AspectDefinition.Builder(this)
- .requireSkylarkProviders(SkylarkProviderIdentifier.forKey(JavaInfo.PROVIDER.getKey()))
+ .requireSkylarkProviders(forKey(JavaInfo.PROVIDER.getKey()))
+ // Latch onto Skylark toolchains in case they have a "runtime" (b/78647825)
+ .requireSkylarkProviders(forKey(ToolchainInfo.PROVIDER.getKey()))
.requireProviderSets(
ImmutableList.of(
ImmutableSet.<Class<?>>of(ProtoSourcesProvider.class),