From 194d492d55ee59742288b954e7a39e920c34d5fd Mon Sep 17 00:00:00 2001 From: LaMont Jones Date: Tue, 28 May 2024 13:23:01 -0700 Subject: [PATCH] all_flags.pb: Properly handle intermediate files Bug: 343203557 Test: manual, TH Change-Id: I9a4ef39b0c2a641ccd996187ce5f7629520dffc0 --- .../build_flag_declarations/main.go | 10 +++++----- .../release_config_lib/flag_artifact.go | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/cmd/release_config/build_flag_declarations/main.go b/cmd/release_config/build_flag_declarations/main.go index 7fdd084d9..cc286b6a9 100644 --- a/cmd/release_config/build_flag_declarations/main.go +++ b/cmd/release_config/build_flag_declarations/main.go @@ -6,6 +6,7 @@ import ( "os" rc_lib "android/soong/cmd/release_config/release_config_lib" + rc_proto "android/soong/cmd/release_config/release_config_proto" ) type Flags struct { @@ -62,18 +63,17 @@ func main() { } flagArtifacts := rc_lib.FlagArtifactsFactory("") + intermediates := []*rc_proto.FlagDeclarationArtifacts{} for _, intermediate := range flags.intermediates { - fas := rc_lib.FlagArtifactsFactory(intermediate) - for _, fa := range *fas { - (*flagArtifacts)[*fa.FlagDeclaration.Name] = fa - } + fda := rc_lib.FlagDeclarationArtifactsFactory(intermediate) + intermediates = append(intermediates, fda) } for _, decl := range flags.decls { fa := rc_lib.FlagArtifactFactory(decl) (*flagArtifacts)[*fa.FlagDeclaration.Name] = fa } - message := flagArtifacts.GenerateFlagDeclarationArtifacts() + message := flagArtifacts.GenerateFlagDeclarationArtifacts(intermediates) err = rc_lib.WriteFormattedMessage(flags.output, flags.format, message) if err != nil { errorExit(err) diff --git a/cmd/release_config/release_config_lib/flag_artifact.go b/cmd/release_config/release_config_lib/flag_artifact.go index 6919ff5af..6d365952c 100644 --- a/cmd/release_config/release_config_lib/flag_artifact.go +++ b/cmd/release_config/release_config_lib/flag_artifact.go @@ -102,11 +102,24 @@ func (fa *FlagArtifact) GenerateFlagDeclarationArtifact() *rc_proto.FlagDeclarat return ret } -func (fas *FlagArtifacts) GenerateFlagDeclarationArtifacts() *rc_proto.FlagDeclarationArtifacts { +func FlagDeclarationArtifactsFactory(path string) *rc_proto.FlagDeclarationArtifacts { + ret := &rc_proto.FlagDeclarationArtifacts{} + if path != "" { + LoadMessage(path, ret) + } else { + ret.FlagDeclarationArtifacts = []*rc_proto.FlagDeclarationArtifact{} + } + return ret +} + +func (fas *FlagArtifacts) GenerateFlagDeclarationArtifacts(intermediates []*rc_proto.FlagDeclarationArtifacts) *rc_proto.FlagDeclarationArtifacts { ret := &rc_proto.FlagDeclarationArtifacts{FlagDeclarationArtifacts: []*rc_proto.FlagDeclarationArtifact{}} for _, fa := range *fas { ret.FlagDeclarationArtifacts = append(ret.FlagDeclarationArtifacts, fa.GenerateFlagDeclarationArtifact()) } + for _, fda := range intermediates { + ret.FlagDeclarationArtifacts = append(ret.FlagDeclarationArtifacts, fda.FlagDeclarationArtifacts...) + } slices.SortFunc(ret.FlagDeclarationArtifacts, func(a, b *rc_proto.FlagDeclarationArtifact) int { return cmp.Compare(*a.Name, *b.Name) })