From 7fc35ae6890f4130b4d99a6c5007dcee91c5a8cc Mon Sep 17 00:00:00 2001 From: Adam Michael Date: Wed, 11 Jan 2017 23:37:14 +0000 Subject: aar_import provides JavaCompilationArgsProvider for DexArchiveAspect. -- PiperOrigin-RevId: 144258810 MOS_MIGRATED_REVID=144258810 --- .../lib/bazel/rules/android/BazelAarImport.java | 25 +++++++++++++++ .../bazel/rules/android/BazelAarImportRule.java | 3 +- .../build/lib/rules/android/AarImport.java | 37 ++++++++++++++++++++++ 3 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java (limited to 'src/main/java/com') diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java new file mode 100644 index 0000000000..9761c3b2eb --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImport.java @@ -0,0 +1,25 @@ +// Copyright 2017 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.devtools.build.lib.bazel.rules.android; + +import com.google.devtools.build.lib.bazel.rules.java.BazelJavaSemantics; +import com.google.devtools.build.lib.rules.android.AarImport; + +/** Implementation of {@code aar_import} with Bazel semantics. */ +public class BazelAarImport extends AarImport { + public BazelAarImport() { + super(BazelJavaSemantics.INSTANCE); + } +} diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java index d55bf7a600..9753db862a 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/android/BazelAarImportRule.java @@ -18,7 +18,6 @@ import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.bazel.rules.java.BazelJavaRuleClasses.JavaBaseRule; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; -import com.google.devtools.build.lib.rules.android.AarImport; import com.google.devtools.build.lib.rules.android.AarImportBaseRule; /** @@ -36,7 +35,7 @@ public final class BazelAarImportRule implements RuleDefinition { return RuleDefinition.Metadata.builder() .name("aar_import") .ancestors(AarImportBaseRule.class, JavaBaseRule.class) - .factoryClass(AarImport.class) + .factoryClass(BazelAarImport.class) .build(); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java index 8e06123816..c65c84f811 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AarImport.java @@ -28,10 +28,13 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.rules.RuleConfiguredTargetFactory; import com.google.devtools.build.lib.rules.java.JavaCommon; +import com.google.devtools.build.lib.rules.java.JavaCompilationArgsProvider; +import com.google.devtools.build.lib.rules.java.JavaCompilationArtifacts; import com.google.devtools.build.lib.rules.java.JavaHelper; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider; import com.google.devtools.build.lib.rules.java.JavaRuleOutputJarsProvider.OutputJar; import com.google.devtools.build.lib.rules.java.JavaRuntimeJarProvider; +import com.google.devtools.build.lib.rules.java.JavaSemantics; import com.google.devtools.build.lib.rules.java.JavaToolchainProvider; import com.google.devtools.build.lib.rules.java.Jvm; import com.google.devtools.build.lib.vfs.PathFragment; @@ -49,6 +52,12 @@ public class AarImport implements RuleConfiguredTargetFactory { private static final String ANDROID_MANIFEST = "AndroidManifest.xml"; private static final String MERGED_JAR = "classes_and_libs_merged.jar"; + private final JavaSemantics javaSemantics; + + protected AarImport(JavaSemantics javaSemantics) { + this.javaSemantics = javaSemantics; + } + @Override public ConfiguredTarget create(RuleContext ruleContext) throws InterruptedException, RuleErrorException { @@ -116,6 +125,23 @@ public class AarImport implements RuleConfiguredTargetFactory { } } + ImmutableList targets = + ImmutableList.copyOf( + ruleContext.getPrerequisites("exports", Mode.TARGET)); + JavaCommon common = + new JavaCommon( + ruleContext, + javaSemantics, + /* sources = */ ImmutableList.of(), + /* compileDeps = */ targets, + /* runtimeDeps = */ targets, + /* bothDeps = */ targets); + common.setJavaCompilationArtifacts( + new JavaCompilationArtifacts.Builder() + .addRuntimeJar(mergedJar) + .addCompileTimeJar(mergedJar) + .build()); + return ruleBuilder .setFilesToBuild(filesToBuildBuilder.build()) .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY) @@ -127,6 +153,17 @@ public class AarImport implements RuleConfiguredTargetFactory { AndroidCommon.collectTransitiveNativeLibsZips(ruleContext).add(nativeLibs).build())) .addProvider( JavaRuntimeJarProvider.class, new JavaRuntimeJarProvider(ImmutableList.of(mergedJar))) + .addProvider( + JavaCompilationArgsProvider.class, + JavaCompilationArgsProvider.create( + common.collectJavaCompilationArgs( + /* recursive = */ false, + JavaCommon.isNeverLink(ruleContext), + /* srcLessDepsExport = */ false), + common.collectJavaCompilationArgs( + /* recursive = */ true, + JavaCommon.isNeverLink(ruleContext), + /* srcLessDepsExport = */ false))) .addProvider(JavaRuleOutputJarsProvider.class, jarProviderBuilder.build()) .build(); } -- cgit v1.2.3