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

Commit 7fa982c0 authored by Spandan Das's avatar Spandan Das
Browse files

Update usages of min_sdk_version that relies on (kind+level)

The type of min_sdk_version is being migrated from
android.SdkSpec(kind+level) to android.ApiLevel(level). This affects
`ShouldSupportSdkVersion` for java modules. This function skips the
check for modules compiling against `core`, and that requires access to
SdkVersion and not MinSdkVersion after the migration.

Skip the check explicitly using SdkVersion.

Test: go test ./java
Test: No change in ninja file
Bug: 208456999
Change-Id: I14eca4f8e8c5d7477ded00c4fe54097323fab4a2
parent 50885c05
Loading
Loading
Loading
Loading
+28 −0
Original line number Original line Diff line number Diff line
@@ -2128,6 +2128,34 @@ func TestApexMinSdkVersion_ErrorIfIncompatibleVersion(t *testing.T) {
			min_sdk_version: "30",
			min_sdk_version: "30",
		}
		}
	`)
	`)

	// Skip check for modules compiling against core API surface
	testApex(t, `
		apex {
			name: "myapex",
			key: "myapex.key",
			java_libs: ["libfoo"],
			min_sdk_version: "29",
		}

		apex_key {
			name: "myapex.key",
			public_key: "testkey.avbpubkey",
			private_key: "testkey.pem",
		}

		java_library {
			name: "libfoo",
			srcs: ["Foo.java"],
			apex_available: [
				"myapex",
			],
			// Compile against core API surface
			sdk_version: "core_current",
			min_sdk_version: "30",
		}
	`)

}
}


func TestApexMinSdkVersion_Okay(t *testing.T) {
func TestApexMinSdkVersion_Okay(t *testing.T) {
+8 −5
Original line number Original line Diff line number Diff line
@@ -1845,15 +1845,18 @@ func (j *Module) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu


// Implements android.ApexModule
// Implements android.ApexModule
func (j *Module) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error {
func (j *Module) ShouldSupportSdkVersion(ctx android.BaseModuleContext, sdkVersion android.ApiLevel) error {
	sdkSpec := j.MinSdkVersion(ctx)
	sdkVersionSpec := j.SdkVersion(ctx)
	if !sdkSpec.Specified() {
	minSdkVersionSpec := j.MinSdkVersion(ctx)
	if !minSdkVersionSpec.Specified() {
		return fmt.Errorf("min_sdk_version is not specified")
		return fmt.Errorf("min_sdk_version is not specified")
	}
	}
	if sdkSpec.Kind == android.SdkCore {
	// If the module is compiling against core (via sdk_version), skip comparison check.
	if sdkVersionSpec.Kind == android.SdkCore {
		return nil
		return nil
	}
	}
	if sdkSpec.ApiLevel.GreaterThan(sdkVersion) {
	minSdkVersion := minSdkVersionSpec.ApiLevel
		return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel)
	if minSdkVersion.GreaterThan(sdkVersion) {
		return fmt.Errorf("newer SDK(%v)", minSdkVersion)
	}
	}
	return nil
	return nil
}
}
+8 −5
Original line number Original line Diff line number Diff line
@@ -2166,15 +2166,18 @@ func (j *Import) DepIsInSameApex(ctx android.BaseModuleContext, dep android.Modu
// Implements android.ApexModule
// Implements android.ApexModule
func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
	sdkVersion android.ApiLevel) error {
	sdkVersion android.ApiLevel) error {
	sdkSpec := j.MinSdkVersion(ctx)
	sdkVersionSpec := j.SdkVersion(ctx)
	if !sdkSpec.Specified() {
	minSdkVersionSpec := j.MinSdkVersion(ctx)
	if !minSdkVersionSpec.Specified() {
		return fmt.Errorf("min_sdk_version is not specified")
		return fmt.Errorf("min_sdk_version is not specified")
	}
	}
	if sdkSpec.Kind == android.SdkCore {
	// If the module is compiling against core (via sdk_version), skip comparison check.
	if sdkVersionSpec.Kind == android.SdkCore {
		return nil
		return nil
	}
	}
	if sdkSpec.ApiLevel.GreaterThan(sdkVersion) {
	minSdkVersion := minSdkVersionSpec.ApiLevel
		return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel)
	if minSdkVersion.GreaterThan(sdkVersion) {
		return fmt.Errorf("newer SDK(%v)", minSdkVersion)
	}
	}
	return nil
	return nil
}
}