Loading cmd/release_config/release_config/main.go +2 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ func main() { return } // Write the makefile where release_config.mk is going to look for it. err = configs.WriteMakefile(makefilePath, targetRelease) err = config.WriteMakefile(makefilePath, targetRelease, configs) if err != nil { panic(err) } Loading @@ -97,7 +97,7 @@ func main() { for _, c := range configs.GetSortedReleaseConfigs() { if c.Name != targetRelease { makefilePath = filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.varmk", product, c.Name)) err = configs.WriteMakefile(makefilePath, c.Name) err = config.WriteMakefile(makefilePath, c.Name, configs) if err != nil { panic(err) } Loading cmd/release_config/release_config_lib/flag_artifact.go +9 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,15 @@ func FlagArtifactsFactory(artifactsPath string) *FlagArtifacts { return &ret } func (fas *FlagArtifacts) SortedFlagNames() []string { var names []string for k, _ := range *fas { names = append(names, k) } slices.Sort(names) return names } func (fa *FlagArtifact) GenerateFlagDeclarationArtifact() *rc_proto.FlagDeclarationArtifact { ret := &rc_proto.FlagDeclarationArtifact{ Name: fa.FlagDeclaration.Name, Loading cmd/release_config/release_config_lib/release_config.go +75 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package release_config_lib import ( "cmp" "fmt" "os" "path/filepath" "regexp" "slices" Loading Loading @@ -169,8 +170,12 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro if err != nil { return err } iConfig.GenerateReleaseConfig(configs) if err := config.InheritConfig(iConfig); err != nil { err = iConfig.GenerateReleaseConfig(configs) if err != nil { return err } err = config.InheritConfig(iConfig) if err != nil { return err } } Loading Loading @@ -310,6 +315,74 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro return nil } // Write the makefile for this targetRelease. func (config *ReleaseConfig) WriteMakefile(outFile, targetRelease string, configs *ReleaseConfigs) error { makeVars := make(map[string]string) myFlagArtifacts := config.FlagArtifacts.Clone() // Sort the flags by name first. names := myFlagArtifacts.SortedFlagNames() partitions := make(map[string][]string) vNames := []string{} addVar := func(name, suffix, value string) { fullName := fmt.Sprintf("_ALL_RELEASE_FLAGS.%s.%s", name, suffix) vNames = append(vNames, fullName) makeVars[fullName] = value } for _, name := range names { flag := myFlagArtifacts[name] decl := flag.FlagDeclaration for _, container := range decl.Containers { partitions[container] = append(partitions[container], name) } value := MarshalValue(flag.Value) makeVars[name] = value addVar(name, "TYPE", ValueType(flag.Value)) addVar(name, "PARTITIONS", strings.Join(decl.Containers, " ")) addVar(name, "DEFAULT", MarshalValue(decl.Value)) addVar(name, "VALUE", value) addVar(name, "DECLARED_IN", *flag.Traces[0].Source) addVar(name, "SET_IN", *flag.Traces[len(flag.Traces)-1].Source) addVar(name, "NAMESPACE", *decl.Namespace) } pNames := []string{} for k := range partitions { pNames = append(pNames, k) } slices.Sort(pNames) // Now sort the make variables, and output them. slices.Sort(vNames) // Write the flags as: // _ALL_RELELASE_FLAGS // _ALL_RELEASE_FLAGS.PARTITIONS.* // all _ALL_RELEASE_FLAGS.*, sorted by name // Final flag values, sorted by name. data := fmt.Sprintf("# TARGET_RELEASE=%s\n", config.Name) if targetRelease != config.Name { data += fmt.Sprintf("# User specified TARGET_RELEASE=%s\n", targetRelease) } // As it stands this list is not per-product, but conceptually it is, and will be. data += fmt.Sprintf("ALL_RELEASE_CONFIGS_FOR_PRODUCT :=$= %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, " ")) for _, pName := range pNames { data += fmt.Sprintf("_ALL_RELEASE_FLAGS.PARTITIONS.%s :=$= %s\n", pName, strings.Join(partitions[pName], " ")) } for _, vName := range vNames { data += fmt.Sprintf("%s :=$= %s\n", vName, makeVars[vName]) } data += "\n\n# Values for all build flags\n" for _, name := range names { data += fmt.Sprintf("%s :=$= %s\n", name, makeVars[name]) } return os.WriteFile(outFile, []byte(data), 0644) } func (config *ReleaseConfig) WritePartitionBuildFlags(outDir string) error { var err error for partition, flags := range config.PartitionBuildFlags { Loading cmd/release_config/release_config_lib/release_configs.go +1 −85 Original line number Diff line number Diff line Loading @@ -395,94 +395,10 @@ func (configs *ReleaseConfigs) GetAllReleaseNames() []string { allReleaseNames = append(allReleaseNames, v.Name) allReleaseNames = append(allReleaseNames, v.OtherNames...) } slices.SortFunc(allReleaseNames, func(a, b string) int { return cmp.Compare(a, b) }) slices.Sort(allReleaseNames) 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 } myFlagArtifacts := config.FlagArtifacts.Clone() // Sort the flags by name first. names := []string{} for k, _ := range myFlagArtifacts { names = append(names, k) } slices.SortFunc(names, func(a, b string) int { return cmp.Compare(a, b) }) partitions := make(map[string][]string) vNames := []string{} addVar := func(name, suffix, value string) { fullName := fmt.Sprintf("_ALL_RELEASE_FLAGS.%s.%s", name, suffix) vNames = append(vNames, fullName) makeVars[fullName] = value } for _, name := range names { flag := myFlagArtifacts[name] decl := flag.FlagDeclaration for _, container := range decl.Containers { partitions[container] = append(partitions[container], name) } value := MarshalValue(flag.Value) makeVars[name] = value addVar(name, "TYPE", ValueType(flag.Value)) addVar(name, "PARTITIONS", strings.Join(decl.Containers, " ")) addVar(name, "DEFAULT", MarshalValue(decl.Value)) addVar(name, "VALUE", value) addVar(name, "DECLARED_IN", *flag.Traces[0].Source) addVar(name, "SET_IN", *flag.Traces[len(flag.Traces)-1].Source) addVar(name, "NAMESPACE", *decl.Namespace) } pNames := []string{} for k := range partitions { pNames = append(pNames, k) } slices.SortFunc(pNames, func(a, b string) int { return cmp.Compare(a, b) }) // Now sort the make variables, and output them. slices.SortFunc(vNames, func(a, b string) int { return cmp.Compare(a, b) }) // Write the flags as: // _ALL_RELELASE_FLAGS // _ALL_RELEASE_FLAGS.PARTITIONS.* // all _ALL_RELEASE_FLAGS.*, sorted by name // Final flag values, sorted by name. data := fmt.Sprintf("# TARGET_RELEASE=%s\n", config.Name) if targetRelease != config.Name { data += fmt.Sprintf("# User specified TARGET_RELEASE=%s\n", targetRelease) } // As it stands this list is not per-product, but conceptually it is, and will be. data += fmt.Sprintf("ALL_RELEASE_CONFIGS_FOR_PRODUCT :=$= %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, " ")) for _, pName := range pNames { data += fmt.Sprintf("_ALL_RELEASE_FLAGS.PARTITIONS.%s :=$= %s\n", pName, strings.Join(partitions[pName], " ")) } for _, vName := range vNames { data += fmt.Sprintf("%s :=$= %s\n", vName, makeVars[vName]) } data += "\n\n# Values for all build flags\n" for _, name := range names { data += fmt.Sprintf("%s :=$= %s\n", name, makeVars[name]) } return os.WriteFile(outFile, []byte(data), 0644) } func (configs *ReleaseConfigs) GenerateReleaseConfigs(targetRelease string) error { otherNames := make(map[string][]string) for aliasName, aliasTarget := range configs.Aliases { Loading java/base.go +1 −1 Original line number Diff line number Diff line Loading @@ -2544,7 +2544,7 @@ func collectDirectDepsProviders(ctx android.ModuleContext) (result *JarJarProvid case Implementation: return RenameUseInclude, "info" default: //fmt.Printf("LJ: %v -> %v StubsLinkType unknown\n", module, m) //fmt.Printf("collectDirectDepsProviders: %v -> %v StubsLinkType unknown\n", module, m) // Fall through to the heuristic logic. } switch reflect.TypeOf(m).String() { Loading Loading
cmd/release_config/release_config/main.go +2 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,7 @@ func main() { return } // Write the makefile where release_config.mk is going to look for it. err = configs.WriteMakefile(makefilePath, targetRelease) err = config.WriteMakefile(makefilePath, targetRelease, configs) if err != nil { panic(err) } Loading @@ -97,7 +97,7 @@ func main() { for _, c := range configs.GetSortedReleaseConfigs() { if c.Name != targetRelease { makefilePath = filepath.Join(outputDir, fmt.Sprintf("release_config-%s-%s.varmk", product, c.Name)) err = configs.WriteMakefile(makefilePath, c.Name) err = config.WriteMakefile(makefilePath, c.Name, configs) if err != nil { panic(err) } Loading
cmd/release_config/release_config_lib/flag_artifact.go +9 −0 Original line number Diff line number Diff line Loading @@ -82,6 +82,15 @@ func FlagArtifactsFactory(artifactsPath string) *FlagArtifacts { return &ret } func (fas *FlagArtifacts) SortedFlagNames() []string { var names []string for k, _ := range *fas { names = append(names, k) } slices.Sort(names) return names } func (fa *FlagArtifact) GenerateFlagDeclarationArtifact() *rc_proto.FlagDeclarationArtifact { ret := &rc_proto.FlagDeclarationArtifact{ Name: fa.FlagDeclaration.Name, Loading
cmd/release_config/release_config_lib/release_config.go +75 −2 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package release_config_lib import ( "cmp" "fmt" "os" "path/filepath" "regexp" "slices" Loading Loading @@ -169,8 +170,12 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro if err != nil { return err } iConfig.GenerateReleaseConfig(configs) if err := config.InheritConfig(iConfig); err != nil { err = iConfig.GenerateReleaseConfig(configs) if err != nil { return err } err = config.InheritConfig(iConfig) if err != nil { return err } } Loading Loading @@ -310,6 +315,74 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro return nil } // Write the makefile for this targetRelease. func (config *ReleaseConfig) WriteMakefile(outFile, targetRelease string, configs *ReleaseConfigs) error { makeVars := make(map[string]string) myFlagArtifacts := config.FlagArtifacts.Clone() // Sort the flags by name first. names := myFlagArtifacts.SortedFlagNames() partitions := make(map[string][]string) vNames := []string{} addVar := func(name, suffix, value string) { fullName := fmt.Sprintf("_ALL_RELEASE_FLAGS.%s.%s", name, suffix) vNames = append(vNames, fullName) makeVars[fullName] = value } for _, name := range names { flag := myFlagArtifacts[name] decl := flag.FlagDeclaration for _, container := range decl.Containers { partitions[container] = append(partitions[container], name) } value := MarshalValue(flag.Value) makeVars[name] = value addVar(name, "TYPE", ValueType(flag.Value)) addVar(name, "PARTITIONS", strings.Join(decl.Containers, " ")) addVar(name, "DEFAULT", MarshalValue(decl.Value)) addVar(name, "VALUE", value) addVar(name, "DECLARED_IN", *flag.Traces[0].Source) addVar(name, "SET_IN", *flag.Traces[len(flag.Traces)-1].Source) addVar(name, "NAMESPACE", *decl.Namespace) } pNames := []string{} for k := range partitions { pNames = append(pNames, k) } slices.Sort(pNames) // Now sort the make variables, and output them. slices.Sort(vNames) // Write the flags as: // _ALL_RELELASE_FLAGS // _ALL_RELEASE_FLAGS.PARTITIONS.* // all _ALL_RELEASE_FLAGS.*, sorted by name // Final flag values, sorted by name. data := fmt.Sprintf("# TARGET_RELEASE=%s\n", config.Name) if targetRelease != config.Name { data += fmt.Sprintf("# User specified TARGET_RELEASE=%s\n", targetRelease) } // As it stands this list is not per-product, but conceptually it is, and will be. data += fmt.Sprintf("ALL_RELEASE_CONFIGS_FOR_PRODUCT :=$= %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, " ")) for _, pName := range pNames { data += fmt.Sprintf("_ALL_RELEASE_FLAGS.PARTITIONS.%s :=$= %s\n", pName, strings.Join(partitions[pName], " ")) } for _, vName := range vNames { data += fmt.Sprintf("%s :=$= %s\n", vName, makeVars[vName]) } data += "\n\n# Values for all build flags\n" for _, name := range names { data += fmt.Sprintf("%s :=$= %s\n", name, makeVars[name]) } return os.WriteFile(outFile, []byte(data), 0644) } func (config *ReleaseConfig) WritePartitionBuildFlags(outDir string) error { var err error for partition, flags := range config.PartitionBuildFlags { Loading
cmd/release_config/release_config_lib/release_configs.go +1 −85 Original line number Diff line number Diff line Loading @@ -395,94 +395,10 @@ func (configs *ReleaseConfigs) GetAllReleaseNames() []string { allReleaseNames = append(allReleaseNames, v.Name) allReleaseNames = append(allReleaseNames, v.OtherNames...) } slices.SortFunc(allReleaseNames, func(a, b string) int { return cmp.Compare(a, b) }) slices.Sort(allReleaseNames) 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 } myFlagArtifacts := config.FlagArtifacts.Clone() // Sort the flags by name first. names := []string{} for k, _ := range myFlagArtifacts { names = append(names, k) } slices.SortFunc(names, func(a, b string) int { return cmp.Compare(a, b) }) partitions := make(map[string][]string) vNames := []string{} addVar := func(name, suffix, value string) { fullName := fmt.Sprintf("_ALL_RELEASE_FLAGS.%s.%s", name, suffix) vNames = append(vNames, fullName) makeVars[fullName] = value } for _, name := range names { flag := myFlagArtifacts[name] decl := flag.FlagDeclaration for _, container := range decl.Containers { partitions[container] = append(partitions[container], name) } value := MarshalValue(flag.Value) makeVars[name] = value addVar(name, "TYPE", ValueType(flag.Value)) addVar(name, "PARTITIONS", strings.Join(decl.Containers, " ")) addVar(name, "DEFAULT", MarshalValue(decl.Value)) addVar(name, "VALUE", value) addVar(name, "DECLARED_IN", *flag.Traces[0].Source) addVar(name, "SET_IN", *flag.Traces[len(flag.Traces)-1].Source) addVar(name, "NAMESPACE", *decl.Namespace) } pNames := []string{} for k := range partitions { pNames = append(pNames, k) } slices.SortFunc(pNames, func(a, b string) int { return cmp.Compare(a, b) }) // Now sort the make variables, and output them. slices.SortFunc(vNames, func(a, b string) int { return cmp.Compare(a, b) }) // Write the flags as: // _ALL_RELELASE_FLAGS // _ALL_RELEASE_FLAGS.PARTITIONS.* // all _ALL_RELEASE_FLAGS.*, sorted by name // Final flag values, sorted by name. data := fmt.Sprintf("# TARGET_RELEASE=%s\n", config.Name) if targetRelease != config.Name { data += fmt.Sprintf("# User specified TARGET_RELEASE=%s\n", targetRelease) } // As it stands this list is not per-product, but conceptually it is, and will be. data += fmt.Sprintf("ALL_RELEASE_CONFIGS_FOR_PRODUCT :=$= %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, " ")) for _, pName := range pNames { data += fmt.Sprintf("_ALL_RELEASE_FLAGS.PARTITIONS.%s :=$= %s\n", pName, strings.Join(partitions[pName], " ")) } for _, vName := range vNames { data += fmt.Sprintf("%s :=$= %s\n", vName, makeVars[vName]) } data += "\n\n# Values for all build flags\n" for _, name := range names { data += fmt.Sprintf("%s :=$= %s\n", name, makeVars[name]) } return os.WriteFile(outFile, []byte(data), 0644) } func (configs *ReleaseConfigs) GenerateReleaseConfigs(targetRelease string) error { otherNames := make(map[string][]string) for aliasName, aliasTarget := range configs.Aliases { Loading
java/base.go +1 −1 Original line number Diff line number Diff line Loading @@ -2544,7 +2544,7 @@ func collectDirectDepsProviders(ctx android.ModuleContext) (result *JarJarProvid case Implementation: return RenameUseInclude, "info" default: //fmt.Printf("LJ: %v -> %v StubsLinkType unknown\n", module, m) //fmt.Printf("collectDirectDepsProviders: %v -> %v StubsLinkType unknown\n", module, m) // Fall through to the heuristic logic. } switch reflect.TypeOf(m).String() { Loading