Merge "export list of files used by the release config" into main
This commit is contained in:
@@ -77,7 +77,7 @@ func main() {
|
|||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
makefilePath := filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.mk", product, targetRelease))
|
makefilePath := filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.varmk", product, targetRelease))
|
||||||
useProto, ok := config.FlagArtifacts["RELEASE_BUILD_FLAGS_IN_PROTOBUF"]
|
useProto, ok := config.FlagArtifacts["RELEASE_BUILD_FLAGS_IN_PROTOBUF"]
|
||||||
if guard && (!ok || rc_lib.MarshalValue(useProto.Value) == "") {
|
if guard && (!ok || rc_lib.MarshalValue(useProto.Value) == "") {
|
||||||
// We were told to guard operation and either we have no build flag, or it is False.
|
// We were told to guard operation and either we have no build flag, or it is False.
|
||||||
@@ -94,7 +94,7 @@ func main() {
|
|||||||
// Write one makefile per release config, using the canonical release name.
|
// Write one makefile per release config, using the canonical release name.
|
||||||
for _, c := range configs.GetSortedReleaseConfigs() {
|
for _, c := range configs.GetSortedReleaseConfigs() {
|
||||||
if c.Name != targetRelease {
|
if c.Name != targetRelease {
|
||||||
makefilePath = filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.mk", product, c.Name))
|
makefilePath = filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.varmk", product, c.Name))
|
||||||
err = configs.WriteMakefile(makefilePath, c.Name)
|
err = configs.WriteMakefile(makefilePath, c.Name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@@ -69,6 +69,9 @@ type ReleaseConfig struct {
|
|||||||
// Unmarshalled flag artifacts
|
// Unmarshalled flag artifacts
|
||||||
FlagArtifacts FlagArtifacts
|
FlagArtifacts FlagArtifacts
|
||||||
|
|
||||||
|
// The files used by this release config
|
||||||
|
FilesUsedMap map[string]bool
|
||||||
|
|
||||||
// Generated release config
|
// Generated release config
|
||||||
ReleaseConfigArtifact *rc_proto.ReleaseConfigArtifact
|
ReleaseConfigArtifact *rc_proto.ReleaseConfigArtifact
|
||||||
|
|
||||||
@@ -80,10 +83,17 @@ type ReleaseConfig struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func ReleaseConfigFactory(name string, index int) (c *ReleaseConfig) {
|
func ReleaseConfigFactory(name string, index int) (c *ReleaseConfig) {
|
||||||
return &ReleaseConfig{Name: name, DeclarationIndex: index}
|
return &ReleaseConfig{
|
||||||
|
Name: name,
|
||||||
|
DeclarationIndex: index,
|
||||||
|
FilesUsedMap: make(map[string]bool),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (config *ReleaseConfig) InheritConfig(iConfig *ReleaseConfig) error {
|
func (config *ReleaseConfig) InheritConfig(iConfig *ReleaseConfig) error {
|
||||||
|
for f := range iConfig.FilesUsedMap {
|
||||||
|
config.FilesUsedMap[f] = true
|
||||||
|
}
|
||||||
for _, fa := range iConfig.FlagArtifacts {
|
for _, fa := range iConfig.FlagArtifacts {
|
||||||
name := *fa.FlagDeclaration.Name
|
name := *fa.FlagDeclaration.Name
|
||||||
myFa, ok := config.FlagArtifacts[name]
|
myFa, ok := config.FlagArtifacts[name]
|
||||||
@@ -106,6 +116,17 @@ func (config *ReleaseConfig) InheritConfig(iConfig *ReleaseConfig) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (config *ReleaseConfig) GetSortedFileList() []string {
|
||||||
|
ret := []string{}
|
||||||
|
for k := range config.FilesUsedMap {
|
||||||
|
ret = append(ret, k)
|
||||||
|
}
|
||||||
|
slices.SortFunc(ret, func(a, b string) int {
|
||||||
|
return cmp.Compare(a, b)
|
||||||
|
})
|
||||||
|
return ret
|
||||||
|
}
|
||||||
|
|
||||||
func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) error {
|
func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) error {
|
||||||
if config.ReleaseConfigArtifact != nil {
|
if config.ReleaseConfigArtifact != nil {
|
||||||
return nil
|
return nil
|
||||||
@@ -145,6 +166,15 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we inherited nothing, then we need to mark the global files as used for this
|
||||||
|
// config. If we inherited, then we already marked them as part of inheritance.
|
||||||
|
if len(config.InheritNames) == 0 {
|
||||||
|
for f := range configs.FilesUsedMap {
|
||||||
|
config.FilesUsedMap[f] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
contributionsToApply = append(contributionsToApply, config.Contributions...)
|
contributionsToApply = append(contributionsToApply, config.Contributions...)
|
||||||
|
|
||||||
workflowManual := rc_proto.Workflow(rc_proto.Workflow_MANUAL)
|
workflowManual := rc_proto.Workflow(rc_proto.Workflow_MANUAL)
|
||||||
|
@@ -67,6 +67,9 @@ type ReleaseConfigs struct {
|
|||||||
// Map of directory to *ReleaseConfigMap
|
// Map of directory to *ReleaseConfigMap
|
||||||
releaseConfigMapsMap map[string]*ReleaseConfigMap
|
releaseConfigMapsMap map[string]*ReleaseConfigMap
|
||||||
|
|
||||||
|
// The files used by all release configs
|
||||||
|
FilesUsedMap map[string]bool
|
||||||
|
|
||||||
// The list of config directories used.
|
// The list of config directories used.
|
||||||
configDirs []string
|
configDirs []string
|
||||||
|
|
||||||
@@ -102,6 +105,7 @@ func ReleaseConfigsFactory() (c *ReleaseConfigs) {
|
|||||||
releaseConfigMapsMap: make(map[string]*ReleaseConfigMap),
|
releaseConfigMapsMap: make(map[string]*ReleaseConfigMap),
|
||||||
configDirs: []string{},
|
configDirs: []string{},
|
||||||
configDirIndexes: make(ReleaseConfigDirMap),
|
configDirIndexes: make(ReleaseConfigDirMap),
|
||||||
|
FilesUsedMap: make(map[string]bool),
|
||||||
}
|
}
|
||||||
workflowManual := rc_proto.Workflow(rc_proto.Workflow_MANUAL)
|
workflowManual := rc_proto.Workflow(rc_proto.Workflow_MANUAL)
|
||||||
releaseAconfigValueSets := FlagArtifact{
|
releaseAconfigValueSets := FlagArtifact{
|
||||||
@@ -180,6 +184,7 @@ func (configs *ReleaseConfigs) LoadReleaseConfigMap(path string, ConfigDirIndex
|
|||||||
return fmt.Errorf("Release config map %s has invalid container %s", path, container)
|
return fmt.Errorf("Release config map %s has invalid container %s", path, container)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
configs.FilesUsedMap[path] = true
|
||||||
dir := filepath.Dir(path)
|
dir := filepath.Dir(path)
|
||||||
// Record any aliases, checking for duplicates.
|
// Record any aliases, checking for duplicates.
|
||||||
for _, alias := range m.proto.Aliases {
|
for _, alias := range m.proto.Aliases {
|
||||||
@@ -226,6 +231,7 @@ func (configs *ReleaseConfigs) LoadReleaseConfigMap(path string, ConfigDirIndex
|
|||||||
return fmt.Errorf("Duplicate definition of %s", *flagDeclaration.Name)
|
return fmt.Errorf("Duplicate definition of %s", *flagDeclaration.Name)
|
||||||
}
|
}
|
||||||
// Set the initial value in the flag artifact.
|
// Set the initial value in the flag artifact.
|
||||||
|
configs.FilesUsedMap[path] = true
|
||||||
configs.FlagArtifacts[name].UpdateValue(
|
configs.FlagArtifacts[name].UpdateValue(
|
||||||
FlagValue{path: path, proto: rc_proto.FlagValue{
|
FlagValue{path: path, proto: rc_proto.FlagValue{
|
||||||
Name: proto.String(name), Value: flagDeclaration.Value}})
|
Name: proto.String(name), Value: flagDeclaration.Value}})
|
||||||
@@ -249,6 +255,7 @@ func (configs *ReleaseConfigs) LoadReleaseConfigMap(path string, ConfigDirIndex
|
|||||||
configs.ReleaseConfigs[name] = ReleaseConfigFactory(name, ConfigDirIndex)
|
configs.ReleaseConfigs[name] = ReleaseConfigFactory(name, ConfigDirIndex)
|
||||||
}
|
}
|
||||||
config := configs.ReleaseConfigs[name]
|
config := configs.ReleaseConfigs[name]
|
||||||
|
config.FilesUsedMap[path] = true
|
||||||
config.InheritNames = append(config.InheritNames, releaseConfigContribution.proto.Inherits...)
|
config.InheritNames = append(config.InheritNames, releaseConfigContribution.proto.Inherits...)
|
||||||
|
|
||||||
// Only walk flag_values/{RELEASE} for defined releases.
|
// Only walk flag_values/{RELEASE} for defined releases.
|
||||||
@@ -260,6 +267,7 @@ func (configs *ReleaseConfigs) LoadReleaseConfigMap(path string, ConfigDirIndex
|
|||||||
if *flagValue.proto.Name == "RELEASE_ACONFIG_VALUE_SETS" {
|
if *flagValue.proto.Name == "RELEASE_ACONFIG_VALUE_SETS" {
|
||||||
return fmt.Errorf("%s: %s is a reserved build flag", path, *flagValue.proto.Name)
|
return fmt.Errorf("%s: %s is a reserved build flag", path, *flagValue.proto.Name)
|
||||||
}
|
}
|
||||||
|
config.FilesUsedMap[path] = true
|
||||||
releaseConfigContribution.FlagValues = append(releaseConfigContribution.FlagValues, flagValue)
|
releaseConfigContribution.FlagValues = append(releaseConfigContribution.FlagValues, flagValue)
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
@@ -371,6 +379,7 @@ func (configs *ReleaseConfigs) WriteMakefile(outFile, targetRelease string) erro
|
|||||||
}
|
}
|
||||||
// The variable _all_release_configs will get deleted during processing, so do not mark it read-only.
|
// 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(configs.GetAllReleaseNames(), " "))
|
data += fmt.Sprintf("_all_release_configs := %s\n", strings.Join(configs.GetAllReleaseNames(), " "))
|
||||||
|
data += fmt.Sprintf("_used_files := %s\n", strings.Join(config.GetSortedFileList(), " "))
|
||||||
data += fmt.Sprintf("_ALL_RELEASE_FLAGS :=$= %s\n", strings.Join(names, " "))
|
data += fmt.Sprintf("_ALL_RELEASE_FLAGS :=$= %s\n", strings.Join(names, " "))
|
||||||
for _, pName := range pNames {
|
for _, pName := range pNames {
|
||||||
data += fmt.Sprintf("_ALL_RELEASE_FLAGS.PARTITIONS.%s :=$= %s\n", pName, strings.Join(partitions[pName], " "))
|
data += fmt.Sprintf("_ALL_RELEASE_FLAGS.PARTITIONS.%s :=$= %s\n", pName, strings.Join(partitions[pName], " "))
|
||||||
|
Reference in New Issue
Block a user