Merge changes I88973671,If5a3b53a
* changes:
Fix nondeterminstic iteration of vndk modules map
Fix data race and ordering consistency in apex modules
diff --git a/android/apex.go b/android/apex.go
index bf11ba2..17df762 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -15,6 +15,7 @@
package android
import (
+ "sort"
"sync"
"github.com/google/blueprint"
@@ -86,7 +87,9 @@
ApexProperties ApexProperties
canHaveApexVariants bool
- apexVariations []string
+
+ apexVariationsLock sync.Mutex // protects apexVariations during parallel apexDepsMutator
+ apexVariations []string
}
func (m *ApexModuleBase) apexModuleBase() *ApexModuleBase {
@@ -94,6 +97,8 @@
}
func (m *ApexModuleBase) BuildForApex(apexName string) {
+ m.apexVariationsLock.Lock()
+ defer m.apexVariationsLock.Unlock()
if !InList(apexName, m.apexVariations) {
m.apexVariations = append(m.apexVariations, apexName)
}
@@ -122,6 +127,7 @@
func (m *ApexModuleBase) CreateApexVariations(mctx BottomUpMutatorContext) []blueprint.Module {
if len(m.apexVariations) > 0 {
+ sort.Strings(m.apexVariations)
variations := []string{""} // Original variation for platform
variations = append(variations, m.apexVariations...)
diff --git a/cc/vndk.go b/cc/vndk.go
index 5f9c686..f9f3764 100644
--- a/cc/vndk.go
+++ b/cc/vndk.go
@@ -530,8 +530,15 @@
var modulePathTxtBuilder strings.Builder
+ modulePaths := modulePaths(ctx.Config())
+ var libs []string
+ for lib := range modulePaths {
+ libs = append(libs, lib)
+ }
+ sort.Strings(libs)
+
first := true
- for lib, dir := range modulePaths(ctx.Config()) {
+ for _, lib := range libs {
if first {
first = false
} else {
@@ -539,7 +546,7 @@
}
modulePathTxtBuilder.WriteString(lib)
modulePathTxtBuilder.WriteString(".so ")
- modulePathTxtBuilder.WriteString(dir)
+ modulePathTxtBuilder.WriteString(modulePaths[lib])
}
ctx.Build(pctx, android.BuildParams{