aboutsummaryrefslogtreecommitdiff
path: root/android/apex.go
diff options
context:
space:
mode:
authormosimchah <mosimchah@gmail.com>2025-12-02 09:27:38 -0500
committermosimchah <mosimchah@gmail.com>2025-12-02 09:27:38 -0500
commitc7bade461dc55726f62997d13a48582f7c4b4655 (patch)
treeea0588da76060a2038f54f67efd046ca77634b10 /android/apex.go
parent0f5414d19317805e8bbbe7c4db5f0fd78769bad5 (diff)
parent89d78cff8b00d3b20a90074635c3fe5a2ee49474 (diff)
Merge branch 'lineage-23.1' of https://github.com/LineageOS/android_build_soong into HEADw16.1
* 'lineage-23.1' of https://github.com/LineageOS/android_build_soong: (528 commits) Revert "install_symlink: Make symlink target configurable" Reapply "Clear as much of cc.Module as possible after GenerateBuildActions" Revert "rust: config: Fix missing CPU variant LD flags in Rust" Rename build-flag in outdir Revert^4 "cipd: Default CIPD proxy server to on, add opt-out" Convert check-vintf-all to phony with actions Create a partial implementation of check-vintf-all for soong-only Configure RBE rust pool based on build variant Revert^3 "Add sdk version check to arr" Add jdk.internal.invoke to the allowlist Make droid always depend on symbols zip Import Device and Odm skus Don't install gob_gen in Soong Remove bazel reference from run_integration_tests.sh Fix bootstrap_test.sh Don't panic in aconfig libraries when AllowMissingDependencies is set Avoid returning nil paths from PathForModuleSrc Revert "Flag controled clang version" Rework module target dependencies on required deps Revert^2 "Add sdk version check to arr" ... Change-Id: I6e9a63fa14fda917a42e426e5dcebbad7f67e1de
Diffstat (limited to 'android/apex.go')
-rw-r--r--android/apex.go62
1 files changed, 22 insertions, 40 deletions
diff --git a/android/apex.go b/android/apex.go
index 57baff5cf..ebd1ed445 100644
--- a/android/apex.go
+++ b/android/apex.go
@@ -26,7 +26,7 @@ import (
var (
// This is the sdk version when APEX was first introduced
- SdkVersion_Android10 = uncheckedFinalApiLevel(29)
+ SdkVersion_Android10 = UncheckedFinalApiLevel(29)
)
// ApexInfo describes the metadata about one or more apexBundles that an apex variant of a module is
@@ -111,14 +111,6 @@ type ApexAvailableInfo struct {
var ApexInfoProvider = blueprint.NewMutatorProvider[ApexInfo]("apex_mutate")
var ApexAvailableInfoProvider = blueprint.NewMutatorProvider[ApexAvailableInfo]("apex_mutate")
-func (i ApexInfo) AddJSONData(d *map[string]interface{}) {
- (*d)["Apex"] = map[string]interface{}{
- "ApexVariationName": i.ApexVariationName,
- "MinSdkVersion": i.MinSdkVersion,
- "ForPrebuiltApex": i.ForPrebuiltApex,
- }
-}
-
// mergedName gives the name of the alias variation that will be used when multiple apex variations
// of a module can be deduped into one variation. For example, if libfoo is included in both apex.a
// and apex.b, and if the two APEXes have the same min_sdk_version (say 29), then libfoo doesn't
@@ -155,6 +147,12 @@ type ApexBundleInfo struct {
var ApexBundleInfoProvider = blueprint.NewMutatorProvider[ApexBundleInfo]("apex_mutate")
+var PlatformAvailabilityInfoProvider = blueprint.NewMutatorProvider[PlatformAvailabilityInfo]("mark_platform_availability")
+
+type PlatformAvailabilityInfo struct {
+ NotAvailableToPlatform bool
+}
+
// DepInSameApexChecker defines an interface that should be used to determine whether a given dependency
// should be considered as part of the same APEX as the current module or not.
type DepInSameApexChecker interface {
@@ -188,7 +186,7 @@ type DepInSameApexInfo struct {
var DepInSameApexInfoProvider = blueprint.NewMutatorProvider[DepInSameApexInfo]("apex_unique")
-func IsDepInSameApex(ctx BaseModuleContext, module, dep Module) bool {
+func IsDepInSameApex(ctx BaseModuleContext, module, dep ModuleOrProxy) bool {
depTag := ctx.OtherModuleDependencyTag(dep)
if _, ok := depTag.(ExcludeFromApexContentsTag); ok {
// The tag defines a dependency that never requires the child module to be part of the same
@@ -273,15 +271,6 @@ type ApexModule interface {
// Returns false by default.
AlwaysRequiresPlatformApexVariant() bool
- // Returns true if this module is not available to platform (i.e. apex_available property
- // doesn't have "//apex_available:platform"), or shouldn't be available to platform, which
- // is the case when this module depends on other module that isn't available to platform.
- NotAvailableForPlatform() bool
-
- // Marks that this module is not available to platform. Set by the
- // check-platform-availability mutator in the apex package.
- SetNotAvailableForPlatform()
-
// Returns the min sdk version that the module supports, .
MinSdkVersionSupported(ctx BaseModuleContext) ApiLevel
@@ -305,9 +294,6 @@ type ApexProperties struct {
// Default is ["//apex_available:platform"].
Apex_available []string
- // See ApexModule.NotAvailableForPlatform()
- NotAvailableForPlatform bool `blueprint:"mutated"`
-
// See ApexModule.UniqueApexVariants()
UniqueApexVariationsForDeps bool `blueprint:"mutated"`
}
@@ -389,7 +375,9 @@ func (m *ApexModuleBase) ApexTransitionMutatorMutate(ctx BottomUpMutatorContext,
ApexAvailableFor: module.ApexAvailableFor(),
})
}
- if platformVariation && !ctx.Host() && !module.AvailableFor(AvailableToPlatform) && module.NotAvailableForPlatform() {
+
+ platformAvailabilityInfo, _ := ModuleProvider(ctx, PlatformAvailabilityInfoProvider)
+ if platformVariation && !ctx.Host() && !module.AvailableFor(AvailableToPlatform) && platformAvailabilityInfo.NotAvailableToPlatform {
// Do not install the module for platform, but still allow it to output
// uninstallable AndroidMk entries in certain cases when they have side
// effects. TODO(jiyong): move this routine to somewhere else
@@ -524,10 +512,6 @@ func CheckAvailableForApex(what string, apex_available []string) bool {
if strings.HasSuffix(apex_name, ".*") && strings.HasPrefix(what, strings.TrimSuffix(apex_name, "*")) {
return true
}
- // TODO b/383863941: Remove once legacy name is no longer used
- if (apex_name == "com.android.btservices" && what == "com.android.bt") || (apex_name == "com.android.bt" && what == "com.android.btservices") {
- return true
- }
}
return false
}
@@ -542,16 +526,6 @@ func (m *ApexModuleBase) AlwaysRequiresPlatformApexVariant() bool {
return false
}
-// Implements ApexModule
-func (m *ApexModuleBase) NotAvailableForPlatform() bool {
- return m.ApexProperties.NotAvailableForPlatform
-}
-
-// Implements ApexModule
-func (m *ApexModuleBase) SetNotAvailableForPlatform() {
- m.ApexProperties.NotAvailableForPlatform = true
-}
-
// This function makes sure that the apex_available property is valid
func (m *ApexModuleBase) checkApexAvailableProperty(mctx BaseModuleContext) {
for _, n := range m.ApexProperties.Apex_available {
@@ -653,6 +627,14 @@ type ApexBundleDepsData struct {
var ApexBundleDepsDataProvider = blueprint.NewProvider[ApexBundleDepsData]()
+// ApexBundleTypeInfo is used to identify the module is a apexBundle module.
+type ApexBundleTypeInfo struct {
+ Pem Path
+ Key Path
+}
+
+var ApexBundleTypeInfoProvider = blueprint.NewProvider[ApexBundleTypeInfo]()
+
func (d *ApexBundleDepsInfo) FlatListPath() Path {
return d.flatListPath
}
@@ -764,7 +746,7 @@ type MinSdkVersionFromValueContext interface {
// error if not. No default implementation is provided for this method. A module type
// implementing this interface should provide an implementation. A module supports an sdk
// version when the module's min_sdk_version is equal to or less than the given sdk version.
-func ShouldSupportSdkVersion(ctx BaseModuleContext, module Module, sdkVersion ApiLevel) error {
+func ShouldSupportSdkVersion(ctx BaseModuleContext, module ModuleOrProxy, sdkVersion ApiLevel) error {
info, ok := OtherModuleProvider(ctx, module, CommonModuleInfoProvider)
if !ok || info.MinSdkVersionSupported.IsNone() {
return fmt.Errorf("min_sdk_version is not specified")
@@ -806,10 +788,10 @@ type ApexExportsInfo struct {
LibraryNameToDexJarPathOnHost map[string]Path
}
-var PrebuiltInfoProvider = blueprint.NewProvider[PrebuiltInfo]()
+var PrebuiltJsonInfoProvider = blueprint.NewProvider[PrebuiltJsonInfo]()
// contents of prebuilt_info.json
-type PrebuiltInfo struct {
+type PrebuiltJsonInfo struct {
// Name of the apex, without the prebuilt_ prefix
Name string