Port uses-shared library verification and dexpreopting to Soong
Ports 09f3b97f4b488cd3a7b7d72038b173575b02c162 (Add support for preopt with uses-libraries) from Make to Soong to support verifying and preopting shared libraries. Bug: 132357300 Test: app_test.go Test: m checkbuild Change-Id: Id25f55f07a55120bebe2a9b32c094209efc85c8b
This commit is contained in:
@@ -1239,3 +1239,83 @@ func TestStl(t *testing.T) {
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestUsesLibraries(t *testing.T) {
|
||||
bp := `
|
||||
java_sdk_library {
|
||||
name: "foo",
|
||||
srcs: ["a.java"],
|
||||
api_packages: ["foo"],
|
||||
}
|
||||
|
||||
java_sdk_library {
|
||||
name: "bar",
|
||||
srcs: ["a.java"],
|
||||
api_packages: ["bar"],
|
||||
}
|
||||
|
||||
android_app {
|
||||
name: "app",
|
||||
srcs: ["a.java"],
|
||||
uses_libs: ["foo"],
|
||||
optional_uses_libs: [
|
||||
"bar",
|
||||
"baz",
|
||||
],
|
||||
}
|
||||
|
||||
android_app_import {
|
||||
name: "prebuilt",
|
||||
apk: "prebuilts/apk/app.apk",
|
||||
certificate: "platform",
|
||||
uses_libs: ["foo"],
|
||||
optional_uses_libs: [
|
||||
"bar",
|
||||
"baz",
|
||||
],
|
||||
}
|
||||
`
|
||||
|
||||
config := testConfig(nil)
|
||||
config.TestProductVariables.MissingUsesLibraries = []string{"baz"}
|
||||
|
||||
ctx := testAppContext(config, bp, nil)
|
||||
|
||||
run(t, ctx, config)
|
||||
|
||||
app := ctx.ModuleForTests("app", "android_common")
|
||||
prebuilt := ctx.ModuleForTests("prebuilt", "android_common")
|
||||
|
||||
// Test that all libraries are verified
|
||||
cmd := app.Rule("verify_uses_libraries").RuleParams.Command
|
||||
if w := "--uses-library foo"; !strings.Contains(cmd, w) {
|
||||
t.Errorf("wanted %q in %q", w, cmd)
|
||||
}
|
||||
|
||||
if w := "--optional-uses-library bar --optional-uses-library baz"; !strings.Contains(cmd, w) {
|
||||
t.Errorf("wanted %q in %q", w, cmd)
|
||||
}
|
||||
|
||||
cmd = prebuilt.Rule("verify_uses_libraries").RuleParams.Command
|
||||
|
||||
if w := `uses_library_names="foo"`; !strings.Contains(cmd, w) {
|
||||
t.Errorf("wanted %q in %q", w, cmd)
|
||||
}
|
||||
|
||||
if w := `optional_uses_library_names="bar baz"`; !strings.Contains(cmd, w) {
|
||||
t.Errorf("wanted %q in %q", w, cmd)
|
||||
}
|
||||
|
||||
// Test that only present libraries are preopted
|
||||
cmd = app.Rule("dexpreopt").RuleParams.Command
|
||||
|
||||
if w := `dex_preopt_target_libraries="/system/framework/foo.jar /system/framework/bar.jar"`; !strings.Contains(cmd, w) {
|
||||
t.Errorf("wanted %q in %q", w, cmd)
|
||||
}
|
||||
|
||||
cmd = prebuilt.Rule("dexpreopt").RuleParams.Command
|
||||
|
||||
if w := `dex_preopt_target_libraries="/system/framework/foo.jar /system/framework/bar.jar"`; !strings.Contains(cmd, w) {
|
||||
t.Errorf("wanted %q in %q", w, cmd)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user