diff --git a/cmd/release_config/release_config/main.go b/cmd/release_config/release_config/main.go index a41183f97..67b57cc5b 100644 --- a/cmd/release_config/release_config/main.go +++ b/cmd/release_config/release_config/main.go @@ -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) } diff --git a/cmd/release_config/release_config_lib/release_configs.go b/cmd/release_config/release_config_lib/release_configs.go index 0b6565822..461ee106c 100644 --- a/cmd/release_config/release_config_lib/release_configs.go +++ b/cmd/release_config/release_config_lib/release_configs.go @@ -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 {