aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorColin Cross <ccross@android.com>2018-04-17 10:52:26 -0700
committerColin Cross <ccross@android.com>2018-04-18 15:26:55 -0700
commit9ccbc6036d9fda84c3cf7253a578c91fb60ace8d (patch)
tree17653abf9ca6c5a7031f8cfa3442004803bbabaa
parente20c1b19045c880e6dfe6bce7c00e7bce0c20318 (diff)
downloadbuild_soong-9ccbc6036d9fda84c3cf7253a578c91fb60ace8d.tar.gz
build_soong-9ccbc6036d9fda84c3cf7253a578c91fb60ace8d.tar.bz2
build_soong-9ccbc6036d9fda84c3cf7253a578c91fb60ace8d.zip
Reverse RRO dir paths when passing to Make
LOCAL_RESOURCE_DIRS puts the highest priority overlay first, but aapt2 expects the highest priority overlay last. Soong stores the list in aapt2 order (low to high priority), but that means when it exports to Make as LOCAL_SOONG_RRO_DIRS, which goes to build_rro_package.mk and then package_internal.mk, it gets reversed again and comes out backwards. Bug: 78032566 Test: m checkbuild Change-Id: If72bf929fbf1d126f9051a2f21ec1eb4e3030e6e Merged-In: If72bf929fbf1d126f9051a2f21ec1eb4e3030e6e (cherry picked from commit a140bb05f1eeafe046574454debd190c32e09888)
-rw-r--r--android/paths.go12
-rw-r--r--android/paths_test.go5
-rw-r--r--java/androidmk.go4
3 files changed, 16 insertions, 5 deletions
diff --git a/android/paths.go b/android/paths.go
index 87efe534..91dd9a6d 100644
--- a/android/paths.go
+++ b/android/paths.go
@@ -308,6 +308,18 @@ func LastUniquePaths(list Paths) Paths {
return list[totalSkip:]
}
+// ReversePaths returns a copy of a Paths in reverse order.
+func ReversePaths(list Paths) Paths {
+ if list == nil {
+ return nil
+ }
+ ret := make(Paths, len(list))
+ for i := range list {
+ ret[i] = list[len(list)-1-i]
+ }
+ return ret
+}
+
func indexPathList(s Path, list []Path) int {
for i, l := range list {
if l == s {
diff --git a/android/paths_test.go b/android/paths_test.go
index 00757985..cd9fbfd5 100644
--- a/android/paths_test.go
+++ b/android/paths_test.go
@@ -474,10 +474,7 @@ func TestDirectorySortedPaths(t *testing.T) {
}
paths := makePaths()
- reversePaths := make(Paths, len(paths))
- for i, v := range paths {
- reversePaths[len(paths)-i-1] = v
- }
+ reversePaths := ReversePaths(paths)
sortedPaths := PathsToDirectorySortedPaths(paths)
reverseSortedPaths := PathsToDirectorySortedPaths(reversePaths)
diff --git a/java/androidmk.go b/java/androidmk.go
index 3658636f..13966ed7 100644
--- a/java/androidmk.go
+++ b/java/androidmk.go
@@ -195,7 +195,9 @@ func (app *AndroidApp) AndroidMk() android.AndroidMkData {
}
if len(app.rroDirs) > 0 {
- fmt.Fprintln(w, "LOCAL_SOONG_RRO_DIRS :=", strings.Join(app.rroDirs.Strings(), " "))
+ // Reverse the order, Soong stores rroDirs in aapt2 order (low to high priority), but Make
+ // expects it in LOCAL_RESOURCE_DIRS order (high to low priority).
+ fmt.Fprintln(w, "LOCAL_SOONG_RRO_DIRS :=", strings.Join(android.ReversePaths(app.rroDirs).Strings(), " "))
}
if Bool(app.appProperties.Export_package_resources) {