Merge "Specify license for the autogenerated vendor build.prop" into main
diff --git a/aconfig/init.go b/aconfig/init.go
index 621d619..21903e2 100644
--- a/aconfig/init.go
+++ b/aconfig/init.go
@@ -73,11 +73,11 @@
CreateStorageRule = pctx.AndroidStaticRule("aconfig_create_storage",
blueprint.RuleParams{
- Command: `${aconfig} create-storage --container ${container} --file ${file_type} --out ${out} ${cache_files}`,
+ Command: `${aconfig} create-storage --container ${container} --file ${file_type} --out ${out} ${cache_files} --version ${version}`,
CommandDeps: []string{
"${aconfig}",
},
- }, "container", "file_type", "cache_files")
+ }, "container", "file_type", "cache_files", "version")
// For exported_java_aconfig_library: Generate a JAR from all
// java_aconfig_libraries to be consumed by apps built outside the
diff --git a/android/config.go b/android/config.go
index d78bbf7..a660baa 100644
--- a/android/config.go
+++ b/android/config.go
@@ -289,6 +289,10 @@
return c.config.productVariables.GetBuildFlagBool("RELEASE_USE_SYSTEM_FEATURE_BUILD_FLAGS")
}
+func (c Config) ReleaseFingerprintAconfigPackages() bool {
+ return c.config.productVariables.GetBuildFlagBool("RELEASE_FINGERPRINT_ACONFIG_PACKAGES")
+}
+
// A DeviceConfig object represents the configuration for a particular device
// being built. For now there will only be one of these, but in the future there
// may be multiple devices being built.
diff --git a/android/early_module_context.go b/android/early_module_context.go
index 5e971ef..8d28285 100644
--- a/android/early_module_context.go
+++ b/android/early_module_context.go
@@ -182,7 +182,7 @@
}
func (e *earlyModuleContext) OtherModulePropertyErrorf(module Module, property string, fmt string, args ...interface{}) {
- e.EarlyModuleContext.OtherModulePropertyErrorf(module, property, fmt, args...)
+ e.EarlyModuleContext.OtherModulePropertyErrorf(getWrappedModule(module), property, fmt, args...)
}
func (e *earlyModuleContext) HasMutatorFinished(mutatorName string) bool {
diff --git a/android/license_metadata.go b/android/license_metadata.go
index 3df36e6..d15dfa8 100644
--- a/android/license_metadata.go
+++ b/android/license_metadata.go
@@ -15,11 +15,11 @@
package android
import (
- "github.com/google/blueprint/depset"
"sort"
"strings"
"github.com/google/blueprint"
+ "github.com/google/blueprint/depset"
"github.com/google/blueprint/proptools"
)
@@ -64,8 +64,8 @@
var allDepOutputFiles Paths
var allDepMetadataDepSets []depset.DepSet[Path]
- ctx.VisitDirectDeps(func(dep Module) {
- if !dep.Enabled(ctx) {
+ ctx.VisitDirectDepsProxy(func(dep ModuleProxy) {
+ if !OtherModuleProviderOrDefault(ctx, dep, CommonModuleInfoKey).Enabled {
return
}
@@ -81,7 +81,7 @@
if info, ok := OtherModuleProvider(ctx, dep, LicenseMetadataProvider); ok {
allDepMetadataFiles = append(allDepMetadataFiles, info.LicenseMetadataPath)
- if isContainer || isInstallDepNeeded(dep, ctx.OtherModuleDependencyTag(dep)) {
+ if isContainer || isInstallDepNeeded(ctx, dep) {
allDepMetadataDepSets = append(allDepMetadataDepSets, info.LicenseMetadataDepSet)
}
diff --git a/android/module.go b/android/module.go
index c2f4342..72dba04 100644
--- a/android/module.go
+++ b/android/module.go
@@ -1475,12 +1475,13 @@
func (m *ModuleBase) computeInstallDeps(ctx ModuleContext) ([]depset.DepSet[InstallPath], []depset.DepSet[PackagingSpec]) {
var installDeps []depset.DepSet[InstallPath]
var packagingSpecs []depset.DepSet[PackagingSpec]
- ctx.VisitDirectDeps(func(dep Module) {
- if isInstallDepNeeded(dep, ctx.OtherModuleDependencyTag(dep)) {
+ ctx.VisitDirectDepsProxy(func(dep ModuleProxy) {
+ if isInstallDepNeeded(ctx, dep) {
// Installation is still handled by Make, so anything hidden from Make is not
// installable.
info := OtherModuleProviderOrDefault(ctx, dep, InstallFilesProvider)
- if !dep.IsHideFromMake() && !dep.IsSkipInstall() {
+ commonInfo := OtherModuleProviderOrDefault(ctx, dep, CommonModuleInfoKey)
+ if !commonInfo.HideFromMake && !commonInfo.SkipInstall {
installDeps = append(installDeps, info.TransitiveInstallFiles)
}
// Add packaging deps even when the dependency is not installed so that uninstallable
@@ -1494,13 +1495,13 @@
// isInstallDepNeeded returns true if installing the output files of the current module
// should also install the output files of the given dependency and dependency tag.
-func isInstallDepNeeded(dep Module, tag blueprint.DependencyTag) bool {
+func isInstallDepNeeded(ctx ModuleContext, dep ModuleProxy) bool {
// Don't add a dependency from the platform to a library provided by an apex.
- if dep.base().commonProperties.UninstallableApexPlatformVariant {
+ if OtherModuleProviderOrDefault(ctx, dep, CommonModuleInfoKey).UninstallableApexPlatformVariant {
return false
}
// Only install modules if the dependency tag is an InstallDepNeeded tag.
- return IsInstallDepNeededTag(tag)
+ return IsInstallDepNeededTag(ctx.OtherModuleDependencyTag(dep))
}
func (m *ModuleBase) NoAddressSanitizer() bool {
@@ -1873,6 +1874,13 @@
CanHaveApexVariants bool
MinSdkVersion string
NotAvailableForPlatform bool
+ // UninstallableApexPlatformVariant is set by MakeUninstallable called by the apex
+ // mutator. MakeUninstallable also sets HideFromMake. UninstallableApexPlatformVariant
+ // is used to avoid adding install or packaging dependencies into libraries provided
+ // by apexes.
+ UninstallableApexPlatformVariant bool
+ HideFromMake bool
+ SkipInstall bool
}
var CommonModuleInfoKey = blueprint.NewProvider[CommonModuleInfo]()
@@ -2138,10 +2146,13 @@
buildComplianceMetadataProvider(ctx, m)
commonData := CommonModuleInfo{
- ReplacedByPrebuilt: m.commonProperties.ReplacedByPrebuilt,
- CompileTarget: m.commonProperties.CompileTarget,
- SkipAndroidMkProcessing: shouldSkipAndroidMkProcessing(ctx, m),
- BaseModuleName: m.BaseModuleName(),
+ ReplacedByPrebuilt: m.commonProperties.ReplacedByPrebuilt,
+ CompileTarget: m.commonProperties.CompileTarget,
+ SkipAndroidMkProcessing: shouldSkipAndroidMkProcessing(ctx, m),
+ BaseModuleName: m.BaseModuleName(),
+ UninstallableApexPlatformVariant: m.commonProperties.UninstallableApexPlatformVariant,
+ HideFromMake: m.commonProperties.HideFromMake,
+ SkipInstall: m.commonProperties.SkipInstall,
}
if mm, ok := m.module.(interface {
MinSdkVersion(ctx EarlyModuleContext) ApiLevel
@@ -2737,6 +2748,7 @@
if octx, ok := ctx.(OutputFilesProviderModuleContext); ok {
if octx.EqualModules(octx.Module(), module) {
+ // It is the current module, we can access the srcs through interface
if sourceFileProducer, ok := module.(SourceFileProducer); ok {
return sourceFileProducer.Srcs(), nil
}
diff --git a/apex/builder.go b/apex/builder.go
index 4c91dd0..c85d0a0 100644
--- a/apex/builder.go
+++ b/apex/builder.go
@@ -70,7 +70,7 @@
pctx.HostBinToolVariable("extract_apks", "extract_apks")
pctx.HostBinToolVariable("make_f2fs", "make_f2fs")
pctx.HostBinToolVariable("sload_f2fs", "sload_f2fs")
- pctx.HostBinToolVariable("make_erofs", "make_erofs")
+ pctx.HostBinToolVariable("make_erofs", "mkfs.erofs")
pctx.HostBinToolVariable("apex_compression_tool", "apex_compression_tool")
pctx.HostBinToolVariable("dexdeps", "dexdeps")
pctx.HostBinToolVariable("apex_sepolicy_tests", "apex_sepolicy_tests")
@@ -275,6 +275,12 @@
})
files = append(files, newApexFile(ctx, apexAconfigFile, "aconfig_flags", "etc", etc, nil))
+ // To enable fingerprint, we need to have v2 storage files. The default version is 1.
+ storageFilesVersion := 1
+ if ctx.Config().ReleaseFingerprintAconfigPackages() {
+ storageFilesVersion = 2
+ }
+
for _, info := range createStorageInfo {
outputFile := android.PathForModuleOut(ctx, info.Output_file)
ctx.Build(pctx, android.BuildParams{
@@ -286,6 +292,7 @@
"container": ctx.ModuleName(),
"file_type": info.File_type,
"cache_files": android.JoinPathsWithPrefix(aconfigFiles, "--cache "),
+ "version": strconv.Itoa(storageFilesVersion),
},
})
files = append(files, newApexFile(ctx, outputFile, info.File_type, "etc", etc, nil))
diff --git a/cc/cc.go b/cc/cc.go
index 6641182..a877f47 100644
--- a/cc/cc.go
+++ b/cc/cc.go
@@ -53,9 +53,58 @@
var CcObjectInfoProvider = blueprint.NewProvider[CcObjectInfo]()
+type AidlInterfaceInfo struct {
+ // list of aidl_interface sources
+ Sources []string
+ // root directory of AIDL sources
+ AidlRoot string
+ // AIDL backend language (e.g. "cpp", "ndk")
+ Lang string
+ // list of flags passed to AIDL generator
+ Flags []string
+}
+
+type CompilerInfo struct {
+ Srcs android.Paths
+ // list of module-specific flags that will be used for C and C++ compiles.
+ Cflags proptools.Configurable[[]string]
+ AidlInterfaceInfo AidlInterfaceInfo
+ LibraryDecoratorInfo *LibraryDecoratorInfo
+}
+
+type LinkerInfo struct {
+ Whole_static_libs proptools.Configurable[[]string]
+ // list of modules that should be statically linked into this module.
+ Static_libs proptools.Configurable[[]string]
+ // list of modules that should be dynamically linked into this module.
+ Shared_libs proptools.Configurable[[]string]
+ // list of modules that should only provide headers for this module.
+ Header_libs proptools.Configurable[[]string]
+
+ BinaryDecoratorInfo *BinaryDecoratorInfo
+ LibraryDecoratorInfo *LibraryDecoratorInfo
+ TestBinaryInfo *TestBinaryInfo
+ BenchmarkDecoratorInfo *BenchmarkDecoratorInfo
+ ObjectLinkerInfo *ObjectLinkerInfo
+}
+
+type BinaryDecoratorInfo struct{}
+type LibraryDecoratorInfo struct {
+ Export_include_dirs proptools.Configurable[[]string]
+}
+type TestBinaryInfo struct {
+ Gtest bool
+}
+type BenchmarkDecoratorInfo struct{}
+type ObjectLinkerInfo struct{}
+
// Common info about the cc module.
type CcInfo struct {
- HasStubsVariants bool
+ HasStubsVariants bool
+ IsPrebuilt bool
+ CmakeSnapshotSupported bool
+ CompilerInfo *CompilerInfo
+ LinkerInfo *LinkerInfo
}
var CcInfoProvider = blueprint.NewProvider[CcInfo]()
@@ -2131,9 +2180,52 @@
StaticExecutable: c.StaticExecutable(),
})
- android.SetProvider(ctx, CcInfoProvider, CcInfo{
- HasStubsVariants: c.HasStubsVariants(),
- })
+ ccInfo := CcInfo{
+ HasStubsVariants: c.HasStubsVariants(),
+ IsPrebuilt: c.IsPrebuilt(),
+ CmakeSnapshotSupported: proptools.Bool(c.Properties.Cmake_snapshot_supported),
+ }
+ if c.compiler != nil {
+ ccInfo.CompilerInfo = &CompilerInfo{
+ Srcs: c.compiler.(CompiledInterface).Srcs(),
+ Cflags: c.compiler.baseCompilerProps().Cflags,
+ AidlInterfaceInfo: AidlInterfaceInfo{
+ Sources: c.compiler.baseCompilerProps().AidlInterface.Sources,
+ AidlRoot: c.compiler.baseCompilerProps().AidlInterface.AidlRoot,
+ Lang: c.compiler.baseCompilerProps().AidlInterface.Lang,
+ Flags: c.compiler.baseCompilerProps().AidlInterface.Flags,
+ },
+ }
+ switch decorator := c.compiler.(type) {
+ case *libraryDecorator:
+ ccInfo.CompilerInfo.LibraryDecoratorInfo = &LibraryDecoratorInfo{
+ Export_include_dirs: decorator.flagExporter.Properties.Export_include_dirs,
+ }
+ }
+ }
+ if c.linker != nil {
+ ccInfo.LinkerInfo = &LinkerInfo{
+ Whole_static_libs: c.linker.baseLinkerProps().Whole_static_libs,
+ Static_libs: c.linker.baseLinkerProps().Static_libs,
+ Shared_libs: c.linker.baseLinkerProps().Shared_libs,
+ Header_libs: c.linker.baseLinkerProps().Header_libs,
+ }
+ switch decorator := c.linker.(type) {
+ case *binaryDecorator:
+ ccInfo.LinkerInfo.BinaryDecoratorInfo = &BinaryDecoratorInfo{}
+ case *libraryDecorator:
+ ccInfo.LinkerInfo.LibraryDecoratorInfo = &LibraryDecoratorInfo{}
+ case *testBinary:
+ ccInfo.LinkerInfo.TestBinaryInfo = &TestBinaryInfo{
+ Gtest: decorator.testDecorator.gtest(),
+ }
+ case *benchmarkDecorator:
+ ccInfo.LinkerInfo.BenchmarkDecoratorInfo = &BenchmarkDecoratorInfo{}
+ case *objectLinker:
+ ccInfo.LinkerInfo.ObjectLinkerInfo = &ObjectLinkerInfo{}
+ }
+ }
+ android.SetProvider(ctx, CcInfoProvider, ccInfo)
c.setOutputFiles(ctx)
diff --git a/cc/cmake_module_aidl.txt b/cc/cmake_module_aidl.txt
index 84755a3..3622648 100644
--- a/cc/cmake_module_aidl.txt
+++ b/cc/cmake_module_aidl.txt
@@ -1,11 +1,11 @@
# <<.M.Name>>
-<<setList .M.Name "_SRCS" "" (getAidlSources .M)>>
+<<setList .M.Name "_SRCS" "" (getAidlSources .CcInfo)>>
-<<setList .M.Name "_AIDLFLAGS" "" (getCompilerProperties .M).AidlInterface.Flags>>
+<<setList .M.Name "_AIDLFLAGS" "" (getAidlInterface .CcInfo).Flags>>
-add_aidl_library(<<.M.Name>> <<(getCompilerProperties .M).AidlInterface.Lang>>
- "${ANDROID_BUILD_TOP}/<<.Ctx.OtherModuleDir .M>>/<<(getCompilerProperties .M).AidlInterface.AidlRoot>>"
+add_aidl_library(<<.M.Name>> <<(getAidlInterface .CcInfo).Lang>>
+ "${ANDROID_BUILD_TOP}/<<.Ctx.OtherModuleDir .M>>/<<(getAidlInterface .CcInfo).AidlRoot>>"
"${<<.M.Name>>_SRCS}"
"${<<.M.Name>>_AIDLFLAGS}")
add_library(android::<<.M.Name>> ALIAS <<.M.Name>>)
diff --git a/cc/cmake_module_cc.txt b/cc/cmake_module_cc.txt
index 0f6e62f..a57e053 100644
--- a/cc/cmake_module_cc.txt
+++ b/cc/cmake_module_cc.txt
@@ -1,14 +1,14 @@
-<<$srcs := getSources .M>>
-<<$includeDirs := getIncludeDirs .Ctx .M>>
-<<$cflags := getCflagsProperty .Ctx .M>>
+<<$srcs := getSources .Ctx .CcInfo>>
+<<$includeDirs := getIncludeDirs .Ctx .M .CcInfo>>
+<<$cflags := getCflagsProperty .Ctx .CcInfo>>
<<$deps := mapLibraries .Ctx .M (concat5
-(getWholeStaticLibsProperty .Ctx .M)
-(getStaticLibsProperty .Ctx .M)
-(getSharedLibsProperty .Ctx .M)
-(getHeaderLibsProperty .Ctx .M)
-(getExtraLibs .M)
+(getWholeStaticLibsProperty .Ctx .CcInfo)
+(getStaticLibsProperty .Ctx .CcInfo)
+(getSharedLibsProperty .Ctx .CcInfo)
+(getHeaderLibsProperty .Ctx .CcInfo)
+(getExtraLibs .CcInfo)
) .Pprop.LibraryMapping>>
-<<$moduleType := getModuleType .M>>
+<<$moduleType := getModuleType .CcInfo>>
<<$moduleTypeCmake := "executable">>
<<if eq $moduleType "library">>
<<$moduleTypeCmake = "library">>
diff --git a/cc/cmake_snapshot.go b/cc/cmake_snapshot.go
index f553f27..408aea6 100644
--- a/cc/cmake_snapshot.go
+++ b/cc/cmake_snapshot.go
@@ -196,39 +196,36 @@
return list.String()
},
- "getSources": func(m *Module) android.Paths {
- return m.compiler.(CompiledInterface).Srcs()
+ "getSources": func(ctx android.ModuleContext, info *CcInfo) android.Paths {
+ return info.CompilerInfo.Srcs
},
"getModuleType": getModuleType,
- "getCompilerProperties": func(m *Module) BaseCompilerProperties {
- return m.compiler.baseCompilerProps()
+ "getAidlInterface": func(info *CcInfo) AidlInterfaceInfo {
+ return info.CompilerInfo.AidlInterfaceInfo
},
- "getCflagsProperty": func(ctx android.ModuleContext, m *Module) []string {
- prop := m.compiler.baseCompilerProps().Cflags
+ "getCflagsProperty": func(ctx android.ModuleContext, info *CcInfo) []string {
+ prop := info.CompilerInfo.Cflags
return prop.GetOrDefault(ctx, nil)
},
- "getLinkerProperties": func(m *Module) BaseLinkerProperties {
- return m.linker.baseLinkerProps()
- },
- "getWholeStaticLibsProperty": func(ctx android.ModuleContext, m *Module) []string {
- prop := m.linker.baseLinkerProps().Whole_static_libs
+ "getWholeStaticLibsProperty": func(ctx android.ModuleContext, info *CcInfo) []string {
+ prop := info.LinkerInfo.Whole_static_libs
return prop.GetOrDefault(ctx, nil)
},
- "getStaticLibsProperty": func(ctx android.ModuleContext, m *Module) []string {
- prop := m.linker.baseLinkerProps().Static_libs
+ "getStaticLibsProperty": func(ctx android.ModuleContext, info *CcInfo) []string {
+ prop := info.LinkerInfo.Static_libs
return prop.GetOrDefault(ctx, nil)
},
- "getSharedLibsProperty": func(ctx android.ModuleContext, m *Module) []string {
- prop := m.linker.baseLinkerProps().Shared_libs
+ "getSharedLibsProperty": func(ctx android.ModuleContext, info *CcInfo) []string {
+ prop := info.LinkerInfo.Shared_libs
return prop.GetOrDefault(ctx, nil)
},
- "getHeaderLibsProperty": func(ctx android.ModuleContext, m *Module) []string {
- prop := m.linker.baseLinkerProps().Header_libs
+ "getHeaderLibsProperty": func(ctx android.ModuleContext, info *CcInfo) []string {
+ prop := info.LinkerInfo.Header_libs
return prop.GetOrDefault(ctx, nil)
},
"getExtraLibs": getExtraLibs,
"getIncludeDirs": getIncludeDirs,
- "mapLibraries": func(ctx android.ModuleContext, m *Module, libs []string, mapping map[string]LibraryMappingProperty) []string {
+ "mapLibraries": func(ctx android.ModuleContext, m android.ModuleProxy, libs []string, mapping map[string]LibraryMappingProperty) []string {
var mappedLibs []string
for _, lib := range libs {
mappedLib, exists := mapping[lib]
@@ -249,8 +246,8 @@
mappedLibs = slices.Compact(mappedLibs)
return mappedLibs
},
- "getAidlSources": func(m *Module) []string {
- aidlInterface := m.compiler.baseCompilerProps().AidlInterface
+ "getAidlSources": func(info *CcInfo) []string {
+ aidlInterface := info.CompilerInfo.AidlInterfaceInfo
aidlRoot := aidlInterface.AidlRoot + string(filepath.Separator)
if aidlInterface.AidlRoot == "" {
aidlRoot = ""
@@ -340,14 +337,14 @@
moduleDirs := map[string][]string{}
sourceFiles := map[string]android.Path{}
visitedModules := map[string]bool{}
- var pregeneratedModules []*Module
- ctx.WalkDeps(func(dep_a android.Module, parent android.Module) bool {
- moduleName := ctx.OtherModuleName(dep_a)
+ var pregeneratedModules []android.ModuleProxy
+ ctx.WalkDepsProxy(func(dep, parent android.ModuleProxy) bool {
+ moduleName := ctx.OtherModuleName(dep)
if visited := visitedModules[moduleName]; visited {
return false // visit only once
}
visitedModules[moduleName] = true
- dep, ok := dep_a.(*Module)
+ ccInfo, ok := android.OtherModuleProvider(ctx, dep, CcInfoProvider)
if !ok {
return false // not a cc module
}
@@ -363,15 +360,15 @@
if slices.Contains(ignoredSystemLibs, moduleName) {
return false // system libs built in-tree for Android
}
- if dep.IsPrebuilt() {
+ if ccInfo.IsPrebuilt {
return false // prebuilts are not supported
}
- if dep.compiler == nil {
+ if ccInfo.CompilerInfo == nil {
return false // unsupported module type
}
- isAidlModule := dep.compiler.baseCompilerProps().AidlInterface.Lang != ""
+ isAidlModule := ccInfo.CompilerInfo.AidlInterfaceInfo.Lang != ""
- if !proptools.Bool(dep.Properties.Cmake_snapshot_supported) {
+ if !ccInfo.CmakeSnapshotSupported {
ctx.OtherModulePropertyErrorf(dep, "cmake_snapshot_supported",
"CMake snapshots not supported, despite being a dependency for %s",
ctx.OtherModuleName(parent))
@@ -389,12 +386,14 @@
}
moduleFragment := executeTemplate(templateToUse, &templateBuffer, struct {
Ctx *android.ModuleContext
- M *Module
+ M android.ModuleProxy
+ CcInfo *CcInfo
Snapshot *CmakeSnapshot
Pprop *cmakeProcessedProperties
}{
&ctx,
dep,
+ &ccInfo,
m,
&pprop,
})
@@ -415,7 +414,7 @@
// Enumerate sources for pregenerated modules
if m.Properties.Include_sources {
for _, dep := range pregeneratedModules {
- if !proptools.Bool(dep.Properties.Cmake_snapshot_supported) {
+ if !android.OtherModuleProviderOrDefault(ctx, dep, CcInfoProvider).CmakeSnapshotSupported {
ctx.OtherModulePropertyErrorf(dep, "cmake_snapshot_supported",
"Pregenerated CMake snapshots not supported, despite being requested for %s",
ctx.ModuleName())
@@ -491,7 +490,7 @@
if len(m.Properties.Prebuilts) > 0 {
var prebuiltsList android.Paths
- ctx.VisitDirectDepsWithTag(cmakeSnapshotPrebuiltTag, func(dep android.Module) {
+ ctx.VisitDirectDepsProxyWithTag(cmakeSnapshotPrebuiltTag, func(dep android.ModuleProxy) {
for _, file := range android.OtherModuleProviderOrDefault(
ctx, dep, android.InstallFilesProvider).InstallFiles {
prebuiltsList = append(prebuiltsList, file)
@@ -523,42 +522,37 @@
}}
}
-func getModuleType(m *Module) string {
- switch m.linker.(type) {
- case *binaryDecorator:
+func getModuleType(info *CcInfo) string {
+ if info.LinkerInfo.BinaryDecoratorInfo != nil {
return "executable"
- case *libraryDecorator:
+ } else if info.LinkerInfo.LibraryDecoratorInfo != nil {
return "library"
- case *testBinary:
+ } else if info.LinkerInfo.TestBinaryInfo != nil || info.LinkerInfo.BenchmarkDecoratorInfo != nil {
return "test"
- case *benchmarkDecorator:
- return "test"
- case *objectLinker:
+ } else if info.LinkerInfo.ObjectLinkerInfo != nil {
return "object"
}
- panic(fmt.Sprintf("Unexpected module type: %T", m.linker))
+ panic(fmt.Sprintf("Unexpected module type for LinkerInfo"))
}
-func getExtraLibs(m *Module) []string {
- switch decorator := m.linker.(type) {
- case *testBinary:
- if decorator.testDecorator.gtest() {
+func getExtraLibs(info *CcInfo) []string {
+ if info.LinkerInfo.TestBinaryInfo != nil {
+ if info.LinkerInfo.TestBinaryInfo.Gtest {
return []string{
"libgtest",
"libgtest_main",
}
}
- case *benchmarkDecorator:
+ } else if info.LinkerInfo.BenchmarkDecoratorInfo != nil {
return []string{"libgoogle-benchmark"}
}
return nil
}
-func getIncludeDirs(ctx android.ModuleContext, m *Module) []string {
+func getIncludeDirs(ctx android.ModuleContext, m android.ModuleProxy, info *CcInfo) []string {
moduleDir := ctx.OtherModuleDir(m) + string(filepath.Separator)
- switch decorator := m.compiler.(type) {
- case *libraryDecorator:
- return sliceWithPrefix(moduleDir, decorator.flagExporter.Properties.Export_include_dirs.GetOrDefault(ctx, nil))
+ if info.CompilerInfo.LibraryDecoratorInfo != nil {
+ return sliceWithPrefix(moduleDir, info.CompilerInfo.LibraryDecoratorInfo.Export_include_dirs.GetOrDefault(ctx, nil))
}
return nil
}
diff --git a/etc/avbpubkey.go b/etc/avbpubkey.go
index 3f998d4..dc242ce 100644
--- a/etc/avbpubkey.go
+++ b/etc/avbpubkey.go
@@ -51,6 +51,7 @@
Command: `${avbtool} extract_public_key --key ${in} --output ${out}.tmp` +
` && ( if cmp -s ${out}.tmp ${out} ; then rm ${out}.tmp ; else mv ${out}.tmp ${out} ; fi )`,
CommandDeps: []string{"${avbtool}"},
+ Restat: true,
Description: "Extracting system_other avb key",
})
diff --git a/filesystem/aconfig_files.go b/filesystem/aconfig_files.go
index 492ec69..9a3ca54 100644
--- a/filesystem/aconfig_files.go
+++ b/filesystem/aconfig_files.go
@@ -16,6 +16,7 @@
import (
"android/soong/android"
+ "strconv"
"github.com/google/blueprint"
"github.com/google/blueprint/proptools"
@@ -74,6 +75,12 @@
installAconfigStorageDir := dir.Join(ctx, "etc", "aconfig")
builder.Command().Text("mkdir -p").Text(installAconfigStorageDir.String())
+ // To enable fingerprint, we need to have v2 storage files. The default version is 1.
+ storageFilesVersion := 1
+ if ctx.Config().ReleaseFingerprintAconfigPackages() {
+ storageFilesVersion = 2
+ }
+
generatePartitionAconfigStorageFile := func(fileType, fileName string) {
outputPath := installAconfigStorageDir.Join(ctx, fileName)
builder.Command().
@@ -81,7 +88,8 @@
FlagWithArg("create-storage --container ", container).
FlagWithArg("--file ", fileType).
FlagWithOutput("--out ", outputPath).
- FlagWithArg("--cache ", installAconfigFlagsPath.String())
+ FlagWithArg("--cache ", installAconfigFlagsPath.String()).
+ FlagWithArg("--version ", strconv.Itoa(storageFilesVersion))
f.appendToEntry(ctx, outputPath)
}
diff --git a/java/aar.go b/java/aar.go
index d9a8c0e..c09ed9e 100644
--- a/java/aar.go
+++ b/java/aar.go
@@ -1046,6 +1046,8 @@
AconfigTextFiles: aconfigTextFilePaths,
})
+ android.SetProvider(ctx, AndroidLibraryInfoProvider, AndroidLibraryInfo{})
+
a.setOutputFiles(ctx)
}
@@ -1574,6 +1576,8 @@
JniPackages: a.jniPackages,
})
+ android.SetProvider(ctx, AndroidLibraryInfoProvider, AndroidLibraryInfo{})
+
ctx.SetOutputFiles([]android.Path{a.implementationAndResourcesJarFile}, "")
ctx.SetOutputFiles([]android.Path{a.aarPath}, ".aar")
}
diff --git a/java/app.go b/java/app.go
index b8c85fb..b0dcbb0 100644
--- a/java/app.go
+++ b/java/app.go
@@ -52,6 +52,12 @@
var FlagsPackagesProvider = blueprint.NewProvider[FlagsPackages]()
+type AndroidLibraryInfo struct {
+ // Empty for now
+}
+
+var AndroidLibraryInfoProvider = blueprint.NewProvider[AndroidLibraryInfo]()
+
func RegisterAppBuildComponents(ctx android.RegistrationContext) {
ctx.RegisterModuleType("android_app", AndroidAppFactory)
ctx.RegisterModuleType("android_test", AndroidTestFactory)
@@ -424,6 +430,8 @@
EmbeddedJNILibs: embeddedJniLibs,
})
+ android.SetProvider(ctx, AndroidLibraryInfoProvider, AndroidLibraryInfo{})
+
a.requiredModuleNames = a.getRequiredModuleNames(ctx)
}