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