fix: comparison between min_sdk_version

Added test demonstrates the error case. The bug was that java modules'
ShouldSupportSdkVersion() converts min_sdk_version into effective
version before comparison, which discards "preview" version into
"future" version. That caused a weird case like rejecting with error
"should support "S"" even when it is set to "S".

Bug: n/a
Test: m nothing
Change-Id: Ieb53f0097b2969a8535778b1286dbfa0d4895ad4
This commit is contained in:
Jooyung Han
2021-06-23 10:23:16 +09:00
parent e7d190866a
commit 4c4da0688c
3 changed files with 34 additions and 12 deletions

View File

@@ -1695,6 +1695,36 @@ func TestApexMinSdkVersion_SupportsCodeNames(t *testing.T) {
expectNoLink("libx", "shared_apex10000", "libz", "shared") expectNoLink("libx", "shared_apex10000", "libz", "shared")
} }
func TestApexMinSdkVersion_SupportsCodeNames_JavaLibs(t *testing.T) {
testApex(t, `
apex {
name: "myapex",
key: "myapex.key",
java_libs: ["libx"],
min_sdk_version: "S",
}
apex_key {
name: "myapex.key",
public_key: "testkey.avbpubkey",
private_key: "testkey.pem",
}
java_library {
name: "libx",
srcs: ["a.java"],
apex_available: [ "myapex" ],
sdk_version: "current",
min_sdk_version: "S", // should be okay
}
`,
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
variables.Platform_version_active_codenames = []string{"S"}
variables.Platform_sdk_codename = proptools.StringPtr("S")
}),
)
}
func TestApexMinSdkVersion_DefaultsToLatest(t *testing.T) { func TestApexMinSdkVersion_DefaultsToLatest(t *testing.T) {
ctx := testApex(t, ` ctx := testApex(t, `
apex { apex {

View File

@@ -1513,12 +1513,8 @@ func (j *Module) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
if sdkSpec.Kind == android.SdkCore { if sdkSpec.Kind == android.SdkCore {
return nil return nil
} }
ver, err := sdkSpec.EffectiveVersion(ctx) if sdkSpec.ApiLevel.GreaterThan(sdkVersion) {
if err != nil { return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel)
return err
}
if ver.GreaterThan(sdkVersion) {
return fmt.Errorf("newer SDK(%v)", ver)
} }
return nil return nil
} }

View File

@@ -1416,12 +1416,8 @@ func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext,
if sdkSpec.Kind == android.SdkCore { if sdkSpec.Kind == android.SdkCore {
return nil return nil
} }
ver, err := sdkSpec.EffectiveVersion(ctx) if sdkSpec.ApiLevel.GreaterThan(sdkVersion) {
if err != nil { return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel)
return err
}
if ver.GreaterThan(sdkVersion) {
return fmt.Errorf("newer SDK(%v)", ver)
} }
return nil return nil
} }