diff options
| -rw-r--r-- | android/license.go | 2 | ||||
| -rw-r--r-- | android/sdk.go | 34 | ||||
| -rw-r--r-- | java/bootclasspath_fragment.go | 5 | ||||
| -rw-r--r-- | java/java.go | 2 | ||||
| -rw-r--r-- | java/sdk_library.go | 9 | ||||
| -rw-r--r-- | java/system_modules.go | 6 | ||||
| -rw-r--r-- | sdk/cc_sdk_test.go | 12 | ||||
| -rw-r--r-- | sdk/java_sdk_test.go | 12 | ||||
| -rw-r--r-- | sdk/sdk.go | 6 | ||||
| -rw-r--r-- | sdk/update.go | 6 |
10 files changed, 43 insertions, 51 deletions
diff --git a/android/license.go b/android/license.go index 3bc6199b2..cb375a2e5 100644 --- a/android/license.go +++ b/android/license.go @@ -51,6 +51,7 @@ type licenseProperties struct { type licenseModule struct { ModuleBase DefaultableModuleBase + SdkBase properties licenseProperties } @@ -75,6 +76,7 @@ func LicenseFactory() Module { // 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 6fc1910d0..0adfd89c3 100644 --- a/android/sdk.go +++ b/android/sdk.go @@ -41,6 +41,11 @@ type sdkAwareWithoutModule interface { 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 @@ const SdkVersionSeparator = '@' 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 @@ func (s *SdkBase) IsInAnySdk() bool { 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 @@ type SdkMember interface { } // 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 @@ type SdkMemberType interface { // 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 @@ type SdkMemberType interface { // 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 @@ func (b *SdkMemberTypeBase) UsableWithSdkAndSdkSnapshot() bool { 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 8fe362a56..6270b5b35 100644 --- a/java/bootclasspath_fragment.go +++ b/java/bootclasspath_fragment.go @@ -32,9 +32,8 @@ func init() { 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 9896b578a..d74bf6825 100644 --- a/java/java.go +++ b/java/java.go @@ -669,6 +669,7 @@ func LibraryHostFactory() android.Module { module.Module.properties.Installable = proptools.BoolPtr(true) android.InitApexModule(module) + android.InitSdkAwareModule(module) InitJavaModule(module, android.HostSupported) return module } @@ -923,6 +924,7 @@ func TestFactory() android.Module { 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 fcc105d56..aff453973 100644 --- a/java/sdk_library.go +++ b/java/sdk_library.go @@ -1756,6 +1756,7 @@ func SdkLibraryFactory() android.Module { 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 @@ type sdkLibrarySdkMemberProperties struct { // 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 @@ func (s *sdkLibrarySdkMemberProperties) PopulateFromVariant(ctx android.SdkMembe } } - 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 @@ func (s *sdkLibrarySdkMemberProperties) AddToPropertySet(ctx android.SdkMemberCo } 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 a09778cd0..d0dc74adc 100644 --- a/java/system_modules.go +++ b/java/system_modules.go @@ -35,9 +35,8 @@ func init() { // 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 @@ func SystemModulesFactory() android.Module { 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 a4f985b8d..31555c02e 100644 --- a/sdk/cc_sdk_test.go +++ b/sdk/cc_sdk_test.go @@ -191,12 +191,12 @@ func TestBasicSdkWithCc(t *testing.T) { 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 @@ func TestBasicSdkWithCc(t *testing.T) { } 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 @@ func TestBasicSdkWithCc(t *testing.T) { } 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 @@ func TestBasicSdkWithCc(t *testing.T) { } `) - 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 601698121..dc58d9309 100644 --- a/sdk/java_sdk_test.go +++ b/sdk/java_sdk_test.go @@ -83,12 +83,12 @@ func TestBasicSdkWithJavaLibrary(t *testing.T) { 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 @@ func TestBasicSdkWithJavaLibrary(t *testing.T) { } 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 @@ func TestBasicSdkWithJavaLibrary(t *testing.T) { } `) - 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 2f56de69d..624c0fa9b 100644 --- a/sdk/sdk.go +++ b/sdk/sdk.go @@ -444,7 +444,7 @@ func memberDepsMutator(mctx android.TopDownMutatorContext) { // 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 @@ func sdkDepsMutator(mctx android.TopDownMutatorContext) { // 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 @@ func sdkDepsReplaceMutator(mctx android.BottomUpMutatorContext) { // 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 72b02e831..457cbd905 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -133,9 +133,9 @@ func (s *sdk) collectMembers(ctx android.ModuleContext) { 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 |