1// Copyright (C) 2019 The Android Open Source Project 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15// 16// Module-specific defaults. 17// 18// For module X, if we need to build it both as a library and an executable: 19// - A default rule `releasetools_X_defaults` is created, which lists `srcs`, `libs` and 20// `required` properties. 21// - `python_library_host` and `python_binary_host` are created by listing 22// `releasetools_X_defaults` in their defaults. 23// 24 25package { 26 default_applicable_licenses: ["Android-Apache-2.0"], 27} 28 29python_defaults { 30 name: "releasetools_add_img_to_target_files_defaults", 31 srcs: [ 32 "add_img_to_target_files.py", 33 ], 34 libs: [ 35 "ota_metadata_proto", 36 "releasetools_apex_utils", 37 "releasetools_build_image", 38 "releasetools_build_super_image", 39 "releasetools_common", 40 "libavbtool", 41 ], 42 required: [ 43 "care_map_generator", 44 ], 45} 46 47python_defaults { 48 name: "releasetools_build_image_defaults", 49 srcs: [ 50 "build_image.py", 51 ], 52 libs: [ 53 "releasetools_common", 54 "releasetools_fsverity_metadata_generator", 55 "releasetools_verity_utils", 56 ], 57 required: [ 58 "blk_alloc_to_base_fs", 59 "e2fsck", 60 "fsck.erofs", 61 "img2simg", 62 "mkfs.erofs", 63 "mkuserimg_mke2fs", 64 "simg2img", 65 "tune2fs", 66 "mkf2fsuserimg", 67 "fsck.f2fs", 68 ], 69} 70 71python_defaults { 72 name: "releasetools_build_super_image_defaults", 73 srcs: [ 74 "build_super_image.py", 75 ], 76 libs: [ 77 "releasetools_common", 78 ], 79} 80 81python_defaults { 82 name: "releasetools_img_from_target_files_defaults", 83 srcs: [ 84 "img_from_target_files.py", 85 ], 86 libs: [ 87 "releasetools_build_super_image", 88 "releasetools_common", 89 ], 90} 91 92python_defaults { 93 name: "releasetools_check_target_files_vintf_defaults", 94 srcs: [ 95 "check_target_files_vintf.py", 96 ], 97 libs: [ 98 "apex_manifest", 99 "releasetools_common", 100 ], 101 required: [ 102 "checkvintf", 103 "deapexer", 104 "dump_apex_info", 105 ], 106} 107 108python_library_host { 109 name: "ota_metadata_proto", 110 srcs: [ 111 "ota_metadata.proto", 112 ], 113 proto: { 114 canonical_path_from_root: false, 115 }, 116} 117 118cc_library_static { 119 name: "ota_metadata_proto_cc", 120 srcs: [ 121 "ota_metadata.proto", 122 ], 123 host_supported: true, 124 recovery_available: true, 125 proto: { 126 canonical_path_from_root: false, 127 type: "lite", 128 export_proto_headers: true, 129 }, 130} 131 132java_library_static { 133 name: "ota_metadata_proto_java", 134 host_supported: true, 135 proto: { 136 type: "nano", 137 }, 138 srcs: ["ota_metadata.proto"], 139 sdk_version: "9", 140 target: { 141 android: { 142 jarjar_rules: "jarjar-rules.txt", 143 }, 144 host: { 145 static_libs: ["libprotobuf-java-nano"], 146 }, 147 }, 148 visibility: ["//frameworks/base:__subpackages__"] 149} 150 151python_defaults { 152 name: "releasetools_ota_from_target_files_defaults", 153 srcs: [ 154 "edify_generator.py", 155 "non_ab_ota.py", 156 "ota_from_target_files.py", 157 "target_files_diff.py", 158 ], 159 libs: [ 160 "ota_metadata_proto", 161 "releasetools_check_target_files_vintf", 162 "releasetools_common", 163 "releasetools_verity_utils", 164 "apex_manifest", 165 "care_map_proto_py", 166 "ota_utils_lib", 167 ], 168 required: [ 169 "brillo_update_payload", 170 "checkvintf", 171 "generate_gki_certificate", 172 "minigzip", 173 "lz4", 174 "toybox", 175 "unpack_bootimg", 176 "deapexer", 177 ], 178 target: { 179 darwin: { 180 // required module "brillo_update_payload" is disabled on darwin 181 enabled: false, 182 }, 183 }, 184} 185 186// 187// Host libraries. 188// 189 190python_library_host { 191 name: "releasetools_add_img_to_target_files", 192 defaults: [ 193 "releasetools_add_img_to_target_files_defaults", 194 ], 195} 196 197python_library_host { 198 name: "releasetools_apex_utils", 199 srcs: [ 200 "apex_utils.py", 201 ], 202 libs: [ 203 "apex_manifest", 204 "ota_metadata_proto", 205 "releasetools_common", 206 ], 207} 208 209python_library_host { 210 name: "releasetools_build_image", 211 defaults: [ 212 "releasetools_build_image_defaults", 213 ], 214} 215 216python_library_host { 217 name: "releasetools_build_super_image", 218 defaults: [ 219 "releasetools_build_super_image_defaults", 220 ], 221} 222 223python_library_host { 224 name: "releasetools_check_target_files_vintf", 225 defaults: [ 226 "releasetools_check_target_files_vintf_defaults", 227 ], 228} 229 230python_library_host { 231 name: "releasetools_common", 232 srcs: [ 233 "blockimgdiff.py", 234 "common.py", 235 "images.py", 236 "rangelib.py", 237 "sparse_img.py", 238 ], 239 // Only the tools that are referenced directly are listed as required modules. For example, 240 // `avbtool` is not here, as the script always uses the one from info_dict['avb_avbtool']. 241 required: [ 242 "aapt2", 243 "boot_signer", 244 "brotli", 245 "bsdiff", 246 "generate_gki_certificate", 247 "imgdiff", 248 "minigzip", 249 "lz4", 250 "mkbootfs", 251 "signapk", 252 "toybox", 253 "unpack_bootimg", 254 "zip2zip", 255 ], 256} 257 258python_library_host { 259 name: "releasetools_img_from_target_files", 260 defaults: [ 261 "releasetools_img_from_target_files_defaults", 262 ], 263} 264 265python_library_host { 266 name: "releasetools_ota_from_target_files", 267 defaults: [ 268 "releasetools_ota_from_target_files_defaults", 269 ], 270} 271 272python_library_host { 273 name: "releasetools_fsverity_metadata_generator", 274 srcs: [ 275 "fsverity_metadata_generator.py", 276 ], 277 libs: [ 278 "fsverity_digests_proto_python", 279 ], 280} 281 282python_library_host { 283 name: "releasetools_verity_utils", 284 srcs: [ 285 "verity_utils.py", 286 ], 287 required: [ 288 "append2simg", 289 "build_verity_metadata", 290 "build_verity_tree", 291 "fec", 292 ], 293} 294 295// 296// Host binaries. 297// 298 299python_defaults { 300 name: "releasetools_binary_defaults", 301 version: { 302 py3: { 303 embedded_launcher: true, 304 }, 305 }, 306 // TODO (b/140144201) Build imgdiff from releasetools_common 307 required: [ 308 "aapt2", 309 "boot_signer", 310 "brotli", 311 "bsdiff", 312 "deapexer", 313 "generate_gki_certificate", 314 "imgdiff", 315 "minigzip", 316 "lz4", 317 "mkbootfs", 318 "signapk", 319 "toybox", 320 "unpack_bootimg", 321 ], 322} 323 324python_binary_host { 325 name: "add_img_to_target_files", 326 defaults: [ 327 "releasetools_binary_defaults", 328 "releasetools_add_img_to_target_files_defaults", 329 ], 330} 331 332python_library_host { 333 name: "ota_utils_lib", 334 srcs: [ 335 "ota_utils.py", 336 "payload_signer.py", 337 ], 338 libs: [ 339 "releasetools_common", 340 ], 341} 342 343python_binary_host { 344 name: "merge_ota", 345 version: { 346 py3: { 347 embedded_launcher: true, 348 }, 349 }, 350 srcs: [ 351 "merge_ota.py", 352 ], 353 libs: [ 354 "ota_metadata_proto", 355 "update_payload", 356 "care_map_proto_py", 357 "releasetools_common", 358 "ota_utils_lib", 359 ], 360} 361 362python_binary_host { 363 name: "create_brick_ota", 364 version: { 365 py3: { 366 embedded_launcher: true, 367 }, 368 }, 369 srcs: [ 370 "create_brick_ota.py", 371 ], 372 libs: [ 373 "ota_utils_lib", 374 ], 375} 376 377python_binary_host { 378 name: "build_image", 379 defaults: [ 380 "releasetools_binary_defaults", 381 "releasetools_build_image_defaults", 382 ], 383} 384 385python_binary_host { 386 name: "build_super_image", 387 defaults: [ 388 "releasetools_binary_defaults", 389 "releasetools_build_super_image_defaults", 390 ], 391} 392 393python_binary_host { 394 name: "check_partition_sizes", 395 srcs: [ 396 "check_partition_sizes.py", 397 ], 398 libs: [ 399 "releasetools_common", 400 ], 401 defaults: [ 402 "releasetools_binary_defaults", 403 ], 404} 405 406python_binary_host { 407 name: "check_ota_package_signature", 408 defaults: ["releasetools_binary_defaults"], 409 srcs: [ 410 "check_ota_package_signature.py", 411 ], 412 libs: [ 413 "releasetools_common", 414 ], 415 required: [ 416 "delta_generator", 417 ], 418 target: { 419 darwin: { 420 // required module "delta_generator" is disabled on darwin 421 enabled: false, 422 }, 423 }, 424} 425 426python_binary_host { 427 name: "check_target_files_signatures", 428 defaults: ["releasetools_binary_defaults"], 429 srcs: [ 430 "check_target_files_signatures.py", 431 ], 432 libs: [ 433 "releasetools_common", 434 ], 435 required: [ 436 "aapt2", 437 ], 438} 439 440python_binary_host { 441 name: "check_target_files_vintf", 442 defaults: [ 443 "releasetools_binary_defaults", 444 "releasetools_check_target_files_vintf_defaults" 445 ], 446} 447 448python_binary_host { 449 name: "img_from_target_files", 450 defaults: [ 451 "releasetools_binary_defaults", 452 "releasetools_img_from_target_files_defaults", 453 ], 454} 455 456python_defaults { 457 name: "releasetools_find_shareduid_violation_defaults", 458 srcs: [ 459 "find_shareduid_violation.py", 460 ], 461 libs: [ 462 "releasetools_common", 463 ], 464} 465 466python_binary_host { 467 name: "find_shareduid_violation", 468 defaults: [ 469 "releasetools_binary_defaults", 470 "releasetools_find_shareduid_violation_defaults", 471 ], 472} 473 474python_library_host { 475 name: "releasetools_find_shareduid_violation", 476 defaults: [ 477 "releasetools_find_shareduid_violation_defaults", 478 ], 479} 480 481python_binary_host { 482 name: "make_recovery_patch", 483 defaults: ["releasetools_binary_defaults"], 484 srcs: [ 485 "make_recovery_patch.py", 486 ], 487 libs: [ 488 "releasetools_common", 489 ], 490} 491 492python_binary_host { 493 name: "ota_from_target_files", 494 defaults: [ 495 "releasetools_binary_defaults", 496 "releasetools_ota_from_target_files_defaults", 497 ], 498} 499 500python_binary_host { 501 name: "ota_package_parser", 502 defaults: ["releasetools_binary_defaults"], 503 srcs: [ 504 "ota_package_parser.py", 505 "rangelib.py", 506 ], 507} 508 509python_binary_host { 510 name: "sparse_img", 511 defaults: ["releasetools_binary_defaults"], 512 srcs: [ 513 "rangelib.py", 514 "sparse_img.py", 515 ], 516} 517 518python_binary_host { 519 name: "sign_apex", 520 defaults: ["releasetools_binary_defaults"], 521 srcs: [ 522 "sign_apex.py", 523 ], 524 libs: [ 525 "releasetools_apex_utils", 526 "releasetools_common", 527 ], 528} 529 530python_binary_host { 531 name: "sign_target_files_apks", 532 defaults: ["releasetools_binary_defaults"], 533 srcs: [ 534 "sign_target_files_apks.py", 535 ], 536 libs: [ 537 "releasetools_add_img_to_target_files", 538 "releasetools_apex_utils", 539 "releasetools_common", 540 ], 541} 542 543python_binary_host { 544 name: "validate_target_files", 545 defaults: ["releasetools_binary_defaults"], 546 srcs: [ 547 "validate_target_files.py", 548 ], 549 libs: [ 550 "releasetools_common", 551 ], 552} 553 554python_binary_host { 555 name: "verity_utils", 556 defaults: ["releasetools_binary_defaults"], 557 srcs: [ 558 "verity_utils.py", 559 ], 560 libs: [ 561 "releasetools_common", 562 ], 563 required: [ 564 "append2simg", 565 "build_verity_metadata", 566 "build_verity_tree", 567 "fec", 568 ], 569} 570 571python_binary_host { 572 name: "fsverity_metadata_generator", 573 defaults: ["releasetools_binary_defaults"], 574 srcs: [ 575 "fsverity_metadata_generator.py", 576 ], 577 required: [ 578 "fsverity", 579 ], 580} 581 582// 583// Tests. 584// 585 586python_defaults { 587 name: "releasetools_test_defaults", 588 srcs: [ 589 "check_ota_package_signature.py", 590 "check_partition_sizes.py", 591 "check_target_files_signatures.py", 592 "make_recovery_patch.py", 593 "ota_package_parser.py", 594 "sign_apex.py", 595 "sign_target_files_apks.py", 596 "validate_target_files.py", 597 "merge_ota.py", 598 ":releasetools_merge_sources", 599 ":releasetools_merge_tests", 600 601 "test_*.py", 602 ], 603 libs: [ 604 "releasetools_add_img_to_target_files", 605 "releasetools_apex_utils", 606 "releasetools_build_image", 607 "releasetools_build_super_image", 608 "releasetools_check_target_files_vintf", 609 "releasetools_common", 610 "releasetools_find_shareduid_violation", 611 "releasetools_img_from_target_files", 612 "releasetools_ota_from_target_files", 613 "releasetools_verity_utils", 614 "update_payload", 615 ], 616 data: [ 617 "testdata/**/*", 618 ":com.android.apex.compressed.v1", 619 ":com.android.apex.compressed.v1_original", 620 ":com.android.apex.vendor.foo.with_vintf" 621 ], 622 target: { 623 darwin: { 624 // libs dep "releasetools_ota_from_target_files" is disabled on darwin 625 enabled: false, 626 }, 627 }, 628 required: [ 629 "deapexer", 630 ], 631} 632 633python_test_host { 634 name: "releasetools_test", 635 defaults: ["releasetools_test_defaults"], 636 main: "test_utils.py", 637 // Don't use embedded_launcher, atest will try (but may fail) to load libc++.so from 638 // host, because the test executable won't be able to find the needed libs via its 639 // runpath. 640 test_options: { 641 unit_test: true, 642 }, 643} 644