• 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_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