summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Paul Duffin <paulduffin@google.com> 2020-05-04 15:32:08 +0100
committer Paul Duffin <paulduffin@google.com> 2020-05-07 18:35:11 +0100
commit2af52380be107029ac4d8fbc25c34669fbfce536 (patch)
treef9c4773024ec8575a5a347f7dfc26bea0e15bbe1
parent12f67bcf42b0bfcd87478f0c2c1e7c6d0def7989 (diff)
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
-rw-r--r--cc/library_sdk_member.go6
-rw-r--r--sdk/cc_sdk_test.go83
-rw-r--r--sdk/update.go7
3 files changed, 95 insertions, 1 deletions
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)
}