• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_apex_utils",
100        "releasetools_common",
101    ],
102    required: [
103        "apexd_host",
104        "checkvintf",
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        "apexd_host",
170        "brillo_update_payload",
171        "checkvintf",
172        "lz4",
173        "toybox",
174        "unpack_bootimg",
175        "deapexer",
176    ],
177    target: {
178        darwin: {
179            // required module "brillo_update_payload" is disabled on darwin
180            enabled: false,
181        },
182    },
183}
184
185//
186// Host libraries.
187//
188
189python_library_host {
190    name: "releasetools_add_img_to_target_files",
191    defaults: [
192        "releasetools_add_img_to_target_files_defaults",
193    ],
194}
195
196python_library_host {
197    name: "releasetools_apex_utils",
198    srcs: [
199        "apex_utils.py",
200    ],
201    libs: [
202        "apex_manifest",
203        "ota_metadata_proto",
204        "releasetools_common",
205    ],
206}
207
208python_library_host {
209    name: "releasetools_build_image",
210    defaults: [
211        "releasetools_build_image_defaults",
212    ],
213}
214
215python_library_host {
216    name: "releasetools_build_super_image",
217    defaults: [
218        "releasetools_build_super_image_defaults",
219    ],
220}
221
222python_library_host {
223    name: "releasetools_check_target_files_vintf",
224    defaults: [
225        "releasetools_check_target_files_vintf_defaults",
226    ],
227}
228
229python_library_host {
230    name: "releasetools_common",
231    srcs: [
232        "blockimgdiff.py",
233        "common.py",
234        "images.py",
235        "rangelib.py",
236        "sparse_img.py",
237    ],
238    data: [
239        ":zip2zip",
240    ],
241    // Only the tools that are referenced directly are listed as required modules. For example,
242    // `avbtool` is not here, as the script always uses the one from info_dict['avb_avbtool'].
243    required: [
244        "aapt2",
245        "boot_signer",
246        "brotli",
247        "bsdiff",
248        "lz4",
249        "mkbootfs",
250        "signapk",
251        "toybox",
252        "unpack_bootimg",
253    ],
254}
255
256python_library_host {
257    name: "releasetools_img_from_target_files",
258    defaults: [
259        "releasetools_img_from_target_files_defaults",
260    ],
261}
262
263python_library_host {
264    name: "releasetools_ota_from_target_files",
265    defaults: [
266        "releasetools_ota_from_target_files_defaults",
267    ],
268}
269
270python_library_host {
271    name: "releasetools_fsverity_metadata_generator",
272    srcs: [
273        "fsverity_metadata_generator.py",
274    ],
275    libs: [
276        "fsverity_digests_proto_python",
277    ],
278}
279
280python_library_host {
281    name: "releasetools_verity_utils",
282    srcs: [
283        "verity_utils.py",
284    ],
285    required: [
286        "append2simg",
287        "build_verity_metadata",
288        "build_verity_tree",
289        "fec",
290    ],
291}
292
293//
294// Host binaries.
295//
296
297python_defaults {
298    name: "releasetools_binary_defaults",
299    // TODO (b/140144201) Build imgdiff from releasetools_common
300    required: [
301        "aapt2",
302        "boot_signer",
303        "brotli",
304        "bsdiff",
305        "deapexer",
306        "lz4",
307        "mkbootfs",
308        "signapk",
309        "toybox",
310        "unpack_bootimg",
311    ],
312}
313
314python_binary_host {
315    name: "add_img_to_target_files",
316    defaults: [
317        "releasetools_binary_defaults",
318        "releasetools_add_img_to_target_files_defaults",
319    ],
320}
321
322python_library_host {
323    name: "ota_utils_lib",
324    srcs: [
325        "ota_utils.py",
326        "payload_signer.py",
327        "ota_signing_utils.py",
328    ],
329    libs: [
330        "releasetools_common",
331    ],
332}
333
334python_binary_host {
335    name: "merge_ota",
336    srcs: [
337        "merge_ota.py",
338    ],
339    libs: [
340        "ota_metadata_proto",
341        "update_payload",
342        "care_map_proto_py",
343        "releasetools_common",
344        "ota_utils_lib",
345    ],
346}
347
348python_binary_host {
349    name: "create_brick_ota",
350    srcs: [
351        "create_brick_ota.py",
352    ],
353    libs: [
354        "ota_utils_lib",
355    ],
356    required: [
357        "signapk",
358    ],
359}
360
361python_binary_host {
362    name: "build_image",
363    defaults: [
364        "releasetools_binary_defaults",
365        "releasetools_build_image_defaults",
366    ],
367}
368
369python_binary_host {
370    name: "build_super_image",
371    defaults: [
372        "releasetools_binary_defaults",
373        "releasetools_build_super_image_defaults",
374    ],
375}
376
377python_binary_host {
378    name: "check_partition_sizes",
379    srcs: [
380        "check_partition_sizes.py",
381    ],
382    libs: [
383        "releasetools_common",
384    ],
385    defaults: [
386        "releasetools_binary_defaults",
387    ],
388}
389
390python_binary_host {
391    name: "check_ota_package_signature",
392    defaults: ["releasetools_binary_defaults"],
393    srcs: [
394        "check_ota_package_signature.py",
395    ],
396    libs: [
397        "releasetools_common",
398    ],
399    required: [
400        "delta_generator",
401    ],
402    target: {
403        darwin: {
404            // required module "delta_generator" is disabled on darwin
405            enabled: false,
406        },
407    },
408}
409
410python_binary_host {
411    name: "check_target_files_signatures",
412    defaults: ["releasetools_binary_defaults"],
413    srcs: [
414        "check_target_files_signatures.py",
415    ],
416    libs: [
417        "releasetools_common",
418    ],
419    required: [
420        "aapt2",
421    ],
422}
423
424python_binary_host {
425    name: "check_target_files_vintf",
426    defaults: [
427        "releasetools_binary_defaults",
428        "releasetools_check_target_files_vintf_defaults",
429    ],
430}
431
432python_binary_host {
433    name: "img_from_target_files",
434    defaults: [
435        "releasetools_binary_defaults",
436        "releasetools_img_from_target_files_defaults",
437    ],
438}
439
440python_defaults {
441    name: "releasetools_find_shareduid_violation_defaults",
442    srcs: [
443        "find_shareduid_violation.py",
444    ],
445    libs: [
446        "releasetools_common",
447    ],
448}
449
450python_binary_host {
451    name: "find_shareduid_violation",
452    defaults: [
453        "releasetools_binary_defaults",
454        "releasetools_find_shareduid_violation_defaults",
455    ],
456}
457
458python_library_host {
459    name: "releasetools_find_shareduid_violation",
460    defaults: [
461        "releasetools_find_shareduid_violation_defaults",
462    ],
463}
464
465python_binary_host {
466    name: "make_recovery_patch",
467    defaults: ["releasetools_binary_defaults"],
468    srcs: [
469        "make_recovery_patch.py",
470    ],
471    libs: [
472        "releasetools_common",
473    ],
474}
475
476python_binary_host {
477    name: "ota_from_target_files",
478    defaults: [
479        "releasetools_binary_defaults",
480        "releasetools_ota_from_target_files_defaults",
481    ],
482}
483
484python_binary_host {
485    name: "ota_from_raw_img",
486    srcs: [
487        "ota_from_raw_img.py",
488    ],
489    main: "ota_from_raw_img.py",
490    defaults: [
491        "releasetools_binary_defaults",
492    ],
493    required: [
494        "delta_generator",
495    ],
496    libs: [
497        "ota_metadata_proto",
498        "releasetools_common",
499        "ota_utils_lib",
500    ],
501}
502
503python_binary_host {
504    name: "ota_package_parser",
505    defaults: ["releasetools_binary_defaults"],
506    srcs: [
507        "ota_package_parser.py",
508        "rangelib.py",
509    ],
510}
511
512python_binary_host {
513    name: "sparse_img",
514    defaults: ["releasetools_binary_defaults"],
515    srcs: [
516        "rangelib.py",
517        "sparse_img.py",
518    ],
519}
520
521python_binary_host {
522    name: "sign_apex",
523    defaults: ["releasetools_binary_defaults"],
524    srcs: [
525        "sign_apex.py",
526    ],
527    libs: [
528        "releasetools_apex_utils",
529        "releasetools_common",
530    ],
531}
532
533python_binary_host {
534    name: "sign_target_files_apks",
535    defaults: ["releasetools_binary_defaults"],
536    srcs: [
537        "sign_target_files_apks.py",
538        "ota_from_raw_img.py",
539    ],
540    libs: [
541        "releasetools_add_img_to_target_files",
542        "releasetools_apex_utils",
543        "releasetools_common",
544        "ota_metadata_proto",
545        "ota_utils_lib",
546        "update_payload",
547    ],
548}
549
550python_binary_host {
551    name: "validate_target_files",
552    defaults: ["releasetools_binary_defaults"],
553    srcs: [
554        "validate_target_files.py",
555    ],
556    libs: [
557        "releasetools_common",
558    ],
559}
560
561python_binary_host {
562    name: "verity_utils",
563    defaults: ["releasetools_binary_defaults"],
564    srcs: [
565        "verity_utils.py",
566    ],
567    libs: [
568        "releasetools_common",
569    ],
570    required: [
571        "append2simg",
572        "build_verity_metadata",
573        "build_verity_tree",
574        "fec",
575    ],
576}
577
578python_binary_host {
579    name: "fsverity_metadata_generator",
580    defaults: ["releasetools_binary_defaults"],
581    srcs: [
582        "fsverity_metadata_generator.py",
583    ],
584    required: [
585        "fsverity",
586    ],
587}
588
589//
590// Tests.
591//
592
593python_defaults {
594    name: "releasetools_test_defaults",
595    srcs: [
596        "check_ota_package_signature.py",
597        "check_partition_sizes.py",
598        "check_target_files_signatures.py",
599        "make_recovery_patch.py",
600        "ota_package_parser.py",
601        "sign_apex.py",
602        "sign_target_files_apks.py",
603        "validate_target_files.py",
604        "merge_ota.py",
605        ":releasetools_merge_sources",
606        ":releasetools_merge_tests",
607
608        "test_*.py",
609    ],
610    libs: [
611        "releasetools_add_img_to_target_files",
612        "releasetools_apex_utils",
613        "releasetools_build_image",
614        "releasetools_build_super_image",
615        "releasetools_check_target_files_vintf",
616        "releasetools_common",
617        "releasetools_find_shareduid_violation",
618        "releasetools_img_from_target_files",
619        "releasetools_ota_from_target_files",
620        "releasetools_verity_utils",
621        "update_payload",
622    ],
623    data: [
624        "testdata/**/*",
625    ],
626    device_common_data: [
627        ":com.android.apex.compressed.v1",
628        ":com.android.apex.vendor.foo.with_vintf",
629    ],
630    target: {
631        darwin: {
632            // libs dep "releasetools_ota_from_target_files" is disabled on darwin
633            enabled: false,
634        },
635    },
636    required: [
637        "apexd_host",
638        "deapexer",
639    ],
640}
641
642python_test_host {
643    name: "releasetools_test",
644    defaults: ["releasetools_test_defaults"],
645    main: "test_utils.py",
646    // Don't use embedded_launcher, atest will try (but may fail) to load libc++.so from
647    // host, because the test executable won't be able to find the needed libs via its
648    // runpath.
649    test_options: {
650        unit_test: true,
651    },
652}
653
654genrule {
655    name: "otatools_package_releasetools",
656    tools: ["soong_zip"],
657    srcs: ["**/*"],
658    cmd: "find build/make/tools/releasetools -name '*.pyc' -prune -o \\( -type f -o -type l \\) -print | sort > $(genDir)/files.txt && " +
659        "$(location soong_zip) -o $(out) -C build/make/tools -l $(genDir)/files.txt",
660    out: ["otatools_package_releasetools.zip"],
661}
662