Merge "Ensure sscp jars get copied to $OUT/soong/system_server_dexjars" into main am: 9d4ad66a93
am: a3c8609972
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2923733 Change-Id: I2116caee0a2778574bf49d5f521feda6e4c99693 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -11545,6 +11545,17 @@ func TestBootDexJarsMultipleApexPrebuilts(t *testing.T) {
|
||||
android.AssertStringMatches(t, "Could not find the correct boot dex jar in monolithic hiddenapi flags generation command", monolithicHiddenapiFlagsCmd, "--boot-dex="+expectedBootJar)
|
||||
}
|
||||
|
||||
// Check that system server jars is copied to out/soong/system_server_dexjars. This hardcoded location is used by dexpreopt
|
||||
checkSystemServerJarOnHost := func(t *testing.T, ctx *android.TestContext, m, libName, expectedSystemServerJarPath string) {
|
||||
variation := "android_common_com.android.foo"
|
||||
if m == "com.android.foo" {
|
||||
m = libName // for source builds, the cp rule is still generated by the java_library module
|
||||
variation = "android_common_apex10000"
|
||||
}
|
||||
output := ctx.ModuleForTests(m, variation).MaybeOutput("system_server_dexjars/" + libName + ".jar")
|
||||
android.AssertStringListContains(t, libName+" is expected to be copied to out/soong/system_server_dexjars/ from ", output.Implicits.Strings(), expectedSystemServerJarPath)
|
||||
}
|
||||
|
||||
bp := `
|
||||
// Source APEX.
|
||||
|
||||
@@ -11568,6 +11579,24 @@ func TestBootDexJarsMultipleApexPrebuilts(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
java_library {
|
||||
name: "service-foo",
|
||||
srcs: ["foo.java"],
|
||||
installable: true,
|
||||
apex_available: [
|
||||
"com.android.foo",
|
||||
],
|
||||
}
|
||||
|
||||
systemserverclasspath_fragment {
|
||||
name: "foo-systemserverclasspath-fragment",
|
||||
contents: ["service-foo"],
|
||||
apex_available: [
|
||||
"com.android.foo",
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
apex_key {
|
||||
name: "com.android.foo.key",
|
||||
public_key: "com.android.foo.avbpubkey",
|
||||
@@ -11578,18 +11607,16 @@ func TestBootDexJarsMultipleApexPrebuilts(t *testing.T) {
|
||||
name: "com.android.foo",
|
||||
key: "com.android.foo.key",
|
||||
bootclasspath_fragments: ["foo-bootclasspath-fragment"],
|
||||
systemserverclasspath_fragments: ["foo-systemserverclasspath-fragment"],
|
||||
updatable: false,
|
||||
}
|
||||
|
||||
// Prebuilt APEX.
|
||||
|
||||
java_sdk_library_import {
|
||||
java_import {
|
||||
name: "framework-foo",
|
||||
public: {
|
||||
jars: ["foo.jar"],
|
||||
},
|
||||
jars: ["foo.jar"],
|
||||
apex_available: ["com.android.foo"],
|
||||
shared_library: false,
|
||||
}
|
||||
|
||||
prebuilt_bootclasspath_fragment {
|
||||
@@ -11607,11 +11634,27 @@ func TestBootDexJarsMultipleApexPrebuilts(t *testing.T) {
|
||||
],
|
||||
}
|
||||
|
||||
java_import {
|
||||
name: "service-foo",
|
||||
jars: ["foo.jar"],
|
||||
apex_available: ["com.android.foo"],
|
||||
}
|
||||
|
||||
prebuilt_systemserverclasspath_fragment {
|
||||
name: "foo-systemserverclasspath-fragment",
|
||||
contents: ["service-foo"],
|
||||
apex_available: [
|
||||
"com.android.foo",
|
||||
],
|
||||
}
|
||||
|
||||
|
||||
prebuilt_apex {
|
||||
name: "com.android.foo",
|
||||
apex_name: "com.android.foo",
|
||||
src: "com.android.foo-arm.apex",
|
||||
exported_bootclasspath_fragments: ["foo-bootclasspath-fragment"],
|
||||
exported_systemserverclasspath_fragments: ["foo-systemserverclasspath-fragment"],
|
||||
}
|
||||
|
||||
// Another Prebuilt ART APEX
|
||||
@@ -11620,48 +11663,41 @@ func TestBootDexJarsMultipleApexPrebuilts(t *testing.T) {
|
||||
apex_name: "com.android.foo", // Used to determine the API domain
|
||||
src: "com.android.foo-arm.apex",
|
||||
exported_bootclasspath_fragments: ["foo-bootclasspath-fragment"],
|
||||
exported_systemserverclasspath_fragments: ["foo-systemserverclasspath-fragment"],
|
||||
}
|
||||
|
||||
// APEX contribution modules
|
||||
|
||||
apex_contributions {
|
||||
name: "foo.source.contributions",
|
||||
name: "foo.contributions",
|
||||
api_domain: "com.android.foo",
|
||||
contents: ["com.android.foo"],
|
||||
}
|
||||
|
||||
apex_contributions {
|
||||
name: "foo.prebuilt.contributions",
|
||||
api_domain: "com.android.foo",
|
||||
contents: ["prebuilt_com.android.foo"],
|
||||
}
|
||||
|
||||
apex_contributions {
|
||||
name: "foo.prebuilt.v2.contributions",
|
||||
api_domain: "com.android.foo",
|
||||
contents: ["com.android.foo.v2"], // prebuilt_ prefix is missing because of prebuilt_rename mutator
|
||||
contents: ["%v"],
|
||||
}
|
||||
`
|
||||
|
||||
testCases := []struct {
|
||||
desc string
|
||||
selectedApexContributions string
|
||||
expectedBootJar string
|
||||
desc string
|
||||
selectedApex string
|
||||
expectedBootJar string
|
||||
expectedSystemServerJar string
|
||||
}{
|
||||
{
|
||||
desc: "Source apex com.android.foo is selected, bootjar should come from source java library",
|
||||
selectedApexContributions: "foo.source.contributions",
|
||||
expectedBootJar: "out/soong/.intermediates/foo-bootclasspath-fragment/android_common_apex10000/hiddenapi-modular/encoded/framework-foo.jar",
|
||||
desc: "Source apex com.android.foo is selected, bootjar should come from source java library",
|
||||
selectedApex: "com.android.foo",
|
||||
expectedBootJar: "out/soong/.intermediates/foo-bootclasspath-fragment/android_common_apex10000/hiddenapi-modular/encoded/framework-foo.jar",
|
||||
expectedSystemServerJar: "out/soong/.intermediates/service-foo/android_common_apex10000/aligned/service-foo.jar",
|
||||
},
|
||||
{
|
||||
desc: "Prebuilt apex prebuilt_com.android.foo is selected, profile should come from .prof deapexed from the prebuilt",
|
||||
selectedApexContributions: "foo.prebuilt.contributions",
|
||||
expectedBootJar: "out/soong/.intermediates/prebuilt_com.android.foo.deapexer/android_common/deapexer/javalib/framework-foo.jar",
|
||||
desc: "Prebuilt apex prebuilt_com.android.foo is selected, profile should come from .prof deapexed from the prebuilt",
|
||||
selectedApex: "prebuilt_com.android.foo",
|
||||
expectedBootJar: "out/soong/.intermediates/prebuilt_com.android.foo.deapexer/android_common/deapexer/javalib/framework-foo.jar",
|
||||
expectedSystemServerJar: "out/soong/.intermediates/prebuilt_com.android.foo.deapexer/android_common/deapexer/javalib/service-foo.jar",
|
||||
},
|
||||
{
|
||||
desc: "Prebuilt apex prebuilt_com.android.foo.v2 is selected, profile should come from .prof deapexed from the prebuilt",
|
||||
selectedApexContributions: "foo.prebuilt.v2.contributions",
|
||||
expectedBootJar: "out/soong/.intermediates/prebuilt_com.android.foo.v2.deapexer/android_common/deapexer/javalib/framework-foo.jar",
|
||||
desc: "Prebuilt apex prebuilt_com.android.foo.v2 is selected, profile should come from .prof deapexed from the prebuilt",
|
||||
selectedApex: "com.android.foo.v2",
|
||||
expectedBootJar: "out/soong/.intermediates/prebuilt_com.android.foo.v2.deapexer/android_common/deapexer/javalib/framework-foo.jar",
|
||||
expectedSystemServerJar: "out/soong/.intermediates/prebuilt_com.android.foo.v2.deapexer/android_common/deapexer/javalib/service-foo.jar",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -11673,19 +11709,21 @@ func TestBootDexJarsMultipleApexPrebuilts(t *testing.T) {
|
||||
for _, tc := range testCases {
|
||||
preparer := android.GroupFixturePreparers(
|
||||
java.FixtureConfigureApexBootJars("com.android.foo:framework-foo"),
|
||||
dexpreopt.FixtureSetApexSystemServerJars("com.android.foo:service-foo"),
|
||||
android.FixtureMergeMockFs(map[string][]byte{
|
||||
"system/sepolicy/apex/com.android.foo-file_contexts": nil,
|
||||
}),
|
||||
android.FixtureModifyProductVariables(func(variables android.FixtureProductVariables) {
|
||||
variables.BuildFlags = map[string]string{
|
||||
"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": tc.selectedApexContributions,
|
||||
"RELEASE_APEX_CONTRIBUTIONS_ADSERVICES": "foo.contributions",
|
||||
}
|
||||
}),
|
||||
)
|
||||
ctx := testDexpreoptWithApexes(t, bp, "", preparer, fragment)
|
||||
ctx := testDexpreoptWithApexes(t, fmt.Sprintf(bp, tc.selectedApex), "", preparer, fragment)
|
||||
checkBootDexJarPath(t, ctx, "framework-foo", tc.expectedBootJar)
|
||||
checkBootJarsPackageCheck(t, ctx, tc.expectedBootJar)
|
||||
checkBootJarsForMonolithicHiddenapi(t, ctx, tc.expectedBootJar)
|
||||
checkSystemServerJarOnHost(t, ctx, tc.selectedApex, "service-foo", tc.expectedSystemServerJar)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user