Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56534df1 authored by Colin Cross's avatar Colin Cross
Browse files

Use MinApiForArch to set minSdkVersion for apexes

Apexes for new architectures have to increase their minSdkVersion
to the minimum supported version for the architecture.

Bug: 250918230
Test: lunch aosp_riscv64-userdebug && m ALLOW_MISSING_DEPENDENCIES=true nothing
Change-Id: I49220cbec628f1508709741dc56b62aaac7786d9
parent 31d89b4e
Loading
Loading
Loading
Loading
+13 −6
Original line number Diff line number Diff line
@@ -2731,16 +2731,23 @@ func (a *apexBundle) minSdkVersionValue(ctx android.EarlyModuleContext) string {
	// Only override the minSdkVersion value on Apexes which already specify
	// a min_sdk_version (it's optional for non-updatable apexes), and that its
	// min_sdk_version value is lower than the one to override with.
	minApiLevel := minSdkVersionFromValue(ctx, proptools.String(a.properties.Min_sdk_version))
	if minApiLevel.IsNone() {
		return ""
	}

	archMinApiLevel := cc.MinApiForArch(ctx, a.MultiTargets()[0].Arch.ArchType)
	if !archMinApiLevel.IsNone() && archMinApiLevel.CompareTo(minApiLevel) > 0 {
		minApiLevel = archMinApiLevel
	}

	overrideMinSdkValue := ctx.DeviceConfig().ApexGlobalMinSdkVersionOverride()
	overrideApiLevel := minSdkVersionFromValue(ctx, overrideMinSdkValue)
	originalMinApiLevel := minSdkVersionFromValue(ctx, proptools.String(a.properties.Min_sdk_version))
	isMinSdkSet := a.properties.Min_sdk_version != nil
	isOverrideValueHigher := overrideApiLevel.CompareTo(originalMinApiLevel) > 0
	if overrideMinSdkValue != "" && isMinSdkSet && isOverrideValueHigher {
		return overrideMinSdkValue
	if !overrideApiLevel.IsNone() && overrideApiLevel.CompareTo(minApiLevel) > 0 {
		minApiLevel = overrideApiLevel
	}

	return proptools.String(a.properties.Min_sdk_version)
	return minApiLevel.String()
}

// Returns apex's min_sdk_version SdkSpec, honoring overrides
+2 −2
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import (
	"android/soong/android"
)

func minApiForArch(ctx android.BaseModuleContext,
func MinApiForArch(ctx android.EarlyModuleContext,
	arch android.ArchType) android.ApiLevel {

	switch arch {
@@ -38,7 +38,7 @@ func minApiForArch(ctx android.BaseModuleContext,
func nativeApiLevelFromUser(ctx android.BaseModuleContext,
	raw string) (android.ApiLevel, error) {

	min := minApiForArch(ctx, ctx.Arch().ArchType)
	min := MinApiForArch(ctx, ctx.Arch().ArchType)
	if raw == "minimum" {
		return min, nil
	}