From 2af52380be107029ac4d8fbc25c34669fbfce536 Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Mon, 4 May 2020 15:32:08 +0100 Subject: [PATCH] Fix snapshot of a host/device cc_library with stubs Adds a test that fails with unknown property android.stubs.versions and then fixes that by marking the field from which that property is created with 'ignored-on-host' and implemented the isHostVariant on *osTypeSpecificInfo. Bug: 155628860 Test: m nothing Change-Id: I167b47a1374f541aa09d7e045972d740f1d9009c --- cc/library_sdk_member.go | 6 ++- sdk/cc_sdk_test.go | 83 ++++++++++++++++++++++++++++++++++++++++ sdk/update.go | 7 ++++ 3 files changed, 95 insertions(+), 1 deletion(-) diff --git a/cc/library_sdk_member.go b/cc/library_sdk_member.go index 730012c5b..a7a1de251 100644 --- a/cc/library_sdk_member.go +++ b/cc/library_sdk_member.go @@ -342,7 +342,11 @@ type nativeLibInfoProperties struct { // The specific stubs version for the lib variant, or empty string if stubs // are not in use. - StubsVersion string + // + // Marked 'ignored-on-host' as the StubsVersion() from which this is initialized is + // not set on host and the stubs.versions property which this is written to is does + // not vary by arch so cannot be android specific. + StubsVersion string `sdk:"ignored-on-host"` // outputFile is not exported as it is always arch specific. outputFile android.Path diff --git a/sdk/cc_sdk_test.go b/sdk/cc_sdk_test.go index 733f7ac22..b77447aea 100644 --- a/sdk/cc_sdk_test.go +++ b/sdk/cc_sdk_test.go @@ -1805,3 +1805,86 @@ sdk_snapshot { } `)) } + +func TestDeviceAndHostSnapshotWithStubsLibrary(t *testing.T) { + result := testSdkWithCc(t, ` + sdk { + name: "mysdk", + host_supported: true, + native_shared_libs: ["stubslib"], + } + + cc_library { + name: "internaldep", + host_supported: true, + } + + cc_library { + name: "stubslib", + host_supported: true, + shared_libs: ["internaldep"], + stubs: { + symbol_file: "some/where/stubslib.map.txt", + versions: ["1", "2", "3"], + }, + } + `) + + result.CheckSnapshot("mysdk", "", + checkAndroidBpContents(` +// This is auto-generated. DO NOT EDIT. + +cc_prebuilt_library_shared { + name: "mysdk_stubslib@current", + sdk_member_name: "stubslib", + host_supported: true, + installable: false, + stubs: { + versions: ["3"], + }, + target: { + android_arm64: { + srcs: ["android/arm64/lib/stubslib.so"], + }, + android_arm: { + srcs: ["android/arm/lib/stubslib.so"], + }, + linux_glibc_x86_64: { + srcs: ["linux_glibc/x86_64/lib/stubslib.so"], + }, + linux_glibc_x86: { + srcs: ["linux_glibc/x86/lib/stubslib.so"], + }, + }, +} + +cc_prebuilt_library_shared { + name: "stubslib", + prefer: false, + host_supported: true, + stubs: { + versions: ["3"], + }, + target: { + android_arm64: { + srcs: ["android/arm64/lib/stubslib.so"], + }, + android_arm: { + srcs: ["android/arm/lib/stubslib.so"], + }, + linux_glibc_x86_64: { + srcs: ["linux_glibc/x86_64/lib/stubslib.so"], + }, + linux_glibc_x86: { + srcs: ["linux_glibc/x86/lib/stubslib.so"], + }, + }, +} + +sdk_snapshot { + name: "mysdk@current", + host_supported: true, + native_shared_libs: ["mysdk_stubslib@current"], +} +`)) +} diff --git a/sdk/update.go b/sdk/update.go index 991428eec..d43a42d6e 100644 --- a/sdk/update.go +++ b/sdk/update.go @@ -982,6 +982,13 @@ func (osInfo *osTypeSpecificInfo) addToPropertySet(ctx *memberContext, bpModule } } +func (osInfo *osTypeSpecificInfo) isHostVariant() bool { + osClass := osInfo.osType.Class + return osClass == android.Host || osClass == android.HostCross +} + +var _ isHostVariant = (*osTypeSpecificInfo)(nil) + func (osInfo *osTypeSpecificInfo) String() string { return fmt.Sprintf("OsType{%s}", osInfo.osType) }