diff options
author | kmb <kmb@google.com> | 2018-04-27 16:34:51 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-04-27 16:36:32 -0700 |
commit | 8fe4bec124fe5ec8324ad9c2efbc19d0e7c899f9 (patch) | |
tree | 7d968ffabd69a9c91f1f9711f7e8dabec222de9d /src | |
parent | 7f22066cbcebecb0a0b7133b907c0ef448825e6e (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/BUILD | 1 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/android/DexArchiveAspect.java | 8 |
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), |