Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a140bb05 authored by Colin Cross's avatar Colin Cross
Browse files

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
parent 423245dc
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -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 {
+1 −4
Original line number Diff line number Diff line
@@ -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)
+3 −1
Original line number Diff line number Diff line
@@ -206,7 +206,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) {