123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739 |
- //
- // Copyright (C) 2015 The Android Open Source Project
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- //
- // AIDL interface between libupdate_engine and framework.jar
- filegroup {
- name: "libupdate_engine_aidl",
- srcs: [
- "binder_bindings/android/os/IUpdateEngine.aidl",
- "binder_bindings/android/os/IUpdateEngineCallback.aidl",
- ],
- path: "binder_bindings",
- }
- cc_defaults {
- name: "ue_defaults",
- cflags: [
- "-DBASE_VER=576279",
- "-DUSE_BINDER=1",
- "-DUSE_CHROME_NETWORK_PROXY=0",
- "-DUSE_CHROME_KIOSK_APP=0",
- "-DUSE_HWID_OVERRIDE=0",
- "-DUSE_MTD=0",
- "-DUSE_OMAHA=0",
- "-D_FILE_OFFSET_BITS=64",
- "-D_POSIX_C_SOURCE=199309L",
- "-Wa,--noexecstack",
- "-Wall",
- "-Werror",
- "-Wextra",
- "-Wformat=2",
- "-Wno-psabi",
- "-Wno-unused-parameter",
- "-ffunction-sections",
- "-fstack-protector-strong",
- "-fvisibility=hidden",
- ],
- cppflags: [
- "-Wnon-virtual-dtor",
- "-fno-strict-aliasing",
- ],
- include_dirs: ["system"],
- local_include_dirs: ["client_library/include"],
- static_libs: ["libgtest_prod"],
- shared_libs: [
- "libbrillo-stream",
- "libbrillo",
- "libchrome",
- ],
- ldflags: ["-Wl,--gc-sections"],
- product_variables: {
- pdk: {
- enabled: false,
- },
- },
- target: {
- android: {
- cflags: [
- "-DUSE_FEC=1",
- ],
- },
- host: {
- cflags: [
- "-DUSE_FEC=0",
- ],
- },
- darwin: {
- enabled: false,
- },
- },
- }
- // update_metadata-protos (type: static_library)
- // ========================================================
- // Protobufs.
- cc_defaults {
- name: "update_metadata-protos_exports",
- shared_libs: ["libprotobuf-cpp-lite"],
- }
- cc_library_static {
- name: "update_metadata-protos",
- host_supported: true,
- recovery_available: true,
- srcs: ["update_engine/update_metadata.proto"],
- cflags: [
- "-Wall",
- "-Werror",
- ],
- proto: {
- canonical_path_from_root: false,
- export_proto_headers: true,
- },
- }
- // libpayload_consumer (type: static_library)
- // ========================================================
- // The payload application component and common dependencies.
- cc_defaults {
- name: "libpayload_consumer_exports",
- defaults: ["update_metadata-protos_exports"],
- static_libs: [
- "update_metadata-protos",
- "libxz",
- "libbz",
- "libbspatch",
- "libbrotli",
- "libfec_rs",
- "libpuffpatch",
- "libverity_tree",
- ],
- shared_libs: [
- "libbase",
- "libcrypto",
- "libfec",
- ],
- }
- cc_library_static {
- name: "libpayload_consumer",
- defaults: [
- "ue_defaults",
- "libpayload_consumer_exports",
- ],
- host_supported: true,
- recovery_available: true,
- srcs: [
- "common/action_processor.cc",
- "common/boot_control_stub.cc",
- "common/clock.cc",
- "common/constants.cc",
- "common/cpu_limiter.cc",
- "common/error_code_utils.cc",
- "common/file_fetcher.cc",
- "common/hash_calculator.cc",
- "common/http_common.cc",
- "common/http_fetcher.cc",
- "common/hwid_override.cc",
- "common/multi_range_http_fetcher.cc",
- "common/platform_constants_android.cc",
- "common/prefs.cc",
- "common/proxy_resolver.cc",
- "common/subprocess.cc",
- "common/terminator.cc",
- "common/utils.cc",
- "payload_consumer/bzip_extent_writer.cc",
- "payload_consumer/cached_file_descriptor.cc",
- "payload_consumer/delta_performer.cc",
- "payload_consumer/download_action.cc",
- "payload_consumer/extent_reader.cc",
- "payload_consumer/extent_writer.cc",
- "payload_consumer/file_descriptor.cc",
- "payload_consumer/file_descriptor_utils.cc",
- "payload_consumer/file_writer.cc",
- "payload_consumer/filesystem_verifier_action.cc",
- "payload_consumer/install_plan.cc",
- "payload_consumer/mount_history.cc",
- "payload_consumer/payload_constants.cc",
- "payload_consumer/payload_metadata.cc",
- "payload_consumer/payload_verifier.cc",
- "payload_consumer/postinstall_runner_action.cc",
- "payload_consumer/verity_writer_android.cc",
- "payload_consumer/xz_extent_writer.cc",
- "payload_consumer/fec_file_descriptor.cc",
- ],
- }
- // libupdate_engine_boot_control (type: static_library)
- // ========================================================
- // A BootControl class implementation using Android's HIDL boot_control HAL.
- cc_defaults {
- name: "libupdate_engine_boot_control_exports",
- defaults: ["update_metadata-protos_exports"],
- static_libs: ["update_metadata-protos"],
- shared_libs: [
- "libbootloader_message",
- "libfs_mgr",
- "libhwbinder",
- "libhidlbase",
- "liblp",
- "libutils",
- "[email protected]",
- ],
- }
- cc_library_static {
- name: "libupdate_engine_boot_control",
- defaults: [
- "ue_defaults",
- "libupdate_engine_boot_control_exports",
- ],
- recovery_available: true,
- srcs: [
- "boot_control_android.cc",
- "dynamic_partition_control_android.cc",
- ],
- }
- // libupdate_engine_android (type: static_library)
- // ========================================================
- // The main daemon static_library used in Android (non-Brillo). This only has a
- // loop to apply payloads provided by the upper layer via a Binder interface.
- cc_defaults {
- name: "libupdate_engine_android_exports",
- defaults: [
- "ue_defaults",
- "libpayload_consumer_exports",
- "libupdate_engine_boot_control_exports",
- ],
- static_libs: [
- "libpayload_consumer",
- "libupdate_engine_boot_control",
- ],
- shared_libs: [
- "libandroid_net",
- "libbase",
- "libbinder",
- "libbinderwrapper",
- "libbootloader_message",
- "libbrillo-binder",
- "libcurl",
- "libcutils",
- "liblog",
- "libmetricslogger",
- "libssl",
- "libutils",
- ],
- }
- cc_library_static {
- name: "libupdate_engine_android",
- defaults: [
- "ue_defaults",
- "libupdate_engine_android_exports",
- ],
- // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
- // out of the DBus interface.
- include_dirs: ["external/cros/system_api/dbus"],
- aidl: {
- local_include_dirs: ["binder_bindings"],
- export_aidl_headers: true,
- },
- srcs: [
- ":libupdate_engine_aidl",
- "binder_service_android.cc",
- "certificate_checker.cc",
- "daemon.cc",
- "daemon_state_android.cc",
- "hardware_android.cc",
- "libcurl_http_fetcher.cc",
- "metrics_reporter_android.cc",
- "metrics_utils.cc",
- "network_selector_android.cc",
- "update_attempter_android.cc",
- "update_boot_flags_action.cc",
- "update_status_utils.cc",
- ],
- }
- // update_engine (type: executable)
- // ========================================================
- // update_engine daemon.
- cc_binary {
- name: "update_engine",
- defaults: [
- "ue_defaults",
- "libupdate_engine_android_exports",
- ],
- static_libs: ["libupdate_engine_android"],
- required: ["cacerts_google"],
- srcs: ["main.cc"],
- init_rc: ["update_engine.rc"],
- }
- // update_engine_sideload (type: executable)
- // ========================================================
- // A binary executable equivalent to update_engine daemon that installs an update
- // from a local file directly instead of running in the background. Used in
- // recovery image.
- cc_binary {
- name: "update_engine_sideload",
- defaults: [
- "ue_defaults",
- "update_metadata-protos_exports",
- "libupdate_engine_boot_control_exports",
- "libpayload_consumer_exports",
- ],
- recovery: true,
- cflags: ["-D_UE_SIDELOAD"],
- // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
- // out of the DBus interface.
- include_dirs: ["external/cros/system_api/dbus"],
- srcs: [
- "hardware_android.cc",
- "metrics_reporter_stub.cc",
- "metrics_utils.cc",
- "network_selector_stub.cc",
- "sideload_main.cc",
- "update_attempter_android.cc",
- "update_boot_flags_action.cc",
- "update_status_utils.cc",
- ],
- // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out,
- // as it doesn't look beneficial to be installed separately due to its size. Note
- // that we explicitly request their recovery variants, so that the expected files
- // will be used and installed.
- shared_libs: [
- "libbase",
- "liblog",
- ],
- static_libs: [
- "libpayload_consumer",
- "libupdate_engine_boot_control",
- "update_metadata-protos",
- // We add the static versions of the shared libraries that are not installed to
- // recovery image due to size concerns. Need to include all the static library
- // dependencies of these static libraries.
- "libevent",
- "libmodpb64",
- "libgtest_prod",
- "libprotobuf-cpp-lite",
- "libbrillo-stream",
- "libbrillo",
- "libchrome",
- ],
- target: {
- recovery: {
- exclude_shared_libs: [
- "libprotobuf-cpp-lite",
- "libhwbinder",
- "libbrillo-stream",
- "libbrillo",
- "libchrome",
- ],
- },
- },
- required: ["[email protected]"],
- }
- // libupdate_engine_client (type: shared_library)
- // ========================================================
- cc_library_shared {
- name: "libupdate_engine_client",
- cflags: [
- "-Wall",
- "-Werror",
- "-Wno-unused-parameter",
- "-DUSE_BINDER=1",
- ],
- export_include_dirs: ["client_library/include"],
- include_dirs: [
- // TODO(deymo): Remove "external/cros/system_api/dbus" when dbus is not used.
- "external/cros/system_api/dbus",
- "system",
- ],
- aidl: {
- local_include_dirs: ["binder_bindings"],
- },
- shared_libs: [
- "libchrome",
- "libbrillo",
- "libbinder",
- "libbrillo-binder",
- "libutils",
- ],
- srcs: [
- "binder_bindings/android/brillo/IUpdateEngine.aidl",
- "binder_bindings/android/brillo/IUpdateEngineStatusCallback.aidl",
- "client_library/client.cc",
- "client_library/client_binder.cc",
- "parcelable_update_engine_status.cc",
- "update_status_utils.cc",
- ],
- }
- // update_engine_client (type: executable)
- // ========================================================
- // update_engine console client.
- cc_binary {
- name: "update_engine_client",
- defaults: ["ue_defaults"],
- // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
- // out of the DBus interface.
- include_dirs: ["external/cros/system_api/dbus"],
- shared_libs: [
- "libbinder",
- "libbinderwrapper",
- "libbrillo-binder",
- "libutils",
- ],
- aidl: {
- local_include_dirs: ["binder_bindings"],
- },
- srcs: [
- ":libupdate_engine_aidl",
- "common/error_code_utils.cc",
- "update_engine_client_android.cc",
- "update_status_utils.cc",
- ],
- }
- // libpayload_generator (type: static_library)
- // ========================================================
- // server-side code. This is used for delta_generator and unittests but not
- // for any client code.
- cc_defaults {
- name: "libpayload_generator_exports",
- defaults: [
- "libpayload_consumer_exports",
- "update_metadata-protos_exports",
- ],
- static_libs: [
- "libavb",
- "libbrotli",
- "libbsdiff",
- "libdivsufsort",
- "libdivsufsort64",
- "liblzma",
- "libpayload_consumer",
- "libpuffdiff",
- "libverity_tree",
- "update_metadata-protos",
- ],
- shared_libs: [
- "libbase",
- "libext2fs",
- ],
- }
- cc_library_static {
- name: "libpayload_generator",
- defaults: [
- "ue_defaults",
- "libpayload_generator_exports",
- ],
- host_supported: true,
- srcs: [
- "payload_generator/ab_generator.cc",
- "payload_generator/annotated_operation.cc",
- "payload_generator/blob_file_writer.cc",
- "payload_generator/block_mapping.cc",
- "payload_generator/boot_img_filesystem.cc",
- "payload_generator/bzip.cc",
- "payload_generator/cycle_breaker.cc",
- "payload_generator/deflate_utils.cc",
- "payload_generator/delta_diff_generator.cc",
- "payload_generator/delta_diff_utils.cc",
- "payload_generator/ext2_filesystem.cc",
- "payload_generator/extent_ranges.cc",
- "payload_generator/extent_utils.cc",
- "payload_generator/full_update_generator.cc",
- "payload_generator/graph_types.cc",
- "payload_generator/graph_utils.cc",
- "payload_generator/inplace_generator.cc",
- "payload_generator/mapfile_filesystem.cc",
- "payload_generator/payload_file.cc",
- "payload_generator/payload_generation_config_android.cc",
- "payload_generator/payload_generation_config.cc",
- "payload_generator/payload_signer.cc",
- "payload_generator/raw_filesystem.cc",
- "payload_generator/squashfs_filesystem.cc",
- "payload_generator/tarjan.cc",
- "payload_generator/topological_sort.cc",
- "payload_generator/xz_android.cc",
- ],
- }
- // delta_generator (type: executable)
- // ========================================================
- // server-side delta generator.
- cc_binary_host {
- name: "delta_generator",
- defaults: [
- "ue_defaults",
- "libpayload_generator_exports",
- "libpayload_consumer_exports",
- ],
- static_libs: [
- "libavb_host_sysdeps",
- "libpayload_consumer",
- "libpayload_generator",
- ],
- srcs: ["payload_generator/generate_delta_main.cc"],
- }
- cc_test {
- name: "ue_unittest_delta_generator",
- defaults: [
- "ue_defaults",
- "libpayload_generator_exports",
- "libpayload_consumer_exports",
- ],
- static_libs: [
- "libpayload_consumer",
- "libpayload_generator",
- ],
- srcs: ["payload_generator/generate_delta_main.cc"],
- gtest: false,
- stem: "delta_generator",
- relative_install_path: "update_engine_unittests",
- no_named_install_directory: true,
- }
- // test_http_server (type: executable)
- // ========================================================
- // Test HTTP Server.
- cc_test {
- name: "test_http_server",
- defaults: ["ue_defaults"],
- srcs: [
- "common/http_common.cc",
- "test_http_server.cc",
- ],
- gtest: false,
- relative_install_path: "update_engine_unittests",
- no_named_install_directory: true,
- }
- // test_subprocess (type: executable)
- // ========================================================
- // Test helper subprocess program.
- cc_test {
- name: "test_subprocess",
- defaults: ["ue_defaults"],
- srcs: ["test_subprocess.cc"],
- gtest: false,
- relative_install_path: "update_engine_unittests",
- no_named_install_directory: true,
- }
- // Public keys for unittests.
- // ========================================================
- genrule {
- name: "ue_unittest_keys",
- cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" +
- "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" +
- "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem)",
- srcs: [
- "unittest_key.pem",
- "unittest_key2.pem",
- "unittest_key_RSA4096.pem",
- ],
- out: [
- "unittest_key.pub.pem",
- "unittest_key2.pub.pem",
- "unittest_key_RSA4096.pub.pem",
- ],
- }
- // Sample images for unittests.
- // ========================================================
- // Extract sample image from the compressed sample_images.tar.bz2 file used by
- // the unittests.
- genrule {
- name: "ue_unittest_disk_imgs",
- cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img",
- srcs: ["sample_images/sample_images.tar.bz2"],
- out: [
- "gen/disk_ext2_1k.img",
- "gen/disk_ext2_4k.img",
- "gen/disk_ext2_4k_empty.img",
- "gen/disk_ext2_unittest.img",
- ],
- }
- // update_engine_unittests (type: executable)
- // ========================================================
- // Main unittest file.
- cc_test {
- name: "update_engine_unittests",
- defaults: [
- "ue_defaults",
- "libpayload_generator_exports",
- "libupdate_engine_android_exports",
- ],
- required: [
- "test_http_server",
- "test_subprocess",
- "ue_unittest_delta_generator",
- ],
- static_libs: [
- "libpayload_generator",
- "libbrillo-test-helpers",
- "libgmock",
- "libchrome_test_helpers",
- "libupdate_engine_android",
- ],
- shared_libs: [
- "libhidltransport",
- ],
- data: [
- ":ue_unittest_disk_imgs",
- ":ue_unittest_keys",
- "unittest_key.pem",
- "unittest_key2.pem",
- "unittest_key_RSA4096.pem",
- "update_engine.conf",
- ],
- srcs: [
- "boot_control_android_unittest.cc",
- "certificate_checker_unittest.cc",
- "common/action_pipe_unittest.cc",
- "common/action_processor_unittest.cc",
- "common/action_unittest.cc",
- "common/cpu_limiter_unittest.cc",
- "common/fake_prefs.cc",
- "common/file_fetcher_unittest.cc",
- "common/hash_calculator_unittest.cc",
- "common/http_fetcher_unittest.cc",
- "common/hwid_override_unittest.cc",
- "common/mock_http_fetcher.cc",
- "common/prefs_unittest.cc",
- "common/proxy_resolver_unittest.cc",
- "common/subprocess_unittest.cc",
- "common/terminator_unittest.cc",
- "common/test_utils.cc",
- "common/utils_unittest.cc",
- "payload_consumer/bzip_extent_writer_unittest.cc",
- "payload_consumer/cached_file_descriptor_unittest.cc",
- "payload_consumer/delta_performer_integration_test.cc",
- "payload_consumer/delta_performer_unittest.cc",
- "payload_consumer/extent_reader_unittest.cc",
- "payload_consumer/extent_writer_unittest.cc",
- "payload_consumer/fake_file_descriptor.cc",
- "payload_consumer/file_descriptor_utils_unittest.cc",
- "payload_consumer/file_writer_unittest.cc",
- "payload_consumer/filesystem_verifier_action_unittest.cc",
- "payload_consumer/postinstall_runner_action_unittest.cc",
- "payload_consumer/verity_writer_android_unittest.cc",
- "payload_consumer/xz_extent_writer_unittest.cc",
- "payload_generator/ab_generator_unittest.cc",
- "payload_generator/blob_file_writer_unittest.cc",
- "payload_generator/block_mapping_unittest.cc",
- "payload_generator/boot_img_filesystem_unittest.cc",
- "payload_generator/cycle_breaker_unittest.cc",
- "payload_generator/deflate_utils_unittest.cc",
- "payload_generator/delta_diff_utils_unittest.cc",
- "payload_generator/ext2_filesystem_unittest.cc",
- "payload_generator/extent_ranges_unittest.cc",
- "payload_generator/extent_utils_unittest.cc",
- "payload_generator/fake_filesystem.cc",
- "payload_generator/full_update_generator_unittest.cc",
- "payload_generator/graph_utils_unittest.cc",
- "payload_generator/inplace_generator_unittest.cc",
- "payload_generator/mapfile_filesystem_unittest.cc",
- "payload_generator/payload_file_unittest.cc",
- "payload_generator/payload_generation_config_android_unittest.cc",
- "payload_generator/payload_generation_config_unittest.cc",
- "payload_generator/payload_signer_unittest.cc",
- "payload_generator/squashfs_filesystem_unittest.cc",
- "payload_generator/tarjan_unittest.cc",
- "payload_generator/topological_sort_unittest.cc",
- "payload_generator/zip_unittest.cc",
- "testrunner.cc",
- "update_attempter_android_unittest.cc",
- ],
- }
- // Brillo update payload generation script
- // ========================================================
- cc_prebuilt_binary {
- name: "brillo_update_payload",
- device_supported: false,
- host_supported: true,
- srcs: ["scripts/brillo_update_payload"],
- required: [
- "delta_generator",
- "shflags",
- "simg2img",
- ],
- target: {
- darwin: {
- enabled: false,
- },
- },
- }
- // AIDL interface between libupdate_engine and the Things jar.
- filegroup {
- name: "things_update_engine_aidl",
- srcs: [
- "binder_bindings/android/brillo/IUpdateEngine.aidl",
- "binder_bindings/android/brillo/IUpdateEngineStatusCallback.aidl",
- ],
- }
|