blob: 2bff72c23c14fd661ba41e0cd7750724d6306382 [file] [log] [blame]
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001//
2// Copyright (C) 2015 The Android Open Source Project
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15//
16
Colin Cross606913a2017-11-14 13:05:37 -080017// AIDL interface between libupdate_engine and framework.jar
Bob Badour9b85a6c2021-02-12 21:28:32 -080018package {
19 default_applicable_licenses: ["system_update_engine_license"],
20}
21
22// Added automatically by a large-scale-change
23// See: http://go/android-license-faq
24license {
25 name: "system_update_engine_license",
26 visibility: [":__subpackages__"],
27 license_kinds: [
28 "SPDX-license-identifier-Apache-2.0",
29 ],
30 license_text: [
31 "NOTICE",
32 ],
33}
34
Colin Cross606913a2017-11-14 13:05:37 -080035filegroup {
36 name: "libupdate_engine_aidl",
37 srcs: [
38 "binder_bindings/android/os/IUpdateEngine.aidl",
39 "binder_bindings/android/os/IUpdateEngineCallback.aidl",
40 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -070041 path: "binder_bindings",
42}
43
44cc_defaults {
45 name: "ue_defaults",
46
47 cflags: [
Amin Hassani2e4eda52019-01-07 14:01:17 -080048 "-DBASE_VER=576279",
Dan Willemsenf5a904e2018-10-23 01:02:44 -070049 "-DUSE_HWID_OVERRIDE=0",
Dan Willemsenf5a904e2018-10-23 01:02:44 -070050 "-D_FILE_OFFSET_BITS=64",
51 "-D_POSIX_C_SOURCE=199309L",
52 "-Wa,--noexecstack",
53 "-Wall",
54 "-Werror",
55 "-Wextra",
56 "-Wformat=2",
57 "-Wno-psabi",
58 "-Wno-unused-parameter",
59 "-ffunction-sections",
60 "-fstack-protector-strong",
61 "-fvisibility=hidden",
Kelvin Zhangc5803b72021-09-02 09:06:16 -070062 "-g3",
Dan Willemsenf5a904e2018-10-23 01:02:44 -070063 ],
64 cppflags: [
65 "-Wnon-virtual-dtor",
66 "-fno-strict-aliasing",
67 ],
68 include_dirs: ["system"],
69 local_include_dirs: ["client_library/include"],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -070070 header_libs: ["libgtest_prod_headers"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -070071 shared_libs: [
72 "libbrillo-stream",
73 "libbrillo",
74 "libchrome",
75 ],
76 ldflags: ["-Wl,--gc-sections"],
77
78 product_variables: {
79 pdk: {
80 enabled: false,
81 },
82 },
83
84 target: {
Sen Jiangb5f631d2018-12-18 16:59:57 -080085 android: {
86 cflags: [
87 "-DUSE_FEC=1",
88 ],
89 },
90 host: {
91 cflags: [
92 "-DUSE_FEC=0",
93 ],
94 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -070095 darwin: {
96 enabled: false,
97 },
98 },
99}
100
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400101// libcow_operation_convert (type: library)
102// ========================================================
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500103cc_library_static {
104 name: "libpayload_extent_utils",
105 defaults: [
106 "ue_defaults",
107 ],
108 host_supported: true,
109 recovery_available: true,
110 srcs: [
111 "payload_generator/extent_utils.cc",
112 ],
113 static_libs: [
114 "update_metadata-protos",
115 ],
116}
117
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400118cc_library {
119 name: "libcow_operation_convert",
120 host_supported: true,
121 recovery_available: true,
122 defaults: [
123 "ue_defaults",
124 "update_metadata-protos_exports",
125 ],
126 srcs: [
127 "common/cow_operation_convert.cc",
128 ],
129 static_libs: [
130 "libsnapshot_cow",
131 "update_metadata-protos",
132 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500133 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400134 "libbrotli",
135 "libz",
136 ],
137}
138
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700139// update_metadata-protos (type: static_library)
140// ========================================================
141// Protobufs.
142cc_defaults {
143 name: "update_metadata-protos_exports",
144
145 shared_libs: ["libprotobuf-cpp-lite"],
146}
147
Devendra Singhi87484b02022-11-22 14:10:14 +0530148cc_defaults {
149 name: "update_metadata-protos-defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700150 host_supported: true,
Inseob Kim3cce62a2021-06-14 11:55:35 +0900151 ramdisk_available: true,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700152 recovery_available: true,
153
154 srcs: ["update_engine/update_metadata.proto"],
155 cflags: [
156 "-Wall",
157 "-Werror",
158 ],
159 proto: {
160 canonical_path_from_root: false,
161 export_proto_headers: true,
162 },
163}
164
Devendra Singhi87484b02022-11-22 14:10:14 +0530165cc_library_static {
166 name: "update_metadata-protos",
167 defaults: ["update_metadata-protos-defaults"],
168 proto: {
169 type: "lite",
170 },
171}
172
173cc_library_static {
174 name: "update_metadata-protos-full",
175 defaults: ["update_metadata-protos-defaults"],
176}
177
Kelvin Zhang73202a92022-06-02 10:19:54 -0700178python_library_host {
179 name: "update_metadata-protos-python",
180 srcs: ["update_metadata.proto"],
181 proto: {
182 canonical_path_from_root: false,
183 },
184}
185
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700186// libpayload_consumer (type: static_library)
187// ========================================================
188// The payload application component and common dependencies.
189cc_defaults {
Devendra Singhi87484b02022-11-22 14:10:14 +0530190 name: "libpayload_consumer_exports_defaults",
191 defaults: ["update_metadata-protos_exports",],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700192
193 static_libs: [
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700194 "libxz",
195 "libbz",
196 "libbspatch",
197 "libbrotli",
Tianjie99d570d2020-06-04 14:57:19 -0700198 "libc++fs",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700199 "libfec_rs",
200 "libpuffpatch",
201 "libverity_tree",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400202 "libsnapshot_cow",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400203 "libbrotli",
204 "libz",
205 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500206 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400207 "libcow_operation_convert",
Kelvin Zhang55624032021-12-20 12:13:24 -0800208 "lz4diff-protos",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800209 "liblz4patch",
Kelvin Zhang27757a22023-02-15 16:58:27 -0800210 "libzstd",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700211 ],
212 shared_libs: [
213 "libbase",
214 "libcrypto",
Sen Jiangb5f631d2018-12-18 16:59:57 -0800215 "libfec",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800216 "liblz4",
Tianjie99d570d2020-06-04 14:57:19 -0700217 "libziparchive",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700218 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700219}
220
Devendra Singhi87484b02022-11-22 14:10:14 +0530221cc_defaults {
222 name: "libpayload_consumer_exports",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700223 defaults: [
Devendra Singhi87484b02022-11-22 14:10:14 +0530224 "libpayload_consumer_exports_defaults"
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700225 ],
Devendra Singhi87484b02022-11-22 14:10:14 +0530226 static_libs: ["update_metadata-protos",],
227}
228
229cc_defaults {
230 name: "libpayload_consumer_exports_proto-full",
231 defaults: [
232 "libpayload_consumer_exports_defaults"
233 ],
234 static_libs: ["update_metadata-protos-full",],
235}
236
237cc_defaults {
238 name: "libpayload_consumer_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700239 host_supported: true,
240 recovery_available: true,
241
242 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700243 "aosp/platform_constants_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700244 "common/action_processor.cc",
245 "common/boot_control_stub.cc",
246 "common/clock.cc",
247 "common/constants.cc",
248 "common/cpu_limiter.cc",
Yifan Hongdaac7322019-11-07 10:48:26 -0800249 "common/dynamic_partition_control_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700250 "common/error_code_utils.cc",
251 "common/file_fetcher.cc",
252 "common/hash_calculator.cc",
253 "common/http_common.cc",
254 "common/http_fetcher.cc",
255 "common/hwid_override.cc",
256 "common/multi_range_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700257 "common/prefs.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700258 "common/subprocess.cc",
259 "common/terminator.cc",
260 "common/utils.cc",
261 "payload_consumer/bzip_extent_writer.cc",
262 "payload_consumer/cached_file_descriptor.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700263 "payload_consumer/certificate_parser_android.cc",
Kelvin Zhang569c97e2020-10-26 12:12:24 -0400264 "payload_consumer/cow_writer_file_descriptor.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700265 "payload_consumer/delta_performer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700266 "payload_consumer/extent_reader.cc",
267 "payload_consumer/extent_writer.cc",
268 "payload_consumer/file_descriptor.cc",
269 "payload_consumer/file_descriptor_utils.cc",
270 "payload_consumer/file_writer.cc",
271 "payload_consumer/filesystem_verifier_action.cc",
Kelvin Zhang40d96662021-02-24 14:21:29 -0500272 "payload_consumer/install_operation_executor.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700273 "payload_consumer/install_plan.cc",
274 "payload_consumer/mount_history.cc",
275 "payload_consumer/payload_constants.cc",
276 "payload_consumer/payload_metadata.cc",
277 "payload_consumer/payload_verifier.cc",
Kelvin Zhang50bac652020-09-28 15:51:41 -0400278 "payload_consumer/partition_writer.cc",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400279 "payload_consumer/partition_writer_factory_android.cc",
280 "payload_consumer/vabc_partition_writer.cc",
Kelvin Zhang4bb49202021-07-08 21:39:05 -0400281 "payload_consumer/xor_extent_writer.cc",
Kelvin Zhangb1706762021-06-25 15:05:22 -0400282 "payload_consumer/block_extent_writer.cc",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400283 "payload_consumer/snapshot_extent_writer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700284 "payload_consumer/postinstall_runner_action.cc",
Kelvin Zhangab3ce602021-02-24 14:46:40 -0500285 "payload_consumer/verified_source_fd.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700286 "payload_consumer/verity_writer_android.cc",
287 "payload_consumer/xz_extent_writer.cc",
288 "payload_consumer/fec_file_descriptor.cc",
Tianjied3865d12020-06-03 15:25:17 -0700289 "payload_consumer/partition_update_generator_android.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -0700290 "update_status_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700291 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700292}
293
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000294cc_library_static {
Devendra Singhi87484b02022-11-22 14:10:14 +0530295 name: "libpayload_consumer",
296 defaults: [
297 "ue_defaults",
298 "libpayload_consumer_exports",
299 "libpayload_consumer_defaults",
300 ],
301}
302
303cc_library_static {
304 name: "libpayload_consumer_proto-full",
305 defaults: [
306 "ue_defaults",
307 "libpayload_consumer_exports_proto-full",
308 "libpayload_consumer_defaults",
309 ],
310}
311
312cc_library_static {
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000313 name: "libstatslog_ue",
314 generated_sources: ["statslog_ue.cpp"],
315 generated_headers: ["statslog_ue.h"],
316 export_generated_headers: ["statslog_ue.h"],
317 shared_libs: [
318 "libstatssocket",
319 ]
320}
321
322genrule {
323 name: "statslog_ue.h",
324 tools: ["stats-log-api-gen"],
325 cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_ue.h --module update_engine --namespace chromeos_update_engine,statsd",
326 out: [
327 "statslog_ue.h",
328 ],
329}
330
331genrule {
332 name: "statslog_ue.cpp",
333 tools: ["stats-log-api-gen"],
334 cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_ue.cpp --module update_engine --namespace chromeos_update_engine,statsd --importHeader statslog_ue.h",
335 out: [
336 "statslog_ue.cpp",
337 ],
338}
339
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700340// libupdate_engine_boot_control (type: static_library)
341// ========================================================
342// A BootControl class implementation using Android's HIDL boot_control HAL.
343cc_defaults {
Devendra Singhi87484b02022-11-22 14:10:14 +0530344 name: "libupdate_engine_boot_control_exports_defaults",
345 defaults: ["update_metadata-protos_exports",],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700346
Yifan Hong420db9b2019-07-23 20:50:33 -0700347 static_libs: [
David Andersone7ce8212019-12-16 20:13:19 -0800348 "libcutils",
349 "libfs_mgr_binder",
350 "libgsi",
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000351 "libstatslog_ue",
David Anderson6c190a22020-09-21 17:09:53 -0700352 "libz",
Yifan Hong420db9b2019-07-23 20:50:33 -0700353 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700354 shared_libs: [
355 "libbootloader_message",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700356 "libhidlbase",
357 "liblp",
David Anderson62b0c3c2023-07-23 09:59:58 -0700358 "libsnapshot",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700359 "libutils",
360 "android.hardware.boot@1.0",
David Anderson2111d062019-10-15 22:36:27 -0700361 "android.hardware.boot@1.1",
Kelvin Zhangcb419e62021-06-16 13:56:47 -0400362 "android.hardware.boot@1.2",
Kelvin Zhang8251dc02022-06-14 09:46:46 -0700363 "android.hardware.boot-V1-ndk",
Kelvin Zhange9c1d372022-06-13 15:40:44 -0700364 "libboot_control_client",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700365 ],
Yifan Hong29692902020-03-26 12:47:05 -0700366 header_libs: [
367 "avb_headers",
368 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700369 target: {
370 recovery: {
David Andersone7ce8212019-12-16 20:13:19 -0800371 static_libs: [
372 "libfs_mgr",
373 "libsnapshot_nobinder",
374 ],
375 exclude_static_libs: [
376 "libfs_mgr_binder",
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000377 "libstatslog_ue"
Yifan Hong212d7952020-02-04 11:08:08 -0800378 ],
David Anderson62b0c3c2023-07-23 09:59:58 -0700379 exclude_shared_libs: [
380 "libsnapshot",
381 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700382 },
383 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700384}
385
Devendra Singhi87484b02022-11-22 14:10:14 +0530386cc_defaults {
387 name: "libupdate_engine_boot_control_exports",
388 defaults: [
389 "libupdate_engine_boot_control_exports_defaults",
390 ],
391 static_libs: [
392 "libpayload_consumer",
393 "update_metadata-protos",
394 ]
395}
396
397cc_defaults {
398 name: "libupdate_engine_boot_control_exports_proto-full",
399 defaults: [
400 "libupdate_engine_boot_control_exports_defaults",
401 ],
402 static_libs: [
403 "libpayload_consumer_proto-full",
404 "update_metadata-protos-full",
405 ]
406}
407
408cc_defaults {
409 name: "libupdate_engine_boot_control_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700410 defaults: [
411 "ue_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700412 ],
413 recovery_available: true,
414
415 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700416 "aosp/boot_control_android.cc",
417 "aosp/cleanup_previous_update_action.cc",
418 "aosp/dynamic_partition_control_android.cc",
419 "aosp/dynamic_partition_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700420 ],
421}
422
Devendra Singhi87484b02022-11-22 14:10:14 +0530423cc_library_static {
424 name: "libupdate_engine_boot_control",
425 defaults: [
426 "libupdate_engine_boot_control_defaults",
427 "libupdate_engine_boot_control_exports",
428 "libpayload_consumer_exports",
429 ],
430}
431
432cc_library_static {
433 name: "libupdate_engine_boot_control_proto-full",
434 defaults: [
435 "libupdate_engine_boot_control_defaults",
436 "libupdate_engine_boot_control_exports_proto-full",
437 "libpayload_consumer_exports_proto-full",
438 ],
439}
440
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700441// libupdate_engine_android (type: static_library)
442// ========================================================
443// The main daemon static_library used in Android (non-Brillo). This only has a
444// loop to apply payloads provided by the upper layer via a Binder interface.
445cc_defaults {
Devendra Singhi87484b02022-11-22 14:10:14 +0530446 name: "libupdate_engine_android_exports_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700447 defaults: [
448 "ue_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700449 ],
450
451 static_libs: [
Tianjie838793d2021-01-14 22:05:13 -0800452 "libavb",
453 "libavb_user",
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000454 "libgkiprops",
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000455 "libstatslog_ue",
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000456 "libPlatformProperties",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700457 ],
458 shared_libs: [
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +0000459 "apex_aidl_interface-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700460 "libandroid_net",
461 "libbase",
462 "libbinder",
463 "libbinderwrapper",
464 "libbootloader_message",
465 "libbrillo-binder",
466 "libcurl",
467 "libcutils",
Jeongik Cha95f89e92021-01-26 22:33:11 +0900468 "libupdate_engine_stable-V1-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700469 "liblog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700470 "libssl",
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000471 "libstatssocket",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700472 "libutils",
473 ],
Nikita Ioffeaedfef32021-04-28 13:54:14 +0100474 whole_static_libs: [
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000475 "libcom.android.sysprop.apex",
Nikita Ioffeaedfef32021-04-28 13:54:14 +0100476 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700477}
478
Devendra Singhi87484b02022-11-22 14:10:14 +0530479cc_defaults {
480 name: "libupdate_engine_android_exports",
481 defaults: [
482 "libupdate_engine_android_exports_defaults",
483 "libupdate_engine_boot_control_exports",
484 "libpayload_consumer_exports",
485 ],
486 static_libs: [
487 "libpayload_consumer",
488 "libupdate_engine_boot_control",
489 ],
490}
491
492cc_defaults {
493 name: "libupdate_engine_android_exports_proto-full",
494 defaults: [
495 "libupdate_engine_android_exports_defaults",
496 "libupdate_engine_boot_control_exports_proto-full",
497 "libpayload_consumer_exports_proto-full",
498 ],
499 static_libs: [
500 "libpayload_consumer_proto-full",
501 "libupdate_engine_boot_control_proto-full",
502 ],
503}
504
505cc_defaults {
506 name: "libupdate_engine_android_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700507 defaults: [
508 "ue_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700509 ],
510
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700511 aidl: {
512 local_include_dirs: ["binder_bindings"],
513 export_aidl_headers: true,
514 },
515
516 srcs: [
517 ":libupdate_engine_aidl",
Amin Hassani538bd592020-11-04 20:46:08 -0800518 "common/system_state.cc",
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +0000519 "aosp/apex_handler_android.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700520 "aosp/binder_service_android.cc",
521 "aosp/binder_service_stable_android.cc",
522 "aosp/daemon_android.cc",
523 "aosp/daemon_state_android.cc",
524 "aosp/hardware_android.cc",
525 "aosp/logging_android.cc",
526 "aosp/network_selector_android.cc",
527 "aosp/update_attempter_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700528 "certificate_checker.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800529 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700530 "libcurl_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700531 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700532 "update_boot_flags_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700533 ],
534}
535
Devendra Singhi87484b02022-11-22 14:10:14 +0530536cc_library_static {
537 name: "libupdate_engine_android",
538 defaults: [
539 "libupdate_engine_android_defaults",
540 "libupdate_engine_android_exports",
541 ]
542}
543
544cc_library_static {
545 name: "libupdate_engine_android_proto-full",
546 defaults: [
547 "libupdate_engine_android_defaults",
548 "libupdate_engine_android_exports_proto-full",
549 ]
550}
551
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700552// update_engine (type: executable)
553// ========================================================
554// update_engine daemon.
555cc_binary {
556 name: "update_engine",
557 defaults: [
558 "ue_defaults",
559 "libupdate_engine_android_exports",
560 ],
561
Kelvin Zhang77cb1c62023-03-31 20:34:52 -0700562 static_libs: [
563 "libupdate_engine_android",
564 "libgflags",
565 ],
Tao Bao1e1c86c2019-04-18 10:48:32 -0700566 required: [
567 "cacerts_google",
Tianjie Xube4ea232019-10-15 18:08:31 -0700568 "otacerts",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700569 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700570
Amin Hassaniec7bc112020-10-29 16:47:58 -0700571 srcs: ["main.cc", "aosp/metrics_reporter_android.cc"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700572 init_rc: ["update_engine.rc"],
573}
574
575// update_engine_sideload (type: executable)
576// ========================================================
577// A binary executable equivalent to update_engine daemon that installs an update
578// from a local file directly instead of running in the background. Used in
579// recovery image.
580cc_binary {
581 name: "update_engine_sideload",
582 defaults: [
583 "ue_defaults",
584 "update_metadata-protos_exports",
585 "libupdate_engine_boot_control_exports",
586 "libpayload_consumer_exports",
587 ],
588 recovery: true,
589
590 cflags: ["-D_UE_SIDELOAD"],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -0700591 header_libs: ["libgtest_prod_headers"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700592
593 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700594 "aosp/hardware_android.cc",
595 "aosp/logging_android.cc",
596 "aosp/sideload_main.cc",
597 "aosp/update_attempter_android.cc",
598 "common/metrics_reporter_stub.cc",
599 "common/network_selector_stub.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800600 "common/system_state.cc",
601 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700602 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700603 "update_boot_flags_action.cc",
604 "update_status_utils.cc",
605 ],
606
607 // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out,
608 // as it doesn't look beneficial to be installed separately due to its size. Note
609 // that we explicitly request their recovery variants, so that the expected files
610 // will be used and installed.
611 shared_libs: [
612 "libbase",
613 "liblog",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800614 "liblz4",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700615 ],
616 static_libs: [
617 "libpayload_consumer",
618 "libupdate_engine_boot_control",
619 "update_metadata-protos",
620
621 // We add the static versions of the shared libraries that are not installed to
622 // recovery image due to size concerns. Need to include all the static library
623 // dependencies of these static libraries.
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000624 "libgkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700625 "libevent",
626 "libmodpb64",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700627 "libprotobuf-cpp-lite",
628 "libbrillo-stream",
629 "libbrillo",
630 "libchrome",
631 ],
632 target: {
633 recovery: {
634 exclude_shared_libs: [
635 "libprotobuf-cpp-lite",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700636 "libbrillo-stream",
637 "libbrillo",
638 "libchrome",
639 ],
640 },
641 },
642
Tao Bao1e1c86c2019-04-18 10:48:32 -0700643 required: [
Tianjie Xube4ea232019-10-15 18:08:31 -0700644 "otacerts.recovery",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700645 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700646}
647
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700648// update_engine_client (type: executable)
649// ========================================================
650// update_engine console client.
651cc_binary {
652 name: "update_engine_client",
653 defaults: ["ue_defaults"],
654
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700655 shared_libs: [
656 "libbinder",
657 "libbinderwrapper",
658 "libbrillo-binder",
659 "libutils",
660 ],
661
662 aidl: {
663 local_include_dirs: ["binder_bindings"],
664 },
665
666 srcs: [
667 ":libupdate_engine_aidl",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700668 "aosp/update_engine_client_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700669 "common/error_code_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700670 "update_status_utils.cc",
671 ],
672}
673
674// libpayload_generator (type: static_library)
675// ========================================================
676// server-side code. This is used for delta_generator and unittests but not
677// for any client code.
678cc_defaults {
679 name: "libpayload_generator_exports",
680 defaults: [
681 "libpayload_consumer_exports",
682 "update_metadata-protos_exports",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800683 "erofs-utils_export_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700684 ],
685
Tianjie37ae8562020-03-25 15:16:01 -0700686 header_libs: [
687 "bootimg_headers",
688 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700689 static_libs: [
690 "libavb",
691 "libbrotli",
692 "libbsdiff",
693 "libdivsufsort",
694 "libdivsufsort64",
695 "liblzma",
696 "libpayload_consumer",
697 "libpuffdiff",
Tianjiea69cfe22021-08-22 23:28:44 -0700698 "libzucchini",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700699 "libverity_tree",
700 "update_metadata-protos",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500701 "libpayload_extent_utils",
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500702 "libcow_size_estimator",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800703 "liberofs",
Kelvin Zhang702ce4c2022-07-14 10:43:22 -0700704 "libselinux",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800705 "lz4diff-protos",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800706 "liblz4diff",
Kelvin Zhang27757a22023-02-15 16:58:27 -0800707 "libzstd",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700708 ],
709 shared_libs: [
710 "libbase",
711 "libext2fs",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800712 // LZ4 has to be a shared lib, as we want to override it with
713 // LD_LIBRARY_PRELOAD later
714 "liblz4",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700715 ],
716}
717
718cc_library_static {
David Andersonc1c93052020-08-26 18:22:09 +0000719 name: "libpayload_extent_ranges",
720 defaults: [
721 "ue_defaults",
722 ],
723 host_supported: true,
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400724 recovery_available: true,
David Andersonc1c93052020-08-26 18:22:09 +0000725 srcs: [
726 "payload_generator/extent_ranges.cc",
727 ],
728 static_libs: [
729 "update_metadata-protos",
730 ],
731}
732
733cc_library_static {
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500734 name: "libcow_size_estimator",
735 defaults: [
736 "ue_defaults",
737 "update_metadata-protos_exports"
738 ],
739 host_supported: true,
740 recovery_available: true,
741 srcs: [
742 "payload_generator/cow_size_estimator.cc",
743 ],
744 static_libs: [
745 "update_metadata-protos",
746 "libbase",
747 "libsnapshot_cow",
748 "libcow_operation_convert",
749 ],
750}
751
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800752cc_defaults {
753 name: "liblz4diff_defaults",
754 static_libs: [
755 "lz4diff-protos",
756 "update_metadata-protos",
757 "libssl",
758 "libbsdiff",
759 "libpuffdiff",
760 ],
761 shared_libs: [
762 "liblz4",
Kelvin Zhang893b3a12021-12-30 12:28:53 -0800763 ],
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800764}
765
766cc_library_static {
767 name: "liblz4diff",
768 host_supported: true,
769 defaults: ["ue_defaults", "liblz4diff_defaults"],
770 srcs: [
Kelvin Zhang893b3a12021-12-30 12:28:53 -0800771 "lz4diff/lz4diff.cc",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800772 "lz4diff/lz4diff_compress.cc",
773 ],
774}
775
776cc_library_static {
777 name: "liblz4patch",
778 host_supported: true,
779 recovery_available: true,
780 defaults: ["ue_defaults"],
781 static_libs: [
782 "lz4diff-protos",
783 "update_metadata-protos",
784 "libssl",
785 "libbspatch",
786 "libpuffpatch",
787 ],
788 shared_libs: [
789 "liblz4",
790 ],
791 srcs: [
792 "lz4diff/lz4patch.cc",
793 "lz4diff/lz4diff_compress.cc",
794 ],
795}
796
Kelvin Zhang35cff4f2021-12-08 16:06:00 -0800797cc_binary_host {
798 name: "lz4diff",
799 defaults: [
800 "ue_defaults",
801 "libpayload_generator_exports",
802 ],
803 static_libs: [
804 "libpayload_generator",
805 "liblz4diff",
806 "liblz4patch",
807 ],
808 srcs: [
809 "lz4diff/lz4diff_main.cc",
810 ],
811}
812
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500813cc_library_static {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700814 name: "libpayload_generator",
815 defaults: [
816 "ue_defaults",
817 "libpayload_generator_exports",
818 ],
819 host_supported: true,
820
821 srcs: [
Amin Hassani538bd592020-11-04 20:46:08 -0800822 "common/system_state.cc",
823 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700824 "payload_generator/ab_generator.cc",
825 "payload_generator/annotated_operation.cc",
826 "payload_generator/blob_file_writer.cc",
827 "payload_generator/block_mapping.cc",
828 "payload_generator/boot_img_filesystem.cc",
829 "payload_generator/bzip.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700830 "payload_generator/deflate_utils.cc",
831 "payload_generator/delta_diff_generator.cc",
832 "payload_generator/delta_diff_utils.cc",
833 "payload_generator/ext2_filesystem.cc",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800834 "payload_generator/erofs_filesystem.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700835 "payload_generator/extent_ranges.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700836 "payload_generator/full_update_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700837 "payload_generator/mapfile_filesystem.cc",
Tianjiee9156ec2020-08-11 11:13:54 -0700838 "payload_generator/merge_sequence_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700839 "payload_generator/payload_file.cc",
840 "payload_generator/payload_generation_config_android.cc",
841 "payload_generator/payload_generation_config.cc",
Amin Hassani79821002019-05-06 17:40:49 -0700842 "payload_generator/payload_properties.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700843 "payload_generator/payload_signer.cc",
844 "payload_generator/raw_filesystem.cc",
845 "payload_generator/squashfs_filesystem.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700846 "payload_generator/xz_android.cc",
847 ],
848}
849
850// delta_generator (type: executable)
851// ========================================================
852// server-side delta generator.
853cc_binary_host {
854 name: "delta_generator",
855 defaults: [
856 "ue_defaults",
857 "libpayload_generator_exports",
858 "libpayload_consumer_exports",
859 ],
860
861 static_libs: [
862 "libavb_host_sysdeps",
863 "libpayload_consumer",
864 "libpayload_generator",
Kelvin Zhang77cb1c62023-03-31 20:34:52 -0700865 "libgflags",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700866 ],
867
868 srcs: ["payload_generator/generate_delta_main.cc"],
869}
870
871cc_test {
Kelvin Zhangc5803b72021-09-02 09:06:16 -0700872 host_supported: true,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700873 name: "ue_unittest_delta_generator",
874 defaults: [
875 "ue_defaults",
876 "libpayload_generator_exports",
877 "libpayload_consumer_exports",
878 ],
879
880 static_libs: [
881 "libpayload_consumer",
882 "libpayload_generator",
Kelvin Zhang77cb1c62023-03-31 20:34:52 -0700883 "libgflags",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700884 ],
885
886 srcs: ["payload_generator/generate_delta_main.cc"],
887
888 gtest: false,
889 stem: "delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700890}
891
892// test_http_server (type: executable)
893// ========================================================
894// Test HTTP Server.
895cc_test {
896 name: "test_http_server",
897 defaults: ["ue_defaults"],
898 srcs: [
899 "common/http_common.cc",
900 "test_http_server.cc",
901 ],
902
903 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700904}
905
906// test_subprocess (type: executable)
907// ========================================================
908// Test helper subprocess program.
909cc_test {
910 name: "test_subprocess",
911 defaults: ["ue_defaults"],
912 srcs: ["test_subprocess.cc"],
913
914 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700915}
916
917// Public keys for unittests.
918// ========================================================
919genrule {
920 name: "ue_unittest_keys",
921 cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" +
xunchangcda3c032019-03-26 15:41:14 -0700922 "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" +
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700923 "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem) &&" +
924 "openssl pkey -in $(location unittest_key_EC.pem) -pubout -out $(location unittest_key_EC.pub.pem)",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700925 srcs: [
926 "unittest_key.pem",
927 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -0700928 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700929 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700930 ],
931 out: [
932 "unittest_key.pub.pem",
933 "unittest_key2.pub.pem",
xunchangcda3c032019-03-26 15:41:14 -0700934 "unittest_key_RSA4096.pub.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700935 "unittest_key_EC.pub.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700936 ],
937}
938
939// Sample images for unittests.
940// ========================================================
941// Extract sample image from the compressed sample_images.tar.bz2 file used by
942// the unittests.
943genrule {
944 name: "ue_unittest_disk_imgs",
945 cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img",
946 srcs: ["sample_images/sample_images.tar.bz2"],
947 out: [
948 "gen/disk_ext2_1k.img",
949 "gen/disk_ext2_4k.img",
950 "gen/disk_ext2_4k_empty.img",
951 "gen/disk_ext2_unittest.img",
952 ],
953}
954
Kelvin Zhang759e8b92021-12-21 16:46:58 -0800955genrule {
956 name: "ue_unittest_erofs_imgs",
Kelvin Zhang893b3a12021-12-30 12:28:53 -0800957 cmd: "$(in) $(location mkfs.erofs) $(location gen/erofs_empty.img) && " +
958 "$(in) $(location mkfs.erofs) $(location gen/erofs.img) $(location delta_generator) && " +
959 "$(in) $(location mkfs.erofs) $(location gen/erofs_new.img) $(location delta_generator) lz4hc,7",
Kelvin Zhang759e8b92021-12-21 16:46:58 -0800960 srcs: ["sample_images/generate_test_erofs_images.sh"],
961 out: [
962 "gen/erofs.img",
Kelvin Zhang893b3a12021-12-30 12:28:53 -0800963 "gen/erofs_new.img",
Kelvin Zhang759e8b92021-12-21 16:46:58 -0800964 "gen/erofs_empty.img",
965 ],
966 tools: [
967 "mkfs.erofs",
968 "delta_generator",
969 ],
970}
971
Kelvin Zhangc5803b72021-09-02 09:06:16 -0700972filegroup {
Chih-Hung Hsieh85ad1472022-02-17 17:32:12 -0800973 name: "update_engine_host_unittest_timeout_srcs",
974 srcs: [
975 "common/action_processor_unittest.cc",
976 "common/file_fetcher_unittest.cc",
977 "payload_generator/delta_diff_utils_unittest.cc",
978 ],
979}
980
981filegroup {
Kelvin Zhangc5803b72021-09-02 09:06:16 -0700982 name: "update_engine_host_unittest_srcs",
983 srcs: [
984 "common/action_pipe_unittest.cc",
985 "common/action_processor_unittest.cc",
986 "common/action_unittest.cc",
987 "common/cow_operation_convert_unittest.cc",
988 "common/cpu_limiter_unittest.cc",
989 "common/fake_prefs.cc",
990 "common/file_fetcher_unittest.cc",
991 "common/hash_calculator_unittest.cc",
992 "common/hwid_override_unittest.cc",
993 "common/metrics_reporter_stub.cc",
994 "common/mock_http_fetcher.cc",
995 "common/prefs_unittest.cc",
996 "common/terminator_unittest.cc",
997 "common/test_utils.cc",
Kelvin Zhang55624032021-12-20 12:13:24 -0800998 "lz4diff/lz4diff_compress_unittest.cc",
Kelvin Zhang893b3a12021-12-30 12:28:53 -0800999 "lz4diff/lz4diff_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001000 "payload_generator/ab_generator_unittest.cc",
1001 "payload_generator/blob_file_writer_unittest.cc",
1002 "payload_generator/block_mapping_unittest.cc",
1003 "payload_generator/boot_img_filesystem_unittest.cc",
1004 "payload_generator/deflate_utils_unittest.cc",
1005 "payload_generator/delta_diff_utils_unittest.cc",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001006 "payload_generator/erofs_filesystem_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001007 "payload_generator/ext2_filesystem_unittest.cc",
1008 "payload_generator/extent_ranges_unittest.cc",
1009 "payload_generator/extent_utils_unittest.cc",
1010 "payload_generator/fake_filesystem.cc",
1011 "payload_generator/full_update_generator_unittest.cc",
1012 "payload_generator/mapfile_filesystem_unittest.cc",
1013 "payload_generator/merge_sequence_generator_unittest.cc",
1014 "payload_generator/payload_file_unittest.cc",
1015 "payload_generator/payload_generation_config_android_unittest.cc",
1016 "payload_generator/payload_generation_config_unittest.cc",
1017 "payload_generator/payload_properties_unittest.cc",
1018 "payload_generator/payload_signer_unittest.cc",
1019 "payload_generator/squashfs_filesystem_unittest.cc",
1020 "payload_generator/zip_unittest.cc",
Kelvin Zhange4bffe62022-03-07 09:08:38 -08001021 "payload_consumer/verity_writer_android_unittest.cc",
1022 "payload_consumer/xz_extent_writer_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001023 "testrunner.cc",
1024 ],
1025}
1026
1027cc_test_host {
1028 name: "update_engine_host_unittests",
1029 defaults: [
1030 "ue_defaults",
1031 "libpayload_generator_exports",
1032 ],
1033 strip: {
1034 none: true,
1035 },
1036 cflags: [
1037 "-g3",
1038 ],
Chih-Hung Hsieh85ad1472022-02-17 17:32:12 -08001039 tidy_timeout_srcs: [":update_engine_host_unittest_timeout_srcs"],
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001040 srcs: [":update_engine_host_unittest_srcs"],
1041 data: [
1042 ":ue_unittest_delta_generator",
1043 ":ue_unittest_disk_imgs",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001044 ":ue_unittest_erofs_imgs",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001045 ":ue_unittest_keys",
1046 "otacerts.zip",
1047 "unittest_key.pem",
1048 "unittest_key2.pem",
1049 "unittest_key_RSA4096.pem",
1050 "unittest_key_EC.pem",
1051 "update_engine.conf",
Kelvin Zhanga35324f2023-06-28 10:29:16 -07001052 "testdata/cycle_nodes_product.bin",
1053 "testdata/cycle_nodes_product_no_xor.bin",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001054 ],
1055 static_libs: [
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001056 "libgmock",
1057 "libpayload_generator",
1058 ],
1059}
1060
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001061// update_engine_unittests (type: executable)
1062// ========================================================
1063// Main unittest file.
1064cc_test {
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001065 name: "update_engine_http_unittests",
1066 defaults: [
1067 "ue_defaults",
1068 "liblz4diff_defaults",
1069 "update_metadata-protos_exports",
1070 ],
1071 require_root: true,
1072 static_libs: [
1073 "libbase",
1074 "libbrillo-test-helpers",
1075 "libchrome_test_helpers",
1076 "libcurl",
1077 "libcutils",
1078 "libdm",
1079 "libgmock",
1080 "libz",
Kelvin Zhang27757a22023-02-15 16:58:27 -08001081 "libzstd",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001082 ],
1083 shared_libs: [
1084 "libssl",
1085 "libcrypto",
1086 "libziparchive",
1087 "liblog",
1088 ],
1089
1090 data: [
1091 ":test_http_server",
1092 ":test_subprocess",
1093 ":ue_unittest_keys",
1094 "otacerts.zip",
1095 "unittest_key.pem",
1096 "unittest_key2.pem",
1097 "unittest_key_RSA4096.pem",
1098 "unittest_key_EC.pem",
1099 ],
1100
1101 // We cannot use the default generated AndroidTest.xml because of the use of helper modules
1102 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
1103 // test_config: "test_config.xml",
1104 test_suites: ["device-tests"],
1105
1106 srcs: [
1107 "aosp/platform_constants_android.cc",
1108 "certificate_checker.cc",
1109 "common/action_processor.cc",
1110 "common/boot_control_stub.cc",
1111 "common/error_code_utils.cc",
1112 "common/file_fetcher.cc",
1113 "common/hash_calculator.cc",
1114 "common/http_fetcher.cc",
1115 "common/multi_range_http_fetcher.cc",
1116 "common/http_common.cc",
1117 "common/subprocess.cc",
1118 "common/test_utils.cc",
1119 "common/utils.cc",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001120 "libcurl_http_fetcher.cc",
1121 "payload_consumer/certificate_parser_android.cc",
1122 "payload_consumer/payload_verifier.cc",
1123 "payload_generator/payload_signer.cc",
1124 "update_status_utils.cc",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001125 "certificate_checker_unittest.cc",
1126 "common/http_fetcher_unittest.cc",
1127 "common/mock_http_fetcher.cc",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001128 "common/subprocess_unittest.cc",
1129 "libcurl_http_fetcher_unittest.cc",
1130 "payload_consumer/certificate_parser_android_unittest.cc",
1131 "update_status_utils_unittest.cc",
1132 ],
1133}
1134
1135// update_engine_unittests (type: executable)
1136// ========================================================
1137// Main unittest file.
1138cc_test {
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001139 name: "update_engine_unittests",
1140 defaults: [
1141 "ue_defaults",
1142 "libpayload_generator_exports",
1143 "libupdate_engine_android_exports",
1144 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001145
1146 static_libs: [
1147 "libpayload_generator",
1148 "libbrillo-test-helpers",
1149 "libgmock",
1150 "libchrome_test_helpers",
1151 "libupdate_engine_android",
Tianjie Xu173e6192019-12-10 10:56:01 -08001152 "libdm",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001153 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001154
Yifan Hong87ea73f2019-09-12 13:07:37 -07001155 header_libs: [
1156 "libstorage_literals_headers",
1157 ],
1158
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001159 data: [
Tao Bao9456b6f2019-04-29 18:14:58 -07001160 ":ue_unittest_delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001161 ":ue_unittest_disk_imgs",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001162 ":ue_unittest_erofs_imgs",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001163 ":ue_unittest_keys",
Tianjie Xu7a78d632019-10-08 16:32:39 -07001164 "otacerts.zip",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001165 "unittest_key.pem",
1166 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -07001167 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -07001168 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001169 "update_engine.conf",
Kelvin Zhanga35324f2023-06-28 10:29:16 -07001170 "testdata/cycle_nodes_product.bin",
1171 "testdata/cycle_nodes_product_no_xor.bin",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001172 ],
1173
Tao Bao9456b6f2019-04-29 18:14:58 -07001174 // We cannot use the default generated AndroidTest.xml because of the use of helper modules
1175 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
1176 test_config: "test_config.xml",
1177 test_suites: ["device-tests"],
1178
Chih-Hung Hsieh85ad1472022-02-17 17:32:12 -08001179 tidy_timeout_srcs: [
1180 ":update_engine_host_unittest_timeout_srcs",
1181 "aosp/dynamic_partition_control_android_unittest.cc",
1182 "common/http_fetcher_unittest.cc",
1183 "payload_consumer/delta_performer_integration_test.cc",
1184 "payload_consumer/delta_performer_unittest.cc",
1185 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001186 srcs: [
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001187 ":update_engine_host_unittest_srcs",
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +00001188 "aosp/apex_handler_android_unittest.cc",
Kelvin Zhangb4b95c22021-04-05 15:56:26 -04001189 "aosp/cleanup_previous_update_action_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -07001190 "aosp/dynamic_partition_control_android_unittest.cc",
Kelvin Zhang3fe49642021-10-04 15:35:02 -07001191 "aosp/update_attempter_android_integration_test.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -07001192 "aosp/update_attempter_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001193 "common/utils_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001194 "download_action_android_unittest.cc",
Kelvin Zhange47767a2023-05-16 13:00:58 -07001195 "payload_consumer/block_extent_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001196 "payload_consumer/bzip_extent_writer_unittest.cc",
1197 "payload_consumer/cached_file_descriptor_unittest.cc",
Kelvin Zhang46d6c492021-04-26 17:51:25 -04001198 "payload_consumer/cow_writer_file_descriptor_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001199 "payload_consumer/delta_performer_integration_test.cc",
1200 "payload_consumer/delta_performer_unittest.cc",
1201 "payload_consumer/extent_reader_unittest.cc",
1202 "payload_consumer/extent_writer_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001203 "payload_consumer/extent_map_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001204 "payload_consumer/fake_file_descriptor.cc",
1205 "payload_consumer/file_descriptor_utils_unittest.cc",
1206 "payload_consumer/file_writer_unittest.cc",
1207 "payload_consumer/filesystem_verifier_action_unittest.cc",
Amin Hassani23795032020-11-24 14:38:55 -08001208 "payload_consumer/install_plan_unittest.cc",
Kelvin Zhang40d96662021-02-24 14:21:29 -05001209 "payload_consumer/install_operation_executor_unittest.cc",
Tianjie99d570d2020-06-04 14:57:19 -07001210 "payload_consumer/partition_update_generator_android_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001211 "payload_consumer/partition_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001212 "payload_consumer/postinstall_runner_action_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001213 "payload_consumer/snapshot_extent_writer_unittest.cc",
1214 "payload_consumer/vabc_partition_writer_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001215 "payload_consumer/xor_extent_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001216 ],
1217}
1218
1219// Brillo update payload generation script
1220// ========================================================
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +01001221sh_binary {
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001222 name: "brillo_update_payload",
1223 device_supported: false,
1224 host_supported: true,
1225
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +01001226 src: "scripts/brillo_update_payload",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001227 required: [
1228 "delta_generator",
1229 "shflags",
1230 "simg2img",
1231 ],
1232
1233 target: {
1234 darwin: {
1235 enabled: false,
1236 },
1237 },
Colin Cross606913a2017-11-14 13:05:37 -08001238}
Yifan Hongd51738c2020-07-23 17:06:25 -07001239
1240// update_engine header library
1241cc_library_headers {
1242 name: "libupdate_engine_headers",
Yifan Hong309c8a82020-10-06 18:31:08 -07001243
1244 // This header library is available to core and product modules.
Justin Yun6d121de2020-11-11 19:31:57 +09001245 product_available: true,
Yifan Hong309c8a82020-10-06 18:31:08 -07001246
Yifan Hongd51738c2020-07-23 17:06:25 -07001247 export_include_dirs: ["."],
1248 apex_available: [
1249 "com.android.gki.*",
David Anderson5e6dfe32020-09-17 15:50:33 -07001250 "//apex_available:platform",
Yifan Hongd51738c2020-07-23 17:06:25 -07001251 ],
David Andersonc1c93052020-08-26 18:22:09 +00001252 host_supported: true,
David Anderson5e6dfe32020-09-17 15:50:33 -07001253 recovery_available: true,
1254 ramdisk_available: true,
David Andersona4b7ba62023-05-10 21:41:37 -07001255 vendor_ramdisk_available: true,
David Anderson5e6dfe32020-09-17 15:50:33 -07001256
1257 target: {
1258 darwin: {
1259 enabled: false,
1260 },
1261 }
Yifan Hongd51738c2020-07-23 17:06:25 -07001262}
Kelvin Zhangb93055f2021-02-03 14:22:35 -05001263
1264cc_binary_host {
1265 name: "cow_converter",
1266 defaults: [
1267 "ue_defaults",
1268 "libpayload_consumer_exports",
1269 ],
1270 srcs: [
1271 "aosp/cow_converter.cc",
1272 ],
1273 static_libs: [
1274 "liblog",
1275 "libbrotli",
1276 "libbase",
1277 "libcow_operation_convert",
1278 "libcow_size_estimator",
Kelvin Zhang901c7d52022-06-21 09:35:45 -07001279 "libgflags",
Kelvin Zhangb93055f2021-02-03 14:22:35 -05001280 "libpayload_consumer",
1281 "libpayload_extent_ranges",
1282 "libpayload_extent_utils",
1283 "libsnapshot_cow",
1284 "libz",
1285 "update_metadata-protos",
1286 ],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -07001287}
Kelvin Zhang98001b22021-12-08 14:10:11 -08001288
1289cc_library_static {
1290 name: "lz4diff-protos",
1291 host_supported: true,
1292 ramdisk_available: true,
1293 recovery_available: true,
1294
1295 srcs: ["lz4diff/lz4diff.proto"],
1296 cflags: [
1297 "-Wall",
1298 "-Werror",
1299 ],
1300 proto: {
1301 canonical_path_from_root: false,
1302 export_proto_headers: true,
1303 },
1304}
Kelvin Zhang596a3202022-03-07 14:13:42 -08001305
1306cc_binary_host {
1307 name: "ota_extractor",
1308 defaults: [
1309 "ue_defaults",
1310 "libpayload_consumer_exports",
1311 ],
1312 srcs: [
1313 "aosp/ota_extractor.cc",
1314 ],
1315 static_libs: [
1316 "liblog",
1317 "libbrotli",
1318 "libbase",
1319 "libpayload_consumer",
1320 "libpayload_extent_ranges",
1321 "libpayload_extent_utils",
1322 "libz",
1323 "libgflags",
1324 "update_metadata-protos",
1325 ],
1326}
Kelvin Zhang83b594b2023-05-25 13:43:06 -07001327
1328cc_binary_host {
1329 name: "map_file_generator",
1330 defaults: [
1331 "ue_defaults",
1332 "libpayload_generator_exports",
1333 ],
1334 srcs: [
1335 "aosp/map_file_generator.cc",
1336 ],
1337 static_libs: [
1338 "liblog",
1339 "libbase",
1340 "libpayload_generator",
1341 "libpayload_extent_ranges",
1342 "libpayload_extent_utils",
1343 "libgflags",
Kelvin Zhang8bd5c4c2023-06-08 11:21:27 -07001344 "libsparse",
Kelvin Zhang83b594b2023-05-25 13:43:06 -07001345 "update_metadata-protos",
1346 ],
Kelvin Zhangdf9821b2023-06-12 10:04:34 -07001347 required: [
1348 "unsquashfs",
1349 ],
Kelvin Zhang83b594b2023-05-25 13:43:06 -07001350}
Pawan Waghdaa52652023-06-08 23:57:11 +00001351
1352cc_fuzz {
1353 name: "update_engine_service_fuzzer",
1354 defaults: [
1355 "ue_defaults",
1356 "libupdate_engine_android_exports",
1357 "service_fuzzer_defaults",
1358 "fuzzer_disable_leaks",
1359 ],
1360 static_libs: [
1361 "libupdate_engine_android",
1362 "libgflags",
1363 ],
1364 srcs: [
1365 "fuzzers/update_engine_service_fuzzer.cpp",
1366 "aosp/metrics_reporter_android.cc",
1367 ],
1368 fuzz_config: {
1369 triage_assignee: "waghpawan@google.com",
1370 cc: [
1371 "elsk@google.com",
1372 "zhangkelvin@google.com",
1373 ]
1374 },
1375}