diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
9 files changed, 91 insertions, 78 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java index b276224448..4d58a9b706 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java @@ -61,6 +61,7 @@ import com.google.devtools.build.lib.rules.android.AndroidInstrumentationInfo; import com.google.devtools.build.lib.rules.android.AndroidInstrumentationTestRule; import com.google.devtools.build.lib.rules.android.AndroidLibraryBaseRule; import com.google.devtools.build.lib.rules.android.AndroidLocalTestBaseRule; +import com.google.devtools.build.lib.rules.android.AndroidNativeLibsInfo; import com.google.devtools.build.lib.rules.android.AndroidNeverlinkAspect; import com.google.devtools.build.lib.rules.android.AndroidResourcesInfo; import com.google.devtools.build.lib.rules.android.AndroidRuleClasses; @@ -68,7 +69,6 @@ import com.google.devtools.build.lib.rules.android.AndroidRuleClasses.AndroidToo import com.google.devtools.build.lib.rules.android.AndroidSkylarkCommon; import com.google.devtools.build.lib.rules.android.ApkInfo; import com.google.devtools.build.lib.rules.android.DexArchiveAspect; -import com.google.devtools.build.lib.rules.android.NativeLibsZipsInfo; import com.google.devtools.build.lib.rules.config.ConfigRules; import com.google.devtools.build.lib.rules.core.CoreRules; import com.google.devtools.build.lib.rules.cpp.proto.CcProtoAspect; @@ -223,7 +223,7 @@ public class BazelRuleClassProvider { builder.addSkylarkAccessibleTopLevels( AndroidResourcesInfo.PROVIDER.getName(), AndroidResourcesInfo.PROVIDER); builder.addSkylarkAccessibleTopLevels( - NativeLibsZipsInfo.PROVIDER.getName(), NativeLibsZipsInfo.PROVIDER); + AndroidNativeLibsInfo.PROVIDER.getName(), AndroidNativeLibsInfo.PROVIDER); try { builder.addWorkspaceFilePrefix( 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 c2b987b4a7..7be723d608 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 @@ -163,8 +163,8 @@ public class AarImport implements RuleConfiguredTargetFactory { .addProvider(RunfilesProvider.class, RunfilesProvider.EMPTY) .addNativeDeclaredProvider(resourceApk.toResourceInfo(ruleContext.getLabel())) .addNativeDeclaredProvider( - new NativeLibsZipsInfo( - AndroidCommon.collectTransitiveNativeLibsZips(ruleContext).add(nativeLibs).build())) + new AndroidNativeLibsInfo( + AndroidCommon.collectTransitiveNativeLibs(ruleContext).add(nativeLibs).build())) .addProvider( JavaRuntimeJarProvider.class, new JavaRuntimeJarProvider(ImmutableList.of(mergedJar))) .addNativeDeclaredProvider(javaInfo) diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java index 6026c40bb1..dd47b4484d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinary.java @@ -386,8 +386,8 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { derivedJarFunction, proguardOutputMap); - NestedSet<Artifact> nativeLibsZips = - AndroidCommon.collectTransitiveNativeLibsZips(ruleContext).build(); + NestedSet<Artifact> nativeLibsAar = + AndroidCommon.collectTransitiveNativeLibs(ruleContext).build(); DexPostprocessingOutput dexPostprocessingOutput = androidSemantics.postprocessClassesDexZip( @@ -461,7 +461,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { .setClassesDex(finalClassesDex) .addInputZip(resourceApk.getArtifact()) .setJavaResourceZip(dexingOutput.javaResourceJar, resourceExtractor) - .addInputZips(nativeLibsZips) + .addInputZips(nativeLibsAar) .setNativeLibs(nativeLibs) .setUnsignedApk(unsignedApk) .setSignedApk(zipAlignedApk) @@ -559,7 +559,7 @@ public abstract class AndroidBinary implements RuleConfiguredTargetFactory { resourceApk, mobileInstallResourceApks, resourceExtractor, - nativeLibsZips, + nativeLibsAar, signingKey, additionalMergedManifests, applicationManifest); diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java index f9429fb504..4ff42e3259 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidBinaryMobileInstall.java @@ -100,7 +100,7 @@ public final class AndroidBinaryMobileInstall { ResourceApk resourceApk, MobileInstallResourceApks mobileInstallResourceApks, FilesToRunProvider resourceExtractor, - NestedSet<Artifact> nativeLibsZips, + NestedSet<Artifact> nativeLibsAar, Artifact signingKey, ImmutableList<Artifact> additionalMergedManifests, ApplicationManifest applicationManifest) @@ -147,7 +147,7 @@ public final class AndroidBinaryMobileInstall { .setClassesDex(stubDex) .addInputZip(mobileInstallResourceApks.incrementalResourceApk.getArtifact()) .setJavaResourceZip(dexingOutput.javaResourceJar, resourceExtractor) - .addInputZips(nativeLibsZips) + .addInputZips(nativeLibsAar) .setJavaResourceFile(stubData) .setSignedApk(incrementalApk) .setSigningKey(signingKey); @@ -259,7 +259,7 @@ public final class AndroidBinaryMobileInstall { ApkActionsBuilder.create("split main apk") .setClassesDex(splitStubDex) .addInputZip(splitMainApkResources) - .addInputZips(nativeLibsZips) + .addInputZips(nativeLibsAar) .setSignedApk(splitMainApk) .setSigningKey(signingKey) .registerActions(ruleContext); 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 d67430ce0f..7d2bb6a7c7 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 @@ -364,15 +364,14 @@ public class AndroidCommon { throw new IllegalArgumentException(String.format("%s was not found in %s", needle, haystack)); } - public static NestedSetBuilder<Artifact> collectTransitiveNativeLibsZips( - RuleContext ruleContext) { - NestedSetBuilder<Artifact> transitiveAarNativeLibs = NestedSetBuilder.naiveLinkOrder(); - Iterable<NativeLibsZipsInfo> infos = - getTransitivePrerequisites(ruleContext, Mode.TARGET, NativeLibsZipsInfo.PROVIDER); - for (NativeLibsZipsInfo nativeLibsZipsInfo : infos) { - transitiveAarNativeLibs.addTransitive(nativeLibsZipsInfo.getAarNativeLibs()); - } - return transitiveAarNativeLibs; + public static NestedSetBuilder<Artifact> collectTransitiveNativeLibs(RuleContext ruleContext) { + NestedSetBuilder<Artifact> transitiveNativeLibs = NestedSetBuilder.naiveLinkOrder(); + Iterable<AndroidNativeLibsInfo> infos = + getTransitivePrerequisites(ruleContext, Mode.TARGET, AndroidNativeLibsInfo.PROVIDER); + for (AndroidNativeLibsInfo nativeLibsZipsInfo : infos) { + transitiveNativeLibs.addTransitive(nativeLibsZipsInfo.getNativeLibs()); + } + return transitiveNativeLibs; } static boolean getExportsManifest(RuleContext ruleContext) { diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java index 3617299db4..6173e3c890 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidLibrary.java @@ -258,8 +258,8 @@ public abstract class AndroidLibrary implements RuleConfiguredTargetFactory { builder .addNativeDeclaredProvider( - new NativeLibsZipsInfo( - AndroidCommon.collectTransitiveNativeLibsZips(ruleContext).build())) + new AndroidNativeLibsInfo( + AndroidCommon.collectTransitiveNativeLibs(ruleContext).build())) .add( JavaSourceInfoProvider.class, JavaSourceInfoProvider.fromJavaTargetAttributes(javaTargetAttributes, javaSemantics)) diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNativeLibsInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNativeLibsInfo.java new file mode 100644 index 0000000000..5a07796e7b --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidNativeLibsInfo.java @@ -0,0 +1,69 @@ +// Copyright 2016 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.rules.android; + +import com.google.common.collect.ImmutableList; +import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.collect.nestedset.NestedSet; +import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; +import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.packages.NativeInfo; +import com.google.devtools.build.lib.packages.NativeProvider; +import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; +import com.google.devtools.build.lib.syntax.FunctionSignature; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; +import com.google.devtools.build.lib.syntax.SkylarkType; + +/** + * Provider of transitively available ZIPs of native libs that should be directly copied into the + * APK. + */ +@SkylarkModule(name = "AndroidNativeLibsInfo", doc = "", documented = false) +@Immutable +public final class AndroidNativeLibsInfo extends NativeInfo { + + private static final String SKYLARK_NAME = "AndroidNativeLibsInfo"; + private static final FunctionSignature.WithValues<Object, SkylarkType> SIGNATURE = + FunctionSignature.WithValues.create( + FunctionSignature.of( + /*numMandatoryPositionals=*/ 0, + /*numOptionalPositionals=*/ 0, + /*numMandatoryNamedOnly=*/ 1, + /*starArg=*/ false, + /*kwArg=*/ false, + "native_libs"), + /*defaultValues=*/ null, + /*types=*/ ImmutableList.of(SkylarkType.of(SkylarkNestedSet.class))); + public static final NativeProvider<AndroidNativeLibsInfo> PROVIDER = + new NativeProvider<AndroidNativeLibsInfo>( + AndroidNativeLibsInfo.class, SKYLARK_NAME, SIGNATURE) { + @Override + protected AndroidNativeLibsInfo createInstanceFromSkylark(Object[] args, Location loc) { + return new AndroidNativeLibsInfo( + /*nativeLibs=*/ ((SkylarkNestedSet) args[0]).getSet(Artifact.class)); + } + }; + + private final NestedSet<Artifact> nativeLibs; + + public AndroidNativeLibsInfo(NestedSet<Artifact> nativeLibs) { + super(PROVIDER); + this.nativeLibs = nativeLibs; + } + + /** Returns the native libraries zip produced by the rule. */ + public NestedSet<Artifact> getNativeLibs() { + return nativeLibs; + } +} diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java index cfec36c636..d53b811f21 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/android/AndroidRuleClasses.java @@ -570,7 +570,7 @@ public final class AndroidRuleClasses { .exec() .value(env.getToolsLabel(AndroidRuleClasses.MANIFEST_MERGE_TOOL_LABEL))) .advertiseSkylarkProvider(AndroidResourcesInfo.PROVIDER.id()) - .advertiseSkylarkProvider(NativeLibsZipsInfo.PROVIDER.id()) + .advertiseSkylarkProvider(AndroidNativeLibsInfo.PROVIDER.id()) .build(); } diff --git a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsInfo.java b/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsInfo.java deleted file mode 100644 index 2b802adebd..0000000000 --- a/src/main/java/com/google/devtools/build/lib/rules/android/NativeLibsZipsInfo.java +++ /dev/null @@ -1,55 +0,0 @@ -// Copyright 2016 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.rules.android; - -import com.google.devtools.build.lib.actions.Artifact; -import com.google.devtools.build.lib.collect.nestedset.NestedSet; -import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; -import com.google.devtools.build.lib.packages.NativeInfo; -import com.google.devtools.build.lib.packages.NativeProvider; -import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; -import com.google.devtools.build.lib.skylarkinterface.SkylarkModule; -import com.google.devtools.build.lib.skylarkinterface.SkylarkModuleCategory; - -/** - * Provider of transitively available ZIPs of native libs that should be directly copied into the - * APK. - */ -@SkylarkModule( - name = "AndroidNativeLibsZipsInfo", - doc = "Native Libraries zips provided by a rule", - category = SkylarkModuleCategory.PROVIDER -) -@Immutable -public final class NativeLibsZipsInfo extends NativeInfo { - - private static final String SKYLARK_NAME = "AndroidNativeLibsZipsInfo"; - public static final NativeProvider<NativeLibsZipsInfo> PROVIDER = - new NativeProvider<NativeLibsZipsInfo>(NativeLibsZipsInfo.class, SKYLARK_NAME) {}; - private final NestedSet<Artifact> aarNativeLibs; - - public NativeLibsZipsInfo(NestedSet<Artifact> aarNativeLibs) { - super(PROVIDER); - this.aarNativeLibs = aarNativeLibs; - } - - @SkylarkCallable( - name = "native_libs_zips", - doc = "Returns the native libraries zip produced by the rule.", - structField = true - ) - public NestedSet<Artifact> getAarNativeLibs() { - return aarNativeLibs; - } -} |