Merge changes from topic "aconfig_renames"
* changes: Rename device_config --> aconfig and definitions --> declarations Rename aconfig namespace to package.
This commit is contained in:
@@ -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"],
|
||||
}
|
@@ -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,27 +21,27 @@ 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"`
|
||||
|
||||
// Release config flag namespace
|
||||
Namespace string
|
||||
// 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,24 +58,24 @@ 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")
|
||||
return
|
||||
}
|
||||
if len(module.properties.Namespace) == 0 {
|
||||
ctx.PropertyErrorf("namespace", "missing namespace property")
|
||||
if len(module.properties.Package) == 0 {
|
||||
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
|
||||
// match our namespace.
|
||||
valuesFromConfig := ctx.Config().ReleaseDeviceConfigValueSets()
|
||||
// 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().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,23 +96,23 @@ func joinAndPrefix(prefix string, values []string) string {
|
||||
return sb.String()
|
||||
}
|
||||
|
||||
// Provider published by device_config_value_set
|
||||
type definitionsProviderData struct {
|
||||
namespace string
|
||||
intermediatePath android.WritablePath
|
||||
// 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
|
||||
return
|
||||
}
|
||||
depData := ctx.OtherModuleProvider(dep, valueSetProviderKey).(valueSetProviderData)
|
||||
valuesFiles, ok := depData.AvailableNamespaces[module.properties.Namespace]
|
||||
valuesFiles, ok := depData.AvailablePackages[module.properties.Package]
|
||||
if ok {
|
||||
for _, path := range valuesFiles {
|
||||
module.properties.Values = append(module.properties.Values, path.String())
|
||||
@@ -127,17 +127,17 @@ 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(),
|
||||
"namespace": module.properties.Namespace,
|
||||
"package": module.properties.Package,
|
||||
"values": joinAndPrefix(" --values ", module.properties.Values),
|
||||
},
|
||||
})
|
||||
|
||||
ctx.SetProvider(definitionsProviderKey, definitionsProviderData{
|
||||
namespace: module.properties.Namespace,
|
||||
intermediatePath: intermediatePath,
|
||||
ctx.SetProvider(declarationsProviderKey, declarationsProviderData{
|
||||
Package: module.properties.Package,
|
||||
IntermediatePath: intermediatePath,
|
||||
})
|
||||
|
||||
}
|
@@ -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,22 +21,22 @@ import (
|
||||
"android/soong/android"
|
||||
)
|
||||
|
||||
func TestDeviceConfigDefinitions(t *testing.T) {
|
||||
func TestAconfigDeclarations(t *testing.T) {
|
||||
bp := `
|
||||
device_config_definitions {
|
||||
aconfig_declarations {
|
||||
name: "module_name",
|
||||
namespace: "com.example.package",
|
||||
package: "com.example.package",
|
||||
srcs: ["foo.aconfig"],
|
||||
}
|
||||
`
|
||||
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)
|
||||
android.AssertStringEquals(t, "namespace", depData.namespace, "com.example.package")
|
||||
if !strings.HasSuffix(depData.intermediatePath.String(), "/intermediate.pb") {
|
||||
t.Errorf("Missing intermediates path in provider: %s", depData.intermediatePath.String())
|
||||
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())
|
||||
}
|
||||
}
|
@@ -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,11 +49,11 @@ type valueSetType struct {
|
||||
|
||||
var valueSetTag = valueSetType{}
|
||||
|
||||
// Provider published by device_config_value_set
|
||||
// Provider published by aconfig_value_set
|
||||
type valueSetProviderData struct {
|
||||
// The namespace of each of the
|
||||
// (map of namespace --> device_config_module)
|
||||
AvailableNamespaces map[string]android.Paths
|
||||
// The package of each of the
|
||||
// (map of package --> aconfig_module)
|
||||
AvailablePackages map[string]android.Paths
|
||||
}
|
||||
|
||||
var valueSetProviderKey = blueprint.NewProvider(valueSetProviderData{})
|
||||
@@ -63,17 +63,17 @@ 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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (module *ValueSetModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
// Accumulate the namespaces of the values modules listed, and set that as an
|
||||
// valueSetProviderKey provider that device_config modules can read and use
|
||||
// Accumulate the packages of the values modules listed, and set that as an
|
||||
// valueSetProviderKey provider that aconfig modules can read and use
|
||||
// to append values to their aconfig actions.
|
||||
namespaces := make(map[string]android.Paths)
|
||||
packages := make(map[string]android.Paths)
|
||||
ctx.VisitDirectDeps(func(dep android.Module) {
|
||||
if !ctx.OtherModuleHasProvider(dep, valuesProviderKey) {
|
||||
// Other modules get injected as dependencies too, for example the license modules
|
||||
@@ -83,10 +83,10 @@ func (module *ValueSetModule) GenerateAndroidBuildActions(ctx android.ModuleCont
|
||||
|
||||
srcs := make([]android.Path, len(depData.Values))
|
||||
copy(srcs, depData.Values)
|
||||
namespaces[depData.Namespace] = srcs
|
||||
packages[depData.Package] = srcs
|
||||
|
||||
})
|
||||
ctx.SetProvider(valueSetProviderKey, valueSetProviderData{
|
||||
AvailableNamespaces: namespaces,
|
||||
AvailablePackages: packages,
|
||||
})
|
||||
}
|
@@ -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" ],
|
||||
namespace: "foo.namespace"
|
||||
package: "foo.package"
|
||||
}
|
||||
|
||||
device_config_value_set {
|
||||
aconfig_value_set {
|
||||
name: "module_name",
|
||||
values: [ "one" ],
|
||||
}
|
||||
@@ -39,5 +39,5 @@ func TestDeviceConfigValueSet(t *testing.T) {
|
||||
|
||||
// Check that the provider has the right contents
|
||||
depData := result.ModuleProvider(module, valueSetProviderKey).(valueSetProviderData)
|
||||
android.AssertStringEquals(t, "AvailableNamespaces", "blah.aconfig_values", depData.AvailableNamespaces["foo.namespace"][0].String())
|
||||
android.AssertStringEquals(t, "AvailablePackages", "blah.aconfig_values", depData.AvailablePackages["foo.package"][0].String())
|
||||
}
|
@@ -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
|
||||
@@ -28,8 +28,8 @@ type ValuesModule struct {
|
||||
// aconfig files, relative to this Android.bp file
|
||||
Srcs []string `android:"path"`
|
||||
|
||||
// Release config flag namespace
|
||||
Namespace string
|
||||
// Release config flag package
|
||||
Package string
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,10 +45,10 @@ func ValuesFactory() android.Module {
|
||||
return module
|
||||
}
|
||||
|
||||
// Provider published by device_config_value_set
|
||||
// Provider published by aconfig_value_set
|
||||
type valuesProviderData struct {
|
||||
// The namespace that this values module values
|
||||
Namespace string
|
||||
// The package that this values module values
|
||||
Package string
|
||||
|
||||
// The values aconfig files, relative to the root of the tree
|
||||
Values android.Paths
|
||||
@@ -57,14 +57,14 @@ type valuesProviderData struct {
|
||||
var valuesProviderKey = blueprint.NewProvider(valuesProviderData{})
|
||||
|
||||
func (module *ValuesModule) GenerateAndroidBuildActions(ctx android.ModuleContext) {
|
||||
if len(module.properties.Namespace) == 0 {
|
||||
ctx.PropertyErrorf("namespace", "missing namespace property")
|
||||
if len(module.properties.Package) == 0 {
|
||||
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{
|
||||
Namespace: module.properties.Namespace,
|
||||
Values: android.PathsForModuleSrc(ctx, module.properties.Srcs),
|
||||
Package: module.properties.Package,
|
||||
Values: android.PathsForModuleSrc(ctx, module.properties.Srcs),
|
||||
}
|
||||
ctx.SetProvider(valuesProviderKey, providerData)
|
||||
}
|
@@ -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,12 +20,12 @@ 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" ],
|
||||
namespace: "foo.namespace"
|
||||
package: "foo.package"
|
||||
}
|
||||
`
|
||||
result := runTest(t, android.FixtureExpectsNoErrors, bp)
|
||||
@@ -34,6 +34,6 @@ func TestDeviceConfigValues(t *testing.T) {
|
||||
|
||||
// Check that the provider has the right contents
|
||||
depData := result.ModuleProvider(module, valuesProviderKey).(valuesProviderData)
|
||||
android.AssertStringEquals(t, "namespace", "foo.namespace", depData.Namespace)
|
||||
android.AssertStringEquals(t, "package", "foo.package", depData.Package)
|
||||
android.AssertPathsEndWith(t, "srcs", []string{"blah.aconfig_values"}, depData.Values)
|
||||
}
|
@@ -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,13 +20,13 @@ 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` +
|
||||
` --package ${namespace}` +
|
||||
` --package ${package}` +
|
||||
` --declarations ${in}` +
|
||||
` ${values}` +
|
||||
` --cache ${out}.tmp` +
|
||||
@@ -36,9 +36,9 @@ var (
|
||||
"${aconfig}",
|
||||
},
|
||||
Restat: true,
|
||||
}, "release_version", "namespace", "values")
|
||||
}, "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)
|
||||
}
|
71
aconfig/java_aconfig_library.go
Normal file
71
aconfig/java_aconfig_library.go
Normal file
@@ -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
|
||||
}
|
@@ -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)
|
||||
}
|
@@ -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
|
||||
|
@@ -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 {
|
||||
|
@@ -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
|
||||
}
|
Reference in New Issue
Block a user