Skip to content

Commit

Permalink
Merge "Temporarily bypass apex availability check for /product apexes…
Browse files Browse the repository at this point in the history
… with a specific prefix" into main
  • Loading branch information
candysonya authored and Gerrit Code Review committed Sep 23, 2024
2 parents 5c12834 + 490a6f9 commit 3a9a37c
Show file tree
Hide file tree
Showing 2 changed files with 172 additions and 0 deletions.
6 changes: 6 additions & 0 deletions apex/apex.go
Original file line number Diff line number Diff line change
Expand Up @@ -2757,6 +2757,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.
Expand Down
166 changes: 166 additions & 0 deletions apex/apex_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6013,6 +6013,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) {
Expand Down Expand Up @@ -6058,6 +6139,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) {
Expand Down

0 comments on commit 3a9a37c

Please sign in to comment.