Merge "Install updatable-bcp-packages.txt and boot-image.bprof"
diff --git a/android/license.go b/android/license.go
index 3bc6199..cb375a2 100644
--- a/android/license.go
+++ b/android/license.go
@@ -51,6 +51,7 @@
type licenseModule struct {
ModuleBase
DefaultableModuleBase
+ SdkBase
properties licenseProperties
}
@@ -75,6 +76,7 @@
// The visibility property needs to be checked and parsed by the visibility module.
setPrimaryVisibilityProperty(module, "visibility", &module.properties.Visibility)
+ InitSdkAwareModule(module)
initAndroidModuleBase(module)
InitDefaultableModule(module)
diff --git a/android/sdk.go b/android/sdk.go
index 6fc1910..0adfd89 100644
--- a/android/sdk.go
+++ b/android/sdk.go
@@ -41,6 +41,11 @@
sdkBase() *SdkBase
MakeMemberOf(sdk SdkRef)
IsInAnySdk() bool
+
+ // IsVersioned determines whether the module is versioned, i.e. has a name of the form
+ // <name>@<version>
+ IsVersioned() bool
+
ContainingSdk() SdkRef
MemberName() string
BuildWithSdks(sdks SdkRefs)
@@ -82,7 +87,7 @@
func ParseSdkRef(ctx BaseModuleContext, str string, property string) SdkRef {
tokens := strings.Split(str, string(SdkVersionSeparator))
if len(tokens) < 1 || len(tokens) > 2 {
- ctx.PropertyErrorf(property, "%q does not follow name#version syntax", str)
+ ctx.PropertyErrorf(property, "%q does not follow name@version syntax", str)
return SdkRef{Name: "invalid sdk name", Version: "invalid sdk version"}
}
@@ -140,6 +145,11 @@
return s.properties.ContainingSdk != nil
}
+// IsVersioned returns true if this module is versioned.
+func (s *SdkBase) IsVersioned() bool {
+ return strings.Contains(s.module.Name(), "@")
+}
+
// ContainingSdk returns the SDK that this module is a member of
func (s *SdkBase) ContainingSdk() SdkRef {
if s.properties.ContainingSdk != nil {
@@ -292,9 +302,7 @@
}
// SdkMemberTypeDependencyTag is the interface that a tag must implement in order to allow the
-// dependent module to be automatically added to the sdk. In order for this to work the
-// SdkMemberType of the depending module must return true from
-// SdkMemberType.HasTransitiveSdkMembers.
+// dependent module to be automatically added to the sdk.
type SdkMemberTypeDependencyTag interface {
blueprint.DependencyTag
@@ -375,13 +383,6 @@
// True if the member type supports the sdk/sdk_snapshot, false otherwise.
UsableWithSdkAndSdkSnapshot() bool
- // Return true if modules of this type can have dependencies which should be
- // treated as if they are sdk members.
- //
- // Any dependency that is to be treated as a member of the sdk needs to implement
- // SdkAware and be added with an SdkMemberTypeDependencyTag tag.
- HasTransitiveSdkMembers() bool
-
// Return true if prebuilt host artifacts may be specific to the host OS. Only
// applicable to modules where HostSupported() is true. If this is true,
// snapshots will list each host OS variant explicitly and disable all other
@@ -447,10 +448,9 @@
// Base type for SdkMemberType implementations.
type SdkMemberTypeBase struct {
- PropertyName string
- SupportsSdk bool
- TransitiveSdkMembers bool
- HostOsDependent bool
+ PropertyName string
+ SupportsSdk bool
+ HostOsDependent bool
}
func (b *SdkMemberTypeBase) SdkPropertyName() string {
@@ -461,10 +461,6 @@
return b.SupportsSdk
}
-func (b *SdkMemberTypeBase) HasTransitiveSdkMembers() bool {
- return b.TransitiveSdkMembers
-}
-
func (b *SdkMemberTypeBase) IsHostOsDependent() bool {
return b.HostOsDependent
}
diff --git a/java/bootclasspath_fragment.go b/java/bootclasspath_fragment.go
index 8fe362a..6270b5b 100644
--- a/java/bootclasspath_fragment.go
+++ b/java/bootclasspath_fragment.go
@@ -32,9 +32,8 @@
android.RegisterSdkMemberType(&bootclasspathFragmentMemberType{
SdkMemberTypeBase: android.SdkMemberTypeBase{
- PropertyName: "bootclasspath_fragments",
- SupportsSdk: true,
- TransitiveSdkMembers: true,
+ PropertyName: "bootclasspath_fragments",
+ SupportsSdk: true,
},
})
}
diff --git a/java/java.go b/java/java.go
index 9896b57..d74bf68 100644
--- a/java/java.go
+++ b/java/java.go
@@ -669,6 +669,7 @@
module.Module.properties.Installable = proptools.BoolPtr(true)
android.InitApexModule(module)
+ android.InitSdkAwareModule(module)
InitJavaModule(module, android.HostSupported)
return module
}
@@ -923,6 +924,7 @@
module.Module.dexpreopter.isTest = true
module.Module.linter.test = true
+ android.InitSdkAwareModule(module)
InitJavaModule(module, android.HostAndDeviceSupported)
return module
}
diff --git a/java/sdk_library.go b/java/sdk_library.go
index fcc105d..aff4539 100644
--- a/java/sdk_library.go
+++ b/java/sdk_library.go
@@ -1756,6 +1756,7 @@
module.InitSdkLibraryProperties()
android.InitApexModule(module)
+ android.InitSdkAwareModule(module)
InitJavaModule(module, android.HostAndDeviceSupported)
// Initialize the map from scope to scope specific properties.
@@ -2385,9 +2386,6 @@
// Scope to per scope properties.
Scopes map[*apiScope]scopeProperties
- // Additional libraries that the exported stubs libraries depend upon.
- Libs []string
-
// The Java stubs source files.
Stub_srcs []string
@@ -2439,7 +2437,6 @@
}
}
- s.Libs = sdk.properties.Libs
s.Naming_scheme = sdk.commonSdkLibraryProperties.Naming_scheme
s.Shared_library = proptools.BoolPtr(sdk.sharedLibrary())
s.Compile_dex = sdk.dexProperties.Compile_dex
@@ -2504,8 +2501,4 @@
}
propertySet.AddProperty("doctag_files", dests)
}
-
- if len(s.Libs) > 0 {
- propertySet.AddPropertyWithTag("libs", s.Libs, ctx.SnapshotBuilder().SdkMemberReferencePropertyTag(false))
- }
}
diff --git a/java/system_modules.go b/java/system_modules.go
index a09778c..d0dc74a 100644
--- a/java/system_modules.go
+++ b/java/system_modules.go
@@ -35,9 +35,8 @@
// Register sdk member types.
android.RegisterSdkMemberType(&systemModulesSdkMemberType{
android.SdkMemberTypeBase{
- PropertyName: "java_system_modules",
- SupportsSdk: true,
- TransitiveSdkMembers: true,
+ PropertyName: "java_system_modules",
+ SupportsSdk: true,
},
})
}
@@ -115,6 +114,7 @@
module.AddProperties(&module.properties)
android.InitAndroidArchModule(module, android.HostAndDeviceSupported, android.MultilibCommon)
android.InitDefaultableModule(module)
+ android.InitSdkAwareModule(module)
return module
}
diff --git a/sdk/cc_sdk_test.go b/sdk/cc_sdk_test.go
index a4f985b..31555c0 100644
--- a/sdk/cc_sdk_test.go
+++ b/sdk/cc_sdk_test.go
@@ -191,12 +191,12 @@
sdk_snapshot {
name: "mysdk@1",
- native_shared_libs: ["sdkmember_mysdk_1"],
+ native_shared_libs: ["sdkmember_mysdk@1"],
}
sdk_snapshot {
name: "mysdk@2",
- native_shared_libs: ["sdkmember_mysdk_2"],
+ native_shared_libs: ["sdkmember_mysdk@2"],
}
cc_prebuilt_library_shared {
@@ -208,7 +208,7 @@
}
cc_prebuilt_library_shared {
- name: "sdkmember_mysdk_1",
+ name: "sdkmember_mysdk@1",
sdk_member_name: "sdkmember",
srcs: ["libfoo.so"],
system_shared_libs: [],
@@ -221,7 +221,7 @@
}
cc_prebuilt_library_shared {
- name: "sdkmember_mysdk_2",
+ name: "sdkmember_mysdk@2",
sdk_member_name: "sdkmember",
srcs: ["libfoo.so"],
system_shared_libs: [],
@@ -272,8 +272,8 @@
}
`)
- sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_arm64_armv8-a_shared_apex10000_mysdk_1").Rule("toc").Output
- sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_arm64_armv8-a_shared_apex10000_mysdk_2").Rule("toc").Output
+ sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk@1", "android_arm64_armv8-a_shared_apex10000_mysdk_1").Rule("toc").Output
+ sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk@2", "android_arm64_armv8-a_shared_apex10000_mysdk_2").Rule("toc").Output
cpplibForMyApex := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_1")
cpplibForMyApex2 := result.ModuleForTests("mycpplib", "android_arm64_armv8-a_shared_apex10000_mysdk_2")
diff --git a/sdk/java_sdk_test.go b/sdk/java_sdk_test.go
index 6016981..dc58d93 100644
--- a/sdk/java_sdk_test.go
+++ b/sdk/java_sdk_test.go
@@ -83,12 +83,12 @@
sdk_snapshot {
name: "mysdk@1",
- java_header_libs: ["sdkmember_mysdk_1"],
+ java_header_libs: ["sdkmember_mysdk@1"],
}
sdk_snapshot {
name: "mysdk@2",
- java_header_libs: ["sdkmember_mysdk_2"],
+ java_header_libs: ["sdkmember_mysdk@2"],
}
java_library {
@@ -100,13 +100,13 @@
}
java_import {
- name: "sdkmember_mysdk_1",
+ name: "sdkmember_mysdk@1",
sdk_member_name: "sdkmember",
host_supported: true,
}
java_import {
- name: "sdkmember_mysdk_2",
+ name: "sdkmember_mysdk@2",
sdk_member_name: "sdkmember",
host_supported: true,
}
@@ -144,8 +144,8 @@
}
`)
- sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk_1", "android_common").Rule("combineJar").Output
- sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk_2", "android_common").Rule("combineJar").Output
+ sdkMemberV1 := result.ModuleForTests("sdkmember_mysdk@1", "android_common").Rule("combineJar").Output
+ sdkMemberV2 := result.ModuleForTests("sdkmember_mysdk@2", "android_common").Rule("combineJar").Output
javalibForMyApex := result.ModuleForTests("myjavalib", "android_common_apex10000_mysdk_1")
javalibForMyApex2 := result.ModuleForTests("myjavalib", "android_common_apex10000_mysdk_2")
diff --git a/sdk/sdk.go b/sdk/sdk.go
index 2f56de6..624c0fa 100644
--- a/sdk/sdk.go
+++ b/sdk/sdk.go
@@ -444,7 +444,7 @@
// built with libfoo.mysdk.11 and libfoo.mysdk.12, respectively depending on which sdk they are
// using.
func memberInterVersionMutator(mctx android.BottomUpMutatorContext) {
- if m, ok := mctx.Module().(android.SdkAware); ok && m.IsInAnySdk() {
+ if m, ok := mctx.Module().(android.SdkAware); ok && m.IsInAnySdk() && m.IsVersioned() {
if !m.ContainingSdk().Unversioned() {
memberName := m.MemberName()
tag := sdkMemberVersionedDepTag{member: memberName, version: m.ContainingSdk().Version}
@@ -483,7 +483,7 @@
// Step 5: if libfoo.mysdk.11 is in the context where version 11 of mysdk is requested, the
// versioned module is used instead of the un-versioned (in-development) module libfoo
func sdkDepsReplaceMutator(mctx android.BottomUpMutatorContext) {
- if versionedSdkMember, ok := mctx.Module().(android.SdkAware); ok && versionedSdkMember.IsInAnySdk() {
+ if versionedSdkMember, ok := mctx.Module().(android.SdkAware); ok && versionedSdkMember.IsInAnySdk() && versionedSdkMember.IsVersioned() {
if sdk := versionedSdkMember.ContainingSdk(); !sdk.Unversioned() {
// Only replace dependencies to <sdkmember> with <sdkmember@required-version>
// if the depending module requires it. e.g.
@@ -499,7 +499,7 @@
// TODO(b/183204176): Remove this after fixing.
defer func() {
if r := recover(); r != nil {
- mctx.ModuleErrorf("%s", r)
+ mctx.ModuleErrorf("sdkDepsReplaceMutator %s", r)
}
}()
diff --git a/sdk/update.go b/sdk/update.go
index 72b02e8..457cbd9 100644
--- a/sdk/update.go
+++ b/sdk/update.go
@@ -133,9 +133,9 @@
export := memberTag.ExportMember()
s.memberVariantDeps = append(s.memberVariantDeps, sdkMemberVariantDep{s, memberType, child.(android.SdkAware), export})
- // If the member type supports transitive sdk members then recurse down into
- // its dependencies, otherwise exit traversal.
- return memberType.HasTransitiveSdkMembers()
+ // Recurse down into the member's dependencies as it may have dependencies that need to be
+ // automatically added to the sdk.
+ return true
}
return false