diff options
author | 2017-01-12 22:18:53 +0000 | |
---|---|---|
committer | 2017-01-13 10:58:18 +0000 | |
commit | 293b061f80e0e941e97b77c967ef2c12d2937360 (patch) | |
tree | b96d8eed832864a00f8d70b080cf87e0885579c7 /src/main/java/com/google/devtools/build | |
parent | a5da387c0b6fe461a5dd5b359294ba8a274a4403 (diff) |
Rollback of commit 117197000692fd7391962ef968228a31bf97399a.
*** Reason for rollback ***
Rollforward with fix for AarImportTest. The test failed previously due to a difference in the configuration because getConfiguredTarget("//a:bar") does not invoke the android split transition, so the artifact paths did not exactly match.
*** Original change description ***
Automated [] rollback of commit 7fc35ae6890f4130b4d99a6c5007dcee91c5a8cc.
*** Reason for rollback ***
Breaks //src/test/java/com/google/devtools/build/lib:bazel-rules-tests
http://ci.bazel.io/view/Dashboard/job/bazel-tests/BAZEL_VERSION=HEAD,PLATFORM_NAME=linux-x86_64/lastCompletedBuild/console
*** Original change description ***
aar_import provides JavaCompilationArgsProvider for DexArchiveAspect.
--
PiperOrigin-RevId: 144370584
MOS_MIGRATED_REVID=144370584
Diffstat (limited to 'src/main/java/com/google/devtools/build')
3 files changed, 63 insertions, 2 deletions
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<TransitiveInfoCollection> targets = + ImmutableList.<TransitiveInfoCollection>copyOf( + ruleContext.getPrerequisites("exports", Mode.TARGET)); + JavaCommon common = + new JavaCommon( + ruleContext, + javaSemantics, + /* sources = */ ImmutableList.<Artifact>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(); } |