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

Commit 490a6f9b authored by Chan Wang's avatar Chan Wang
Browse files

Temporarily bypass apex availability check for /product apexes with a

specific prefix

Bug: 361501627

Test: m nothing --no-skip-soong-tests
Change-Id: Ifb855bed3514d27ecccddb5cd986537c628683b1
parent 88a8daf8
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -2785,6 +2785,12 @@ func (a *apexBundle) checkApexAvailability(ctx android.ModuleContext) {
		return
	}

	// Temporarily bypass /product APEXes with a specific prefix.
	// TODO: b/352818241 - Remove this after APEX availability is enforced for /product APEXes.
	if a.ProductSpecific() && strings.HasPrefix(a.ApexVariationName(), "com.sdv.") {
		return
	}

	// Coverage build adds additional dependencies for the coverage-only runtime libraries.
	// Requiring them and their transitive depencies with apex_available is not right
	// because they just add noise.
+166 −0
Original line number Diff line number Diff line
@@ -6216,6 +6216,87 @@ func TestApexAvailable_DirectDep(t *testing.T) {
		system_shared_libs: [],
		apex_available: ["otherapex"],
	}`)

	// 'apex_available' check is bypassed for /product apex with a specific prefix.
	// TODO: b/352818241 - Remove below two cases after APEX availability is enforced for /product APEXes.
	testApex(t, `
	apex {
		name: "com.sdv.myapex",
		key: "myapex.key",
		native_shared_libs: ["libfoo"],
		updatable: false,
		product_specific: true,
	}

	apex_key {
		name: "myapex.key",
		public_key: "testkey.avbpubkey",
		private_key: "testkey.pem",
	}

	apex {
		name: "com.any.otherapex",
		key: "otherapex.key",
		native_shared_libs: ["libfoo"],
		updatable: false,
	}

	apex_key {
		name: "otherapex.key",
		public_key: "testkey.avbpubkey",
		private_key: "testkey.pem",
	}

	cc_library {
		name: "libfoo",
		stl: "none",
		system_shared_libs: [],
		apex_available: ["com.any.otherapex"],
		product_specific: true,
	}`,
		android.FixtureMergeMockFs(android.MockFS{
			"system/sepolicy/apex/com.sdv.myapex-file_contexts":    nil,
			"system/sepolicy/apex/com.any.otherapex-file_contexts": nil,
		}))

	// 'apex_available' check is not bypassed for non-product apex with a specific prefix.
	testApexError(t, "requires \"libfoo\" that doesn't list the APEX under 'apex_available'.", `
	apex {
		name: "com.sdv.myapex",
		key: "myapex.key",
		native_shared_libs: ["libfoo"],
		updatable: false,
	}

	apex_key {
		name: "myapex.key",
		public_key: "testkey.avbpubkey",
		private_key: "testkey.pem",
	}

	apex {
		name: "com.any.otherapex",
		key: "otherapex.key",
		native_shared_libs: ["libfoo"],
		updatable: false,
	}

	apex_key {
		name: "otherapex.key",
		public_key: "testkey.avbpubkey",
		private_key: "testkey.pem",
	}

	cc_library {
		name: "libfoo",
		stl: "none",
		system_shared_libs: [],
		apex_available: ["com.any.otherapex"],
	}`,
		android.FixtureMergeMockFs(android.MockFS{
			"system/sepolicy/apex/com.sdv.myapex-file_contexts":    nil,
			"system/sepolicy/apex/com.any.otherapex-file_contexts": nil,
		}))
}

func TestApexAvailable_IndirectDep(t *testing.T) {
@@ -6261,6 +6342,91 @@ func TestApexAvailable_IndirectDep(t *testing.T) {
		stl: "none",
		system_shared_libs: [],
	}`)

	// 'apex_available' check is bypassed for /product apex with a specific prefix.
	// TODO: b/352818241 - Remove below two cases after APEX availability is enforced for /product APEXes.
	testApex(t, `
		apex {
			name: "com.sdv.myapex",
			key: "myapex.key",
			native_shared_libs: ["libfoo"],
			updatable: false,
			product_specific: true,
		}

		apex_key {
			name: "myapex.key",
			public_key: "testkey.avbpubkey",
			private_key: "testkey.pem",
		}

		cc_library {
			name: "libfoo",
			stl: "none",
			shared_libs: ["libbar"],
			system_shared_libs: [],
			apex_available: ["com.sdv.myapex"],
			product_specific: true,
		}

		cc_library {
			name: "libbar",
			stl: "none",
			shared_libs: ["libbaz"],
			system_shared_libs: [],
			apex_available: ["com.sdv.myapex"],
			product_specific: true,
		}

		cc_library {
			name: "libbaz",
			stl: "none",
			system_shared_libs: [],
			product_specific: true,
		}`,
		android.FixtureMergeMockFs(android.MockFS{
			"system/sepolicy/apex/com.sdv.myapex-file_contexts": nil,
		}))

	// 'apex_available' check is not bypassed for non-product apex with a specific prefix.
	testApexError(t, `requires "libbaz" that doesn't list the APEX under 'apex_available'.`, `
		apex {
			name: "com.sdv.myapex",
			key: "myapex.key",
			native_shared_libs: ["libfoo"],
			updatable: false,
		}

		apex_key {
			name: "myapex.key",
			public_key: "testkey.avbpubkey",
			private_key: "testkey.pem",
		}

		cc_library {
			name: "libfoo",
			stl: "none",
			shared_libs: ["libbar"],
			system_shared_libs: [],
			apex_available: ["com.sdv.myapex"],
		}

		cc_library {
			name: "libbar",
			stl: "none",
			shared_libs: ["libbaz"],
			system_shared_libs: [],
			apex_available: ["com.sdv.myapex"],
		}

		cc_library {
			name: "libbaz",
			stl: "none",
			system_shared_libs: [],
		}`,
		android.FixtureMergeMockFs(android.MockFS{
			"system/sepolicy/apex/com.sdv.myapex-file_contexts": nil,
		}))
}

func TestApexAvailable_IndirectStaticDep(t *testing.T) {