1// 2// Copyright (C) 2015 The Android Open Source Project 3// 4// Licensed under the Apache License, Version 2.0 (the "License"); 5// you may not use this file except in compliance with the License. 6// You may obtain a copy of the License at 7// 8// http://www.apache.org/licenses/LICENSE-2.0 9// 10// Unless required by applicable law or agreed to in writing, software 11// distributed under the License is distributed on an "AS IS" BASIS, 12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13// See the License for the specific language governing permissions and 14// limitations under the License. 15// 16 17// AIDL interface between libupdate_engine and framework.jar 18package { 19 default_applicable_licenses: ["system_update_engine_license"], 20} 21 22// Added automatically by a large-scale-change 23// See: http://go/android-license-faq 24license { 25 name: "system_update_engine_license", 26 visibility: [":__subpackages__"], 27 license_kinds: [ 28 "SPDX-license-identifier-Apache-2.0", 29 ], 30 license_text: [ 31 "NOTICE", 32 ], 33} 34 35filegroup { 36 name: "libupdate_engine_aidl", 37 srcs: [ 38 "binder_bindings/android/os/IUpdateEngine.aidl", 39 "binder_bindings/android/os/IUpdateEngineCallback.aidl", 40 ], 41 path: "binder_bindings", 42} 43 44cc_defaults { 45 name: "ue_defaults", 46 47 cflags: [ 48 "-DBASE_VER=576279", 49 "-DUSE_HWID_OVERRIDE=0", 50 "-D_FILE_OFFSET_BITS=64", 51 "-D_POSIX_C_SOURCE=199309L", 52 "-Wa,--noexecstack", 53 "-Wall", 54 "-Werror", 55 "-Wextra", 56 "-Wformat=2", 57 "-Wno-psabi", 58 "-Wno-unused-parameter", 59 "-ffunction-sections", 60 "-fstack-protector-strong", 61 "-fvisibility=hidden", 62 "-g3", 63 ], 64 cppflags: [ 65 "-Wnon-virtual-dtor", 66 "-fno-strict-aliasing", 67 ], 68 include_dirs: ["system"], 69 local_include_dirs: ["client_library/include"], 70 header_libs: ["libgtest_prod_headers"], 71 shared_libs: [ 72 "libbrillo-stream", 73 "libbrillo", 74 "libchrome", 75 ], 76 ldflags: ["-Wl,--gc-sections"], 77 78 product_variables: { 79 pdk: { 80 enabled: false, 81 }, 82 }, 83 84 target: { 85 android: { 86 cflags: [ 87 "-DUSE_FEC=1", 88 ], 89 }, 90 host: { 91 cflags: [ 92 "-DUSE_FEC=0", 93 ], 94 }, 95 darwin: { 96 enabled: false, 97 }, 98 }, 99} 100 101// libcow_operation_convert (type: library) 102// ======================================================== 103cc_library_static { 104 name: "libpayload_extent_utils", 105 defaults: [ 106 "ue_defaults", 107 ], 108 host_supported: true, 109 recovery_available: true, 110 srcs: [ 111 "payload_generator/extent_utils.cc", 112 ], 113 static_libs: [ 114 "update_metadata-protos", 115 ], 116} 117 118cc_library { 119 name: "libcow_operation_convert", 120 host_supported: true, 121 recovery_available: true, 122 defaults: [ 123 "ue_defaults", 124 "update_metadata-protos_exports", 125 ], 126 srcs: [ 127 "common/cow_operation_convert.cc", 128 ], 129 static_libs: [ 130 "libsnapshot_cow", 131 "update_metadata-protos", 132 "libpayload_extent_ranges", 133 "libpayload_extent_utils", 134 "libbrotli", 135 "libz", 136 ], 137} 138 139// update_metadata-protos (type: static_library) 140// ======================================================== 141// Protobufs. 142cc_defaults { 143 name: "update_metadata-protos_exports", 144 145 shared_libs: ["libprotobuf-cpp-lite"], 146} 147 148cc_defaults { 149 name: "update_metadata-protos-defaults", 150 host_supported: true, 151 ramdisk_available: true, 152 recovery_available: true, 153 154 srcs: ["update_engine/update_metadata.proto"], 155 cflags: [ 156 "-Wall", 157 "-Werror", 158 ], 159 proto: { 160 canonical_path_from_root: false, 161 export_proto_headers: true, 162 }, 163} 164 165cc_library_static { 166 name: "update_metadata-protos", 167 defaults: ["update_metadata-protos-defaults"], 168 proto: { 169 type: "lite", 170 }, 171} 172 173cc_library_static { 174 name: "update_metadata-protos-full", 175 defaults: ["update_metadata-protos-defaults"], 176} 177 178python_library_host { 179 name: "update_metadata-protos-python", 180 srcs: ["update_metadata.proto"], 181 proto: { 182 canonical_path_from_root: false, 183 }, 184} 185 186// libpayload_consumer (type: static_library) 187// ======================================================== 188// The payload application component and common dependencies. 189cc_defaults { 190 name: "libpayload_consumer_exports_defaults", 191 defaults: ["update_metadata-protos_exports",], 192 193 static_libs: [ 194 "libxz", 195 "libbz", 196 "libbspatch", 197 "libbrotli", 198 "libc++fs", 199 "libfec_rs", 200 "libpuffpatch", 201 "libverity_tree", 202 "libsnapshot_cow", 203 "libbrotli", 204 "libz", 205 "libpayload_extent_ranges", 206 "libpayload_extent_utils", 207 "libcow_operation_convert", 208 "lz4diff-protos", 209 "liblz4patch", 210 "libzstd", 211 ], 212 shared_libs: [ 213 "libbase", 214 "libcrypto", 215 "libfec", 216 "liblz4", 217 "libziparchive", 218 ], 219} 220 221cc_defaults { 222 name: "libpayload_consumer_exports", 223 defaults: [ 224 "libpayload_consumer_exports_defaults" 225 ], 226 static_libs: ["update_metadata-protos",], 227} 228 229cc_defaults { 230 name: "libpayload_consumer_exports_proto-full", 231 defaults: [ 232 "libpayload_consumer_exports_defaults" 233 ], 234 static_libs: ["update_metadata-protos-full",], 235} 236 237cc_defaults { 238 name: "libpayload_consumer_defaults", 239 host_supported: true, 240 recovery_available: true, 241 242 srcs: [ 243 "aosp/platform_constants_android.cc", 244 "common/action_processor.cc", 245 "common/boot_control_stub.cc", 246 "common/clock.cc", 247 "common/constants.cc", 248 "common/cpu_limiter.cc", 249 "common/dynamic_partition_control_stub.cc", 250 "common/error_code_utils.cc", 251 "common/file_fetcher.cc", 252 "common/hash_calculator.cc", 253 "common/http_common.cc", 254 "common/http_fetcher.cc", 255 "common/hwid_override.cc", 256 "common/multi_range_http_fetcher.cc", 257 "common/prefs.cc", 258 "common/subprocess.cc", 259 "common/terminator.cc", 260 "common/utils.cc", 261 "payload_consumer/bzip_extent_writer.cc", 262 "payload_consumer/cached_file_descriptor.cc", 263 "payload_consumer/certificate_parser_android.cc", 264 "payload_consumer/cow_writer_file_descriptor.cc", 265 "payload_consumer/delta_performer.cc", 266 "payload_consumer/extent_reader.cc", 267 "payload_consumer/extent_writer.cc", 268 "payload_consumer/file_descriptor.cc", 269 "payload_consumer/file_descriptor_utils.cc", 270 "payload_consumer/file_writer.cc", 271 "payload_consumer/filesystem_verifier_action.cc", 272 "payload_consumer/install_operation_executor.cc", 273 "payload_consumer/install_plan.cc", 274 "payload_consumer/mount_history.cc", 275 "payload_consumer/payload_constants.cc", 276 "payload_consumer/payload_metadata.cc", 277 "payload_consumer/payload_verifier.cc", 278 "payload_consumer/partition_writer.cc", 279 "payload_consumer/partition_writer_factory_android.cc", 280 "payload_consumer/vabc_partition_writer.cc", 281 "payload_consumer/xor_extent_writer.cc", 282 "payload_consumer/block_extent_writer.cc", 283 "payload_consumer/snapshot_extent_writer.cc", 284 "payload_consumer/postinstall_runner_action.cc", 285 "payload_consumer/verified_source_fd.cc", 286 "payload_consumer/verity_writer_android.cc", 287 "payload_consumer/xz_extent_writer.cc", 288 "payload_consumer/fec_file_descriptor.cc", 289 "payload_consumer/partition_update_generator_android.cc", 290 "update_status_utils.cc", 291 ], 292} 293 294cc_library_static { 295 name: "libpayload_consumer", 296 defaults: [ 297 "ue_defaults", 298 "libpayload_consumer_exports", 299 "libpayload_consumer_defaults", 300 ], 301} 302 303cc_library_static { 304 name: "libpayload_consumer_proto-full", 305 defaults: [ 306 "ue_defaults", 307 "libpayload_consumer_exports_proto-full", 308 "libpayload_consumer_defaults", 309 ], 310} 311 312cc_library_static { 313 name: "libstatslog_ue", 314 generated_sources: ["statslog_ue.cpp"], 315 generated_headers: ["statslog_ue.h"], 316 export_generated_headers: ["statslog_ue.h"], 317 shared_libs: [ 318 "libstatssocket", 319 ] 320} 321 322genrule { 323 name: "statslog_ue.h", 324 tools: ["stats-log-api-gen"], 325 cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_ue.h --module update_engine --namespace chromeos_update_engine,statsd", 326 out: [ 327 "statslog_ue.h", 328 ], 329} 330 331genrule { 332 name: "statslog_ue.cpp", 333 tools: ["stats-log-api-gen"], 334 cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_ue.cpp --module update_engine --namespace chromeos_update_engine,statsd --importHeader statslog_ue.h", 335 out: [ 336 "statslog_ue.cpp", 337 ], 338} 339 340// libupdate_engine_boot_control (type: static_library) 341// ======================================================== 342// A BootControl class implementation using Android's HIDL boot_control HAL. 343cc_defaults { 344 name: "libupdate_engine_boot_control_exports_defaults", 345 defaults: ["update_metadata-protos_exports",], 346 347 static_libs: [ 348 "libcutils", 349 "libfs_mgr_binder", 350 "libgsi", 351 "libsnapshot", 352 "libsnapshot_cow", 353 "libstatslog_ue", 354 "libz", 355 ], 356 shared_libs: [ 357 "libbootloader_message", 358 "libhidlbase", 359 "liblp", 360 "libutils", 361 "android.hardware.boot@1.0", 362 "android.hardware.boot@1.1", 363 "android.hardware.boot@1.2", 364 "android.hardware.boot-V1-ndk", 365 "libboot_control_client", 366 ], 367 header_libs: [ 368 "avb_headers", 369 ], 370 target: { 371 recovery: { 372 static_libs: [ 373 "libfs_mgr", 374 "libsnapshot_nobinder", 375 ], 376 exclude_static_libs: [ 377 "libfs_mgr_binder", 378 "libsnapshot", 379 "libstatslog_ue" 380 ], 381 }, 382 }, 383} 384 385cc_defaults { 386 name: "libupdate_engine_boot_control_exports", 387 defaults: [ 388 "libupdate_engine_boot_control_exports_defaults", 389 ], 390 static_libs: [ 391 "libpayload_consumer", 392 "update_metadata-protos", 393 ] 394} 395 396cc_defaults { 397 name: "libupdate_engine_boot_control_exports_proto-full", 398 defaults: [ 399 "libupdate_engine_boot_control_exports_defaults", 400 ], 401 static_libs: [ 402 "libpayload_consumer_proto-full", 403 "update_metadata-protos-full", 404 ] 405} 406 407cc_defaults { 408 name: "libupdate_engine_boot_control_defaults", 409 defaults: [ 410 "ue_defaults", 411 ], 412 recovery_available: true, 413 414 srcs: [ 415 "aosp/boot_control_android.cc", 416 "aosp/cleanup_previous_update_action.cc", 417 "aosp/dynamic_partition_control_android.cc", 418 "aosp/dynamic_partition_utils.cc", 419 ], 420} 421 422cc_library_static { 423 name: "libupdate_engine_boot_control", 424 defaults: [ 425 "libupdate_engine_boot_control_defaults", 426 "libupdate_engine_boot_control_exports", 427 "libpayload_consumer_exports", 428 ], 429} 430 431cc_library_static { 432 name: "libupdate_engine_boot_control_proto-full", 433 defaults: [ 434 "libupdate_engine_boot_control_defaults", 435 "libupdate_engine_boot_control_exports_proto-full", 436 "libpayload_consumer_exports_proto-full", 437 ], 438} 439 440// libupdate_engine_android (type: static_library) 441// ======================================================== 442// The main daemon static_library used in Android (non-Brillo). This only has a 443// loop to apply payloads provided by the upper layer via a Binder interface. 444cc_defaults { 445 name: "libupdate_engine_android_exports_defaults", 446 defaults: [ 447 "ue_defaults", 448 ], 449 450 static_libs: [ 451 "libavb", 452 "libavb_user", 453 "libgkiprops", 454 "libstatslog_ue", 455 "libPlatformProperties", 456 ], 457 shared_libs: [ 458 "apex_aidl_interface-cpp", 459 "libandroid_net", 460 "libbase", 461 "libbinder", 462 "libbinderwrapper", 463 "libbootloader_message", 464 "libbrillo-binder", 465 "libcurl", 466 "libcutils", 467 "libupdate_engine_stable-V1-cpp", 468 "liblog", 469 "libssl", 470 "libstatssocket", 471 "libutils", 472 ], 473 whole_static_libs: [ 474 "libcom.android.sysprop.apex", 475 ], 476} 477 478cc_defaults { 479 name: "libupdate_engine_android_exports", 480 defaults: [ 481 "libupdate_engine_android_exports_defaults", 482 "libupdate_engine_boot_control_exports", 483 "libpayload_consumer_exports", 484 ], 485 static_libs: [ 486 "libpayload_consumer", 487 "libupdate_engine_boot_control", 488 ], 489} 490 491cc_defaults { 492 name: "libupdate_engine_android_exports_proto-full", 493 defaults: [ 494 "libupdate_engine_android_exports_defaults", 495 "libupdate_engine_boot_control_exports_proto-full", 496 "libpayload_consumer_exports_proto-full", 497 ], 498 static_libs: [ 499 "libpayload_consumer_proto-full", 500 "libupdate_engine_boot_control_proto-full", 501 ], 502} 503 504cc_defaults { 505 name: "libupdate_engine_android_defaults", 506 defaults: [ 507 "ue_defaults", 508 ], 509 510 aidl: { 511 local_include_dirs: ["binder_bindings"], 512 export_aidl_headers: true, 513 }, 514 515 srcs: [ 516 ":libupdate_engine_aidl", 517 "common/system_state.cc", 518 "aosp/apex_handler_android.cc", 519 "aosp/binder_service_android.cc", 520 "aosp/binder_service_stable_android.cc", 521 "aosp/daemon_android.cc", 522 "aosp/daemon_state_android.cc", 523 "aosp/hardware_android.cc", 524 "aosp/logging_android.cc", 525 "aosp/network_selector_android.cc", 526 "aosp/update_attempter_android.cc", 527 "certificate_checker.cc", 528 "download_action.cc", 529 "libcurl_http_fetcher.cc", 530 "metrics_utils.cc", 531 "update_boot_flags_action.cc", 532 ], 533} 534 535cc_library_static { 536 name: "libupdate_engine_android", 537 defaults: [ 538 "libupdate_engine_android_defaults", 539 "libupdate_engine_android_exports", 540 ] 541} 542 543cc_library_static { 544 name: "libupdate_engine_android_proto-full", 545 defaults: [ 546 "libupdate_engine_android_defaults", 547 "libupdate_engine_android_exports_proto-full", 548 ] 549} 550 551// update_engine (type: executable) 552// ======================================================== 553// update_engine daemon. 554cc_binary { 555 name: "update_engine", 556 defaults: [ 557 "ue_defaults", 558 "libupdate_engine_android_exports", 559 ], 560 561 static_libs: [ 562 "libupdate_engine_android", 563 "libgflags", 564 ], 565 required: [ 566 "cacerts_google", 567 "otacerts", 568 ], 569 570 srcs: ["main.cc", "aosp/metrics_reporter_android.cc"], 571 init_rc: ["update_engine.rc"], 572} 573 574// update_engine_sideload (type: executable) 575// ======================================================== 576// A binary executable equivalent to update_engine daemon that installs an update 577// from a local file directly instead of running in the background. Used in 578// recovery image. 579cc_binary { 580 name: "update_engine_sideload", 581 defaults: [ 582 "ue_defaults", 583 "update_metadata-protos_exports", 584 "libupdate_engine_boot_control_exports", 585 "libpayload_consumer_exports", 586 ], 587 recovery: true, 588 589 cflags: ["-D_UE_SIDELOAD"], 590 header_libs: ["libgtest_prod_headers"], 591 592 srcs: [ 593 "aosp/hardware_android.cc", 594 "aosp/logging_android.cc", 595 "aosp/sideload_main.cc", 596 "aosp/update_attempter_android.cc", 597 "common/metrics_reporter_stub.cc", 598 "common/network_selector_stub.cc", 599 "common/system_state.cc", 600 "download_action.cc", 601 "metrics_utils.cc", 602 "update_boot_flags_action.cc", 603 "update_status_utils.cc", 604 ], 605 606 // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out, 607 // as it doesn't look beneficial to be installed separately due to its size. Note 608 // that we explicitly request their recovery variants, so that the expected files 609 // will be used and installed. 610 shared_libs: [ 611 "libbase", 612 "liblog", 613 "liblz4", 614 ], 615 static_libs: [ 616 "libpayload_consumer", 617 "libupdate_engine_boot_control", 618 "update_metadata-protos", 619 620 // We add the static versions of the shared libraries that are not installed to 621 // recovery image due to size concerns. Need to include all the static library 622 // dependencies of these static libraries. 623 "libgkiprops", 624 "libevent", 625 "libmodpb64", 626 "libprotobuf-cpp-lite", 627 "libbrillo-stream", 628 "libbrillo", 629 "libchrome", 630 ], 631 target: { 632 recovery: { 633 exclude_shared_libs: [ 634 "libprotobuf-cpp-lite", 635 "libbrillo-stream", 636 "libbrillo", 637 "libchrome", 638 ], 639 }, 640 }, 641 642 required: [ 643 "otacerts.recovery", 644 ], 645} 646 647// update_engine_client (type: executable) 648// ======================================================== 649// update_engine console client. 650cc_binary { 651 name: "update_engine_client", 652 defaults: ["ue_defaults"], 653 654 shared_libs: [ 655 "libbinder", 656 "libbinderwrapper", 657 "libbrillo-binder", 658 "libutils", 659 ], 660 661 aidl: { 662 local_include_dirs: ["binder_bindings"], 663 }, 664 665 srcs: [ 666 ":libupdate_engine_aidl", 667 "aosp/update_engine_client_android.cc", 668 "common/error_code_utils.cc", 669 "update_status_utils.cc", 670 ], 671} 672 673// libpayload_generator (type: static_library) 674// ======================================================== 675// server-side code. This is used for delta_generator and unittests but not 676// for any client code. 677cc_defaults { 678 name: "libpayload_generator_exports", 679 defaults: [ 680 "libpayload_consumer_exports", 681 "update_metadata-protos_exports", 682 "erofs-utils_export_defaults", 683 ], 684 685 header_libs: [ 686 "bootimg_headers", 687 ], 688 static_libs: [ 689 "libavb", 690 "libbrotli", 691 "libbsdiff", 692 "libdivsufsort", 693 "libdivsufsort64", 694 "liblzma", 695 "libpayload_consumer", 696 "libpuffdiff", 697 "libzucchini", 698 "libverity_tree", 699 "update_metadata-protos", 700 "libpayload_extent_utils", 701 "libcow_size_estimator", 702 "liberofs", 703 "libselinux", 704 "lz4diff-protos", 705 "liblz4diff", 706 "libzstd", 707 ], 708 shared_libs: [ 709 "libbase", 710 "libext2fs", 711 // LZ4 has to be a shared lib, as we want to override it with 712 // LD_LIBRARY_PRELOAD later 713 "liblz4", 714 ], 715} 716 717cc_library_static { 718 name: "libpayload_extent_ranges", 719 defaults: [ 720 "ue_defaults", 721 ], 722 host_supported: true, 723 recovery_available: true, 724 srcs: [ 725 "payload_generator/extent_ranges.cc", 726 ], 727 static_libs: [ 728 "update_metadata-protos", 729 ], 730} 731 732cc_library_static { 733 name: "libcow_size_estimator", 734 defaults: [ 735 "ue_defaults", 736 "update_metadata-protos_exports" 737 ], 738 host_supported: true, 739 recovery_available: true, 740 srcs: [ 741 "payload_generator/cow_size_estimator.cc", 742 ], 743 static_libs: [ 744 "update_metadata-protos", 745 "libbase", 746 "libsnapshot_cow", 747 "libcow_operation_convert", 748 ], 749} 750 751cc_defaults { 752 name: "liblz4diff_defaults", 753 static_libs: [ 754 "lz4diff-protos", 755 "update_metadata-protos", 756 "libssl", 757 "libbsdiff", 758 "libpuffdiff", 759 ], 760 shared_libs: [ 761 "liblz4", 762 ], 763} 764 765cc_library_static { 766 name: "liblz4diff", 767 host_supported: true, 768 defaults: ["ue_defaults", "liblz4diff_defaults"], 769 srcs: [ 770 "lz4diff/lz4diff.cc", 771 "lz4diff/lz4diff_compress.cc", 772 ], 773} 774 775cc_library_static { 776 name: "liblz4patch", 777 host_supported: true, 778 recovery_available: true, 779 defaults: ["ue_defaults"], 780 static_libs: [ 781 "lz4diff-protos", 782 "update_metadata-protos", 783 "libssl", 784 "libbspatch", 785 "libpuffpatch", 786 ], 787 shared_libs: [ 788 "liblz4", 789 ], 790 srcs: [ 791 "lz4diff/lz4patch.cc", 792 "lz4diff/lz4diff_compress.cc", 793 ], 794} 795 796cc_binary_host { 797 name: "lz4diff", 798 defaults: [ 799 "ue_defaults", 800 "libpayload_generator_exports", 801 ], 802 static_libs: [ 803 "libpayload_generator", 804 "liblz4diff", 805 "liblz4patch", 806 ], 807 srcs: [ 808 "lz4diff/lz4diff_main.cc", 809 ], 810} 811 812cc_library_static { 813 name: "libpayload_generator", 814 defaults: [ 815 "ue_defaults", 816 "libpayload_generator_exports", 817 ], 818 host_supported: true, 819 820 srcs: [ 821 "common/system_state.cc", 822 "download_action.cc", 823 "payload_generator/ab_generator.cc", 824 "payload_generator/annotated_operation.cc", 825 "payload_generator/blob_file_writer.cc", 826 "payload_generator/block_mapping.cc", 827 "payload_generator/boot_img_filesystem.cc", 828 "payload_generator/bzip.cc", 829 "payload_generator/deflate_utils.cc", 830 "payload_generator/delta_diff_generator.cc", 831 "payload_generator/delta_diff_utils.cc", 832 "payload_generator/ext2_filesystem.cc", 833 "payload_generator/erofs_filesystem.cc", 834 "payload_generator/extent_ranges.cc", 835 "payload_generator/full_update_generator.cc", 836 "payload_generator/mapfile_filesystem.cc", 837 "payload_generator/merge_sequence_generator.cc", 838 "payload_generator/payload_file.cc", 839 "payload_generator/payload_generation_config_android.cc", 840 "payload_generator/payload_generation_config.cc", 841 "payload_generator/payload_properties.cc", 842 "payload_generator/payload_signer.cc", 843 "payload_generator/raw_filesystem.cc", 844 "payload_generator/squashfs_filesystem.cc", 845 "payload_generator/xz_android.cc", 846 ], 847} 848 849// delta_generator (type: executable) 850// ======================================================== 851// server-side delta generator. 852cc_binary_host { 853 name: "delta_generator", 854 defaults: [ 855 "ue_defaults", 856 "libpayload_generator_exports", 857 "libpayload_consumer_exports", 858 ], 859 860 static_libs: [ 861 "libavb_host_sysdeps", 862 "libpayload_consumer", 863 "libpayload_generator", 864 "libgflags", 865 ], 866 867 srcs: ["payload_generator/generate_delta_main.cc"], 868} 869 870cc_test { 871 host_supported: true, 872 name: "ue_unittest_delta_generator", 873 defaults: [ 874 "ue_defaults", 875 "libpayload_generator_exports", 876 "libpayload_consumer_exports", 877 ], 878 879 static_libs: [ 880 "libpayload_consumer", 881 "libpayload_generator", 882 "libgflags", 883 ], 884 885 srcs: ["payload_generator/generate_delta_main.cc"], 886 887 gtest: false, 888 stem: "delta_generator", 889} 890 891// test_http_server (type: executable) 892// ======================================================== 893// Test HTTP Server. 894cc_test { 895 name: "test_http_server", 896 defaults: ["ue_defaults"], 897 srcs: [ 898 "common/http_common.cc", 899 "test_http_server.cc", 900 ], 901 902 gtest: false, 903} 904 905// test_subprocess (type: executable) 906// ======================================================== 907// Test helper subprocess program. 908cc_test { 909 name: "test_subprocess", 910 defaults: ["ue_defaults"], 911 srcs: ["test_subprocess.cc"], 912 913 gtest: false, 914} 915 916// Public keys for unittests. 917// ======================================================== 918genrule { 919 name: "ue_unittest_keys", 920 cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" + 921 "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" + 922 "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem) &&" + 923 "openssl pkey -in $(location unittest_key_EC.pem) -pubout -out $(location unittest_key_EC.pub.pem)", 924 srcs: [ 925 "unittest_key.pem", 926 "unittest_key2.pem", 927 "unittest_key_RSA4096.pem", 928 "unittest_key_EC.pem", 929 ], 930 out: [ 931 "unittest_key.pub.pem", 932 "unittest_key2.pub.pem", 933 "unittest_key_RSA4096.pub.pem", 934 "unittest_key_EC.pub.pem", 935 ], 936} 937 938// Sample images for unittests. 939// ======================================================== 940// Extract sample image from the compressed sample_images.tar.bz2 file used by 941// the unittests. 942genrule { 943 name: "ue_unittest_disk_imgs", 944 cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img", 945 srcs: ["sample_images/sample_images.tar.bz2"], 946 out: [ 947 "gen/disk_ext2_1k.img", 948 "gen/disk_ext2_4k.img", 949 "gen/disk_ext2_4k_empty.img", 950 "gen/disk_ext2_unittest.img", 951 ], 952} 953 954genrule { 955 name: "ue_unittest_erofs_imgs", 956 cmd: "$(in) $(location mkfs.erofs) $(location gen/erofs_empty.img) && " + 957 "$(in) $(location mkfs.erofs) $(location gen/erofs.img) $(location delta_generator) && " + 958 "$(in) $(location mkfs.erofs) $(location gen/erofs_new.img) $(location delta_generator) lz4hc,7", 959 srcs: ["sample_images/generate_test_erofs_images.sh"], 960 out: [ 961 "gen/erofs.img", 962 "gen/erofs_new.img", 963 "gen/erofs_empty.img", 964 ], 965 tools: [ 966 "mkfs.erofs", 967 "delta_generator", 968 ], 969} 970 971filegroup { 972 name: "update_engine_host_unittest_timeout_srcs", 973 srcs: [ 974 "common/action_processor_unittest.cc", 975 "common/file_fetcher_unittest.cc", 976 "payload_generator/delta_diff_utils_unittest.cc", 977 ], 978} 979 980filegroup { 981 name: "update_engine_host_unittest_srcs", 982 srcs: [ 983 "common/action_pipe_unittest.cc", 984 "common/action_processor_unittest.cc", 985 "common/action_unittest.cc", 986 "common/cow_operation_convert_unittest.cc", 987 "common/cpu_limiter_unittest.cc", 988 "common/fake_prefs.cc", 989 "common/file_fetcher_unittest.cc", 990 "common/hash_calculator_unittest.cc", 991 "common/hwid_override_unittest.cc", 992 "common/metrics_reporter_stub.cc", 993 "common/mock_http_fetcher.cc", 994 "common/prefs_unittest.cc", 995 "common/terminator_unittest.cc", 996 "common/test_utils.cc", 997 "lz4diff/lz4diff_compress_unittest.cc", 998 "lz4diff/lz4diff_unittest.cc", 999 "payload_generator/ab_generator_unittest.cc", 1000 "payload_generator/blob_file_writer_unittest.cc", 1001 "payload_generator/block_mapping_unittest.cc", 1002 "payload_generator/boot_img_filesystem_unittest.cc", 1003 "payload_generator/deflate_utils_unittest.cc", 1004 "payload_generator/delta_diff_utils_unittest.cc", 1005 "payload_generator/erofs_filesystem_unittest.cc", 1006 "payload_generator/ext2_filesystem_unittest.cc", 1007 "payload_generator/extent_ranges_unittest.cc", 1008 "payload_generator/extent_utils_unittest.cc", 1009 "payload_generator/fake_filesystem.cc", 1010 "payload_generator/full_update_generator_unittest.cc", 1011 "payload_generator/mapfile_filesystem_unittest.cc", 1012 "payload_generator/merge_sequence_generator_unittest.cc", 1013 "payload_generator/payload_file_unittest.cc", 1014 "payload_generator/payload_generation_config_android_unittest.cc", 1015 "payload_generator/payload_generation_config_unittest.cc", 1016 "payload_generator/payload_properties_unittest.cc", 1017 "payload_generator/payload_signer_unittest.cc", 1018 "payload_generator/squashfs_filesystem_unittest.cc", 1019 "payload_generator/zip_unittest.cc", 1020 "payload_consumer/verity_writer_android_unittest.cc", 1021 "payload_consumer/xz_extent_writer_unittest.cc", 1022 "testrunner.cc", 1023 ], 1024} 1025 1026cc_test_host { 1027 name: "update_engine_host_unittests", 1028 defaults: [ 1029 "ue_defaults", 1030 "libpayload_generator_exports", 1031 ], 1032 strip: { 1033 none: true, 1034 }, 1035 cflags: [ 1036 "-g3", 1037 ], 1038 tidy_timeout_srcs: [":update_engine_host_unittest_timeout_srcs"], 1039 srcs: [":update_engine_host_unittest_srcs"], 1040 data: [ 1041 ":ue_unittest_delta_generator", 1042 ":ue_unittest_disk_imgs", 1043 ":ue_unittest_erofs_imgs", 1044 ":ue_unittest_keys", 1045 "otacerts.zip", 1046 "unittest_key.pem", 1047 "unittest_key2.pem", 1048 "unittest_key_RSA4096.pem", 1049 "unittest_key_EC.pem", 1050 "update_engine.conf", 1051 ], 1052 static_libs: [ 1053 "libgmock", 1054 "libpayload_generator", 1055 ], 1056} 1057 1058// update_engine_unittests (type: executable) 1059// ======================================================== 1060// Main unittest file. 1061cc_test { 1062 name: "update_engine_http_unittests", 1063 defaults: [ 1064 "ue_defaults", 1065 "liblz4diff_defaults", 1066 "update_metadata-protos_exports", 1067 ], 1068 require_root: true, 1069 static_libs: [ 1070 "libbase", 1071 "libbrillo-test-helpers", 1072 "libchrome_test_helpers", 1073 "libcurl", 1074 "libcutils", 1075 "libdm", 1076 "libgmock", 1077 "libz", 1078 "libzstd", 1079 ], 1080 shared_libs: [ 1081 "libssl", 1082 "libcrypto", 1083 "libziparchive", 1084 "liblog", 1085 ], 1086 1087 data: [ 1088 ":test_http_server", 1089 ":test_subprocess", 1090 ":ue_unittest_keys", 1091 "otacerts.zip", 1092 "unittest_key.pem", 1093 "unittest_key2.pem", 1094 "unittest_key_RSA4096.pem", 1095 "unittest_key_EC.pem", 1096 ], 1097 1098 // We cannot use the default generated AndroidTest.xml because of the use of helper modules 1099 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator). 1100 // test_config: "test_config.xml", 1101 test_suites: ["device-tests"], 1102 1103 srcs: [ 1104 "aosp/platform_constants_android.cc", 1105 "certificate_checker.cc", 1106 "common/action_processor.cc", 1107 "common/boot_control_stub.cc", 1108 "common/error_code_utils.cc", 1109 "common/file_fetcher.cc", 1110 "common/hash_calculator.cc", 1111 "common/http_fetcher.cc", 1112 "common/multi_range_http_fetcher.cc", 1113 "common/http_common.cc", 1114 "common/subprocess.cc", 1115 "common/test_utils.cc", 1116 "common/utils.cc", 1117 "libcurl_http_fetcher.cc", 1118 "payload_consumer/certificate_parser_android.cc", 1119 "payload_consumer/payload_verifier.cc", 1120 "payload_generator/payload_signer.cc", 1121 "update_status_utils.cc", 1122 "certificate_checker_unittest.cc", 1123 "common/http_fetcher_unittest.cc", 1124 "common/mock_http_fetcher.cc", 1125 "common/subprocess_unittest.cc", 1126 "libcurl_http_fetcher_unittest.cc", 1127 "payload_consumer/certificate_parser_android_unittest.cc", 1128 "update_status_utils_unittest.cc", 1129 ], 1130} 1131 1132// update_engine_unittests (type: executable) 1133// ======================================================== 1134// Main unittest file. 1135cc_test { 1136 name: "update_engine_unittests", 1137 defaults: [ 1138 "ue_defaults", 1139 "libpayload_generator_exports", 1140 "libupdate_engine_android_exports", 1141 ], 1142 1143 static_libs: [ 1144 "libpayload_generator", 1145 "libbrillo-test-helpers", 1146 "libgmock", 1147 "libchrome_test_helpers", 1148 "libupdate_engine_android", 1149 "libdm", 1150 ], 1151 1152 header_libs: [ 1153 "libstorage_literals_headers", 1154 ], 1155 1156 data: [ 1157 ":ue_unittest_delta_generator", 1158 ":ue_unittest_disk_imgs", 1159 ":ue_unittest_erofs_imgs", 1160 ":ue_unittest_keys", 1161 "otacerts.zip", 1162 "unittest_key.pem", 1163 "unittest_key2.pem", 1164 "unittest_key_RSA4096.pem", 1165 "unittest_key_EC.pem", 1166 "update_engine.conf", 1167 ], 1168 1169 // We cannot use the default generated AndroidTest.xml because of the use of helper modules 1170 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator). 1171 test_config: "test_config.xml", 1172 test_suites: ["device-tests"], 1173 1174 tidy_timeout_srcs: [ 1175 ":update_engine_host_unittest_timeout_srcs", 1176 "aosp/dynamic_partition_control_android_unittest.cc", 1177 "common/http_fetcher_unittest.cc", 1178 "payload_consumer/delta_performer_integration_test.cc", 1179 "payload_consumer/delta_performer_unittest.cc", 1180 ], 1181 srcs: [ 1182 ":update_engine_host_unittest_srcs", 1183 "aosp/apex_handler_android_unittest.cc", 1184 "aosp/cleanup_previous_update_action_unittest.cc", 1185 "aosp/dynamic_partition_control_android_unittest.cc", 1186 "aosp/update_attempter_android_integration_test.cc", 1187 "aosp/update_attempter_android_unittest.cc", 1188 "common/utils_unittest.cc", 1189 "download_action_android_unittest.cc", 1190 "payload_consumer/bzip_extent_writer_unittest.cc", 1191 "payload_consumer/cached_file_descriptor_unittest.cc", 1192 "payload_consumer/cow_writer_file_descriptor_unittest.cc", 1193 "payload_consumer/delta_performer_integration_test.cc", 1194 "payload_consumer/delta_performer_unittest.cc", 1195 "payload_consumer/extent_reader_unittest.cc", 1196 "payload_consumer/extent_writer_unittest.cc", 1197 "payload_consumer/extent_map_unittest.cc", 1198 "payload_consumer/fake_file_descriptor.cc", 1199 "payload_consumer/file_descriptor_utils_unittest.cc", 1200 "payload_consumer/file_writer_unittest.cc", 1201 "payload_consumer/filesystem_verifier_action_unittest.cc", 1202 "payload_consumer/install_plan_unittest.cc", 1203 "payload_consumer/install_operation_executor_unittest.cc", 1204 "payload_consumer/partition_update_generator_android_unittest.cc", 1205 "payload_consumer/partition_writer_unittest.cc", 1206 "payload_consumer/postinstall_runner_action_unittest.cc", 1207 "payload_consumer/snapshot_extent_writer_unittest.cc", 1208 "payload_consumer/vabc_partition_writer_unittest.cc", 1209 "payload_consumer/xor_extent_writer_unittest.cc", 1210 ], 1211} 1212 1213// Brillo update payload generation script 1214// ======================================================== 1215sh_binary { 1216 name: "brillo_update_payload", 1217 device_supported: false, 1218 host_supported: true, 1219 1220 src: "scripts/brillo_update_payload", 1221 required: [ 1222 "delta_generator", 1223 "shflags", 1224 "simg2img", 1225 ], 1226 1227 target: { 1228 darwin: { 1229 enabled: false, 1230 }, 1231 }, 1232} 1233 1234// update_engine header library 1235cc_library_headers { 1236 name: "libupdate_engine_headers", 1237 1238 // This header library is available to core and product modules. 1239 product_available: true, 1240 1241 export_include_dirs: ["."], 1242 apex_available: [ 1243 "com.android.gki.*", 1244 "//apex_available:platform", 1245 ], 1246 host_supported: true, 1247 recovery_available: true, 1248 ramdisk_available: true, 1249 1250 target: { 1251 darwin: { 1252 enabled: false, 1253 }, 1254 } 1255} 1256 1257cc_binary_host { 1258 name: "cow_converter", 1259 defaults: [ 1260 "ue_defaults", 1261 "libpayload_consumer_exports", 1262 ], 1263 srcs: [ 1264 "aosp/cow_converter.cc", 1265 ], 1266 static_libs: [ 1267 "liblog", 1268 "libbrotli", 1269 "libbase", 1270 "libcow_operation_convert", 1271 "libcow_size_estimator", 1272 "libgflags", 1273 "libpayload_consumer", 1274 "libpayload_extent_ranges", 1275 "libpayload_extent_utils", 1276 "libsnapshot_cow", 1277 "libz", 1278 "update_metadata-protos", 1279 ], 1280} 1281 1282cc_library_static { 1283 name: "lz4diff-protos", 1284 host_supported: true, 1285 ramdisk_available: true, 1286 recovery_available: true, 1287 1288 srcs: ["lz4diff/lz4diff.proto"], 1289 cflags: [ 1290 "-Wall", 1291 "-Werror", 1292 ], 1293 proto: { 1294 canonical_path_from_root: false, 1295 export_proto_headers: true, 1296 }, 1297} 1298 1299cc_binary_host { 1300 name: "ota_extractor", 1301 defaults: [ 1302 "ue_defaults", 1303 "libpayload_consumer_exports", 1304 ], 1305 srcs: [ 1306 "aosp/ota_extractor.cc", 1307 ], 1308 static_libs: [ 1309 "liblog", 1310 "libbrotli", 1311 "libbase", 1312 "libpayload_consumer", 1313 "libpayload_extent_ranges", 1314 "libpayload_extent_utils", 1315 "libz", 1316 "libgflags", 1317 "update_metadata-protos", 1318 ], 1319} 1320