Make cmake_snapshot output reproducible

Sort the outputs from cmake_snapshot to make the build.ninja file
reproducible.

Test: cmake_snapshot_test.go
Flag: EXEMPT refactor
Change-Id: I621e0dc9da7ad4c94234e0811f64d347024e3295
This commit is contained in:
Colin Cross
2024-06-25 14:36:24 -07:00
parent 94a6824c99
commit 7de1db7f2c

View File

@@ -147,11 +147,7 @@ func parseTemplate(templateContents string) *template.Template {
return list.String()
},
"toStrings": func(files android.Paths) []string {
strings := make([]string, len(files))
for idx, file := range files {
strings[idx] = file.String()
}
return strings
return files.Strings()
},
"concat5": func(list1 []string, list2 []string, list3 []string, list4 []string, list5 []string) []string {
return append(append(append(append(list1, list2...), list3...), list4...), list5...)
@@ -399,7 +395,8 @@ func (m *CmakeSnapshot) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// Merging CMakeLists.txt contents for every module directory
var makefilesList android.Paths
for moduleDir, fragments := range moduleDirs {
for _, moduleDir := range android.SortedKeys(moduleDirs) {
fragments := moduleDirs[moduleDir]
moduleCmakePath := android.PathForModuleGen(ctx, moduleDir, "CMakeLists.txt")
makefilesList = append(makefilesList, moduleCmakePath)
sort.Strings(fragments)
@@ -439,8 +436,9 @@ func (m *CmakeSnapshot) GenerateAndroidBuildActions(ctx android.ModuleContext) {
// Packaging all sources into the zip file
if m.Properties.Include_sources {
var sourcesList android.Paths
for _, file := range sourceFiles {
sourcesList = append(sourcesList, file)
for _, file := range android.SortedKeys(sourceFiles) {
path := sourceFiles[file]
sourcesList = append(sourcesList, path)
}
sourcesRspFile := android.PathForModuleObj(ctx, ctx.ModuleName()+"_sources.rsp")