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