Loading sysprop/sysprop_library.go +10 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,12 @@ type syspropLibraryProperties struct { // Forwarded to cc_library.min_sdk_version Min_sdk_version *string } Java struct { // Minimum sdk version that the artifact should support when it runs as part of mainline modules(APEX). // Forwarded to java_library.min_sdk_version Min_sdk_version *string } } var ( Loading Loading @@ -403,6 +409,8 @@ type javaLibraryProperties struct { Libs []string Stem *string SyspropPublicStub string Apex_available []string Min_sdk_version *string } func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { Loading Loading @@ -508,6 +516,8 @@ func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { Sdk_version: proptools.StringPtr("core_current"), Libs: []string{javaSyspropStub}, SyspropPublicStub: publicStub, Apex_available: m.ApexProperties.Apex_available, Min_sdk_version: m.properties.Java.Min_sdk_version, }) if publicStub != "" { Loading sysprop/sysprop_test.go +105 −44 Original line number Diff line number Diff line Loading @@ -81,6 +81,51 @@ func run(t *testing.T, ctx *android.TestContext, config android.Config) { } func testConfig(env map[string]string, bp string, fs map[string][]byte) android.Config { bp += ` cc_library { name: "libbase", host_supported: true, } cc_library_headers { name: "libbase_headers", vendor_available: true, recovery_available: true, } cc_library { name: "liblog", no_libcrt: true, nocrt: true, system_shared_libs: [], recovery_available: true, host_supported: true, llndk_stubs: "liblog.llndk", } llndk_library { name: "liblog.llndk", symbol_file: "", } java_library { name: "sysprop-library-stub-platform", sdk_version: "core_current", } java_library { name: "sysprop-library-stub-vendor", soc_specific: true, sdk_version: "core_current", } java_library { name: "sysprop-library-stub-product", product_specific: true, sdk_version: "core_current", } ` bp += cc.GatherRequiredDepsForTest(android.Android) mockFS := map[string][]byte{ Loading Loading @@ -250,53 +295,10 @@ func TestSyspropLibrary(t *testing.T) { static_libs: ["sysprop-platform", "sysprop-vendor"], } cc_library { name: "libbase", host_supported: true, } cc_library_headers { name: "libbase_headers", vendor_available: true, recovery_available: true, } cc_library { name: "liblog", no_libcrt: true, nocrt: true, system_shared_libs: [], recovery_available: true, host_supported: true, llndk_stubs: "liblog.llndk", } cc_binary_host { name: "hostbin", static_libs: ["sysprop-platform"], } llndk_library { name: "liblog.llndk", symbol_file: "", } java_library { name: "sysprop-library-stub-platform", sdk_version: "core_current", } java_library { name: "sysprop-library-stub-vendor", soc_specific: true, sdk_version: "core_current", } java_library { name: "sysprop-library-stub-product", product_specific: true, sdk_version: "core_current", } `) // Check for generated cc_library Loading Loading @@ -391,3 +393,62 @@ func TestSyspropLibrary(t *testing.T) { t.Errorf("system api client should use public stub %q, got %q", w, g) } } func TestApexAvailabilityIsForwarded(t *testing.T) { ctx := test(t, ` sysprop_library { name: "sysprop-platform", apex_available: ["//apex_available:platform"], srcs: ["android/sysprop/PlatformProperties.sysprop"], api_packages: ["android.sysprop"], property_owner: "Platform", } `) expected := []string{"//apex_available:platform"} ccModule := ctx.ModuleForTests("libsysprop-platform", "android_arm64_armv8-a_shared").Module().(*cc.Module) propFromCc := ccModule.ApexProperties.Apex_available if !reflect.DeepEqual(propFromCc, expected) { t.Errorf("apex_available not forwarded to cc module. expected %#v, got %#v", expected, propFromCc) } javaModule := ctx.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.ApexProperties.Apex_available if !reflect.DeepEqual(propFromJava, expected) { t.Errorf("apex_available not forwarded to java module. expected %#v, got %#v", expected, propFromJava) } } func TestMinSdkVersionIsForwarded(t *testing.T) { ctx := test(t, ` sysprop_library { name: "sysprop-platform", srcs: ["android/sysprop/PlatformProperties.sysprop"], api_packages: ["android.sysprop"], property_owner: "Platform", cpp: { min_sdk_version: "29", }, java: { min_sdk_version: "30", }, } `) ccModule := ctx.ModuleForTests("libsysprop-platform", "android_arm64_armv8-a_shared").Module().(*cc.Module) propFromCc := proptools.String(ccModule.Properties.Min_sdk_version) if propFromCc != "29" { t.Errorf("min_sdk_version not forwarded to cc module. expected %#v, got %#v", "29", propFromCc) } javaModule := ctx.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.MinSdkVersion() if propFromJava != "30" { t.Errorf("min_sdk_version not forwarded to java module. expected %#v, got %#v", "30", propFromJava) } } Loading
sysprop/sysprop_library.go +10 −0 Original line number Diff line number Diff line Loading @@ -165,6 +165,12 @@ type syspropLibraryProperties struct { // Forwarded to cc_library.min_sdk_version Min_sdk_version *string } Java struct { // Minimum sdk version that the artifact should support when it runs as part of mainline modules(APEX). // Forwarded to java_library.min_sdk_version Min_sdk_version *string } } var ( Loading Loading @@ -403,6 +409,8 @@ type javaLibraryProperties struct { Libs []string Stem *string SyspropPublicStub string Apex_available []string Min_sdk_version *string } func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { Loading Loading @@ -508,6 +516,8 @@ func syspropLibraryHook(ctx android.LoadHookContext, m *syspropLibrary) { Sdk_version: proptools.StringPtr("core_current"), Libs: []string{javaSyspropStub}, SyspropPublicStub: publicStub, Apex_available: m.ApexProperties.Apex_available, Min_sdk_version: m.properties.Java.Min_sdk_version, }) if publicStub != "" { Loading
sysprop/sysprop_test.go +105 −44 Original line number Diff line number Diff line Loading @@ -81,6 +81,51 @@ func run(t *testing.T, ctx *android.TestContext, config android.Config) { } func testConfig(env map[string]string, bp string, fs map[string][]byte) android.Config { bp += ` cc_library { name: "libbase", host_supported: true, } cc_library_headers { name: "libbase_headers", vendor_available: true, recovery_available: true, } cc_library { name: "liblog", no_libcrt: true, nocrt: true, system_shared_libs: [], recovery_available: true, host_supported: true, llndk_stubs: "liblog.llndk", } llndk_library { name: "liblog.llndk", symbol_file: "", } java_library { name: "sysprop-library-stub-platform", sdk_version: "core_current", } java_library { name: "sysprop-library-stub-vendor", soc_specific: true, sdk_version: "core_current", } java_library { name: "sysprop-library-stub-product", product_specific: true, sdk_version: "core_current", } ` bp += cc.GatherRequiredDepsForTest(android.Android) mockFS := map[string][]byte{ Loading Loading @@ -250,53 +295,10 @@ func TestSyspropLibrary(t *testing.T) { static_libs: ["sysprop-platform", "sysprop-vendor"], } cc_library { name: "libbase", host_supported: true, } cc_library_headers { name: "libbase_headers", vendor_available: true, recovery_available: true, } cc_library { name: "liblog", no_libcrt: true, nocrt: true, system_shared_libs: [], recovery_available: true, host_supported: true, llndk_stubs: "liblog.llndk", } cc_binary_host { name: "hostbin", static_libs: ["sysprop-platform"], } llndk_library { name: "liblog.llndk", symbol_file: "", } java_library { name: "sysprop-library-stub-platform", sdk_version: "core_current", } java_library { name: "sysprop-library-stub-vendor", soc_specific: true, sdk_version: "core_current", } java_library { name: "sysprop-library-stub-product", product_specific: true, sdk_version: "core_current", } `) // Check for generated cc_library Loading Loading @@ -391,3 +393,62 @@ func TestSyspropLibrary(t *testing.T) { t.Errorf("system api client should use public stub %q, got %q", w, g) } } func TestApexAvailabilityIsForwarded(t *testing.T) { ctx := test(t, ` sysprop_library { name: "sysprop-platform", apex_available: ["//apex_available:platform"], srcs: ["android/sysprop/PlatformProperties.sysprop"], api_packages: ["android.sysprop"], property_owner: "Platform", } `) expected := []string{"//apex_available:platform"} ccModule := ctx.ModuleForTests("libsysprop-platform", "android_arm64_armv8-a_shared").Module().(*cc.Module) propFromCc := ccModule.ApexProperties.Apex_available if !reflect.DeepEqual(propFromCc, expected) { t.Errorf("apex_available not forwarded to cc module. expected %#v, got %#v", expected, propFromCc) } javaModule := ctx.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.ApexProperties.Apex_available if !reflect.DeepEqual(propFromJava, expected) { t.Errorf("apex_available not forwarded to java module. expected %#v, got %#v", expected, propFromJava) } } func TestMinSdkVersionIsForwarded(t *testing.T) { ctx := test(t, ` sysprop_library { name: "sysprop-platform", srcs: ["android/sysprop/PlatformProperties.sysprop"], api_packages: ["android.sysprop"], property_owner: "Platform", cpp: { min_sdk_version: "29", }, java: { min_sdk_version: "30", }, } `) ccModule := ctx.ModuleForTests("libsysprop-platform", "android_arm64_armv8-a_shared").Module().(*cc.Module) propFromCc := proptools.String(ccModule.Properties.Min_sdk_version) if propFromCc != "29" { t.Errorf("min_sdk_version not forwarded to cc module. expected %#v, got %#v", "29", propFromCc) } javaModule := ctx.ModuleForTests("sysprop-platform", "android_common").Module().(*java.Library) propFromJava := javaModule.MinSdkVersion() if propFromJava != "30" { t.Errorf("min_sdk_version not forwarded to java module. expected %#v, got %#v", "30", propFromJava) } }