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

Commit 9357f4ae authored by Justin Yun's avatar Justin Yun
Browse files

VNDK lib must not have `product_specific: true`

VNDK libs are system defined libraries. They must not be product
specific. Adding sanity check and a test to prevent setting
`product_specific: true` on VNDK libs.

Bug: 119575107
Test: building a vndk lib with 'product_specific: true,'
      must return error.

Change-Id: Ie0326540a692573f076ee08baf5d2e2f09d1007e
parent 314d8c14
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1757,6 +1757,7 @@ func imageMutator(mctx android.BottomUpMutatorContext) {

	// Sanity check
	vendorSpecific := mctx.SocSpecific() || mctx.DeviceSpecific()
	productSpecific := mctx.ProductSpecific()

	if m.VendorProperties.Vendor_available != nil && vendorSpecific {
		mctx.PropertyErrorf("vendor_available",
@@ -1766,6 +1767,11 @@ func imageMutator(mctx android.BottomUpMutatorContext) {

	if vndkdep := m.vndkdep; vndkdep != nil {
		if vndkdep.isVndk() {
			if productSpecific {
				mctx.PropertyErrorf("product_specific",
					"product_specific must not be true when `vndk: {enabled: true}`")
				return
			}
			if vendorSpecific {
				if !vndkdep.isVndkExt() {
					mctx.PropertyErrorf("vndk",
+15 −0
Original line number Diff line number Diff line
@@ -492,6 +492,21 @@ func TestVndkDepError(t *testing.T) {
	`)
}

func TestVndkMustNotBeProductSpecific(t *testing.T) {
	// Check whether an error is emitted when a vndk lib has 'product_specific: true'.
	testCcError(t, "product_specific must not be true when `vndk: {enabled: true}`", `
		cc_library {
			name: "libvndk",
			product_specific: true,  // Cause error
			vendor_available: true,
			vndk: {
				enabled: true,
			},
			nocrt: true,
		}
	`)
}

func TestVndkExt(t *testing.T) {
	// This test checks the VNDK-Ext properties.
	ctx := testCc(t, `