Merge "release_config: various cleanup" into main am: 000fe5ac5d
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/3129154 Change-Id: Iddd2935b353fdfb8a22fccdbe5aa56c6cc17496d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
commit
4c8f885b84
5 changed files with 88 additions and 90 deletions
|
@ -88,7 +88,7 @@ func main() {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// Write the makefile where release_config.mk is going to look for it.
|
// 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 {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -97,7 +97,7 @@ func main() {
|
||||||
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.varmk", product, c.Name))
|
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 {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -82,6 +82,15 @@ func FlagArtifactsFactory(artifactsPath string) *FlagArtifacts {
|
||||||
return &ret
|
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 {
|
func (fa *FlagArtifact) GenerateFlagDeclarationArtifact() *rc_proto.FlagDeclarationArtifact {
|
||||||
ret := &rc_proto.FlagDeclarationArtifact{
|
ret := &rc_proto.FlagDeclarationArtifact{
|
||||||
Name: fa.FlagDeclaration.Name,
|
Name: fa.FlagDeclaration.Name,
|
||||||
|
|
|
@ -17,6 +17,7 @@ package release_config_lib
|
||||||
import (
|
import (
|
||||||
"cmp"
|
"cmp"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"regexp"
|
"regexp"
|
||||||
"slices"
|
"slices"
|
||||||
|
@ -169,8 +170,12 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
iConfig.GenerateReleaseConfig(configs)
|
err = iConfig.GenerateReleaseConfig(configs)
|
||||||
if err := config.InheritConfig(iConfig); err != nil {
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
err = config.InheritConfig(iConfig)
|
||||||
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -310,6 +315,74 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro
|
||||||
return nil
|
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 {
|
func (config *ReleaseConfig) WritePartitionBuildFlags(outDir string) error {
|
||||||
var err error
|
var err error
|
||||||
for partition, flags := range config.PartitionBuildFlags {
|
for partition, flags := range config.PartitionBuildFlags {
|
||||||
|
|
|
@ -395,94 +395,10 @@ func (configs *ReleaseConfigs) GetAllReleaseNames() []string {
|
||||||
allReleaseNames = append(allReleaseNames, v.Name)
|
allReleaseNames = append(allReleaseNames, v.Name)
|
||||||
allReleaseNames = append(allReleaseNames, v.OtherNames...)
|
allReleaseNames = append(allReleaseNames, v.OtherNames...)
|
||||||
}
|
}
|
||||||
slices.SortFunc(allReleaseNames, func(a, b string) int {
|
slices.Sort(allReleaseNames)
|
||||||
return cmp.Compare(a, b)
|
|
||||||
})
|
|
||||||
return 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 {
|
func (configs *ReleaseConfigs) GenerateReleaseConfigs(targetRelease string) error {
|
||||||
otherNames := make(map[string][]string)
|
otherNames := make(map[string][]string)
|
||||||
for aliasName, aliasTarget := range configs.Aliases {
|
for aliasName, aliasTarget := range configs.Aliases {
|
||||||
|
|
|
@ -2549,7 +2549,7 @@ func collectDirectDepsProviders(ctx android.ModuleContext) (result *JarJarProvid
|
||||||
case Implementation:
|
case Implementation:
|
||||||
return RenameUseInclude, "info"
|
return RenameUseInclude, "info"
|
||||||
default:
|
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.
|
// Fall through to the heuristic logic.
|
||||||
}
|
}
|
||||||
switch reflect.TypeOf(m).String() {
|
switch reflect.TypeOf(m).String() {
|
||||||
|
|
Loading…
Reference in a new issue