package { default_applicable_licenses: ["Android-Apache-2.0"], } microdroid_filesystem_images = [ "microdroid_super", "microdroid_vbmeta", ] soong_config_module_type { name: "virt_apex", module_type: "apex", config_namespace: "ANDROID", bool_variables: ["avf_enabled"], properties: ["defaults"], } virt_apex { name: "com.android.virt", soong_config_variables: { avf_enabled: { defaults: ["com.android.virt_avf_enabled"], conditions_default: { defaults: ["com.android.virt_avf_disabled"], }, }, }, } apex_defaults { name: "com.android.virt_common", // TODO(jiyong): make it updatable updatable: false, future_updatable: false, platform_apis: true, manifest: "manifest.json", key: "com.android.virt.key", certificate: ":com.android.virt.certificate", apps: [ "android.system.virtualmachine.res", ], file_contexts: ":com.android.virt-file_contexts", canned_fs_config: "canned_fs_config", bootclasspath_fragments: [ "com.android.virt-bootclasspath-fragment", ], jni_libs: [ "libvirtualizationservice_jni", "libvirtualmachine_jni", ], } apex_defaults { name: "com.android.virt_avf_enabled", defaults: ["com.android.virt_common"], custom_sign_tool: "sign_virt_apex", // crosvm and virtualizationservice are only enabled for 64-bit targets on device arch: { arm64: { binaries: [ "crosvm", "virtmgr", "virtualizationservice", ], filesystems: microdroid_filesystem_images, }, x86_64: { binaries: [ "crosvm", "virtmgr", "virtualizationservice", ], filesystems: microdroid_filesystem_images, }, }, binaries: [ "fd_server", "vm", ], prebuilts: [ "com.android.virt.init.rc", "features_com.android.virt.xml", "microdroid_initrd_debuggable", "microdroid_initrd_normal", "microdroid.json", "microdroid_kernel", ], host_required: [ "vm_shell", ], apps: [ "EmptyPayloadApp", ], } apex_defaults { name: "com.android.virt_avf_disabled", defaults: ["com.android.virt_common"], } apex_key { name: "com.android.virt.key", public_key: "com.android.virt.avbpubkey", private_key: "com.android.virt.pem", } android_app_certificate { name: "com.android.virt.certificate", certificate: "com.android.virt", } prebuilt_etc { name: "com.android.virt.init.rc", src: "virtualizationservice.rc", filename: "init.rc", installable: false, } // Virt apex needs a custom signer for its payload python_binary_host { name: "sign_virt_apex", srcs: [ "sign_virt_apex.py", ], version: { py3: { embedded_launcher: true, }, }, required: [ // sign_virt_apex should be runnable from outside the source tree, // therefore, any required tool should be listed in build/make/core/Makefile as well. "img2simg", "initrd_bootconfig", "lpmake", "lpunpack", "simg2img", ], } sh_test_host { name: "sign_virt_apex_test", src: "sign_virt_apex_test.sh", test_config: "sign_virt_apex_test.xml", data_bins: [ // deapexer "deapexer", "debugfs_static", "blkid", "fsck.erofs", // sign_virt_apex "avbtool", "img2simg", "initrd_bootconfig", "lpmake", "lpunpack", "sign_virt_apex", "simg2img", ], data_libs: [ "libbase", "libc++", "libcrypto_utils", "libcrypto", "libext4_utils", "liblog", "liblp", "libsparse", "libz", ], data: [ ":com.android.virt", ":test.com.android.virt.pem", ], test_suites: ["general-tests"], } filegroup { name: "test.com.android.virt.pem", srcs: ["test.com.android.virt.pem"], } filegroup { name: "test2.com.android.virt.pem", srcs: ["test2.com.android.virt.pem"], } // custom tool to replace bytes in a file python_binary_host { name: "replace_bytes", srcs: [ "replace_bytes.py", ], version: { py3: { embedded_launcher: true, }, }, } // Encapsulate the contributions made by the com.android.virt to the bootclasspath. bootclasspath_fragment { name: "com.android.virt-bootclasspath-fragment", contents: ["framework-virtualization"], apex_available: ["com.android.virt"], // The bootclasspath_fragments that provide APIs on which this depends. fragments: [ { apex: "com.android.art", module: "art-bootclasspath-fragment", }, ], // Additional stubs libraries that this fragment's contents use which are // not provided by another bootclasspath_fragment. additional_stubs: [ "android-non-updatable", ], hidden_api: { // This module does not contain any split packages. split_packages: [], // The following packages and all their subpackages currently only // contain classes from this bootclasspath_fragment. Listing a package // here won't prevent other bootclasspath modules from adding classes in // any of those packages but it will prevent them from adding those // classes into an API surface, e.g. public, system, etc.. Doing so will // result in a build failure due to inconsistent flags. package_prefixes: [ "android.system.virtualmachine", "android.system.virtualizationservice", // android.sysprop.*, renamed by jarjar "com.android.system.virtualmachine.sysprop", ], }, }