diff --git a/device_config/Android.bp b/aconfig/Android.bp similarity index 52% rename from device_config/Android.bp rename to aconfig/Android.bp index 6c4445499..d19b543ed 100644 --- a/device_config/Android.bp +++ b/aconfig/Android.bp @@ -3,8 +3,8 @@ package { } bootstrap_go_package { - name: "soong-device_config", - pkgPath: "android/soong/device_config", + name: "soong-aconfig", + pkgPath: "android/soong/aconfig", deps: [ "blueprint", "blueprint-pathtools", @@ -16,17 +16,17 @@ bootstrap_go_package { "soong-java", ], srcs: [ - "device_config_definitions.go", - "device_config_values.go", - "device_config_value_set.go", + "aconfig_declarations.go", + "aconfig_values.go", + "aconfig_value_set.go", "init.go", - "java_device_config_definitions_library.go", + "java_aconfig_library.go", "testing.go", ], testSrcs: [ - "device_config_definitions_test.go", - "device_config_values_test.go", - "device_config_value_set_test.go", + "aconfig_declarations_test.go", + "aconfig_values_test.go", + "aconfig_value_set_test.go", ], pluginFor: ["soong_build"], } diff --git a/device_config/device_config_definitions.go b/aconfig/aconfig_declarations.go similarity index 73% rename from device_config/device_config_definitions.go rename to aconfig/aconfig_declarations.go index 97f5dca9f..007d5290f 100644 --- a/device_config/device_config_definitions.go +++ b/aconfig/aconfig_declarations.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "android/soong/android" @@ -21,11 +21,11 @@ import ( "strings" ) -type DefinitionsModule struct { +type DeclarationsModule struct { android.ModuleBase android.DefaultableModuleBase - // Properties for "device_config_definitions" + // Properties for "aconfig_declarations" properties struct { // aconfig files, relative to this Android.bp file Srcs []string `android:"path"` @@ -33,15 +33,15 @@ type DefinitionsModule struct { // Release config flag package Package string - // Values from TARGET_RELEASE / RELEASE_DEVICE_CONFIG_VALUE_SETS + // Values from TARGET_RELEASE / RELEASE_ACONFIG_VALUE_SETS Values []string `blueprint:"mutated"` } intermediatePath android.WritablePath } -func DefinitionsFactory() android.Module { - module := &DefinitionsModule{} +func DeclarationsFactory() android.Module { + module := &DeclarationsModule{} android.InitAndroidModule(module) android.InitDefaultableModule(module) @@ -58,7 +58,7 @@ type implicitValuesTagType struct { var implicitValuesTag = implicitValuesTagType{} -func (module *DefinitionsModule) DepsMutator(ctx android.BottomUpMutatorContext) { +func (module *DeclarationsModule) DepsMutator(ctx android.BottomUpMutatorContext) { // Validate Properties if len(module.properties.Srcs) == 0 { ctx.PropertyErrorf("srcs", "missing source files") @@ -68,14 +68,14 @@ func (module *DefinitionsModule) DepsMutator(ctx android.BottomUpMutatorContext) ctx.PropertyErrorf("package", "missing package property") } - // Add a dependency on the device_config_value_sets defined in - // RELEASE_DEVICE_CONFIG_VALUE_SETS, and add any device_config_values that + // Add a dependency on the aconfig_value_sets defined in + // RELEASE_ACONFIG_VALUE_SETS, and add any aconfig_values that // match our package. - valuesFromConfig := ctx.Config().ReleaseDeviceConfigValueSets() + valuesFromConfig := ctx.Config().ReleaseAconfigValueSets() ctx.AddDependency(ctx.Module(), implicitValuesTag, valuesFromConfig...) } -func (module *DefinitionsModule) OutputFiles(tag string) (android.Paths, error) { +func (module *DeclarationsModule) OutputFiles(tag string) (android.Paths, error) { switch tag { case "": // The default output of this module is the intermediates format, which is @@ -83,7 +83,7 @@ func (module *DefinitionsModule) OutputFiles(tag string) (android.Paths, error) // correctly. return []android.Path{module.intermediatePath}, nil default: - return nil, fmt.Errorf("unsupported device_config_definitions module reference tag %q", tag) + return nil, fmt.Errorf("unsupported aconfig_declarations module reference tag %q", tag) } } @@ -96,16 +96,16 @@ func joinAndPrefix(prefix string, values []string) string { return sb.String() } -// Provider published by device_config_value_set -type definitionsProviderData struct { +// Provider published by aconfig_value_set +type declarationsProviderData struct { Package string IntermediatePath android.WritablePath } -var definitionsProviderKey = blueprint.NewProvider(definitionsProviderData{}) +var declarationsProviderKey = blueprint.NewProvider(declarationsProviderData{}) -func (module *DefinitionsModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { - // Get the values that came from the global RELEASE_DEVICE_CONFIG_VALUE_SETS flag +func (module *DeclarationsModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { + // Get the values that came from the global RELEASE_ACONFIG_VALUE_SETS flag ctx.VisitDirectDeps(func(dep android.Module) { if !ctx.OtherModuleHasProvider(dep, valueSetProviderKey) { // Other modules get injected as dependencies too, for example the license modules @@ -127,7 +127,7 @@ func (module *DefinitionsModule) GenerateAndroidBuildActions(ctx android.ModuleC Rule: aconfigRule, Inputs: inputFiles, Output: intermediatePath, - Description: "device_config_definitions", + Description: "aconfig_declarations", Args: map[string]string{ "release_version": ctx.Config().ReleaseVersion(), "package": module.properties.Package, @@ -135,7 +135,7 @@ func (module *DefinitionsModule) GenerateAndroidBuildActions(ctx android.ModuleC }, }) - ctx.SetProvider(definitionsProviderKey, definitionsProviderData{ + ctx.SetProvider(declarationsProviderKey, declarationsProviderData{ Package: module.properties.Package, IntermediatePath: intermediatePath, }) diff --git a/device_config/device_config_definitions_test.go b/aconfig/aconfig_declarations_test.go similarity index 85% rename from device_config/device_config_definitions_test.go rename to aconfig/aconfig_declarations_test.go index 5838523f9..e14ca3851 100644 --- a/device_config/device_config_definitions_test.go +++ b/aconfig/aconfig_declarations_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "strings" @@ -21,9 +21,9 @@ import ( "android/soong/android" ) -func TestDeviceConfigDefinitions(t *testing.T) { +func TestAconfigDeclarations(t *testing.T) { bp := ` - device_config_definitions { + aconfig_declarations { name: "module_name", package: "com.example.package", srcs: ["foo.aconfig"], @@ -31,10 +31,10 @@ func TestDeviceConfigDefinitions(t *testing.T) { ` result := runTest(t, android.FixtureExpectsNoErrors, bp) - module := result.ModuleForTests("module_name", "").Module().(*DefinitionsModule) + module := result.ModuleForTests("module_name", "").Module().(*DeclarationsModule) // Check that the provider has the right contents - depData := result.ModuleProvider(module, definitionsProviderKey).(definitionsProviderData) + depData := result.ModuleProvider(module, declarationsProviderKey).(declarationsProviderData) android.AssertStringEquals(t, "package", depData.Package, "com.example.package") if !strings.HasSuffix(depData.IntermediatePath.String(), "/intermediate.pb") { t.Errorf("Missing intermediates path in provider: %s", depData.IntermediatePath.String()) diff --git a/device_config/device_config_value_set.go b/aconfig/aconfig_value_set.go similarity index 87% rename from device_config/device_config_value_set.go rename to aconfig/aconfig_value_set.go index b3543058c..252908fa3 100644 --- a/device_config/device_config_value_set.go +++ b/aconfig/aconfig_value_set.go @@ -12,20 +12,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "android/soong/android" "github.com/google/blueprint" ) -// Properties for "device_config_value_set" +// Properties for "aconfig_value_set" type ValueSetModule struct { android.ModuleBase android.DefaultableModuleBase properties struct { - // device_config_values modules + // aconfig_values modules Values []string } } @@ -49,10 +49,10 @@ type valueSetType struct { var valueSetTag = valueSetType{} -// Provider published by device_config_value_set +// Provider published by aconfig_value_set type valueSetProviderData struct { // The package of each of the - // (map of package --> device_config_module) + // (map of package --> aconfig_module) AvailablePackages map[string]android.Paths } @@ -63,7 +63,7 @@ func (module *ValueSetModule) DepsMutator(ctx android.BottomUpMutatorContext) { for _, dep := range deps { _, ok := dep.(*ValuesModule) if !ok { - ctx.PropertyErrorf("values", "values must be a device_config_values module") + ctx.PropertyErrorf("values", "values must be a aconfig_values module") return } } @@ -71,7 +71,7 @@ func (module *ValueSetModule) DepsMutator(ctx android.BottomUpMutatorContext) { func (module *ValueSetModule) GenerateAndroidBuildActions(ctx android.ModuleContext) { // Accumulate the packages of the values modules listed, and set that as an - // valueSetProviderKey provider that device_config modules can read and use + // valueSetProviderKey provider that aconfig modules can read and use // to append values to their aconfig actions. packages := make(map[string]android.Paths) ctx.VisitDirectDeps(func(dep android.Module) { diff --git a/device_config/device_config_value_set_test.go b/aconfig/aconfig_value_set_test.go similarity index 90% rename from device_config/device_config_value_set_test.go rename to aconfig/aconfig_value_set_test.go index 5cbb698e8..91278729e 100644 --- a/device_config/device_config_value_set_test.go +++ b/aconfig/aconfig_value_set_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "testing" @@ -20,15 +20,15 @@ import ( "android/soong/android" ) -func TestDeviceConfigValueSet(t *testing.T) { +func TestAconfigValueSet(t *testing.T) { bp := ` - device_config_values { + aconfig_values { name: "one", srcs: [ "blah.aconfig_values" ], package: "foo.package" } - device_config_value_set { + aconfig_value_set { name: "module_name", values: [ "one" ], } diff --git a/device_config/device_config_values.go b/aconfig/aconfig_values.go similarity index 90% rename from device_config/device_config_values.go rename to aconfig/aconfig_values.go index 2cf921a9b..91f1c9098 100644 --- a/device_config/device_config_values.go +++ b/aconfig/aconfig_values.go @@ -12,14 +12,14 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "android/soong/android" "github.com/google/blueprint" ) -// Properties for "device_config_value" +// Properties for "aconfig_value" type ValuesModule struct { android.ModuleBase android.DefaultableModuleBase @@ -45,7 +45,7 @@ func ValuesFactory() android.Module { return module } -// Provider published by device_config_value_set +// Provider published by aconfig_value_set type valuesProviderData struct { // The package that this values module values Package string @@ -61,7 +61,7 @@ func (module *ValuesModule) GenerateAndroidBuildActions(ctx android.ModuleContex ctx.PropertyErrorf("package", "missing package property") } - // Provide the our source files list to the device_config_value_set as a list of files + // Provide the our source files list to the aconfig_value_set as a list of files providerData := valuesProviderData{ Package: module.properties.Package, Values: android.PathsForModuleSrc(ctx, module.properties.Srcs), diff --git a/device_config/device_config_values_test.go b/aconfig/aconfig_values_test.go similarity index 92% rename from device_config/device_config_values_test.go rename to aconfig/aconfig_values_test.go index 14caeceef..ab457f06a 100644 --- a/device_config/device_config_values_test.go +++ b/aconfig/aconfig_values_test.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "testing" @@ -20,9 +20,9 @@ import ( "android/soong/android" ) -func TestDeviceConfigValues(t *testing.T) { +func TestAconfigValues(t *testing.T) { bp := ` - device_config_values { + aconfig_values { name: "module_name", srcs: [ "blah.aconfig_values" ], package: "foo.package" diff --git a/device_config/init.go b/aconfig/init.go similarity index 78% rename from device_config/init.go rename to aconfig/init.go index c6e7df1e2..6b433c93d 100644 --- a/device_config/init.go +++ b/aconfig/init.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "android/soong/android" @@ -20,9 +20,9 @@ import ( ) var ( - pctx = android.NewPackageContext("android/soong/device_config") + pctx = android.NewPackageContext("android/soong/aconfig") - // For device_config_definitions: Generate cache file + // For aconfig_declarations: Generate cache file aconfigRule = pctx.AndroidStaticRule("aconfig", blueprint.RuleParams{ Command: `${aconfig} create-cache` + @@ -38,7 +38,7 @@ var ( Restat: true, }, "release_version", "package", "values") - // For java_device_config_definitions_library: Generate java file + // For java_aconfig_library: Generate java file srcJarRule = pctx.AndroidStaticRule("aconfig_srcjar", blueprint.RuleParams{ Command: `rm -rf ${out}.tmp` + @@ -63,8 +63,8 @@ func init() { } func registerBuildComponents(ctx android.RegistrationContext) { - ctx.RegisterModuleType("device_config_definitions", DefinitionsFactory) - ctx.RegisterModuleType("device_config_values", ValuesFactory) - ctx.RegisterModuleType("device_config_value_set", ValueSetFactory) - ctx.RegisterModuleType("java_device_config_definitions_library", JavaDefinitionsLibraryFactory) + ctx.RegisterModuleType("aconfig_declarations", DeclarationsFactory) + ctx.RegisterModuleType("aconfig_values", ValuesFactory) + ctx.RegisterModuleType("aconfig_value_set", ValueSetFactory) + ctx.RegisterModuleType("java_aconfig_library", JavaDeclarationsLibraryFactory) } diff --git a/aconfig/java_aconfig_library.go b/aconfig/java_aconfig_library.go new file mode 100644 index 000000000..0eeb14ffc --- /dev/null +++ b/aconfig/java_aconfig_library.go @@ -0,0 +1,71 @@ +// Copyright 2023 Google Inc. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package aconfig + +import ( + "android/soong/android" + "android/soong/java" + "fmt" + "github.com/google/blueprint" +) + +type declarationsTagType struct { + blueprint.BaseDependencyTag +} + +var declarationsTag = declarationsTagType{} + +type JavaAconfigDeclarationsLibraryProperties struct { + // name of the aconfig_declarations module to generate a library for + Aconfig_declarations string +} + +type JavaAconfigDeclarationsLibraryCallbacks struct { + properties JavaAconfigDeclarationsLibraryProperties +} + +func JavaDeclarationsLibraryFactory() android.Module { + callbacks := &JavaAconfigDeclarationsLibraryCallbacks{} + return java.GeneratedJavaLibraryModuleFactory("java_aconfig_library", callbacks, &callbacks.properties) +} + +func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) DepsMutator(module *java.GeneratedJavaLibraryModule, ctx android.BottomUpMutatorContext) { + declarations := callbacks.properties.Aconfig_declarations + if len(declarations) == 0 { + // TODO: Add test for this case + ctx.PropertyErrorf("aconfig_declarations", "aconfig_declarations property required") + } else { + ctx.AddDependency(ctx.Module(), declarationsTag, declarations) + } +} + +func (callbacks *JavaAconfigDeclarationsLibraryCallbacks) GenerateSourceJarBuildActions(ctx android.ModuleContext) android.Path { + // Get the values that came from the global RELEASE_ACONFIG_VALUE_SETS flag + declarationsModules := ctx.GetDirectDepsWithTag(declarationsTag) + if len(declarationsModules) != 1 { + panic(fmt.Errorf("Exactly one aconfig_declarations property required")) + } + declarations := ctx.OtherModuleProvider(declarationsModules[0], declarationsProviderKey).(declarationsProviderData) + + srcJarPath := android.PathForModuleGen(ctx, ctx.ModuleName()+".srcjar") + ctx.Build(pctx, android.BuildParams{ + Rule: srcJarRule, + Input: declarations.IntermediatePath, + Output: srcJarPath, + Description: "aconfig.srcjar", + }) + + return srcJarPath +} diff --git a/device_config/testing.go b/aconfig/testing.go similarity index 79% rename from device_config/testing.go rename to aconfig/testing.go index 284a7fa55..60cefeb2b 100644 --- a/device_config/testing.go +++ b/aconfig/testing.go @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -package device_config +package aconfig import ( "testing" @@ -20,10 +20,10 @@ import ( "android/soong/android" ) -var PrepareForTestWithDeviceConfigBuildComponents = android.FixtureRegisterWithContext(registerBuildComponents) +var PrepareForTestWithAconfigBuildComponents = android.FixtureRegisterWithContext(registerBuildComponents) func runTest(t *testing.T, errorHandler android.FixtureErrorHandler, bp string) *android.TestResult { - return android.GroupFixturePreparers(PrepareForTestWithDeviceConfigBuildComponents). + return android.GroupFixturePreparers(PrepareForTestWithAconfigBuildComponents). ExtendWithErrorHandler(errorHandler). RunTestWithBp(t, bp) } diff --git a/android/config.go b/android/config.go index 242be18d4..8c5f6e36d 100644 --- a/android/config.go +++ b/android/config.go @@ -184,8 +184,8 @@ func (c Config) ReleaseVersion() string { } // The flag values files passed to aconfig, derived from RELEASE_VERSION -func (c Config) ReleaseDeviceConfigValueSets() []string { - return c.config.productVariables.ReleaseDeviceConfigValueSets +func (c Config) ReleaseAconfigValueSets() []string { + return c.config.productVariables.ReleaseAconfigValueSets } // A DeviceConfig object represents the configuration for a particular device diff --git a/android/variable.go b/android/variable.go index c5f1823c1..00315bc1a 100644 --- a/android/variable.go +++ b/android/variable.go @@ -477,8 +477,8 @@ type productVariables struct { ProductBrand string `json:",omitempty"` BuildVersionTags []string `json:",omitempty"` - ReleaseVersion string `json:",omitempty"` - ReleaseDeviceConfigValueSets []string `json:",omitempty"` + ReleaseVersion string `json:",omitempty"` + ReleaseAconfigValueSets []string `json:",omitempty"` } func boolPtr(v bool) *bool { diff --git a/device_config/java_device_config_definitions_library.go b/device_config/java_device_config_definitions_library.go deleted file mode 100644 index 39f843101..000000000 --- a/device_config/java_device_config_definitions_library.go +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright 2023 Google Inc. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package device_config - -import ( - "android/soong/android" - "android/soong/java" - "fmt" - "github.com/google/blueprint" -) - -type definitionsTagType struct { - blueprint.BaseDependencyTag -} - -var definitionsTag = definitionsTagType{} - -type JavaDeviceConfigDefinitionsLibraryProperties struct { - // name of the device_config_definitions module to generate a library for - Device_config_definitions string -} - -type JavaDeviceConfigDefinitionsLibraryCallbacks struct { - properties JavaDeviceConfigDefinitionsLibraryProperties -} - -func JavaDefinitionsLibraryFactory() android.Module { - callbacks := &JavaDeviceConfigDefinitionsLibraryCallbacks{} - return java.GeneratedJavaLibraryModuleFactory("java_device_config_definitions_library", callbacks, &callbacks.properties) -} - -func (callbacks *JavaDeviceConfigDefinitionsLibraryCallbacks) DepsMutator(module *java.GeneratedJavaLibraryModule, ctx android.BottomUpMutatorContext) { - definitions := callbacks.properties.Device_config_definitions - if len(definitions) == 0 { - // TODO: Add test for this case - ctx.PropertyErrorf("device_config_definitions", "device_config_definitions property required") - } else { - ctx.AddDependency(ctx.Module(), definitionsTag, definitions) - } -} - -func (callbacks *JavaDeviceConfigDefinitionsLibraryCallbacks) GenerateSourceJarBuildActions(ctx android.ModuleContext) android.Path { - // Get the values that came from the global RELEASE_DEVICE_CONFIG_VALUE_SETS flag - definitionsModules := ctx.GetDirectDepsWithTag(definitionsTag) - if len(definitionsModules) != 1 { - panic(fmt.Errorf("Exactly one device_config_definitions property required")) - } - definitions := ctx.OtherModuleProvider(definitionsModules[0], definitionsProviderKey).(definitionsProviderData) - - srcJarPath := android.PathForModuleGen(ctx, ctx.ModuleName()+".srcjar") - ctx.Build(pctx, android.BuildParams{ - Rule: srcJarRule, - Input: definitions.IntermediatePath, - Output: srcJarPath, - Description: "device_config.srcjar", - }) - - return srcJarPath -}