Add version suffix for stub modules' Android.mk
Becase there can be more than one stub libraries, LOCAL_MODULE should be suffixed with SubName just like NDK stub. Note that suffix should not be appended to the latest version if the library is provided by APEX, Otherwise, those libs always need to be referenced with suffix in .mk files. Bug: 145796956 Test: m Change-Id: If503fa651a63b0b215742553b250ecf5e0a30971
This commit is contained in:
@@ -1273,6 +1273,11 @@ func (library *libraryDecorator) stubsVersion() string {
|
||||
return library.MutatedProperties.StubsVersion
|
||||
}
|
||||
|
||||
func (library *libraryDecorator) isLatestStubVersion() bool {
|
||||
versions := library.Properties.Stubs.Versions
|
||||
return versions[len(versions)-1] == library.stubsVersion()
|
||||
}
|
||||
|
||||
func (library *libraryDecorator) availableFor(what string) bool {
|
||||
var list []string
|
||||
if library.static() {
|
||||
@@ -1444,30 +1449,35 @@ func LatestStubsVersionFor(config android.Config, name string) string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func checkVersions(ctx android.BaseModuleContext, versions []string) {
|
||||
numVersions := make([]int, len(versions))
|
||||
for i, v := range versions {
|
||||
numVer, err := strconv.Atoi(v)
|
||||
if err != nil {
|
||||
ctx.PropertyErrorf("versions", "%q is not a number", v)
|
||||
}
|
||||
numVersions[i] = numVer
|
||||
}
|
||||
if !sort.IsSorted(sort.IntSlice(numVersions)) {
|
||||
ctx.PropertyErrorf("versions", "not sorted: %v", versions)
|
||||
}
|
||||
}
|
||||
|
||||
// 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) {
|
||||
if library, ok := mctx.Module().(LinkableInterface); ok && !library.InRecovery() {
|
||||
if library.CcLibrary() && library.BuildSharedVariant() && len(library.StubsVersions()) > 0 {
|
||||
versions := []string{}
|
||||
for _, v := range library.StubsVersions() {
|
||||
if _, err := strconv.Atoi(v); err != nil {
|
||||
mctx.PropertyErrorf("versions", "%q is not a number", v)
|
||||
}
|
||||
versions = append(versions, v)
|
||||
versions := library.StubsVersions()
|
||||
checkVersions(mctx, versions)
|
||||
if mctx.Failed() {
|
||||
return
|
||||
}
|
||||
sort.Slice(versions, func(i, j int) bool {
|
||||
left, _ := strconv.Atoi(versions[i])
|
||||
right, _ := strconv.Atoi(versions[j])
|
||||
return left < right
|
||||
})
|
||||
|
||||
// save the list of versions for later use
|
||||
copiedVersions := make([]string, len(versions))
|
||||
copy(copiedVersions, versions)
|
||||
stubsVersionsLock.Lock()
|
||||
defer stubsVersionsLock.Unlock()
|
||||
stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = copiedVersions
|
||||
stubsVersionsFor(mctx.Config())[mctx.ModuleName()] = versions
|
||||
|
||||
// "" is for the non-stubs variant
|
||||
versions = append([]string{""}, versions...)
|
||||
|
Reference in New Issue
Block a user