Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2af52380 authored by Paul Duffin's avatar Paul Duffin
Browse files

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
parent 12f67bcf
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -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
+83 −0
Original line number Diff line number Diff line
@@ -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"],
}
`))
}
+7 −0
Original line number Diff line number Diff line
@@ -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)
}