• 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    ],
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