Merge "sort release configs when creating artifacts" into main
diff --git a/cmd/release_config/release_config/main.go b/cmd/release_config/release_config/main.go
index a41183f..67b57cc 100644
--- a/cmd/release_config/release_config/main.go
+++ b/cmd/release_config/release_config/main.go
@@ -92,10 +92,10 @@
}
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 0b65658..461ee10 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 @@
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 @@
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 @@
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 @@
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 @@
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 @@
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 {