Loading cmd/release_config/build_flag/main.go +3 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,9 @@ func MarshalFlagValue(config *rc_lib.ReleaseConfig, name string) (ret string, er if !ok { return "", fmt.Errorf("%s not found in %s", name, config.Name) } if fa.Redacted { return "==REDACTED==", nil } return rc_lib.MarshalValue(fa.Value), nil } Loading cmd/release_config/release_config_lib/flag_artifact.go +18 −6 Original line number Diff line number Diff line Loading @@ -84,9 +84,11 @@ func FlagArtifactsFactory(artifactsPath string) *FlagArtifacts { func (fas *FlagArtifacts) SortedFlagNames() []string { var names []string for k, _ := range *fas { for k, v := range *fas { if !v.Redacted { names = append(names, k) } } slices.Sort(names) return names } Loading Loading @@ -183,15 +185,20 @@ func (src FlagArtifacts) Clone() (dst FlagArtifacts) { // error: any error encountered func (fa *FlagArtifact) UpdateValue(flagValue FlagValue) error { name := *flagValue.proto.Name fa.Traces = append(fa.Traces, &rc_proto.Tracepoint{Source: proto.String(flagValue.path), Value: flagValue.proto.Value}) if flagValue.proto.GetRedacted() { fa.Redacted = true redacted := flagValue.proto.GetRedacted() if redacted { fa.Redact() flagValue.proto.Value = fa.Value fmt.Printf("Redacting flag %s in %s\n", name, flagValue.path) return nil } else { // If we are assigning a value, then the flag is no longer redacted. fa.Redacted = false } fa.Traces = append(fa.Traces, &rc_proto.Tracepoint{Source: proto.String(flagValue.path), Value: flagValue.proto.Value}) if fa.Value.GetObsolete() { return fmt.Errorf("Attempting to set obsolete flag %s. Trace=%v", name, fa.Traces) } var newValue *rc_proto.Value switch val := flagValue.proto.Value.Val.(type) { case *rc_proto.Value_StringValue: Loading @@ -213,6 +220,11 @@ func (fa *FlagArtifact) UpdateValue(flagValue FlagValue) error { return nil } func (fa *FlagArtifact) Redact() { fa.Redacted = true fa.Value = &rc_proto.Value{Val: &rc_proto.Value_StringValue{StringValue: "*REDACTED*"}} } // Marshal the FlagArtifact into a flag_artifact message. func (fa *FlagArtifact) Marshal() (*rc_proto.FlagArtifact, error) { if fa.Redacted { Loading cmd/release_config/release_config_lib/release_config.go +16 −11 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import ( "path/filepath" "regexp" "slices" "sort" "strings" rc_proto "android/soong/cmd/release_config/release_config_proto" Loading Loading @@ -107,6 +106,9 @@ func (config *ReleaseConfig) InheritConfig(iConfig *ReleaseConfig) error { if !ok { return fmt.Errorf("Could not inherit flag %s from %s", name, iConfig.Name) } if fa.Redacted { myFa.Redact() } if name == "RELEASE_ACONFIG_VALUE_SETS" { // If there is a value assigned, add the trace. if len(fa.Value.GetStringValue()) > 0 { Loading Loading @@ -166,6 +168,13 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro } myInherits = append(myInherits, inherit) myInheritsSet[inherit] = true // TODO: there are some configs that rely on vgsbr being // present on branches where it isn't. Once the broken configs // are fixed, we can be more strict. In the meantime, they // will wind up inheriting `trunk_stable` instead of the // non-existent (alias) that they reference today. Once fixed, // this becomes: // iConfig, err := configs.GetReleaseConfigStrict(inherit) iConfig, err := configs.GetReleaseConfig(inherit) if err != nil { return err Loading Loading @@ -261,9 +270,6 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro if err := fa.UpdateValue(*value); err != nil { return err } if fa.Redacted { delete(config.FlagArtifacts, name) } } } // Now remove any duplicates from the actual value of RELEASE_ACONFIG_VALUE_SETS Loading Loading @@ -313,6 +319,10 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro if err != nil { return err } // Redacted flags return nil when rendered. if artifact == nil { continue } for _, container := range v.FlagDeclaration.Containers { if _, ok := config.PartitionBuildFlags[container]; !ok { config.PartitionBuildFlags[container] = &rc_proto.FlagArtifacts{} Loading @@ -325,12 +335,7 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro OtherNames: config.OtherNames, Flags: func() []*rc_proto.FlagArtifact { ret := []*rc_proto.FlagArtifact{} flagNames := []string{} for k := range config.FlagArtifacts { flagNames = append(flagNames, k) } sort.Strings(flagNames) for _, flagName := range flagNames { for _, flagName := range config.FlagArtifacts.SortedFlagNames() { flag := config.FlagArtifacts[flagName] ret = append(ret, &rc_proto.FlagArtifact{ FlagDeclaration: flag.FlagDeclaration, Loading Loading @@ -365,7 +370,7 @@ func (config *ReleaseConfig) WriteMakefile(outFile, targetRelease string, config } } for _, rcName := range extraAconfigReleaseConfigs { rc, err := configs.GetReleaseConfig(rcName) rc, err := configs.GetReleaseConfigStrict(rcName) if err != nil { return err } Loading cmd/release_config/release_config_lib/release_configs.go +10 −2 Original line number Diff line number Diff line Loading @@ -410,6 +410,14 @@ func (configs *ReleaseConfigs) LoadReleaseConfigMap(path string, ConfigDirIndex } func (configs *ReleaseConfigs) GetReleaseConfig(name string) (*ReleaseConfig, error) { return configs.getReleaseConfig(name, configs.allowMissing) } func (configs *ReleaseConfigs) GetReleaseConfigStrict(name string) (*ReleaseConfig, error) { return configs.getReleaseConfig(name, false) } func (configs *ReleaseConfigs) getReleaseConfig(name string, allow_missing bool) (*ReleaseConfig, error) { trace := []string{name} for target, ok := configs.Aliases[name]; ok; target, ok = configs.Aliases[name] { name = *target Loading @@ -418,7 +426,7 @@ func (configs *ReleaseConfigs) GetReleaseConfig(name string) (*ReleaseConfig, er if config, ok := configs.ReleaseConfigs[name]; ok { return config, nil } if configs.allowMissing { if allow_missing { if config, ok := configs.ReleaseConfigs["trunk_staging"]; ok { return config, nil } Loading Loading @@ -467,7 +475,7 @@ func (configs *ReleaseConfigs) GenerateReleaseConfigs(targetRelease string) erro dirName := filepath.Dir(contrib.path) for k, names := range contrib.FlagValueDirs { for _, rcName := range names { if config, err := configs.GetReleaseConfig(rcName); err == nil { if config, err := configs.getReleaseConfig(rcName, false); err == nil { rcPath := filepath.Join(dirName, "release_configs", fmt.Sprintf("%s.textproto", config.Name)) if _, err := os.Stat(rcPath); err != nil { errors = append(errors, fmt.Sprintf("%s exists but %s does not contribute to %s", Loading Loading
cmd/release_config/build_flag/main.go +3 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,9 @@ func MarshalFlagValue(config *rc_lib.ReleaseConfig, name string) (ret string, er if !ok { return "", fmt.Errorf("%s not found in %s", name, config.Name) } if fa.Redacted { return "==REDACTED==", nil } return rc_lib.MarshalValue(fa.Value), nil } Loading
cmd/release_config/release_config_lib/flag_artifact.go +18 −6 Original line number Diff line number Diff line Loading @@ -84,9 +84,11 @@ func FlagArtifactsFactory(artifactsPath string) *FlagArtifacts { func (fas *FlagArtifacts) SortedFlagNames() []string { var names []string for k, _ := range *fas { for k, v := range *fas { if !v.Redacted { names = append(names, k) } } slices.Sort(names) return names } Loading Loading @@ -183,15 +185,20 @@ func (src FlagArtifacts) Clone() (dst FlagArtifacts) { // error: any error encountered func (fa *FlagArtifact) UpdateValue(flagValue FlagValue) error { name := *flagValue.proto.Name fa.Traces = append(fa.Traces, &rc_proto.Tracepoint{Source: proto.String(flagValue.path), Value: flagValue.proto.Value}) if flagValue.proto.GetRedacted() { fa.Redacted = true redacted := flagValue.proto.GetRedacted() if redacted { fa.Redact() flagValue.proto.Value = fa.Value fmt.Printf("Redacting flag %s in %s\n", name, flagValue.path) return nil } else { // If we are assigning a value, then the flag is no longer redacted. fa.Redacted = false } fa.Traces = append(fa.Traces, &rc_proto.Tracepoint{Source: proto.String(flagValue.path), Value: flagValue.proto.Value}) if fa.Value.GetObsolete() { return fmt.Errorf("Attempting to set obsolete flag %s. Trace=%v", name, fa.Traces) } var newValue *rc_proto.Value switch val := flagValue.proto.Value.Val.(type) { case *rc_proto.Value_StringValue: Loading @@ -213,6 +220,11 @@ func (fa *FlagArtifact) UpdateValue(flagValue FlagValue) error { return nil } func (fa *FlagArtifact) Redact() { fa.Redacted = true fa.Value = &rc_proto.Value{Val: &rc_proto.Value_StringValue{StringValue: "*REDACTED*"}} } // Marshal the FlagArtifact into a flag_artifact message. func (fa *FlagArtifact) Marshal() (*rc_proto.FlagArtifact, error) { if fa.Redacted { Loading
cmd/release_config/release_config_lib/release_config.go +16 −11 Original line number Diff line number Diff line Loading @@ -21,7 +21,6 @@ import ( "path/filepath" "regexp" "slices" "sort" "strings" rc_proto "android/soong/cmd/release_config/release_config_proto" Loading Loading @@ -107,6 +106,9 @@ func (config *ReleaseConfig) InheritConfig(iConfig *ReleaseConfig) error { if !ok { return fmt.Errorf("Could not inherit flag %s from %s", name, iConfig.Name) } if fa.Redacted { myFa.Redact() } if name == "RELEASE_ACONFIG_VALUE_SETS" { // If there is a value assigned, add the trace. if len(fa.Value.GetStringValue()) > 0 { Loading Loading @@ -166,6 +168,13 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro } myInherits = append(myInherits, inherit) myInheritsSet[inherit] = true // TODO: there are some configs that rely on vgsbr being // present on branches where it isn't. Once the broken configs // are fixed, we can be more strict. In the meantime, they // will wind up inheriting `trunk_stable` instead of the // non-existent (alias) that they reference today. Once fixed, // this becomes: // iConfig, err := configs.GetReleaseConfigStrict(inherit) iConfig, err := configs.GetReleaseConfig(inherit) if err != nil { return err Loading Loading @@ -261,9 +270,6 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro if err := fa.UpdateValue(*value); err != nil { return err } if fa.Redacted { delete(config.FlagArtifacts, name) } } } // Now remove any duplicates from the actual value of RELEASE_ACONFIG_VALUE_SETS Loading Loading @@ -313,6 +319,10 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro if err != nil { return err } // Redacted flags return nil when rendered. if artifact == nil { continue } for _, container := range v.FlagDeclaration.Containers { if _, ok := config.PartitionBuildFlags[container]; !ok { config.PartitionBuildFlags[container] = &rc_proto.FlagArtifacts{} Loading @@ -325,12 +335,7 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro OtherNames: config.OtherNames, Flags: func() []*rc_proto.FlagArtifact { ret := []*rc_proto.FlagArtifact{} flagNames := []string{} for k := range config.FlagArtifacts { flagNames = append(flagNames, k) } sort.Strings(flagNames) for _, flagName := range flagNames { for _, flagName := range config.FlagArtifacts.SortedFlagNames() { flag := config.FlagArtifacts[flagName] ret = append(ret, &rc_proto.FlagArtifact{ FlagDeclaration: flag.FlagDeclaration, Loading Loading @@ -365,7 +370,7 @@ func (config *ReleaseConfig) WriteMakefile(outFile, targetRelease string, config } } for _, rcName := range extraAconfigReleaseConfigs { rc, err := configs.GetReleaseConfig(rcName) rc, err := configs.GetReleaseConfigStrict(rcName) if err != nil { return err } Loading
cmd/release_config/release_config_lib/release_configs.go +10 −2 Original line number Diff line number Diff line Loading @@ -410,6 +410,14 @@ func (configs *ReleaseConfigs) LoadReleaseConfigMap(path string, ConfigDirIndex } func (configs *ReleaseConfigs) GetReleaseConfig(name string) (*ReleaseConfig, error) { return configs.getReleaseConfig(name, configs.allowMissing) } func (configs *ReleaseConfigs) GetReleaseConfigStrict(name string) (*ReleaseConfig, error) { return configs.getReleaseConfig(name, false) } func (configs *ReleaseConfigs) getReleaseConfig(name string, allow_missing bool) (*ReleaseConfig, error) { trace := []string{name} for target, ok := configs.Aliases[name]; ok; target, ok = configs.Aliases[name] { name = *target Loading @@ -418,7 +426,7 @@ func (configs *ReleaseConfigs) GetReleaseConfig(name string) (*ReleaseConfig, er if config, ok := configs.ReleaseConfigs[name]; ok { return config, nil } if configs.allowMissing { if allow_missing { if config, ok := configs.ReleaseConfigs["trunk_staging"]; ok { return config, nil } Loading Loading @@ -467,7 +475,7 @@ func (configs *ReleaseConfigs) GenerateReleaseConfigs(targetRelease string) erro dirName := filepath.Dir(contrib.path) for k, names := range contrib.FlagValueDirs { for _, rcName := range names { if config, err := configs.GetReleaseConfig(rcName); err == nil { if config, err := configs.getReleaseConfig(rcName, false); err == nil { rcPath := filepath.Join(dirName, "release_configs", fmt.Sprintf("%s.textproto", config.Name)) if _, err := os.Stat(rcPath); err != nil { errors = append(errors, fmt.Sprintf("%s exists but %s does not contribute to %s", Loading