Add "updatable" property to ApexModule interface.
For a given variant of a module that implements ApexModule interface, the "updatable" property tests if this variant comes from an updatable apex. For platform variants it is always false. Test: lunch aosp_walleye-userdebug && m nothing Bug: 138994281 Change-Id: I2d4c54fb397e29dc9b3203be7fb17be4536529f7
This commit is contained in:
@@ -4276,6 +4276,13 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg, bp string, transformDe
|
||||
"system/sepolicy/apex/some-updatable-apex-file_contexts",
|
||||
],
|
||||
}
|
||||
|
||||
filegroup {
|
||||
name: "some-non-updatable-apex-file_contexts",
|
||||
srcs: [
|
||||
"system/sepolicy/apex/some-non-updatable-apex-file_contexts",
|
||||
],
|
||||
}
|
||||
`
|
||||
bp += cc.GatherRequiredDepsForTest(android.Android)
|
||||
bp += java.GatherRequiredDepsForTest()
|
||||
@@ -4288,6 +4295,7 @@ func testNoUpdatableJarsInBootImage(t *testing.T, errmsg, bp string, transformDe
|
||||
"apex_manifest.json": nil,
|
||||
"AndroidManifest.xml": nil,
|
||||
"system/sepolicy/apex/some-updatable-apex-file_contexts": nil,
|
||||
"system/sepolicy/apex/some-non-updatable-apex-file_contexts": nil,
|
||||
"system/sepolicy/apex/com.android.art.something-file_contexts": nil,
|
||||
"framework/aidl/a.aidl": nil,
|
||||
}
|
||||
@@ -4341,6 +4349,14 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "some-non-updatable-apex-lib",
|
||||
srcs: ["a.java"],
|
||||
apex_available: [
|
||||
"some-non-updatable-apex",
|
||||
],
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "some-platform-lib",
|
||||
srcs: ["a.java"],
|
||||
@@ -4360,16 +4376,28 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
name: "some-updatable-apex",
|
||||
key: "some-updatable-apex.key",
|
||||
java_libs: ["some-updatable-apex-lib"],
|
||||
updatable: true,
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "some-non-updatable-apex",
|
||||
key: "some-non-updatable-apex.key",
|
||||
java_libs: ["some-non-updatable-apex-lib"],
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "some-updatable-apex.key",
|
||||
}
|
||||
|
||||
apex_key {
|
||||
name: "some-non-updatable-apex.key",
|
||||
}
|
||||
|
||||
apex {
|
||||
name: "com.android.art.something",
|
||||
key: "com.android.art.something.key",
|
||||
java_libs: ["some-art-lib"],
|
||||
updatable: true,
|
||||
}
|
||||
|
||||
apex_key {
|
||||
@@ -4400,6 +4428,13 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
}
|
||||
testNoUpdatableJarsInBootImage(t, error, bp, transform)
|
||||
|
||||
// non-updatable jar from some other apex in the ART boot image => error
|
||||
error = "module 'some-non-updatable-apex-lib' is not allowed in the ART boot image"
|
||||
transform = func(config *dexpreopt.GlobalConfig) {
|
||||
config.ArtApexJars = []string{"some-non-updatable-apex-lib"}
|
||||
}
|
||||
testNoUpdatableJarsInBootImage(t, error, bp, transform)
|
||||
|
||||
// updatable jar from some other apex in the framework boot image => error
|
||||
error = "module 'some-updatable-apex-lib' from updatable apex 'some-updatable-apex' is not allowed in the framework boot image"
|
||||
transform = func(config *dexpreopt.GlobalConfig) {
|
||||
@@ -4407,6 +4442,12 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
}
|
||||
testNoUpdatableJarsInBootImage(t, error, bp, transform)
|
||||
|
||||
// non-updatable jar from some other apex in the framework boot image => ok
|
||||
transform = func(config *dexpreopt.GlobalConfig) {
|
||||
config.BootJars = []string{"some-non-updatable-apex-lib"}
|
||||
}
|
||||
testNoUpdatableJarsInBootImage(t, "", bp, transform)
|
||||
|
||||
// nonexistent jar in the ART boot image => error
|
||||
error = "failed to find a dex jar path for module 'nonexistent'"
|
||||
transform = func(config *dexpreopt.GlobalConfig) {
|
||||
@@ -4422,7 +4463,7 @@ func TestNoUpdatableJarsInBootImage(t *testing.T) {
|
||||
testNoUpdatableJarsInBootImage(t, error, bp, transform)
|
||||
|
||||
// platform jar in the ART boot image => error
|
||||
error = "module 'some-platform-lib' is part of the platform and not allowed in the ART boot image"
|
||||
error = "module 'some-platform-lib' is not allowed in the ART boot image"
|
||||
transform = func(config *dexpreopt.GlobalConfig) {
|
||||
config.ArtApexJars = []string{"some-platform-lib"}
|
||||
}
|
||||
|
Reference in New Issue
Block a user