Enforce min_sdk_version of apex(use_vendor:true)
Even though use_vendor:true is prohibited, there is media.swcodec apex which is still use_vendor: true and also needs to support Android10. (min_sdk_version: 29) Because LLNDK stubs were provided only for the current VNDK version, media.swcodec couldn't be built against min_sdk_version: 29. This change introduces additional versions for LLNDK stubs which are enforced when an apex with use_vendor: true sets min_sdk_version. To make things easier, the versions of LLNDK stubs are borrowed from its implementation libraries. Bug: 147450930 Bug: 149591522 Test: TARGET_BUILD_APPS=com.android.media.swcodec m (with min_sdk_version: 29 set) check if liblog/libc/libm/libdl stubs are 29 check if 29 stubs don't have new symbols. Change-Id: I79946cbb4da6617138a96d2b254349d3a298e77b
This commit is contained in:
@@ -1486,6 +1486,19 @@ func checkVersions(ctx android.BaseModuleContext, versions []string) {
|
||||
}
|
||||
}
|
||||
|
||||
func createVersionVariations(mctx android.BottomUpMutatorContext, versions []string) {
|
||||
// "" is for the non-stubs variant
|
||||
versions = append([]string{""}, versions...)
|
||||
|
||||
modules := mctx.CreateVariations(versions...)
|
||||
for i, m := range modules {
|
||||
if versions[i] != "" {
|
||||
m.(LinkableInterface).SetBuildStubs()
|
||||
m.(LinkableInterface).SetStubsVersions(versions[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Version mutator splits a module into the mandatory non-stubs variant
|
||||
// (which is unnamed) and zero or more stubs variants.
|
||||
func VersionMutator(mctx android.BottomUpMutatorContext) {
|
||||
@@ -1497,24 +1510,30 @@ func VersionMutator(mctx android.BottomUpMutatorContext) {
|
||||
return
|
||||
}
|
||||
|
||||
// save the list of versions for later use
|
||||
stubsVersionsLock.Lock()
|
||||
defer stubsVersionsLock.Unlock()
|
||||
// save the list of versions for later use
|
||||
stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = versions
|
||||
|
||||
// "" is for the non-stubs variant
|
||||
versions = append([]string{""}, versions...)
|
||||
|
||||
modules := mctx.CreateVariations(versions...)
|
||||
for i, m := range modules {
|
||||
if versions[i] != "" {
|
||||
m.(LinkableInterface).SetBuildStubs()
|
||||
m.(LinkableInterface).SetStubsVersions(versions[i])
|
||||
}
|
||||
}
|
||||
} else {
|
||||
mctx.CreateVariations("")
|
||||
createVersionVariations(mctx, versions)
|
||||
return
|
||||
}
|
||||
|
||||
if c, ok := library.(*Module); ok && c.IsStubs() {
|
||||
stubsVersionsLock.Lock()
|
||||
defer stubsVersionsLock.Unlock()
|
||||
// For LLNDK llndk_library, we borrow vstubs.ersions from its implementation library.
|
||||
// Since llndk_library has dependency to its implementation library,
|
||||
// we can safely access stubsVersionsFor() with its baseModuleName.
|
||||
versions := stubsVersionsFor(mctx.Config())[c.BaseModuleName()]
|
||||
// save the list of versions for later use
|
||||
stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = versions
|
||||
|
||||
createVersionVariations(mctx, versions)
|
||||
return
|
||||
}
|
||||
|
||||
mctx.CreateVariations("")
|
||||
return
|
||||
}
|
||||
if genrule, ok := mctx.Module().(*genrule.Module); ok {
|
||||
|
Reference in New Issue
Block a user