From 4c4da0688c4a2e05bd1db6007556a8df19dd8185 Mon Sep 17 00:00:00 2001 From: Jooyung Han Date: Wed, 23 Jun 2021 10:23:16 +0900 Subject: [PATCH] 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 --- apex/apex_test.go | 30 ++++++++++++++++++++++++++++++ java/base.go | 8 ++------ java/java.go | 8 ++------ 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/apex/apex_test.go b/apex/apex_test.go index 983b820c8..7107ea387 100644 --- a/apex/apex_test.go +++ b/apex/apex_test.go @@ -1695,6 +1695,36 @@ func TestApexMinSdkVersion_SupportsCodeNames(t *testing.T) { 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) { ctx := testApex(t, ` apex { diff --git a/java/base.go b/java/base.go index a7cc58e33..f628cdf48 100644 --- a/java/base.go +++ b/java/base.go @@ -1513,12 +1513,8 @@ func (j *Module) ShouldSupportSdkVersion(ctx android.BaseModuleContext, if sdkSpec.Kind == android.SdkCore { return nil } - ver, err := sdkSpec.EffectiveVersion(ctx) - if err != nil { - return err - } - if ver.GreaterThan(sdkVersion) { - return fmt.Errorf("newer SDK(%v)", ver) + if sdkSpec.ApiLevel.GreaterThan(sdkVersion) { + return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel) } return nil } diff --git a/java/java.go b/java/java.go index ae8adf277..87a813459 100644 --- a/java/java.go +++ b/java/java.go @@ -1416,12 +1416,8 @@ func (j *Import) ShouldSupportSdkVersion(ctx android.BaseModuleContext, if sdkSpec.Kind == android.SdkCore { return nil } - ver, err := sdkSpec.EffectiveVersion(ctx) - if err != nil { - return err - } - if ver.GreaterThan(sdkVersion) { - return fmt.Errorf("newer SDK(%v)", ver) + if sdkSpec.ApiLevel.GreaterThan(sdkVersion) { + return fmt.Errorf("newer SDK(%v)", sdkSpec.ApiLevel) } return nil }