sort release configs when creating artifacts

Bug: 328495189
Test: manual
Change-Id: I0b579c6fdbee5bb09826854dadb9f89955980ca8
This commit is contained in:
LaMont Jones
2024-05-15 11:44:26 -07:00
parent 0bcdc1f417
commit ce599ef878
2 changed files with 34 additions and 20 deletions

View File

@@ -92,10 +92,10 @@ func main() {
}
if allMake {
// Write one makefile per release config, using the canonical release name.
for k, _ := range configs.ReleaseConfigs {
if k != targetRelease {
makefilePath = filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.mk", product, k))
err = configs.WriteMakefile(makefilePath, k)
for _, c := range configs.GetSortedReleaseConfigs() {
if c.Name != targetRelease {
makefilePath = filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.mk", product, c.Name))
err = configs.WriteMakefile(makefilePath, c.Name)
if err != nil {
panic(err)
}

View File

@@ -120,6 +120,16 @@ func ReleaseConfigsFactory() (c *ReleaseConfigs) {
return &configs
}
func (configs *ReleaseConfigs) GetSortedReleaseConfigs() (ret []*ReleaseConfig) {
for _, config := range configs.ReleaseConfigs {
ret = append(ret, config)
}
slices.SortFunc(ret, func(a, b *ReleaseConfig) int {
return cmp.Compare(a.Name, b.Name)
})
return ret
}
func ReleaseConfigMapFactory(protoPath string) (m *ReleaseConfigMap) {
m = &ReleaseConfigMap{
path: protoPath,
@@ -283,9 +293,7 @@ func (configs *ReleaseConfigs) GetReleaseConfig(name string) (*ReleaseConfig, er
return nil, fmt.Errorf("Missing config %s. Trace=%v", name, trace)
}
// Write the makefile for this targetRelease.
func (configs *ReleaseConfigs) WriteMakefile(outFile, targetRelease string) error {
makeVars := make(map[string]string)
func (configs *ReleaseConfigs) GetAllReleaseNames() []string {
var allReleaseNames []string
for _, v := range configs.ReleaseConfigs {
allReleaseNames = append(allReleaseNames, v.Name)
@@ -294,6 +302,12 @@ func (configs *ReleaseConfigs) WriteMakefile(outFile, targetRelease string) erro
slices.SortFunc(allReleaseNames, func(a, b string) int {
return cmp.Compare(a, b)
})
return allReleaseNames
}
// Write the makefile for this targetRelease.
func (configs *ReleaseConfigs) WriteMakefile(outFile, targetRelease string) error {
makeVars := make(map[string]string)
config, err := configs.GetReleaseConfig(targetRelease)
if err != nil {
return err
@@ -356,7 +370,7 @@ func (configs *ReleaseConfigs) WriteMakefile(outFile, targetRelease string) erro
data += fmt.Sprintf("# User specified TARGET_RELEASE=%s\n", targetRelease)
}
// The variable _all_release_configs will get deleted during processing, so do not mark it read-only.
data += fmt.Sprintf("_all_release_configs := %s\n", strings.Join(allReleaseNames, " "))
data += fmt.Sprintf("_all_release_configs := %s\n", strings.Join(configs.GetAllReleaseNames(), " "))
data += fmt.Sprintf("_ALL_RELEASE_FLAGS :=$= %s\n", strings.Join(names, " "))
for _, pName := range pNames {
data += fmt.Sprintf("_ALL_RELEASE_FLAGS.PARTITIONS.%s :=$= %s\n", pName, strings.Join(partitions[pName], " "))
@@ -388,8 +402,9 @@ func (configs *ReleaseConfigs) GenerateReleaseConfigs(targetRelease string) erro
configs.ReleaseConfigs[name].OtherNames = aliases
}
for _, config := range configs.ReleaseConfigs {
err := config.GenerateReleaseConfig(configs)
sortedReleaseConfigs := configs.GetSortedReleaseConfigs()
for _, c := range sortedReleaseConfigs {
err := c.GenerateReleaseConfig(configs)
if err != nil {
return err
}
@@ -399,17 +414,16 @@ func (configs *ReleaseConfigs) GenerateReleaseConfigs(targetRelease string) erro
if err != nil {
return err
}
orc := []*rc_proto.ReleaseConfigArtifact{}
for _, c := range sortedReleaseConfigs {
if c.Name != releaseConfig.Name {
orc = append(orc, c.ReleaseConfigArtifact)
}
}
configs.Artifact = rc_proto.ReleaseConfigsArtifact{
ReleaseConfig: releaseConfig.ReleaseConfigArtifact,
OtherReleaseConfigs: func() []*rc_proto.ReleaseConfigArtifact {
orc := []*rc_proto.ReleaseConfigArtifact{}
for name, config := range configs.ReleaseConfigs {
if name != releaseConfig.Name {
orc = append(orc, config.ReleaseConfigArtifact)
}
}
return orc
}(),
ReleaseConfig: releaseConfig.ReleaseConfigArtifact,
OtherReleaseConfigs: orc,
ReleaseConfigMapsMap: func() map[string]*rc_proto.ReleaseConfigMap {
ret := make(map[string]*rc_proto.ReleaseConfigMap)
for k, v := range configs.releaseConfigMapsMap {