blob: 7d507683b71f7db95025206b43f32c23d298fc8e [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
Dan Willemsenf5a904e2018-10-23 01:02:44 -070078 target: {
Sen Jiangb5f631d2018-12-18 16:59:57 -080079 android: {
80 cflags: [
81 "-DUSE_FEC=1",
82 ],
Kelvin Zhangb9a9aa22024-10-15 10:38:35 -070083 shared_libs: [
84 "libbase",
85 ],
Sen Jiangb5f631d2018-12-18 16:59:57 -080086 },
87 host: {
88 cflags: [
89 "-DUSE_FEC=0",
90 ],
91 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -070092 darwin: {
93 enabled: false,
94 },
95 },
96}
97
Kelvin Zhang9b10dba2020-09-25 17:09:11 -040098// libcow_operation_convert (type: library)
99// ========================================================
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500100cc_library_static {
101 name: "libpayload_extent_utils",
102 defaults: [
103 "ue_defaults",
104 ],
105 host_supported: true,
106 recovery_available: true,
107 srcs: [
108 "payload_generator/extent_utils.cc",
109 ],
110 static_libs: [
111 "update_metadata-protos",
112 ],
113}
114
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400115cc_library {
116 name: "libcow_operation_convert",
117 host_supported: true,
118 recovery_available: true,
119 defaults: [
120 "ue_defaults",
121 "update_metadata-protos_exports",
122 ],
123 srcs: [
124 "common/cow_operation_convert.cc",
125 ],
126 static_libs: [
127 "libsnapshot_cow",
128 "update_metadata-protos",
129 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500130 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400131 "libbrotli",
132 "libz",
133 ],
134}
135
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700136// update_metadata-protos (type: static_library)
137// ========================================================
138// Protobufs.
139cc_defaults {
140 name: "update_metadata-protos_exports",
141
142 shared_libs: ["libprotobuf-cpp-lite"],
143}
144
Devendra Singhi87484b02022-11-22 14:10:14 +0530145cc_defaults {
146 name: "update_metadata-protos-defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700147 host_supported: true,
Inseob Kim3cce62a2021-06-14 11:55:35 +0900148 ramdisk_available: true,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700149 recovery_available: true,
150
151 srcs: ["update_engine/update_metadata.proto"],
152 cflags: [
153 "-Wall",
154 "-Werror",
155 ],
156 proto: {
157 canonical_path_from_root: false,
158 export_proto_headers: true,
159 },
160}
161
Devendra Singhi87484b02022-11-22 14:10:14 +0530162cc_library_static {
163 name: "update_metadata-protos",
164 defaults: ["update_metadata-protos-defaults"],
165 proto: {
166 type: "lite",
167 },
168}
169
170cc_library_static {
171 name: "update_metadata-protos-full",
172 defaults: ["update_metadata-protos-defaults"],
173}
174
Kelvin Zhang73202a92022-06-02 10:19:54 -0700175python_library_host {
176 name: "update_metadata-protos-python",
177 srcs: ["update_metadata.proto"],
178 proto: {
179 canonical_path_from_root: false,
180 },
181}
182
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700183// libpayload_consumer (type: static_library)
184// ========================================================
185// The payload application component and common dependencies.
186cc_defaults {
Devendra Singhi87484b02022-11-22 14:10:14 +0530187 name: "libpayload_consumer_exports_defaults",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800188 defaults: ["update_metadata-protos_exports"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700189
190 static_libs: [
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700191 "libxz",
192 "libbz",
193 "libbspatch",
194 "libbrotli",
195 "libfec_rs",
196 "libpuffpatch",
197 "libverity_tree",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400198 "libsnapshot_cow",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400199 "libbrotli",
200 "libz",
201 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500202 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400203 "libcow_operation_convert",
Kelvin Zhang55624032021-12-20 12:13:24 -0800204 "lz4diff-protos",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800205 "liblz4patch",
Kelvin Zhang27757a22023-02-15 16:58:27 -0800206 "libzstd",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700207 ],
208 shared_libs: [
209 "libbase",
210 "libcrypto",
Sen Jiangb5f631d2018-12-18 16:59:57 -0800211 "libfec",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800212 "liblz4",
Tianjie99d570d2020-06-04 14:57:19 -0700213 "libziparchive",
Gabriele Maaad68f2018-06-14 01:10:09 +0200214 "libprocessgroup",
Luca Stefanidc456c42019-01-03 21:20:42 +0100215 "libselinux",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700216 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700217}
218
Devendra Singhi87484b02022-11-22 14:10:14 +0530219cc_defaults {
220 name: "libpayload_consumer_exports",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700221 defaults: [
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800222 "libpayload_consumer_exports_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700223 ],
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800224 static_libs: ["update_metadata-protos"],
Devendra Singhi87484b02022-11-22 14:10:14 +0530225}
226
227cc_defaults {
228 name: "libpayload_consumer_exports_proto-full",
229 defaults: [
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800230 "libpayload_consumer_exports_defaults",
Devendra Singhi87484b02022-11-22 14:10:14 +0530231 ],
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800232 static_libs: ["update_metadata-protos-full"],
Devendra Singhi87484b02022-11-22 14:10:14 +0530233}
234
235cc_defaults {
236 name: "libpayload_consumer_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700237 host_supported: true,
238 recovery_available: true,
239
240 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700241 "aosp/platform_constants_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700242 "common/action_processor.cc",
243 "common/boot_control_stub.cc",
244 "common/clock.cc",
245 "common/constants.cc",
246 "common/cpu_limiter.cc",
Yifan Hongdaac7322019-11-07 10:48:26 -0800247 "common/dynamic_partition_control_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700248 "common/error_code_utils.cc",
249 "common/file_fetcher.cc",
250 "common/hash_calculator.cc",
251 "common/http_common.cc",
252 "common/http_fetcher.cc",
253 "common/hwid_override.cc",
254 "common/multi_range_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700255 "common/prefs.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700256 "common/subprocess.cc",
257 "common/terminator.cc",
258 "common/utils.cc",
259 "payload_consumer/bzip_extent_writer.cc",
260 "payload_consumer/cached_file_descriptor.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700261 "payload_consumer/certificate_parser_android.cc",
Kelvin Zhang569c97e2020-10-26 12:12:24 -0400262 "payload_consumer/cow_writer_file_descriptor.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700263 "payload_consumer/delta_performer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700264 "payload_consumer/extent_reader.cc",
265 "payload_consumer/extent_writer.cc",
266 "payload_consumer/file_descriptor.cc",
267 "payload_consumer/file_descriptor_utils.cc",
268 "payload_consumer/file_writer.cc",
269 "payload_consumer/filesystem_verifier_action.cc",
Kelvin Zhang40d96662021-02-24 14:21:29 -0500270 "payload_consumer/install_operation_executor.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700271 "payload_consumer/install_plan.cc",
272 "payload_consumer/mount_history.cc",
273 "payload_consumer/payload_constants.cc",
274 "payload_consumer/payload_metadata.cc",
275 "payload_consumer/payload_verifier.cc",
Kelvin Zhang50bac652020-09-28 15:51:41 -0400276 "payload_consumer/partition_writer.cc",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400277 "payload_consumer/partition_writer_factory_android.cc",
278 "payload_consumer/vabc_partition_writer.cc",
Kelvin Zhang4bb49202021-07-08 21:39:05 -0400279 "payload_consumer/xor_extent_writer.cc",
Kelvin Zhangb1706762021-06-25 15:05:22 -0400280 "payload_consumer/block_extent_writer.cc",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400281 "payload_consumer/snapshot_extent_writer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700282 "payload_consumer/postinstall_runner_action.cc",
Kelvin Zhangab3ce602021-02-24 14:46:40 -0500283 "payload_consumer/verified_source_fd.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700284 "payload_consumer/verity_writer_android.cc",
285 "payload_consumer/xz_extent_writer.cc",
286 "payload_consumer/fec_file_descriptor.cc",
Tianjied3865d12020-06-03 15:25:17 -0700287 "payload_consumer/partition_update_generator_android.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -0700288 "update_status_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700289 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700290}
291
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000292cc_library_static {
Devendra Singhi87484b02022-11-22 14:10:14 +0530293 name: "libpayload_consumer",
294 defaults: [
295 "ue_defaults",
296 "libpayload_consumer_exports",
297 "libpayload_consumer_defaults",
298 ],
299}
300
301cc_library_static {
302 name: "libpayload_consumer_proto-full",
303 defaults: [
304 "ue_defaults",
305 "libpayload_consumer_exports_proto-full",
306 "libpayload_consumer_defaults",
307 ],
308}
309
310cc_library_static {
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000311 name: "libstatslog_ue",
312 generated_sources: ["statslog_ue.cpp"],
313 generated_headers: ["statslog_ue.h"],
314 export_generated_headers: ["statslog_ue.h"],
315 shared_libs: [
316 "libstatssocket",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800317 ],
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000318}
319
320genrule {
321 name: "statslog_ue.h",
322 tools: ["stats-log-api-gen"],
323 cmd: "$(location stats-log-api-gen) --header $(genDir)/statslog_ue.h --module update_engine --namespace chromeos_update_engine,statsd",
324 out: [
325 "statslog_ue.h",
326 ],
327}
328
329genrule {
330 name: "statslog_ue.cpp",
331 tools: ["stats-log-api-gen"],
332 cmd: "$(location stats-log-api-gen) --cpp $(genDir)/statslog_ue.cpp --module update_engine --namespace chromeos_update_engine,statsd --importHeader statslog_ue.h",
333 out: [
334 "statslog_ue.cpp",
335 ],
336}
337
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700338// libupdate_engine_boot_control (type: static_library)
339// ========================================================
340// A BootControl class implementation using Android's HIDL boot_control HAL.
341cc_defaults {
Devendra Singhi87484b02022-11-22 14:10:14 +0530342 name: "libupdate_engine_boot_control_exports_defaults",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800343 defaults: ["update_metadata-protos_exports"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700344
Yifan Hong420db9b2019-07-23 20:50:33 -0700345 static_libs: [
David Andersone7ce8212019-12-16 20:13:19 -0800346 "libcutils",
347 "libfs_mgr_binder",
348 "libgsi",
David Anderson8f2f5292023-08-03 12:28:38 -0700349 "libsnapshot_static",
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000350 "libstatslog_ue",
David Anderson6c190a22020-09-21 17:09:53 -0700351 "libz",
Yifan Hong420db9b2019-07-23 20:50:33 -0700352 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700353 shared_libs: [
354 "libbootloader_message",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700355 "libhidlbase",
356 "liblp",
357 "libutils",
358 "android.hardware.boot@1.0",
David Anderson2111d062019-10-15 22:36:27 -0700359 "android.hardware.boot@1.1",
Kelvin Zhangcb419e62021-06-16 13:56:47 -0400360 "android.hardware.boot@1.2",
Kelvin Zhang8251dc02022-06-14 09:46:46 -0700361 "android.hardware.boot-V1-ndk",
Kelvin Zhange9c1d372022-06-13 15:40:44 -0700362 "libboot_control_client",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700363 ],
Yifan Hong29692902020-03-26 12:47:05 -0700364 header_libs: [
365 "avb_headers",
366 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700367 target: {
368 recovery: {
David Andersone7ce8212019-12-16 20:13:19 -0800369 static_libs: [
370 "libfs_mgr",
371 "libsnapshot_nobinder",
372 ],
373 exclude_static_libs: [
374 "libfs_mgr_binder",
David Anderson8f2f5292023-08-03 12:28:38 -0700375 "libsnapshot_static",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800376 "libstatslog_ue",
Yifan Hong212d7952020-02-04 11:08:08 -0800377 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700378 },
379 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700380}
381
Devendra Singhi87484b02022-11-22 14:10:14 +0530382cc_defaults {
383 name: "libupdate_engine_boot_control_exports",
384 defaults: [
385 "libupdate_engine_boot_control_exports_defaults",
386 ],
387 static_libs: [
388 "libpayload_consumer",
389 "update_metadata-protos",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800390 ],
Devendra Singhi87484b02022-11-22 14:10:14 +0530391}
392
393cc_defaults {
394 name: "libupdate_engine_boot_control_exports_proto-full",
395 defaults: [
396 "libupdate_engine_boot_control_exports_defaults",
397 ],
398 static_libs: [
399 "libpayload_consumer_proto-full",
400 "update_metadata-protos-full",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800401 ],
Devendra Singhi87484b02022-11-22 14:10:14 +0530402}
403
404cc_defaults {
405 name: "libupdate_engine_boot_control_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700406 defaults: [
407 "ue_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700408 ],
409 recovery_available: true,
410
411 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700412 "aosp/boot_control_android.cc",
413 "aosp/cleanup_previous_update_action.cc",
414 "aosp/dynamic_partition_control_android.cc",
415 "aosp/dynamic_partition_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700416 ],
417}
418
Devendra Singhi87484b02022-11-22 14:10:14 +0530419cc_library_static {
420 name: "libupdate_engine_boot_control",
421 defaults: [
422 "libupdate_engine_boot_control_defaults",
423 "libupdate_engine_boot_control_exports",
424 "libpayload_consumer_exports",
425 ],
426}
427
428cc_library_static {
Nikita Putikhine788f952024-03-11 19:21:24 +0100429 name: "libupdate_engine_boot_control_nostats",
430 cflags: ["-DUE_DISABLE_STATS"],
431 defaults: [
432 "libupdate_engine_boot_control_defaults",
433 "libupdate_engine_boot_control_exports",
434 "libpayload_consumer_exports",
435 ],
436}
437
438cc_library_static {
Devendra Singhi87484b02022-11-22 14:10:14 +0530439 name: "libupdate_engine_boot_control_proto-full",
440 defaults: [
441 "libupdate_engine_boot_control_defaults",
442 "libupdate_engine_boot_control_exports_proto-full",
443 "libpayload_consumer_exports_proto-full",
444 ],
445}
446
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700447// libupdate_engine_android (type: static_library)
448// ========================================================
449// The main daemon static_library used in Android (non-Brillo). This only has a
450// loop to apply payloads provided by the upper layer via a Binder interface.
451cc_defaults {
Devendra Singhi87484b02022-11-22 14:10:14 +0530452 name: "libupdate_engine_android_exports_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700453 defaults: [
454 "ue_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700455 ],
456
457 static_libs: [
Tianjie838793d2021-01-14 22:05:13 -0800458 "libavb",
459 "libavb_user",
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000460 "libgkiprops",
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000461 "libstatslog_ue",
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000462 "libPlatformProperties",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700463 ],
464 shared_libs: [
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +0000465 "apex_aidl_interface-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700466 "libandroid_net",
467 "libbase",
468 "libbinder",
469 "libbinderwrapper",
470 "libbootloader_message",
471 "libbrillo-binder",
472 "libcurl",
473 "libcutils",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800474 "libupdate_engine_stable-V3-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700475 "liblog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700476 "libssl",
Vova Sharaienkod62c81b2022-09-21 05:32:43 +0000477 "libstatssocket",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700478 "libutils",
479 ],
Nikita Ioffeaedfef32021-04-28 13:54:14 +0100480 whole_static_libs: [
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000481 "libcom.android.sysprop.apex",
Nikita Ioffeaedfef32021-04-28 13:54:14 +0100482 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700483}
484
Devendra Singhi87484b02022-11-22 14:10:14 +0530485cc_defaults {
486 name: "libupdate_engine_android_exports",
487 defaults: [
488 "libupdate_engine_android_exports_defaults",
489 "libupdate_engine_boot_control_exports",
490 "libpayload_consumer_exports",
491 ],
492 static_libs: [
493 "libpayload_consumer",
494 "libupdate_engine_boot_control",
495 ],
496}
497
498cc_defaults {
499 name: "libupdate_engine_android_exports_proto-full",
500 defaults: [
501 "libupdate_engine_android_exports_defaults",
502 "libupdate_engine_boot_control_exports_proto-full",
503 "libpayload_consumer_exports_proto-full",
504 ],
505 static_libs: [
506 "libpayload_consumer_proto-full",
507 "libupdate_engine_boot_control_proto-full",
508 ],
509}
510
Brian Daniels6d8a94d2024-10-02 17:16:49 -0400511aidl_interface {
512 name: "libupdate_engine_aidl_interface",
513 srcs: [
514 ":libupdate_engine_aidl",
515 ],
516 backend: {
517 cpp: {
518 enabled: false,
519 },
520 java: {
521 enabled: false,
522 },
523 ndk: {
524 enabled: false,
525 },
526 rust: {
527 enabled: true,
528 },
529 },
530 frozen: false,
531 unstable: true,
532}
533
Devendra Singhi87484b02022-11-22 14:10:14 +0530534cc_defaults {
535 name: "libupdate_engine_android_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700536 defaults: [
537 "ue_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700538 ],
539
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700540 aidl: {
541 local_include_dirs: ["binder_bindings"],
542 export_aidl_headers: true,
543 },
544
545 srcs: [
546 ":libupdate_engine_aidl",
Amin Hassani538bd592020-11-04 20:46:08 -0800547 "common/system_state.cc",
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +0000548 "aosp/apex_handler_android.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700549 "aosp/binder_service_android.cc",
550 "aosp/binder_service_stable_android.cc",
551 "aosp/daemon_android.cc",
552 "aosp/daemon_state_android.cc",
553 "aosp/hardware_android.cc",
554 "aosp/logging_android.cc",
555 "aosp/network_selector_android.cc",
556 "aosp/update_attempter_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700557 "certificate_checker.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800558 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700559 "libcurl_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700560 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700561 "update_boot_flags_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700562 ],
563}
564
Devendra Singhi87484b02022-11-22 14:10:14 +0530565cc_library_static {
566 name: "libupdate_engine_android",
567 defaults: [
568 "libupdate_engine_android_defaults",
569 "libupdate_engine_android_exports",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800570 ],
Devendra Singhi87484b02022-11-22 14:10:14 +0530571}
572
573cc_library_static {
574 name: "libupdate_engine_android_proto-full",
575 defaults: [
576 "libupdate_engine_android_defaults",
577 "libupdate_engine_android_exports_proto-full",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800578 ],
Devendra Singhi87484b02022-11-22 14:10:14 +0530579}
580
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700581// update_engine (type: executable)
582// ========================================================
583// update_engine daemon.
584cc_binary {
585 name: "update_engine",
586 defaults: [
587 "ue_defaults",
588 "libupdate_engine_android_exports",
589 ],
590
Kelvin Zhang77cb1c62023-03-31 20:34:52 -0700591 static_libs: [
592 "libupdate_engine_android",
593 "libgflags",
594 ],
Tao Bao1e1c86c2019-04-18 10:48:32 -0700595 required: [
Darren Krahn03c7be52023-11-30 15:40:12 -0800596 "cacerts",
Tianjie Xube4ea232019-10-15 18:08:31 -0700597 "otacerts",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700598 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700599
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800600 srcs: [
601 "main.cc",
602 "aosp/metrics_reporter_android.cc",
603 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700604 init_rc: ["update_engine.rc"],
605}
606
Nikita Putikhine788f952024-03-11 19:21:24 +0100607// update_engine_nostats (type: executable)
608// ========================================================
609// update_engine daemon version without the stats integration.
610cc_binary {
611 name: "update_engine_nostats",
612 defaults: [
613 "ue_defaults",
614 "libupdate_engine_android_exports",
615 ],
616
617 static_libs: [
618 "libupdate_engine_android",
619 "libgflags",
620 "libupdate_engine_boot_control_nostats",
621 ],
622 required: [
623 "cacerts",
624 "otacerts",
625 ],
626
627 exclude_static_libs: [
628 "libstatslog_ue",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800629 "libupdate_engine_boot_control",
Nikita Putikhine788f952024-03-11 19:21:24 +0100630 ],
631
632 exclude_shared_libs: [
633 "libstatssocket",
634 ],
635
636 cflags: ["-DUE_DISABLE_STATS"],
637 srcs: [
638 "main.cc",
639 "common/metrics_reporter_stub.cc",
640 ],
641 init_rc: ["update_engine_nostats.rc"],
642}
643
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700644// update_engine_sideload (type: executable)
645// ========================================================
646// A binary executable equivalent to update_engine daemon that installs an update
647// from a local file directly instead of running in the background. Used in
648// recovery image.
649cc_binary {
650 name: "update_engine_sideload",
651 defaults: [
652 "ue_defaults",
653 "update_metadata-protos_exports",
654 "libupdate_engine_boot_control_exports",
655 "libpayload_consumer_exports",
656 ],
657 recovery: true,
658
Nikita Putikhine788f952024-03-11 19:21:24 +0100659 cflags: [
660 "-D_UE_SIDELOAD",
661 "-DUE_DISABLE_STATS",
662 ],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -0700663 header_libs: ["libgtest_prod_headers"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700664
665 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700666 "aosp/hardware_android.cc",
667 "aosp/logging_android.cc",
668 "aosp/sideload_main.cc",
669 "aosp/update_attempter_android.cc",
670 "common/metrics_reporter_stub.cc",
671 "common/network_selector_stub.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800672 "common/system_state.cc",
673 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700674 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700675 "update_boot_flags_action.cc",
676 "update_status_utils.cc",
677 ],
678
679 // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out,
680 // as it doesn't look beneficial to be installed separately due to its size. Note
681 // that we explicitly request their recovery variants, so that the expected files
682 // will be used and installed.
683 shared_libs: [
684 "libbase",
685 "liblog",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800686 "liblz4",
Kelvin Zhang0dfaf402023-10-31 17:26:58 -0700687 "libprotobuf-cpp-lite",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700688 ],
689 static_libs: [
690 "libpayload_consumer",
691 "libupdate_engine_boot_control",
692 "update_metadata-protos",
693
694 // We add the static versions of the shared libraries that are not installed to
695 // recovery image due to size concerns. Need to include all the static library
696 // dependencies of these static libraries.
Trevor Radcliffee877eac2022-06-08 14:10:21 +0000697 "libgkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700698 "libevent",
699 "libmodpb64",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700700 "libbrillo-stream",
701 "libbrillo",
702 "libchrome",
703 ],
704 target: {
705 recovery: {
706 exclude_shared_libs: [
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700707 "libbrillo-stream",
708 "libbrillo",
709 "libchrome",
710 ],
711 },
712 },
713
Tao Bao1e1c86c2019-04-18 10:48:32 -0700714 required: [
Tianjie Xube4ea232019-10-15 18:08:31 -0700715 "otacerts.recovery",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700716 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700717}
718
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700719// update_engine_client (type: executable)
720// ========================================================
721// update_engine console client.
722cc_binary {
723 name: "update_engine_client",
724 defaults: ["ue_defaults"],
725
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700726 shared_libs: [
727 "libbinder",
728 "libbinderwrapper",
729 "libbrillo-binder",
730 "libutils",
731 ],
732
733 aidl: {
734 local_include_dirs: ["binder_bindings"],
735 },
736
737 srcs: [
738 ":libupdate_engine_aidl",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700739 "aosp/update_engine_client_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700740 "common/error_code_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700741 "update_status_utils.cc",
742 ],
743}
744
745// libpayload_generator (type: static_library)
746// ========================================================
747// server-side code. This is used for delta_generator and unittests but not
748// for any client code.
749cc_defaults {
750 name: "libpayload_generator_exports",
751 defaults: [
752 "libpayload_consumer_exports",
753 "update_metadata-protos_exports",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800754 "erofs-utils_export_defaults",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700755 ],
756
Tianjie37ae8562020-03-25 15:16:01 -0700757 header_libs: [
758 "bootimg_headers",
759 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700760 static_libs: [
761 "libavb",
762 "libbrotli",
763 "libbsdiff",
764 "libdivsufsort",
765 "libdivsufsort64",
766 "liblzma",
767 "libpayload_consumer",
768 "libpuffdiff",
Tianjiea69cfe22021-08-22 23:28:44 -0700769 "libzucchini",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700770 "libverity_tree",
771 "update_metadata-protos",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500772 "libpayload_extent_utils",
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500773 "libcow_size_estimator",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800774 "liberofs",
Kelvin Zhang702ce4c2022-07-14 10:43:22 -0700775 "libselinux",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800776 "lz4diff-protos",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800777 "liblz4diff",
Kelvin Zhang27757a22023-02-15 16:58:27 -0800778 "libzstd",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700779 ],
780 shared_libs: [
781 "libbase",
782 "libext2fs",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800783 // LZ4 has to be a shared lib, as we want to override it with
784 // LD_LIBRARY_PRELOAD later
785 "liblz4",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700786 ],
787}
788
789cc_library_static {
David Andersonc1c93052020-08-26 18:22:09 +0000790 name: "libpayload_extent_ranges",
791 defaults: [
792 "ue_defaults",
793 ],
794 host_supported: true,
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400795 recovery_available: true,
David Andersonc1c93052020-08-26 18:22:09 +0000796 srcs: [
797 "payload_generator/extent_ranges.cc",
798 ],
799 static_libs: [
800 "update_metadata-protos",
801 ],
802}
803
804cc_library_static {
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500805 name: "libcow_size_estimator",
806 defaults: [
807 "ue_defaults",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800808 "update_metadata-protos_exports",
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500809 ],
810 host_supported: true,
811 recovery_available: true,
812 srcs: [
813 "payload_generator/cow_size_estimator.cc",
814 ],
815 static_libs: [
816 "update_metadata-protos",
817 "libbase",
818 "libsnapshot_cow",
819 "libcow_operation_convert",
820 ],
821}
822
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800823cc_defaults {
824 name: "liblz4diff_defaults",
825 static_libs: [
826 "lz4diff-protos",
827 "update_metadata-protos",
828 "libssl",
829 "libbsdiff",
830 "libpuffdiff",
831 ],
832 shared_libs: [
833 "liblz4",
Kelvin Zhang893b3a12021-12-30 12:28:53 -0800834 ],
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800835}
836
837cc_library_static {
838 name: "liblz4diff",
839 host_supported: true,
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -0800840 defaults: [
841 "ue_defaults",
842 "liblz4diff_defaults",
843 ],
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800844 srcs: [
Kelvin Zhang893b3a12021-12-30 12:28:53 -0800845 "lz4diff/lz4diff.cc",
Kelvin Zhang4eae81e2021-12-09 17:07:17 -0800846 "lz4diff/lz4diff_compress.cc",
847 ],
848}
849
850cc_library_static {
851 name: "liblz4patch",
852 host_supported: true,
853 recovery_available: true,
854 defaults: ["ue_defaults"],
855 static_libs: [
856 "lz4diff-protos",
857 "update_metadata-protos",
858 "libssl",
859 "libbspatch",
860 "libpuffpatch",
861 ],
862 shared_libs: [
863 "liblz4",
864 ],
865 srcs: [
866 "lz4diff/lz4patch.cc",
867 "lz4diff/lz4diff_compress.cc",
868 ],
869}
870
Kelvin Zhang35cff4f2021-12-08 16:06:00 -0800871cc_binary_host {
872 name: "lz4diff",
873 defaults: [
874 "ue_defaults",
875 "libpayload_generator_exports",
876 ],
877 static_libs: [
878 "libpayload_generator",
879 "liblz4diff",
880 "liblz4patch",
881 ],
882 srcs: [
883 "lz4diff/lz4diff_main.cc",
884 ],
885}
886
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500887cc_library_static {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700888 name: "libpayload_generator",
889 defaults: [
890 "ue_defaults",
891 "libpayload_generator_exports",
892 ],
893 host_supported: true,
894
895 srcs: [
Amin Hassani538bd592020-11-04 20:46:08 -0800896 "common/system_state.cc",
897 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700898 "payload_generator/ab_generator.cc",
899 "payload_generator/annotated_operation.cc",
900 "payload_generator/blob_file_writer.cc",
901 "payload_generator/block_mapping.cc",
902 "payload_generator/boot_img_filesystem.cc",
903 "payload_generator/bzip.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700904 "payload_generator/deflate_utils.cc",
905 "payload_generator/delta_diff_generator.cc",
906 "payload_generator/delta_diff_utils.cc",
907 "payload_generator/ext2_filesystem.cc",
Kelvin Zhang446989a2021-12-08 13:49:07 -0800908 "payload_generator/erofs_filesystem.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700909 "payload_generator/extent_ranges.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700910 "payload_generator/full_update_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700911 "payload_generator/mapfile_filesystem.cc",
Tianjiee9156ec2020-08-11 11:13:54 -0700912 "payload_generator/merge_sequence_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700913 "payload_generator/payload_file.cc",
914 "payload_generator/payload_generation_config_android.cc",
915 "payload_generator/payload_generation_config.cc",
Amin Hassani79821002019-05-06 17:40:49 -0700916 "payload_generator/payload_properties.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700917 "payload_generator/payload_signer.cc",
918 "payload_generator/raw_filesystem.cc",
919 "payload_generator/squashfs_filesystem.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700920 "payload_generator/xz_android.cc",
921 ],
922}
923
924// delta_generator (type: executable)
925// ========================================================
926// server-side delta generator.
927cc_binary_host {
928 name: "delta_generator",
929 defaults: [
930 "ue_defaults",
931 "libpayload_generator_exports",
932 "libpayload_consumer_exports",
933 ],
934
935 static_libs: [
936 "libavb_host_sysdeps",
937 "libpayload_consumer",
938 "libpayload_generator",
Kelvin Zhang77cb1c62023-03-31 20:34:52 -0700939 "libgflags",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700940 ],
941
942 srcs: ["payload_generator/generate_delta_main.cc"],
943}
944
945cc_test {
Kelvin Zhangc5803b72021-09-02 09:06:16 -0700946 host_supported: true,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700947 name: "ue_unittest_delta_generator",
948 defaults: [
949 "ue_defaults",
950 "libpayload_generator_exports",
951 "libpayload_consumer_exports",
952 ],
953
954 static_libs: [
955 "libpayload_consumer",
956 "libpayload_generator",
Kelvin Zhang77cb1c62023-03-31 20:34:52 -0700957 "libgflags",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700958 ],
959
960 srcs: ["payload_generator/generate_delta_main.cc"],
961
962 gtest: false,
963 stem: "delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700964}
965
966// test_http_server (type: executable)
967// ========================================================
968// Test HTTP Server.
969cc_test {
970 name: "test_http_server",
971 defaults: ["ue_defaults"],
972 srcs: [
973 "common/http_common.cc",
974 "test_http_server.cc",
975 ],
976
977 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700978}
979
980// test_subprocess (type: executable)
981// ========================================================
982// Test helper subprocess program.
983cc_test {
984 name: "test_subprocess",
985 defaults: ["ue_defaults"],
986 srcs: ["test_subprocess.cc"],
987
988 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700989}
990
991// Public keys for unittests.
992// ========================================================
993genrule {
994 name: "ue_unittest_keys",
995 cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" +
xunchangcda3c032019-03-26 15:41:14 -0700996 "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" +
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700997 "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem) &&" +
998 "openssl pkey -in $(location unittest_key_EC.pem) -pubout -out $(location unittest_key_EC.pub.pem)",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700999 srcs: [
1000 "unittest_key.pem",
1001 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -07001002 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -07001003 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001004 ],
1005 out: [
1006 "unittest_key.pub.pem",
1007 "unittest_key2.pub.pem",
xunchangcda3c032019-03-26 15:41:14 -07001008 "unittest_key_RSA4096.pub.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -07001009 "unittest_key_EC.pub.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001010 ],
1011}
1012
1013// Sample images for unittests.
1014// ========================================================
1015// Extract sample image from the compressed sample_images.tar.bz2 file used by
1016// the unittests.
1017genrule {
1018 name: "ue_unittest_disk_imgs",
1019 cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img",
1020 srcs: ["sample_images/sample_images.tar.bz2"],
1021 out: [
1022 "gen/disk_ext2_1k.img",
1023 "gen/disk_ext2_4k.img",
1024 "gen/disk_ext2_4k_empty.img",
1025 "gen/disk_ext2_unittest.img",
1026 ],
1027}
1028
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001029genrule {
1030 name: "ue_unittest_erofs_imgs",
Kelvin Zhang893b3a12021-12-30 12:28:53 -08001031 cmd: "$(in) $(location mkfs.erofs) $(location gen/erofs_empty.img) && " +
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -08001032 "$(in) $(location mkfs.erofs) $(location gen/erofs.img) $(location delta_generator) && " +
1033 "$(in) $(location mkfs.erofs) $(location gen/erofs_new.img) $(location delta_generator) lz4hc,7",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001034 srcs: ["sample_images/generate_test_erofs_images.sh"],
1035 out: [
1036 "gen/erofs.img",
Kelvin Zhang893b3a12021-12-30 12:28:53 -08001037 "gen/erofs_new.img",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001038 "gen/erofs_empty.img",
1039 ],
1040 tools: [
1041 "mkfs.erofs",
1042 "delta_generator",
1043 ],
1044}
1045
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001046filegroup {
Chih-Hung Hsieh85ad1472022-02-17 17:32:12 -08001047 name: "update_engine_host_unittest_timeout_srcs",
1048 srcs: [
1049 "common/action_processor_unittest.cc",
1050 "common/file_fetcher_unittest.cc",
1051 "payload_generator/delta_diff_utils_unittest.cc",
1052 ],
1053}
1054
1055filegroup {
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001056 name: "update_engine_host_unittest_srcs",
1057 srcs: [
1058 "common/action_pipe_unittest.cc",
1059 "common/action_processor_unittest.cc",
1060 "common/action_unittest.cc",
1061 "common/cow_operation_convert_unittest.cc",
1062 "common/cpu_limiter_unittest.cc",
1063 "common/fake_prefs.cc",
1064 "common/file_fetcher_unittest.cc",
1065 "common/hash_calculator_unittest.cc",
1066 "common/hwid_override_unittest.cc",
1067 "common/metrics_reporter_stub.cc",
1068 "common/mock_http_fetcher.cc",
1069 "common/prefs_unittest.cc",
1070 "common/terminator_unittest.cc",
1071 "common/test_utils.cc",
Kelvin Zhang55624032021-12-20 12:13:24 -08001072 "lz4diff/lz4diff_compress_unittest.cc",
Kelvin Zhang893b3a12021-12-30 12:28:53 -08001073 "lz4diff/lz4diff_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001074 "payload_generator/ab_generator_unittest.cc",
1075 "payload_generator/blob_file_writer_unittest.cc",
1076 "payload_generator/block_mapping_unittest.cc",
1077 "payload_generator/boot_img_filesystem_unittest.cc",
1078 "payload_generator/deflate_utils_unittest.cc",
1079 "payload_generator/delta_diff_utils_unittest.cc",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001080 "payload_generator/erofs_filesystem_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001081 "payload_generator/ext2_filesystem_unittest.cc",
1082 "payload_generator/extent_ranges_unittest.cc",
1083 "payload_generator/extent_utils_unittest.cc",
1084 "payload_generator/fake_filesystem.cc",
1085 "payload_generator/full_update_generator_unittest.cc",
1086 "payload_generator/mapfile_filesystem_unittest.cc",
1087 "payload_generator/merge_sequence_generator_unittest.cc",
1088 "payload_generator/payload_file_unittest.cc",
1089 "payload_generator/payload_generation_config_android_unittest.cc",
1090 "payload_generator/payload_generation_config_unittest.cc",
1091 "payload_generator/payload_properties_unittest.cc",
1092 "payload_generator/payload_signer_unittest.cc",
1093 "payload_generator/squashfs_filesystem_unittest.cc",
1094 "payload_generator/zip_unittest.cc",
Kelvin Zhange4bffe62022-03-07 09:08:38 -08001095 "payload_consumer/verity_writer_android_unittest.cc",
1096 "payload_consumer/xz_extent_writer_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001097 "testrunner.cc",
1098 ],
1099}
1100
1101cc_test_host {
1102 name: "update_engine_host_unittests",
1103 defaults: [
1104 "ue_defaults",
1105 "libpayload_generator_exports",
1106 ],
1107 strip: {
1108 none: true,
1109 },
1110 cflags: [
1111 "-g3",
1112 ],
Chih-Hung Hsieh85ad1472022-02-17 17:32:12 -08001113 tidy_timeout_srcs: [":update_engine_host_unittest_timeout_srcs"],
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001114 srcs: [":update_engine_host_unittest_srcs"],
1115 data: [
1116 ":ue_unittest_delta_generator",
1117 ":ue_unittest_disk_imgs",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001118 ":ue_unittest_erofs_imgs",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001119 ":ue_unittest_keys",
1120 "otacerts.zip",
1121 "unittest_key.pem",
1122 "unittest_key2.pem",
1123 "unittest_key_RSA4096.pem",
1124 "unittest_key_EC.pem",
1125 "update_engine.conf",
Kelvin Zhanga35324f2023-06-28 10:29:16 -07001126 "testdata/cycle_nodes_product.bin",
1127 "testdata/cycle_nodes_product_no_xor.bin",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001128 ],
1129 static_libs: [
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001130 "libgmock",
1131 "libpayload_generator",
1132 ],
1133}
1134
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001135// update_engine_unittests (type: executable)
1136// ========================================================
1137// Main unittest file.
1138cc_test {
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001139 name: "update_engine_http_unittests",
1140 defaults: [
1141 "ue_defaults",
1142 "liblz4diff_defaults",
1143 "update_metadata-protos_exports",
1144 ],
1145 require_root: true,
1146 static_libs: [
1147 "libbase",
1148 "libbrillo-test-helpers",
1149 "libchrome_test_helpers",
1150 "libcurl",
1151 "libcutils",
1152 "libdm",
1153 "libgmock",
1154 "libz",
Kelvin Zhang27757a22023-02-15 16:58:27 -08001155 "libzstd",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001156 ],
1157 shared_libs: [
1158 "libssl",
1159 "libcrypto",
1160 "libziparchive",
1161 "liblog",
1162 ],
1163
1164 data: [
1165 ":test_http_server",
1166 ":test_subprocess",
1167 ":ue_unittest_keys",
1168 "otacerts.zip",
1169 "unittest_key.pem",
1170 "unittest_key2.pem",
1171 "unittest_key_RSA4096.pem",
1172 "unittest_key_EC.pem",
1173 ],
1174
1175 // We cannot use the default generated AndroidTest.xml because of the use of helper modules
1176 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
1177 // test_config: "test_config.xml",
1178 test_suites: ["device-tests"],
1179
1180 srcs: [
1181 "aosp/platform_constants_android.cc",
1182 "certificate_checker.cc",
1183 "common/action_processor.cc",
1184 "common/boot_control_stub.cc",
1185 "common/error_code_utils.cc",
1186 "common/file_fetcher.cc",
1187 "common/hash_calculator.cc",
1188 "common/http_fetcher.cc",
1189 "common/multi_range_http_fetcher.cc",
1190 "common/http_common.cc",
1191 "common/subprocess.cc",
1192 "common/test_utils.cc",
1193 "common/utils.cc",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001194 "libcurl_http_fetcher.cc",
1195 "payload_consumer/certificate_parser_android.cc",
1196 "payload_consumer/payload_verifier.cc",
1197 "payload_generator/payload_signer.cc",
1198 "update_status_utils.cc",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001199 "certificate_checker_unittest.cc",
1200 "common/http_fetcher_unittest.cc",
1201 "common/mock_http_fetcher.cc",
Kelvin Zhang7e5b4052022-03-22 12:17:59 -07001202 "common/subprocess_unittest.cc",
1203 "libcurl_http_fetcher_unittest.cc",
1204 "payload_consumer/certificate_parser_android_unittest.cc",
1205 "update_status_utils_unittest.cc",
1206 ],
1207}
1208
1209// update_engine_unittests (type: executable)
1210// ========================================================
1211// Main unittest file.
1212cc_test {
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001213 name: "update_engine_unittests",
1214 defaults: [
1215 "ue_defaults",
1216 "libpayload_generator_exports",
1217 "libupdate_engine_android_exports",
1218 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001219
1220 static_libs: [
1221 "libpayload_generator",
1222 "libbrillo-test-helpers",
1223 "libgmock",
1224 "libchrome_test_helpers",
1225 "libupdate_engine_android",
Tianjie Xu173e6192019-12-10 10:56:01 -08001226 "libdm",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001227 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001228
Yifan Hong87ea73f2019-09-12 13:07:37 -07001229 header_libs: [
1230 "libstorage_literals_headers",
1231 ],
1232
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001233 data: [
Tao Bao9456b6f2019-04-29 18:14:58 -07001234 ":ue_unittest_delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001235 ":ue_unittest_disk_imgs",
Kelvin Zhang759e8b92021-12-21 16:46:58 -08001236 ":ue_unittest_erofs_imgs",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001237 ":ue_unittest_keys",
Tianjie Xu7a78d632019-10-08 16:32:39 -07001238 "otacerts.zip",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001239 "unittest_key.pem",
1240 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -07001241 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -07001242 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001243 "update_engine.conf",
Kelvin Zhanga35324f2023-06-28 10:29:16 -07001244 "testdata/cycle_nodes_product.bin",
1245 "testdata/cycle_nodes_product_no_xor.bin",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001246 ],
1247
Tao Bao9456b6f2019-04-29 18:14:58 -07001248 // We cannot use the default generated AndroidTest.xml because of the use of helper modules
1249 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
1250 test_config: "test_config.xml",
1251 test_suites: ["device-tests"],
1252
Chih-Hung Hsieh85ad1472022-02-17 17:32:12 -08001253 tidy_timeout_srcs: [
1254 ":update_engine_host_unittest_timeout_srcs",
1255 "aosp/dynamic_partition_control_android_unittest.cc",
1256 "common/http_fetcher_unittest.cc",
1257 "payload_consumer/delta_performer_integration_test.cc",
1258 "payload_consumer/delta_performer_unittest.cc",
1259 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001260 srcs: [
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001261 ":update_engine_host_unittest_srcs",
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +00001262 "aosp/apex_handler_android_unittest.cc",
Kelvin Zhangb4b95c22021-04-05 15:56:26 -04001263 "aosp/cleanup_previous_update_action_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -07001264 "aosp/dynamic_partition_control_android_unittest.cc",
Kelvin Zhang3fe49642021-10-04 15:35:02 -07001265 "aosp/update_attempter_android_integration_test.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -07001266 "aosp/update_attempter_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001267 "common/utils_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001268 "download_action_android_unittest.cc",
Kelvin Zhange47767a2023-05-16 13:00:58 -07001269 "payload_consumer/block_extent_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001270 "payload_consumer/bzip_extent_writer_unittest.cc",
1271 "payload_consumer/cached_file_descriptor_unittest.cc",
Kelvin Zhang46d6c492021-04-26 17:51:25 -04001272 "payload_consumer/cow_writer_file_descriptor_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001273 "payload_consumer/delta_performer_integration_test.cc",
1274 "payload_consumer/delta_performer_unittest.cc",
1275 "payload_consumer/extent_reader_unittest.cc",
1276 "payload_consumer/extent_writer_unittest.cc",
Kelvin Zhangc5803b72021-09-02 09:06:16 -07001277 "payload_consumer/extent_map_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001278 "payload_consumer/fake_file_descriptor.cc",
1279 "payload_consumer/file_descriptor_utils_unittest.cc",
1280 "payload_consumer/file_writer_unittest.cc",
1281 "payload_consumer/filesystem_verifier_action_unittest.cc",
Amin Hassani23795032020-11-24 14:38:55 -08001282 "payload_consumer/install_plan_unittest.cc",
Kelvin Zhang40d96662021-02-24 14:21:29 -05001283 "payload_consumer/install_operation_executor_unittest.cc",
Tianjie99d570d2020-06-04 14:57:19 -07001284 "payload_consumer/partition_update_generator_android_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001285 "payload_consumer/partition_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001286 "payload_consumer/postinstall_runner_action_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001287 "payload_consumer/snapshot_extent_writer_unittest.cc",
1288 "payload_consumer/vabc_partition_writer_unittest.cc",
Kelvin Zhang4e93cf12021-09-13 16:03:24 -07001289 "payload_consumer/xor_extent_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001290 ],
1291}
1292
1293// Brillo update payload generation script
1294// ========================================================
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +01001295sh_binary {
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001296 name: "brillo_update_payload",
1297 device_supported: false,
1298 host_supported: true,
1299
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +01001300 src: "scripts/brillo_update_payload",
Dan Willemsenf5a904e2018-10-23 01:02:44 -07001301 required: [
1302 "delta_generator",
1303 "shflags",
1304 "simg2img",
1305 ],
1306
1307 target: {
1308 darwin: {
1309 enabled: false,
1310 },
1311 },
Colin Cross606913a2017-11-14 13:05:37 -08001312}
Yifan Hongd51738c2020-07-23 17:06:25 -07001313
1314// update_engine header library
1315cc_library_headers {
1316 name: "libupdate_engine_headers",
Yifan Hong309c8a82020-10-06 18:31:08 -07001317
1318 // This header library is available to core and product modules.
Justin Yun6d121de2020-11-11 19:31:57 +09001319 product_available: true,
Yifan Hong309c8a82020-10-06 18:31:08 -07001320
Yifan Hongd51738c2020-07-23 17:06:25 -07001321 export_include_dirs: ["."],
1322 apex_available: [
1323 "com.android.gki.*",
David Anderson5e6dfe32020-09-17 15:50:33 -07001324 "//apex_available:platform",
Yifan Hongd51738c2020-07-23 17:06:25 -07001325 ],
David Andersonc1c93052020-08-26 18:22:09 +00001326 host_supported: true,
David Anderson5e6dfe32020-09-17 15:50:33 -07001327 recovery_available: true,
1328 ramdisk_available: true,
David Andersona4b7ba62023-05-10 21:41:37 -07001329 vendor_ramdisk_available: true,
David Anderson5e6dfe32020-09-17 15:50:33 -07001330
1331 target: {
1332 darwin: {
1333 enabled: false,
1334 },
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -08001335 },
Yifan Hongd51738c2020-07-23 17:06:25 -07001336}
Kelvin Zhangb93055f2021-02-03 14:22:35 -05001337
1338cc_binary_host {
1339 name: "cow_converter",
1340 defaults: [
1341 "ue_defaults",
1342 "libpayload_consumer_exports",
1343 ],
1344 srcs: [
1345 "aosp/cow_converter.cc",
1346 ],
1347 static_libs: [
1348 "liblog",
1349 "libbrotli",
1350 "libbase",
1351 "libcow_operation_convert",
1352 "libcow_size_estimator",
Kelvin Zhang901c7d52022-06-21 09:35:45 -07001353 "libgflags",
Kelvin Zhangb93055f2021-02-03 14:22:35 -05001354 "libpayload_consumer",
1355 "libpayload_extent_ranges",
1356 "libpayload_extent_utils",
1357 "libsnapshot_cow",
1358 "libz",
1359 "update_metadata-protos",
1360 ],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -07001361}
Kelvin Zhang98001b22021-12-08 14:10:11 -08001362
1363cc_library_static {
1364 name: "lz4diff-protos",
1365 host_supported: true,
1366 ramdisk_available: true,
1367 recovery_available: true,
1368
1369 srcs: ["lz4diff/lz4diff.proto"],
1370 cflags: [
1371 "-Wall",
1372 "-Werror",
1373 ],
1374 proto: {
1375 canonical_path_from_root: false,
1376 export_proto_headers: true,
1377 },
1378}
Kelvin Zhang596a3202022-03-07 14:13:42 -08001379
1380cc_binary_host {
1381 name: "ota_extractor",
1382 defaults: [
1383 "ue_defaults",
1384 "libpayload_consumer_exports",
1385 ],
1386 srcs: [
1387 "aosp/ota_extractor.cc",
1388 ],
1389 static_libs: [
1390 "liblog",
1391 "libbrotli",
1392 "libbase",
1393 "libpayload_consumer",
1394 "libpayload_extent_ranges",
1395 "libpayload_extent_utils",
1396 "libz",
1397 "libgflags",
1398 "update_metadata-protos",
1399 ],
1400}
Kelvin Zhang83b594b2023-05-25 13:43:06 -07001401
1402cc_binary_host {
1403 name: "map_file_generator",
1404 defaults: [
1405 "ue_defaults",
1406 "libpayload_generator_exports",
1407 ],
1408 srcs: [
1409 "aosp/map_file_generator.cc",
1410 ],
1411 static_libs: [
1412 "liblog",
1413 "libbase",
1414 "libpayload_generator",
1415 "libpayload_extent_ranges",
1416 "libpayload_extent_utils",
1417 "libgflags",
Kelvin Zhang8bd5c4c2023-06-08 11:21:27 -07001418 "libsparse",
Kelvin Zhang83b594b2023-05-25 13:43:06 -07001419 "update_metadata-protos",
1420 ],
Kelvin Zhangdf9821b2023-06-12 10:04:34 -07001421 required: [
1422 "unsquashfs",
1423 ],
Kelvin Zhang83b594b2023-05-25 13:43:06 -07001424}
Pawan Waghdaa52652023-06-08 23:57:11 +00001425
1426cc_fuzz {
1427 name: "update_engine_service_fuzzer",
1428 defaults: [
1429 "ue_defaults",
1430 "libupdate_engine_android_exports",
1431 "service_fuzzer_defaults",
1432 "fuzzer_disable_leaks",
1433 ],
1434 static_libs: [
1435 "libupdate_engine_android",
1436 "libgflags",
1437 ],
1438 srcs: [
1439 "fuzzers/update_engine_service_fuzzer.cpp",
1440 "aosp/metrics_reporter_android.cc",
1441 ],
1442 fuzz_config: {
1443 triage_assignee: "waghpawan@google.com",
1444 cc: [
1445 "elsk@google.com",
1446 "zhangkelvin@google.com",
Kelvin Zhang9c5baeb2024-11-05 13:42:32 -08001447 ],
Pawan Waghdaa52652023-06-08 23:57:11 +00001448 },
1449}
Michael Bestasf74f9c82023-12-13 18:03:12 +02001450
1451cc_binary_host {
1452 name: "ota_extractor_static",
1453 srcs: [
1454 "aosp/ota_extractor.cc",
1455 ],
1456 static_libs: [
1457 "liblog",
1458 "libbrotli",
1459 "libbase",
1460 "libpayload_consumer",
1461 "libpayload_extent_ranges",
1462 "libpayload_extent_utils",
1463 "libz",
1464 "libgflags",
1465 "update_metadata-protos",
1466 // from ue_defaults shared_libs
1467 "libbrillo",
1468 "libchrome",
1469 // from libpayload_consumer_exports static_libs
1470 "libxz",
1471 "libbz",
1472 "libbspatch",
1473 "libfec_rs",
1474 "libpuffpatch",
1475 "libverity_tree",
1476 "lz4diff-protos",
1477 "liblz4patch",
1478 // from libpayload_consumer_exports shared_libs
1479 "libcrypto",
1480 "libfec",
1481 "liblz4",
1482 "libprotobuf-cpp-lite",
1483 ],
1484 static_executable: true,
1485 stl: "libc++_static",
1486
1487 // from ue_defaults
1488 cflags: [
1489 "-DBASE_VER=576279",
1490 "-DUSE_HWID_OVERRIDE=0",
1491 "-D_FILE_OFFSET_BITS=64",
1492 "-D_POSIX_C_SOURCE=199309L",
1493 "-Wa,--noexecstack",
1494 "-Wall",
1495 "-Werror",
1496 "-Wextra",
1497 "-Wformat=2",
1498 "-Wno-psabi",
1499 "-Wno-unused-parameter",
1500 "-ffunction-sections",
1501 "-fstack-protector-strong",
1502 "-fvisibility=hidden",
1503 "-g3",
1504 ],
1505 cppflags: [
1506 "-Wnon-virtual-dtor",
1507 "-fno-strict-aliasing",
1508 ],
1509 include_dirs: ["system"],
1510 local_include_dirs: ["client_library/include"],
1511 header_libs: ["libgtest_prod_headers"],
1512 ldflags: ["-Wl,--gc-sections"],
1513}