Loading aconfig/aconfig_declarations.go +2 −2 Original line number Diff line number Diff line Loading @@ -74,8 +74,8 @@ func (module *DeclarationsModule) DepsMutator(ctx android.BottomUpMutatorContext // RELEASE_ACONFIG_VALUE_SETS, and add any aconfig_values that // match our package. valuesFromConfig := ctx.Config().ReleaseAconfigValueSets() if valuesFromConfig != "" { ctx.AddDependency(ctx.Module(), implicitValuesTag, valuesFromConfig) if len(valuesFromConfig) > 0 { ctx.AddDependency(ctx.Module(), implicitValuesTag, valuesFromConfig...) } } Loading android/allowlists/allowlists.go +2 −0 Original line number Diff line number Diff line Loading @@ -539,6 +539,8 @@ var ( } Bp2buildModuleAlwaysConvertList = []string{ "aconfig.test.cpp", "AconfigJavaHostTest", // aconfig "libonce_cell", "libanyhow", Loading android/config.go +13 −11 Original line number Diff line number Diff line Loading @@ -200,21 +200,23 @@ func (c Config) ReleaseVersion() string { } // The aconfig value set passed to aconfig, derived from RELEASE_VERSION func (c Config) ReleaseAconfigValueSets() string { func (c Config) ReleaseAconfigValueSets() []string { // This logic to handle both Soong module name and bazel target is temporary in order to // provide backward compatibility where aosp and internal both have the release // aconfig value set but can't be updated at the same time to use bazel target value := strings.Split(c.config.productVariables.ReleaseAconfigValueSets, ":") value_len := len(value) if value_len > 2 { var valueSets []string for _, valueSet := range c.config.productVariables.ReleaseAconfigValueSets { value := strings.Split(valueSet, ":") valueLen := len(value) if valueLen > 2 { // This shouldn't happen as this should be either a module name or a bazel target path. panic(fmt.Errorf("config file: invalid value for release aconfig value sets: %s", c.config.productVariables.ReleaseAconfigValueSets)) panic(fmt.Errorf("config file: invalid value for release aconfig value sets: %s", valueSet)) } if value_len > 0 { return value[value_len-1] if valueLen > 0 { valueSets = append(valueSets, value[valueLen-1]) } return "" } return valueSets } // The flag default permission value passed to aconfig Loading android/variable.go +2 −2 Original line number Diff line number Diff line Loading @@ -475,7 +475,7 @@ type ProductVariables struct { BuildVersionTags []string `json:",omitempty"` ReleaseVersion string `json:",omitempty"` ReleaseAconfigValueSets string `json:",omitempty"` ReleaseAconfigValueSets []string `json:",omitempty"` ReleaseAconfigFlagDefaultPermission string `json:",omitempty"` Loading bp2build/bp2build_product_config.go +40 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ type bazelLabel struct { target string } const releaseAconfigValueSetsName = "release_aconfig_value_sets" func (l *bazelLabel) Less(other *bazelLabel) bool { if l.repo < other.repo { return true Loading Loading @@ -343,10 +345,11 @@ func platformMappingSingleProduct( result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:product_brand=%s\n", productVariables.ProductBrand)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:product_manufacturer=%s\n", productVariables.ProductManufacturer)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_aconfig_flag_default_permission=%s\n", productVariables.ReleaseAconfigFlagDefaultPermission)) // Empty string can't be used as label_flag on the bazel side releaseAconfigValueSets := "//build/bazel/product_config:empty_aconfig_value_sets" if len(productVariables.ReleaseAconfigValueSets) > 0 { result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_aconfig_value_sets=%s\n", productVariables.ReleaseAconfigValueSets)) releaseAconfigValueSets = "@//" + label.pkg + ":" + releaseAconfigValueSetsName + "_" + label.target } result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_aconfig_value_sets=%s\n", releaseAconfigValueSets)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_version=%s\n", productVariables.ReleaseVersion)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:platform_sdk_version=%d\n", platform_sdk_version)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:safestack=%t\n", proptools.Bool(productVariables.Safestack))) Loading Loading @@ -481,6 +484,7 @@ func starlarkMapToProductVariables(in map[string]starlark.Value) (android.Produc func createTargets(productLabelsToVariables map[bazelLabel]*android.ProductVariables, res map[string]BazelTargets) { createGeneratedAndroidCertificateDirectories(productLabelsToVariables, res) createAvbKeyFilegroups(productLabelsToVariables, res) createReleaseAconfigValueSetsFilegroup(productLabelsToVariables, res) for label, variables := range productLabelsToVariables { createSystemPartition(label, &variables.PartitionVarsForBazelMigrationOnlyDoNotUse, res) } Loading Loading @@ -515,6 +519,40 @@ func createGeneratedAndroidCertificateDirectories(productLabelsToVariables map[b } } func createReleaseAconfigValueSetsFilegroup(productLabelsToVariables map[bazelLabel]*android.ProductVariables, targets map[string]BazelTargets) { for label, productVariables := range productLabelsToVariables { if len(productVariables.ReleaseAconfigValueSets) > 0 { key := label.target dir := label.pkg var value_sets strings.Builder for _, value_set := range productVariables.ReleaseAconfigValueSets { value_sets.WriteString(" \"" + value_set + "\",\n") } name := releaseAconfigValueSetsName + "_" + key content := "aconfig_value_sets(\n" + " name = \"" + name + "\",\n" + " value_sets = [\n" + value_sets.String() + " ],\n" + " visibility = [\"//visibility:public\"],\n" + ")" targets[dir] = append(targets[dir], BazelTarget{ name: name, packageName: dir, content: content, ruleClass: "aconfig_value_sets", loads: []BazelLoad{{ file: "//build/bazel/rules/aconfig:aconfig_value_sets.bzl", symbols: []BazelLoadSymbol{{ symbol: "aconfig_value_sets", }}, }}, }) } } } func createAvbKeyFilegroups(productLabelsToVariables map[bazelLabel]*android.ProductVariables, targets map[string]BazelTargets) { var allAvbKeys []string for _, productVariables := range productLabelsToVariables { Loading Loading
aconfig/aconfig_declarations.go +2 −2 Original line number Diff line number Diff line Loading @@ -74,8 +74,8 @@ func (module *DeclarationsModule) DepsMutator(ctx android.BottomUpMutatorContext // RELEASE_ACONFIG_VALUE_SETS, and add any aconfig_values that // match our package. valuesFromConfig := ctx.Config().ReleaseAconfigValueSets() if valuesFromConfig != "" { ctx.AddDependency(ctx.Module(), implicitValuesTag, valuesFromConfig) if len(valuesFromConfig) > 0 { ctx.AddDependency(ctx.Module(), implicitValuesTag, valuesFromConfig...) } } Loading
android/allowlists/allowlists.go +2 −0 Original line number Diff line number Diff line Loading @@ -539,6 +539,8 @@ var ( } Bp2buildModuleAlwaysConvertList = []string{ "aconfig.test.cpp", "AconfigJavaHostTest", // aconfig "libonce_cell", "libanyhow", Loading
android/config.go +13 −11 Original line number Diff line number Diff line Loading @@ -200,21 +200,23 @@ func (c Config) ReleaseVersion() string { } // The aconfig value set passed to aconfig, derived from RELEASE_VERSION func (c Config) ReleaseAconfigValueSets() string { func (c Config) ReleaseAconfigValueSets() []string { // This logic to handle both Soong module name and bazel target is temporary in order to // provide backward compatibility where aosp and internal both have the release // aconfig value set but can't be updated at the same time to use bazel target value := strings.Split(c.config.productVariables.ReleaseAconfigValueSets, ":") value_len := len(value) if value_len > 2 { var valueSets []string for _, valueSet := range c.config.productVariables.ReleaseAconfigValueSets { value := strings.Split(valueSet, ":") valueLen := len(value) if valueLen > 2 { // This shouldn't happen as this should be either a module name or a bazel target path. panic(fmt.Errorf("config file: invalid value for release aconfig value sets: %s", c.config.productVariables.ReleaseAconfigValueSets)) panic(fmt.Errorf("config file: invalid value for release aconfig value sets: %s", valueSet)) } if value_len > 0 { return value[value_len-1] if valueLen > 0 { valueSets = append(valueSets, value[valueLen-1]) } return "" } return valueSets } // The flag default permission value passed to aconfig Loading
android/variable.go +2 −2 Original line number Diff line number Diff line Loading @@ -475,7 +475,7 @@ type ProductVariables struct { BuildVersionTags []string `json:",omitempty"` ReleaseVersion string `json:",omitempty"` ReleaseAconfigValueSets string `json:",omitempty"` ReleaseAconfigValueSets []string `json:",omitempty"` ReleaseAconfigFlagDefaultPermission string `json:",omitempty"` Loading
bp2build/bp2build_product_config.go +40 −2 Original line number Diff line number Diff line Loading @@ -29,6 +29,8 @@ type bazelLabel struct { target string } const releaseAconfigValueSetsName = "release_aconfig_value_sets" func (l *bazelLabel) Less(other *bazelLabel) bool { if l.repo < other.repo { return true Loading Loading @@ -343,10 +345,11 @@ func platformMappingSingleProduct( result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:product_brand=%s\n", productVariables.ProductBrand)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:product_manufacturer=%s\n", productVariables.ProductManufacturer)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_aconfig_flag_default_permission=%s\n", productVariables.ReleaseAconfigFlagDefaultPermission)) // Empty string can't be used as label_flag on the bazel side releaseAconfigValueSets := "//build/bazel/product_config:empty_aconfig_value_sets" if len(productVariables.ReleaseAconfigValueSets) > 0 { result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_aconfig_value_sets=%s\n", productVariables.ReleaseAconfigValueSets)) releaseAconfigValueSets = "@//" + label.pkg + ":" + releaseAconfigValueSetsName + "_" + label.target } result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_aconfig_value_sets=%s\n", releaseAconfigValueSets)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:release_version=%s\n", productVariables.ReleaseVersion)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:platform_sdk_version=%d\n", platform_sdk_version)) result.WriteString(fmt.Sprintf(" --//build/bazel/product_config:safestack=%t\n", proptools.Bool(productVariables.Safestack))) Loading Loading @@ -481,6 +484,7 @@ func starlarkMapToProductVariables(in map[string]starlark.Value) (android.Produc func createTargets(productLabelsToVariables map[bazelLabel]*android.ProductVariables, res map[string]BazelTargets) { createGeneratedAndroidCertificateDirectories(productLabelsToVariables, res) createAvbKeyFilegroups(productLabelsToVariables, res) createReleaseAconfigValueSetsFilegroup(productLabelsToVariables, res) for label, variables := range productLabelsToVariables { createSystemPartition(label, &variables.PartitionVarsForBazelMigrationOnlyDoNotUse, res) } Loading Loading @@ -515,6 +519,40 @@ func createGeneratedAndroidCertificateDirectories(productLabelsToVariables map[b } } func createReleaseAconfigValueSetsFilegroup(productLabelsToVariables map[bazelLabel]*android.ProductVariables, targets map[string]BazelTargets) { for label, productVariables := range productLabelsToVariables { if len(productVariables.ReleaseAconfigValueSets) > 0 { key := label.target dir := label.pkg var value_sets strings.Builder for _, value_set := range productVariables.ReleaseAconfigValueSets { value_sets.WriteString(" \"" + value_set + "\",\n") } name := releaseAconfigValueSetsName + "_" + key content := "aconfig_value_sets(\n" + " name = \"" + name + "\",\n" + " value_sets = [\n" + value_sets.String() + " ],\n" + " visibility = [\"//visibility:public\"],\n" + ")" targets[dir] = append(targets[dir], BazelTarget{ name: name, packageName: dir, content: content, ruleClass: "aconfig_value_sets", loads: []BazelLoad{{ file: "//build/bazel/rules/aconfig:aconfig_value_sets.bzl", symbols: []BazelLoadSymbol{{ symbol: "aconfig_value_sets", }}, }}, }) } } } func createAvbKeyFilegroups(productLabelsToVariables map[bazelLabel]*android.ProductVariables, targets map[string]BazelTargets) { var allAvbKeys []string for _, productVariables := range productLabelsToVariables { Loading