Merge "Pass config files to metalava" into main
diff --git a/Android.bp b/Android.bp
index 682711d..0d1ff02 100644
--- a/Android.bp
+++ b/Android.bp
@@ -132,7 +132,7 @@
product_config: ":product_config",
// Currently, only microdroid can refer to buildinfo.prop
- visibility: ["//packages/modules/Virtualization/microdroid"],
+ visibility: ["//packages/modules/Virtualization/build/microdroid"],
}
// container for apex_contributions selected using build flags
diff --git a/android/neverallow.go b/android/neverallow.go
index ef4b8b8..0f363e7 100644
--- a/android/neverallow.go
+++ b/android/neverallow.go
@@ -212,7 +212,7 @@
func createCcStubsRule() Rule {
ccStubsImplementationInstallableProjectsAllowedList := []string{
- "packages/modules/Virtualization/vm_payload",
+ "packages/modules/Virtualization/libs/libvm_payload",
}
return NeverAllow().
diff --git a/apex/apex_test.go b/apex/apex_test.go
index a2dbbfc..f62ee68 100644
--- a/apex/apex_test.go
+++ b/apex/apex_test.go
@@ -11738,3 +11738,121 @@
}
`)
}
+
+func TestPrebuiltStubNoinstall(t *testing.T) {
+ testFunc := func(t *testing.T, expectLibfooOnSystemLib bool, fs android.MockFS) {
+ result := android.GroupFixturePreparers(
+ prepareForApexTest,
+ android.PrepareForTestWithAndroidMk,
+ android.PrepareForTestWithMakevars,
+ android.FixtureMergeMockFs(fs),
+ ).RunTest(t)
+
+ ldRule := result.ModuleForTests("installedlib", "android_arm64_armv8-a_shared").Rule("ld")
+ android.AssertStringDoesContain(t, "", ldRule.Args["libFlags"], "android_arm64_armv8-a_shared/libfoo.so")
+
+ installRules := result.InstallMakeRulesForTesting(t)
+
+ var installedlibRule *android.InstallMakeRule
+ for i, rule := range installRules {
+ if rule.Target == "out/target/product/test_device/system/lib/installedlib.so" {
+ if installedlibRule != nil {
+ t.Errorf("Duplicate install rules for %s", rule.Target)
+ }
+ installedlibRule = &installRules[i]
+ }
+ }
+ if installedlibRule == nil {
+ t.Errorf("No install rule found for installedlib")
+ return
+ }
+
+ if expectLibfooOnSystemLib {
+ android.AssertStringListContains(t,
+ "installedlib doesn't have install dependency on libfoo impl",
+ installedlibRule.OrderOnlyDeps,
+ "out/target/product/test_device/system/lib/libfoo.so")
+ } else {
+ android.AssertStringListDoesNotContain(t,
+ "installedlib has install dependency on libfoo stub",
+ installedlibRule.Deps,
+ "out/target/product/test_device/system/lib/libfoo.so")
+ android.AssertStringListDoesNotContain(t,
+ "installedlib has order-only install dependency on libfoo stub",
+ installedlibRule.OrderOnlyDeps,
+ "out/target/product/test_device/system/lib/libfoo.so")
+ }
+ }
+
+ prebuiltLibfooBp := []byte(`
+ cc_prebuilt_library {
+ name: "libfoo",
+ prefer: true,
+ srcs: ["libfoo.so"],
+ stubs: {
+ versions: ["1"],
+ },
+ apex_available: ["apexfoo"],
+ }
+ `)
+
+ apexfooBp := []byte(`
+ apex {
+ name: "apexfoo",
+ key: "apexfoo.key",
+ native_shared_libs: ["libfoo"],
+ updatable: false,
+ compile_multilib: "both",
+ }
+ apex_key {
+ name: "apexfoo.key",
+ public_key: "testkey.avbpubkey",
+ private_key: "testkey.pem",
+ }
+ `)
+
+ installedlibBp := []byte(`
+ cc_library {
+ name: "installedlib",
+ shared_libs: ["libfoo"],
+ }
+ `)
+
+ t.Run("prebuilt stub (without source): no install", func(t *testing.T) {
+ testFunc(
+ t,
+ /*expectLibfooOnSystemLib=*/ false,
+ android.MockFS{
+ "prebuilts/module_sdk/art/current/Android.bp": prebuiltLibfooBp,
+ "apexfoo/Android.bp": apexfooBp,
+ "system/sepolicy/apex/apexfoo-file_contexts": nil,
+ "Android.bp": installedlibBp,
+ },
+ )
+ })
+
+ disabledSourceLibfooBp := []byte(`
+ cc_library {
+ name: "libfoo",
+ enabled: false,
+ stubs: {
+ versions: ["1"],
+ },
+ apex_available: ["apexfoo"],
+ }
+ `)
+
+ t.Run("prebuilt stub (with disabled source): no install", func(t *testing.T) {
+ testFunc(
+ t,
+ /*expectLibfooOnSystemLib=*/ false,
+ android.MockFS{
+ "prebuilts/module_sdk/art/current/Android.bp": prebuiltLibfooBp,
+ "impl/Android.bp": disabledSourceLibfooBp,
+ "apexfoo/Android.bp": apexfooBp,
+ "system/sepolicy/apex/apexfoo-file_contexts": nil,
+ "Android.bp": installedlibBp,
+ },
+ )
+ })
+}
diff --git a/cc/prebuilt.go b/cc/prebuilt.go
index e9f790f..e023a32 100644
--- a/cc/prebuilt.go
+++ b/cc/prebuilt.go
@@ -205,17 +205,6 @@
TableOfContents: p.tocFile,
})
- // TODO(b/220898484): Mainline module sdk prebuilts of stub libraries use a stub
- // library as their source and must not be installed, but other prebuilts like
- // libclang_rt.* libraries set `stubs` property because they are LLNDK libraries,
- // but use an implementation library as their source and need to be installed.
- // This discrepancy should be resolved without the prefix hack below.
- isModuleSdkPrebuilts := android.HasAnyPrefix(ctx.ModuleDir(), []string{
- "prebuilts/runtime/mainline/", "prebuilts/module_sdk/"})
- if p.hasStubsVariants() && !p.buildStubs() && !ctx.Host() && isModuleSdkPrebuilts {
- ctx.Module().MakeUninstallable()
- }
-
return outputFile
}
}
diff --git a/cc/prebuilt_test.go b/cc/prebuilt_test.go
index 71b7e43..86e6af9 100644
--- a/cc/prebuilt_test.go
+++ b/cc/prebuilt_test.go
@@ -385,112 +385,6 @@
assertString(t, static2.OutputFile().Path().Base(), "libf.hwasan.a")
}
-func TestPrebuiltStubNoinstall(t *testing.T) {
- testFunc := func(t *testing.T, expectLibfooOnSystemLib bool, fs android.MockFS) {
- result := android.GroupFixturePreparers(
- prepareForPrebuiltTest,
- android.PrepareForTestWithMakevars,
- android.FixtureMergeMockFs(fs),
- ).RunTest(t)
-
- ldRule := result.ModuleForTests("installedlib", "android_arm64_armv8-a_shared").Rule("ld")
- android.AssertStringDoesContain(t, "", ldRule.Args["libFlags"], "android_arm64_armv8-a_shared/libfoo.so")
-
- installRules := result.InstallMakeRulesForTesting(t)
- var installedlibRule *android.InstallMakeRule
- for i, rule := range installRules {
- if rule.Target == "out/target/product/test_device/system/lib/installedlib.so" {
- if installedlibRule != nil {
- t.Errorf("Duplicate install rules for %s", rule.Target)
- }
- installedlibRule = &installRules[i]
- }
- }
- if installedlibRule == nil {
- t.Errorf("No install rule found for installedlib")
- return
- }
-
- if expectLibfooOnSystemLib {
- android.AssertStringListContains(t,
- "installedlib doesn't have install dependency on libfoo impl",
- installedlibRule.OrderOnlyDeps,
- "out/target/product/test_device/system/lib/libfoo.so")
- } else {
- android.AssertStringListDoesNotContain(t,
- "installedlib has install dependency on libfoo stub",
- installedlibRule.Deps,
- "out/target/product/test_device/system/lib/libfoo.so")
- android.AssertStringListDoesNotContain(t,
- "installedlib has order-only install dependency on libfoo stub",
- installedlibRule.OrderOnlyDeps,
- "out/target/product/test_device/system/lib/libfoo.so")
- }
- }
-
- prebuiltLibfooBp := []byte(`
- cc_prebuilt_library {
- name: "libfoo",
- prefer: true,
- srcs: ["libfoo.so"],
- stubs: {
- versions: ["1"],
- },
- }
- `)
-
- installedlibBp := []byte(`
- cc_library {
- name: "installedlib",
- shared_libs: ["libfoo"],
- }
- `)
-
- t.Run("prebuilt stub (without source): no install", func(t *testing.T) {
- testFunc(
- t,
- /*expectLibfooOnSystemLib=*/ false,
- android.MockFS{
- "prebuilts/module_sdk/art/current/Android.bp": prebuiltLibfooBp,
- "Android.bp": installedlibBp,
- },
- )
- })
-
- disabledSourceLibfooBp := []byte(`
- cc_library {
- name: "libfoo",
- enabled: false,
- stubs: {
- versions: ["1"],
- },
- }
- `)
-
- t.Run("prebuilt stub (with disabled source): no install", func(t *testing.T) {
- testFunc(
- t,
- /*expectLibfooOnSystemLib=*/ false,
- android.MockFS{
- "prebuilts/module_sdk/art/current/Android.bp": prebuiltLibfooBp,
- "impl/Android.bp": disabledSourceLibfooBp,
- "Android.bp": installedlibBp,
- },
- )
- })
-
- t.Run("prebuilt impl (with `stubs` property set): install", func(t *testing.T) {
- testFunc(
- t,
- /*expectLibfooOnSystemLib=*/ true,
- android.MockFS{
- "impl/Android.bp": prebuiltLibfooBp,
- "Android.bp": installedlibBp,
- },
- )
- })
-}
-
func TestPrebuiltBinaryNoSrcsNoError(t *testing.T) {
const bp = `
cc_prebuilt_binary {
diff --git a/rust/bindgen.go b/rust/bindgen.go
index dbc3697..f1579cc 100644
--- a/rust/bindgen.go
+++ b/rust/bindgen.go
@@ -29,7 +29,7 @@
defaultBindgenFlags = []string{""}
// bindgen should specify its own Clang revision so updating Clang isn't potentially blocked on bindgen failures.
- bindgenClangVersion = "clang-r522817"
+ bindgenClangVersion = "clang-r530567"
_ = pctx.VariableFunc("bindgenClangVersion", func(ctx android.PackageVarContext) string {
if override := ctx.Config().Getenv("LLVM_BINDGEN_PREBUILTS_VERSION"); override != "" {