blob: 3736f696069c8baf7ab885574db42ff31637342b [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",
62 ],
63 cppflags: [
64 "-Wnon-virtual-dtor",
65 "-fno-strict-aliasing",
66 ],
67 include_dirs: ["system"],
68 local_include_dirs: ["client_library/include"],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -070069 header_libs: ["libgtest_prod_headers"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -070070 shared_libs: [
71 "libbrillo-stream",
72 "libbrillo",
73 "libchrome",
74 ],
75 ldflags: ["-Wl,--gc-sections"],
76
77 product_variables: {
78 pdk: {
79 enabled: false,
80 },
81 },
82
83 target: {
Sen Jiangb5f631d2018-12-18 16:59:57 -080084 android: {
85 cflags: [
86 "-DUSE_FEC=1",
87 ],
88 },
89 host: {
90 cflags: [
91 "-DUSE_FEC=0",
92 ],
93 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -070094 darwin: {
95 enabled: false,
96 },
97 },
98}
99
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400100// libcow_operation_convert (type: library)
101// ========================================================
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500102cc_library_static {
103 name: "libpayload_extent_utils",
104 defaults: [
105 "ue_defaults",
106 ],
107 host_supported: true,
108 recovery_available: true,
109 srcs: [
110 "payload_generator/extent_utils.cc",
111 ],
112 static_libs: [
113 "update_metadata-protos",
114 ],
115}
116
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400117cc_library {
118 name: "libcow_operation_convert",
119 host_supported: true,
120 recovery_available: true,
121 defaults: [
122 "ue_defaults",
123 "update_metadata-protos_exports",
124 ],
125 srcs: [
126 "common/cow_operation_convert.cc",
127 ],
128 static_libs: [
129 "libsnapshot_cow",
130 "update_metadata-protos",
131 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500132 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400133 "libbrotli",
134 "libz",
135 ],
136}
137
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700138// update_metadata-protos (type: static_library)
139// ========================================================
140// Protobufs.
141cc_defaults {
142 name: "update_metadata-protos_exports",
143
144 shared_libs: ["libprotobuf-cpp-lite"],
145}
146
147cc_library_static {
148 name: "update_metadata-protos",
149 host_supported: true,
150 recovery_available: true,
151
152 srcs: ["update_engine/update_metadata.proto"],
153 cflags: [
154 "-Wall",
155 "-Werror",
156 ],
157 proto: {
158 canonical_path_from_root: false,
159 export_proto_headers: true,
160 },
161}
162
163// libpayload_consumer (type: static_library)
164// ========================================================
165// The payload application component and common dependencies.
166cc_defaults {
167 name: "libpayload_consumer_exports",
168 defaults: ["update_metadata-protos_exports"],
169
170 static_libs: [
171 "update_metadata-protos",
172 "libxz",
173 "libbz",
174 "libbspatch",
175 "libbrotli",
Tianjie99d570d2020-06-04 14:57:19 -0700176 "libc++fs",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700177 "libfec_rs",
178 "libpuffpatch",
179 "libverity_tree",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400180 "libsnapshot_cow",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400181 "libbrotli",
182 "libz",
183 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500184 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400185 "libcow_operation_convert",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700186 ],
187 shared_libs: [
188 "libbase",
189 "libcrypto",
Sen Jiangb5f631d2018-12-18 16:59:57 -0800190 "libfec",
Tianjie99d570d2020-06-04 14:57:19 -0700191 "libziparchive",
Gabriele Mc0ff77c2018-06-14 01:10:09 +0200192 "libprocessgroup",
Luca Stefaniee10c412019-01-03 21:20:42 +0100193 "libselinux",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700194 ],
Luca Stefani59192882020-03-13 11:32:29 +0100195 product_variables: {
196 debuggable: {
197 cflags: [
198 "-DRUN_BACKUPTOOL",
199 ],
200 },
201 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700202}
203
204cc_library_static {
205 name: "libpayload_consumer",
206 defaults: [
207 "ue_defaults",
208 "libpayload_consumer_exports",
209 ],
210 host_supported: true,
211 recovery_available: true,
212
213 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700214 "aosp/platform_constants_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700215 "common/action_processor.cc",
216 "common/boot_control_stub.cc",
217 "common/clock.cc",
218 "common/constants.cc",
219 "common/cpu_limiter.cc",
Yifan Hongdaac7322019-11-07 10:48:26 -0800220 "common/dynamic_partition_control_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700221 "common/error_code_utils.cc",
222 "common/file_fetcher.cc",
223 "common/hash_calculator.cc",
224 "common/http_common.cc",
225 "common/http_fetcher.cc",
226 "common/hwid_override.cc",
227 "common/multi_range_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700228 "common/prefs.cc",
229 "common/proxy_resolver.cc",
230 "common/subprocess.cc",
231 "common/terminator.cc",
232 "common/utils.cc",
233 "payload_consumer/bzip_extent_writer.cc",
234 "payload_consumer/cached_file_descriptor.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700235 "payload_consumer/certificate_parser_android.cc",
Kelvin Zhang569c97e2020-10-26 12:12:24 -0400236 "payload_consumer/cow_writer_file_descriptor.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700237 "payload_consumer/delta_performer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700238 "payload_consumer/extent_reader.cc",
239 "payload_consumer/extent_writer.cc",
240 "payload_consumer/file_descriptor.cc",
241 "payload_consumer/file_descriptor_utils.cc",
242 "payload_consumer/file_writer.cc",
243 "payload_consumer/filesystem_verifier_action.cc",
244 "payload_consumer/install_plan.cc",
245 "payload_consumer/mount_history.cc",
246 "payload_consumer/payload_constants.cc",
247 "payload_consumer/payload_metadata.cc",
248 "payload_consumer/payload_verifier.cc",
Kelvin Zhang50bac652020-09-28 15:51:41 -0400249 "payload_consumer/partition_writer.cc",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400250 "payload_consumer/partition_writer_factory_android.cc",
251 "payload_consumer/vabc_partition_writer.cc",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400252 "payload_consumer/snapshot_extent_writer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700253 "payload_consumer/postinstall_runner_action.cc",
254 "payload_consumer/verity_writer_android.cc",
255 "payload_consumer/xz_extent_writer.cc",
256 "payload_consumer/fec_file_descriptor.cc",
Tianjied3865d12020-06-03 15:25:17 -0700257 "payload_consumer/partition_update_generator_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700258 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700259}
260
261// libupdate_engine_boot_control (type: static_library)
262// ========================================================
263// A BootControl class implementation using Android's HIDL boot_control HAL.
264cc_defaults {
265 name: "libupdate_engine_boot_control_exports",
266 defaults: ["update_metadata-protos_exports"],
267
Yifan Hong420db9b2019-07-23 20:50:33 -0700268 static_libs: [
David Andersone7ce8212019-12-16 20:13:19 -0800269 "libcutils",
270 "libfs_mgr_binder",
271 "libgsi",
Yifan Hongdad0af82020-02-19 17:19:49 -0800272 "libpayload_consumer",
Yifan Hong420db9b2019-07-23 20:50:33 -0700273 "libsnapshot",
David Anderson6c190a22020-09-21 17:09:53 -0700274 "libsnapshot_cow",
275 "libz",
Yifan Hong420db9b2019-07-23 20:50:33 -0700276 "update_metadata-protos",
277 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700278 shared_libs: [
279 "libbootloader_message",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700280 "libhidlbase",
281 "liblp",
Yifan Hongd976cc52020-02-25 14:51:42 -0800282 "libstatslog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700283 "libutils",
284 "android.hardware.boot@1.0",
David Anderson2111d062019-10-15 22:36:27 -0700285 "android.hardware.boot@1.1",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700286 ],
Yifan Hong29692902020-03-26 12:47:05 -0700287 header_libs: [
288 "avb_headers",
289 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700290 target: {
291 recovery: {
David Andersone7ce8212019-12-16 20:13:19 -0800292 static_libs: [
293 "libfs_mgr",
294 "libsnapshot_nobinder",
295 ],
296 exclude_static_libs: [
297 "libfs_mgr_binder",
298 "libsnapshot",
299 ],
Yifan Hong212d7952020-02-04 11:08:08 -0800300 exclude_shared_libs: [
Yifan Hongd976cc52020-02-25 14:51:42 -0800301 "libstatslog",
Yifan Hong212d7952020-02-04 11:08:08 -0800302 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700303 },
304 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700305}
306
307cc_library_static {
308 name: "libupdate_engine_boot_control",
309 defaults: [
310 "ue_defaults",
311 "libupdate_engine_boot_control_exports",
Yifan Hongdad0af82020-02-19 17:19:49 -0800312 "libpayload_consumer_exports",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700313 ],
314 recovery_available: true,
315
316 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700317 "aosp/boot_control_android.cc",
318 "aosp/cleanup_previous_update_action.cc",
319 "aosp/dynamic_partition_control_android.cc",
320 "aosp/dynamic_partition_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700321 ],
322}
323
324// libupdate_engine_android (type: static_library)
325// ========================================================
326// The main daemon static_library used in Android (non-Brillo). This only has a
327// loop to apply payloads provided by the upper layer via a Binder interface.
328cc_defaults {
329 name: "libupdate_engine_android_exports",
330 defaults: [
331 "ue_defaults",
332 "libpayload_consumer_exports",
333 "libupdate_engine_boot_control_exports",
334 ],
335
336 static_libs: [
Tianjie838793d2021-01-14 22:05:13 -0800337 "libavb",
338 "libavb_user",
Yifan Hong126d13e2020-09-21 19:50:06 -0700339 "gkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700340 "libpayload_consumer",
341 "libupdate_engine_boot_control",
Tianjie838793d2021-01-14 22:05:13 -0800342 "PlatformProperties",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700343 ],
344 shared_libs: [
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +0000345 "apex_aidl_interface-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700346 "libandroid_net",
347 "libbase",
348 "libbinder",
349 "libbinderwrapper",
350 "libbootloader_message",
351 "libbrillo-binder",
352 "libcurl",
353 "libcutils",
Jeongik Cha95f89e92021-01-26 22:33:11 +0900354 "libupdate_engine_stable-V1-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700355 "liblog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700356 "libssl",
Tianjie Xu75cc9f22019-08-02 14:53:38 -0700357 "libstatslog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700358 "libutils",
359 ],
Nikita Ioffeaedfef32021-04-28 13:54:14 +0100360 whole_static_libs: [
361 "com.android.sysprop.apex",
362 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700363}
364
365cc_library_static {
366 name: "libupdate_engine_android",
367 defaults: [
368 "ue_defaults",
369 "libupdate_engine_android_exports",
370 ],
371
372 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
373 // out of the DBus interface.
374 include_dirs: ["external/cros/system_api/dbus"],
375
376 aidl: {
377 local_include_dirs: ["binder_bindings"],
378 export_aidl_headers: true,
379 },
380
381 srcs: [
382 ":libupdate_engine_aidl",
Amin Hassani538bd592020-11-04 20:46:08 -0800383 "common/system_state.cc",
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +0000384 "aosp/apex_handler_android.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700385 "aosp/binder_service_android.cc",
386 "aosp/binder_service_stable_android.cc",
387 "aosp/daemon_android.cc",
388 "aosp/daemon_state_android.cc",
389 "aosp/hardware_android.cc",
390 "aosp/logging_android.cc",
391 "aosp/network_selector_android.cc",
392 "aosp/update_attempter_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700393 "certificate_checker.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800394 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700395 "libcurl_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700396 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700397 "update_boot_flags_action.cc",
398 "update_status_utils.cc",
399 ],
400}
401
402// update_engine (type: executable)
403// ========================================================
404// update_engine daemon.
405cc_binary {
406 name: "update_engine",
407 defaults: [
408 "ue_defaults",
409 "libupdate_engine_android_exports",
410 ],
411
412 static_libs: ["libupdate_engine_android"],
Tao Bao1e1c86c2019-04-18 10:48:32 -0700413 required: [
414 "cacerts_google",
Tianjie Xube4ea232019-10-15 18:08:31 -0700415 "otacerts",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700416 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700417
Amin Hassaniec7bc112020-10-29 16:47:58 -0700418 srcs: ["main.cc", "aosp/metrics_reporter_android.cc"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700419 init_rc: ["update_engine.rc"],
420}
421
422// update_engine_sideload (type: executable)
423// ========================================================
424// A binary executable equivalent to update_engine daemon that installs an update
425// from a local file directly instead of running in the background. Used in
426// recovery image.
427cc_binary {
428 name: "update_engine_sideload",
429 defaults: [
430 "ue_defaults",
431 "update_metadata-protos_exports",
432 "libupdate_engine_boot_control_exports",
433 "libpayload_consumer_exports",
434 ],
435 recovery: true,
436
437 cflags: ["-D_UE_SIDELOAD"],
438 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
439 // out of the DBus interface.
440 include_dirs: ["external/cros/system_api/dbus"],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -0700441 header_libs: ["libgtest_prod_headers"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700442
443 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700444 "aosp/hardware_android.cc",
445 "aosp/logging_android.cc",
446 "aosp/sideload_main.cc",
447 "aosp/update_attempter_android.cc",
448 "common/metrics_reporter_stub.cc",
449 "common/network_selector_stub.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800450 "common/system_state.cc",
451 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700452 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700453 "update_boot_flags_action.cc",
454 "update_status_utils.cc",
455 ],
456
457 // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out,
458 // as it doesn't look beneficial to be installed separately due to its size. Note
459 // that we explicitly request their recovery variants, so that the expected files
460 // will be used and installed.
461 shared_libs: [
462 "libbase",
463 "liblog",
464 ],
465 static_libs: [
466 "libpayload_consumer",
467 "libupdate_engine_boot_control",
468 "update_metadata-protos",
469
470 // We add the static versions of the shared libraries that are not installed to
471 // recovery image due to size concerns. Need to include all the static library
472 // dependencies of these static libraries.
Yifan Hong126d13e2020-09-21 19:50:06 -0700473 "gkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700474 "libevent",
475 "libmodpb64",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700476 "libprotobuf-cpp-lite",
477 "libbrillo-stream",
478 "libbrillo",
479 "libchrome",
480 ],
481 target: {
482 recovery: {
483 exclude_shared_libs: [
484 "libprotobuf-cpp-lite",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700485 "libbrillo-stream",
486 "libbrillo",
487 "libchrome",
488 ],
489 },
490 },
491
Tao Bao1e1c86c2019-04-18 10:48:32 -0700492 required: [
Tianjie Xube4ea232019-10-15 18:08:31 -0700493 "otacerts.recovery",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700494 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700495}
496
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700497// update_engine_client (type: executable)
498// ========================================================
499// update_engine console client.
500cc_binary {
501 name: "update_engine_client",
502 defaults: ["ue_defaults"],
503
504 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
505 // out of the DBus interface.
506 include_dirs: ["external/cros/system_api/dbus"],
507
508 shared_libs: [
509 "libbinder",
510 "libbinderwrapper",
511 "libbrillo-binder",
512 "libutils",
513 ],
514
515 aidl: {
516 local_include_dirs: ["binder_bindings"],
517 },
518
519 srcs: [
520 ":libupdate_engine_aidl",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700521 "aosp/update_engine_client_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700522 "common/error_code_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700523 "update_status_utils.cc",
524 ],
525}
526
527// libpayload_generator (type: static_library)
528// ========================================================
529// server-side code. This is used for delta_generator and unittests but not
530// for any client code.
531cc_defaults {
532 name: "libpayload_generator_exports",
533 defaults: [
534 "libpayload_consumer_exports",
535 "update_metadata-protos_exports",
536 ],
537
Tianjie37ae8562020-03-25 15:16:01 -0700538 header_libs: [
539 "bootimg_headers",
540 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700541 static_libs: [
542 "libavb",
543 "libbrotli",
544 "libbsdiff",
545 "libdivsufsort",
546 "libdivsufsort64",
547 "liblzma",
548 "libpayload_consumer",
549 "libpuffdiff",
550 "libverity_tree",
551 "update_metadata-protos",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500552 "libpayload_extent_utils",
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500553 "libcow_size_estimator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700554 ],
555 shared_libs: [
556 "libbase",
557 "libext2fs",
558 ],
559}
560
561cc_library_static {
David Andersonc1c93052020-08-26 18:22:09 +0000562 name: "libpayload_extent_ranges",
563 defaults: [
564 "ue_defaults",
565 ],
566 host_supported: true,
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400567 recovery_available: true,
David Andersonc1c93052020-08-26 18:22:09 +0000568 srcs: [
569 "payload_generator/extent_ranges.cc",
570 ],
571 static_libs: [
572 "update_metadata-protos",
573 ],
574}
575
576cc_library_static {
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500577 name: "libcow_size_estimator",
578 defaults: [
579 "ue_defaults",
580 "update_metadata-protos_exports"
581 ],
582 host_supported: true,
583 recovery_available: true,
584 srcs: [
585 "payload_generator/cow_size_estimator.cc",
586 ],
587 static_libs: [
588 "update_metadata-protos",
589 "libbase",
590 "libsnapshot_cow",
591 "libcow_operation_convert",
592 ],
593}
594
595cc_library_static {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700596 name: "libpayload_generator",
597 defaults: [
598 "ue_defaults",
599 "libpayload_generator_exports",
600 ],
601 host_supported: true,
602
603 srcs: [
Amin Hassani538bd592020-11-04 20:46:08 -0800604 "common/system_state.cc",
605 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700606 "payload_generator/ab_generator.cc",
607 "payload_generator/annotated_operation.cc",
608 "payload_generator/blob_file_writer.cc",
609 "payload_generator/block_mapping.cc",
610 "payload_generator/boot_img_filesystem.cc",
611 "payload_generator/bzip.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700612 "payload_generator/deflate_utils.cc",
613 "payload_generator/delta_diff_generator.cc",
614 "payload_generator/delta_diff_utils.cc",
615 "payload_generator/ext2_filesystem.cc",
616 "payload_generator/extent_ranges.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700617 "payload_generator/full_update_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700618 "payload_generator/mapfile_filesystem.cc",
Tianjiee9156ec2020-08-11 11:13:54 -0700619 "payload_generator/merge_sequence_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700620 "payload_generator/payload_file.cc",
621 "payload_generator/payload_generation_config_android.cc",
622 "payload_generator/payload_generation_config.cc",
Amin Hassani79821002019-05-06 17:40:49 -0700623 "payload_generator/payload_properties.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700624 "payload_generator/payload_signer.cc",
625 "payload_generator/raw_filesystem.cc",
626 "payload_generator/squashfs_filesystem.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700627 "payload_generator/xz_android.cc",
628 ],
629}
630
631// delta_generator (type: executable)
632// ========================================================
633// server-side delta generator.
634cc_binary_host {
635 name: "delta_generator",
636 defaults: [
637 "ue_defaults",
638 "libpayload_generator_exports",
639 "libpayload_consumer_exports",
640 ],
641
642 static_libs: [
643 "libavb_host_sysdeps",
644 "libpayload_consumer",
645 "libpayload_generator",
646 ],
647
648 srcs: ["payload_generator/generate_delta_main.cc"],
649}
650
651cc_test {
652 name: "ue_unittest_delta_generator",
653 defaults: [
654 "ue_defaults",
655 "libpayload_generator_exports",
656 "libpayload_consumer_exports",
657 ],
658
659 static_libs: [
660 "libpayload_consumer",
661 "libpayload_generator",
662 ],
663
664 srcs: ["payload_generator/generate_delta_main.cc"],
665
666 gtest: false,
667 stem: "delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700668}
669
670// test_http_server (type: executable)
671// ========================================================
672// Test HTTP Server.
673cc_test {
674 name: "test_http_server",
675 defaults: ["ue_defaults"],
676 srcs: [
677 "common/http_common.cc",
678 "test_http_server.cc",
679 ],
680
681 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700682}
683
684// test_subprocess (type: executable)
685// ========================================================
686// Test helper subprocess program.
687cc_test {
688 name: "test_subprocess",
689 defaults: ["ue_defaults"],
690 srcs: ["test_subprocess.cc"],
691
692 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700693}
694
695// Public keys for unittests.
696// ========================================================
697genrule {
698 name: "ue_unittest_keys",
699 cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" +
xunchangcda3c032019-03-26 15:41:14 -0700700 "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" +
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700701 "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem) &&" +
702 "openssl pkey -in $(location unittest_key_EC.pem) -pubout -out $(location unittest_key_EC.pub.pem)",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700703 srcs: [
704 "unittest_key.pem",
705 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -0700706 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700707 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700708 ],
709 out: [
710 "unittest_key.pub.pem",
711 "unittest_key2.pub.pem",
xunchangcda3c032019-03-26 15:41:14 -0700712 "unittest_key_RSA4096.pub.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700713 "unittest_key_EC.pub.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700714 ],
715}
716
717// Sample images for unittests.
718// ========================================================
719// Extract sample image from the compressed sample_images.tar.bz2 file used by
720// the unittests.
721genrule {
722 name: "ue_unittest_disk_imgs",
723 cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img",
724 srcs: ["sample_images/sample_images.tar.bz2"],
725 out: [
726 "gen/disk_ext2_1k.img",
727 "gen/disk_ext2_4k.img",
728 "gen/disk_ext2_4k_empty.img",
729 "gen/disk_ext2_unittest.img",
730 ],
731}
732
733// update_engine_unittests (type: executable)
734// ========================================================
735// Main unittest file.
736cc_test {
737 name: "update_engine_unittests",
738 defaults: [
739 "ue_defaults",
740 "libpayload_generator_exports",
741 "libupdate_engine_android_exports",
742 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700743
744 static_libs: [
745 "libpayload_generator",
746 "libbrillo-test-helpers",
747 "libgmock",
748 "libchrome_test_helpers",
749 "libupdate_engine_android",
Tianjie Xu173e6192019-12-10 10:56:01 -0800750 "libdm",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700751 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700752
Yifan Hong87ea73f2019-09-12 13:07:37 -0700753 header_libs: [
754 "libstorage_literals_headers",
755 ],
756
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700757 data: [
Tao Bao9456b6f2019-04-29 18:14:58 -0700758 ":test_http_server",
759 ":test_subprocess",
760 ":ue_unittest_delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700761 ":ue_unittest_disk_imgs",
762 ":ue_unittest_keys",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700763 "otacerts.zip",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700764 "unittest_key.pem",
765 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -0700766 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700767 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700768 "update_engine.conf",
769 ],
770
Tao Bao9456b6f2019-04-29 18:14:58 -0700771 // We cannot use the default generated AndroidTest.xml because of the use of helper modules
772 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
773 test_config: "test_config.xml",
774 test_suites: ["device-tests"],
775
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700776 srcs: [
Mohammad Samiul Islam24a82792021-02-12 16:52:36 +0000777 "aosp/apex_handler_android_unittest.cc",
Kelvin Zhangb4b95c22021-04-05 15:56:26 -0400778 "aosp/cleanup_previous_update_action_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700779 "aosp/dynamic_partition_control_android_unittest.cc",
780 "aosp/update_attempter_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700781 "certificate_checker_unittest.cc",
782 "common/action_pipe_unittest.cc",
783 "common/action_processor_unittest.cc",
784 "common/action_unittest.cc",
Kelvin Zhangb05e4e22020-09-25 16:16:19 -0400785 "common/cow_operation_convert_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700786 "common/cpu_limiter_unittest.cc",
787 "common/fake_prefs.cc",
788 "common/file_fetcher_unittest.cc",
789 "common/hash_calculator_unittest.cc",
790 "common/http_fetcher_unittest.cc",
791 "common/hwid_override_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700792 "common/metrics_reporter_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700793 "common/mock_http_fetcher.cc",
794 "common/prefs_unittest.cc",
795 "common/proxy_resolver_unittest.cc",
796 "common/subprocess_unittest.cc",
797 "common/terminator_unittest.cc",
798 "common/test_utils.cc",
799 "common/utils_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700800 "download_action_android_unittest.cc",
Jae Hoon Kim0ae8fe12019-06-26 14:32:50 -0700801 "libcurl_http_fetcher_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700802 "payload_consumer/bzip_extent_writer_unittest.cc",
803 "payload_consumer/cached_file_descriptor_unittest.cc",
Kelvin Zhang46d6c492021-04-26 17:51:25 -0400804 "payload_consumer/cow_writer_file_descriptor_unittest.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700805 "payload_consumer/certificate_parser_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700806 "payload_consumer/delta_performer_integration_test.cc",
807 "payload_consumer/delta_performer_unittest.cc",
Kelvin Zhang9bd519d2020-09-23 12:55:19 -0400808 "payload_consumer/partition_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700809 "payload_consumer/extent_reader_unittest.cc",
810 "payload_consumer/extent_writer_unittest.cc",
Kelvin Zhang9754f172020-09-25 15:22:35 -0400811 "payload_consumer/snapshot_extent_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700812 "payload_consumer/fake_file_descriptor.cc",
813 "payload_consumer/file_descriptor_utils_unittest.cc",
814 "payload_consumer/file_writer_unittest.cc",
815 "payload_consumer/filesystem_verifier_action_unittest.cc",
Amin Hassani23795032020-11-24 14:38:55 -0800816 "payload_consumer/install_plan_unittest.cc",
Tianjie99d570d2020-06-04 14:57:19 -0700817 "payload_consumer/partition_update_generator_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700818 "payload_consumer/postinstall_runner_action_unittest.cc",
819 "payload_consumer/verity_writer_android_unittest.cc",
820 "payload_consumer/xz_extent_writer_unittest.cc",
821 "payload_generator/ab_generator_unittest.cc",
822 "payload_generator/blob_file_writer_unittest.cc",
823 "payload_generator/block_mapping_unittest.cc",
824 "payload_generator/boot_img_filesystem_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700825 "payload_generator/deflate_utils_unittest.cc",
826 "payload_generator/delta_diff_utils_unittest.cc",
827 "payload_generator/ext2_filesystem_unittest.cc",
828 "payload_generator/extent_ranges_unittest.cc",
829 "payload_generator/extent_utils_unittest.cc",
830 "payload_generator/fake_filesystem.cc",
831 "payload_generator/full_update_generator_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700832 "payload_generator/mapfile_filesystem_unittest.cc",
Tianjie87af6c02020-08-11 15:06:26 -0700833 "payload_generator/merge_sequence_generator_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700834 "payload_generator/payload_file_unittest.cc",
835 "payload_generator/payload_generation_config_android_unittest.cc",
836 "payload_generator/payload_generation_config_unittest.cc",
Jae Hoon Kim4b6d1262019-06-20 10:41:18 -0700837 "payload_generator/payload_properties_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700838 "payload_generator/payload_signer_unittest.cc",
839 "payload_generator/squashfs_filesystem_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700840 "payload_generator/zip_unittest.cc",
841 "testrunner.cc",
Jae Hoon Kim916af852019-08-01 17:45:30 -0700842 "update_status_utils_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700843 ],
844}
845
846// Brillo update payload generation script
847// ========================================================
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +0100848sh_binary {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700849 name: "brillo_update_payload",
850 device_supported: false,
851 host_supported: true,
852
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +0100853 src: "scripts/brillo_update_payload",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700854 required: [
855 "delta_generator",
856 "shflags",
857 "simg2img",
858 ],
859
860 target: {
861 darwin: {
862 enabled: false,
863 },
864 },
Colin Cross606913a2017-11-14 13:05:37 -0800865}
Yifan Hongd51738c2020-07-23 17:06:25 -0700866
867// update_engine header library
868cc_library_headers {
869 name: "libupdate_engine_headers",
Yifan Hong309c8a82020-10-06 18:31:08 -0700870
871 // This header library is available to core and product modules.
Justin Yun6d121de2020-11-11 19:31:57 +0900872 product_available: true,
Yifan Hong309c8a82020-10-06 18:31:08 -0700873
Yifan Hongd51738c2020-07-23 17:06:25 -0700874 export_include_dirs: ["."],
875 apex_available: [
876 "com.android.gki.*",
David Anderson5e6dfe32020-09-17 15:50:33 -0700877 "//apex_available:platform",
Yifan Hongd51738c2020-07-23 17:06:25 -0700878 ],
David Andersonc1c93052020-08-26 18:22:09 +0000879 host_supported: true,
David Anderson5e6dfe32020-09-17 15:50:33 -0700880 recovery_available: true,
881 ramdisk_available: true,
882
883 target: {
884 darwin: {
885 enabled: false,
886 },
887 }
Yifan Hongd51738c2020-07-23 17:06:25 -0700888}
Kelvin Zhangb93055f2021-02-03 14:22:35 -0500889
890cc_binary_host {
891 name: "cow_converter",
892 defaults: [
893 "ue_defaults",
894 "libpayload_consumer_exports",
895 ],
896 srcs: [
897 "aosp/cow_converter.cc",
898 ],
899 static_libs: [
900 "liblog",
901 "libbrotli",
902 "libbase",
903 "libcow_operation_convert",
904 "libcow_size_estimator",
905 "libpayload_consumer",
906 "libpayload_extent_ranges",
907 "libpayload_extent_utils",
908 "libsnapshot_cow",
909 "libz",
910 "update_metadata-protos",
911 ],
Elliott Hughes88f3c8c2021-04-22 13:47:21 -0700912}