blob: be37dba1c8415d9ba308a270e55bba579f97681f [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
18filegroup {
19 name: "libupdate_engine_aidl",
20 srcs: [
21 "binder_bindings/android/os/IUpdateEngine.aidl",
22 "binder_bindings/android/os/IUpdateEngineCallback.aidl",
23 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -070024 path: "binder_bindings",
25}
26
27cc_defaults {
28 name: "ue_defaults",
29
30 cflags: [
Amin Hassani2e4eda52019-01-07 14:01:17 -080031 "-DBASE_VER=576279",
Dan Willemsenf5a904e2018-10-23 01:02:44 -070032 "-DUSE_HWID_OVERRIDE=0",
Dan Willemsenf5a904e2018-10-23 01:02:44 -070033 "-D_FILE_OFFSET_BITS=64",
34 "-D_POSIX_C_SOURCE=199309L",
35 "-Wa,--noexecstack",
36 "-Wall",
37 "-Werror",
38 "-Wextra",
39 "-Wformat=2",
40 "-Wno-psabi",
41 "-Wno-unused-parameter",
42 "-ffunction-sections",
43 "-fstack-protector-strong",
44 "-fvisibility=hidden",
45 ],
46 cppflags: [
47 "-Wnon-virtual-dtor",
48 "-fno-strict-aliasing",
49 ],
50 include_dirs: ["system"],
51 local_include_dirs: ["client_library/include"],
52 static_libs: ["libgtest_prod"],
53 shared_libs: [
54 "libbrillo-stream",
55 "libbrillo",
56 "libchrome",
57 ],
58 ldflags: ["-Wl,--gc-sections"],
59
60 product_variables: {
61 pdk: {
62 enabled: false,
63 },
64 },
65
66 target: {
Sen Jiangb5f631d2018-12-18 16:59:57 -080067 android: {
68 cflags: [
69 "-DUSE_FEC=1",
70 ],
71 },
72 host: {
73 cflags: [
74 "-DUSE_FEC=0",
75 ],
76 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -070077 darwin: {
78 enabled: false,
79 },
80 },
81}
82
Kelvin Zhang9b10dba2020-09-25 17:09:11 -040083// libcow_operation_convert (type: library)
84// ========================================================
Kelvin Zhangeb8703b2020-12-10 14:17:21 -050085cc_library_static {
86 name: "libpayload_extent_utils",
87 defaults: [
88 "ue_defaults",
89 ],
90 host_supported: true,
91 recovery_available: true,
92 srcs: [
93 "payload_generator/extent_utils.cc",
94 ],
95 static_libs: [
96 "update_metadata-protos",
97 ],
98}
99
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400100cc_library {
101 name: "libcow_operation_convert",
102 host_supported: true,
103 recovery_available: true,
104 defaults: [
105 "ue_defaults",
106 "update_metadata-protos_exports",
107 ],
108 srcs: [
109 "common/cow_operation_convert.cc",
110 ],
111 static_libs: [
112 "libsnapshot_cow",
113 "update_metadata-protos",
114 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500115 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400116 "libbrotli",
117 "libz",
118 ],
119}
120
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700121// update_metadata-protos (type: static_library)
122// ========================================================
123// Protobufs.
124cc_defaults {
125 name: "update_metadata-protos_exports",
126
127 shared_libs: ["libprotobuf-cpp-lite"],
128}
129
130cc_library_static {
131 name: "update_metadata-protos",
132 host_supported: true,
133 recovery_available: true,
134
135 srcs: ["update_engine/update_metadata.proto"],
136 cflags: [
137 "-Wall",
138 "-Werror",
139 ],
140 proto: {
141 canonical_path_from_root: false,
142 export_proto_headers: true,
143 },
144}
145
146// libpayload_consumer (type: static_library)
147// ========================================================
148// The payload application component and common dependencies.
149cc_defaults {
150 name: "libpayload_consumer_exports",
151 defaults: ["update_metadata-protos_exports"],
152
153 static_libs: [
154 "update_metadata-protos",
155 "libxz",
156 "libbz",
157 "libbspatch",
158 "libbrotli",
Tianjie99d570d2020-06-04 14:57:19 -0700159 "libc++fs",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700160 "libfec_rs",
161 "libpuffpatch",
162 "libverity_tree",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400163 "libsnapshot_cow",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400164 "libbrotli",
165 "libz",
166 "libpayload_extent_ranges",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500167 "libpayload_extent_utils",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400168 "libcow_operation_convert",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700169 ],
170 shared_libs: [
171 "libbase",
172 "libcrypto",
Sen Jiangb5f631d2018-12-18 16:59:57 -0800173 "libfec",
Tianjie99d570d2020-06-04 14:57:19 -0700174 "libziparchive",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700175 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700176}
177
178cc_library_static {
179 name: "libpayload_consumer",
180 defaults: [
181 "ue_defaults",
182 "libpayload_consumer_exports",
183 ],
184 host_supported: true,
185 recovery_available: true,
186
187 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700188 "aosp/platform_constants_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700189 "common/action_processor.cc",
190 "common/boot_control_stub.cc",
191 "common/clock.cc",
192 "common/constants.cc",
193 "common/cpu_limiter.cc",
Yifan Hongdaac7322019-11-07 10:48:26 -0800194 "common/dynamic_partition_control_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700195 "common/error_code_utils.cc",
196 "common/file_fetcher.cc",
197 "common/hash_calculator.cc",
198 "common/http_common.cc",
199 "common/http_fetcher.cc",
200 "common/hwid_override.cc",
201 "common/multi_range_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700202 "common/prefs.cc",
203 "common/proxy_resolver.cc",
204 "common/subprocess.cc",
205 "common/terminator.cc",
206 "common/utils.cc",
207 "payload_consumer/bzip_extent_writer.cc",
208 "payload_consumer/cached_file_descriptor.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700209 "payload_consumer/certificate_parser_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700210 "payload_consumer/delta_performer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700211 "payload_consumer/extent_reader.cc",
212 "payload_consumer/extent_writer.cc",
213 "payload_consumer/file_descriptor.cc",
214 "payload_consumer/file_descriptor_utils.cc",
215 "payload_consumer/file_writer.cc",
216 "payload_consumer/filesystem_verifier_action.cc",
217 "payload_consumer/install_plan.cc",
218 "payload_consumer/mount_history.cc",
219 "payload_consumer/payload_constants.cc",
220 "payload_consumer/payload_metadata.cc",
221 "payload_consumer/payload_verifier.cc",
Kelvin Zhang50bac652020-09-28 15:51:41 -0400222 "payload_consumer/partition_writer.cc",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400223 "payload_consumer/partition_writer_factory_android.cc",
224 "payload_consumer/vabc_partition_writer.cc",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400225 "payload_consumer/snapshot_extent_writer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700226 "payload_consumer/postinstall_runner_action.cc",
227 "payload_consumer/verity_writer_android.cc",
228 "payload_consumer/xz_extent_writer.cc",
229 "payload_consumer/fec_file_descriptor.cc",
Tianjied3865d12020-06-03 15:25:17 -0700230 "payload_consumer/partition_update_generator_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700231 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700232}
233
234// libupdate_engine_boot_control (type: static_library)
235// ========================================================
236// A BootControl class implementation using Android's HIDL boot_control HAL.
237cc_defaults {
238 name: "libupdate_engine_boot_control_exports",
239 defaults: ["update_metadata-protos_exports"],
240
Yifan Hong420db9b2019-07-23 20:50:33 -0700241 static_libs: [
David Andersone7ce8212019-12-16 20:13:19 -0800242 "libcutils",
243 "libfs_mgr_binder",
244 "libgsi",
Yifan Hongdad0af82020-02-19 17:19:49 -0800245 "libpayload_consumer",
Yifan Hong420db9b2019-07-23 20:50:33 -0700246 "libsnapshot",
David Anderson6c190a22020-09-21 17:09:53 -0700247 "libsnapshot_cow",
248 "libz",
Yifan Hong420db9b2019-07-23 20:50:33 -0700249 "update_metadata-protos",
250 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700251 shared_libs: [
252 "libbootloader_message",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700253 "libhidlbase",
254 "liblp",
Yifan Hongd976cc52020-02-25 14:51:42 -0800255 "libstatslog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700256 "libutils",
257 "android.hardware.boot@1.0",
David Anderson2111d062019-10-15 22:36:27 -0700258 "android.hardware.boot@1.1",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700259 ],
Yifan Hong29692902020-03-26 12:47:05 -0700260 header_libs: [
261 "avb_headers",
262 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700263 target: {
264 recovery: {
David Andersone7ce8212019-12-16 20:13:19 -0800265 static_libs: [
266 "libfs_mgr",
267 "libsnapshot_nobinder",
268 ],
269 exclude_static_libs: [
270 "libfs_mgr_binder",
271 "libsnapshot",
272 ],
Yifan Hong212d7952020-02-04 11:08:08 -0800273 exclude_shared_libs: [
Yifan Hongd976cc52020-02-25 14:51:42 -0800274 "libstatslog",
Yifan Hong212d7952020-02-04 11:08:08 -0800275 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700276 },
277 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700278}
279
280cc_library_static {
281 name: "libupdate_engine_boot_control",
282 defaults: [
283 "ue_defaults",
284 "libupdate_engine_boot_control_exports",
Yifan Hongdad0af82020-02-19 17:19:49 -0800285 "libpayload_consumer_exports",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700286 ],
287 recovery_available: true,
288
289 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700290 "aosp/boot_control_android.cc",
291 "aosp/cleanup_previous_update_action.cc",
292 "aosp/dynamic_partition_control_android.cc",
293 "aosp/dynamic_partition_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700294 ],
295}
296
297// libupdate_engine_android (type: static_library)
298// ========================================================
299// The main daemon static_library used in Android (non-Brillo). This only has a
300// loop to apply payloads provided by the upper layer via a Binder interface.
301cc_defaults {
302 name: "libupdate_engine_android_exports",
303 defaults: [
304 "ue_defaults",
305 "libpayload_consumer_exports",
306 "libupdate_engine_boot_control_exports",
307 ],
308
309 static_libs: [
Tianjie838793d2021-01-14 22:05:13 -0800310 "libavb",
311 "libavb_user",
Yifan Hong126d13e2020-09-21 19:50:06 -0700312 "gkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700313 "libpayload_consumer",
314 "libupdate_engine_boot_control",
Tianjie838793d2021-01-14 22:05:13 -0800315 "PlatformProperties",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700316 ],
317 shared_libs: [
318 "libandroid_net",
319 "libbase",
320 "libbinder",
321 "libbinderwrapper",
322 "libbootloader_message",
323 "libbrillo-binder",
324 "libcurl",
325 "libcutils",
Jeongik Cha95f89e92021-01-26 22:33:11 +0900326 "libupdate_engine_stable-V1-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700327 "liblog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700328 "libssl",
Tianjie Xu75cc9f22019-08-02 14:53:38 -0700329 "libstatslog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700330 "libutils",
331 ],
332}
333
334cc_library_static {
335 name: "libupdate_engine_android",
336 defaults: [
337 "ue_defaults",
338 "libupdate_engine_android_exports",
339 ],
340
341 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
342 // out of the DBus interface.
343 include_dirs: ["external/cros/system_api/dbus"],
344
345 aidl: {
346 local_include_dirs: ["binder_bindings"],
347 export_aidl_headers: true,
348 },
349
350 srcs: [
351 ":libupdate_engine_aidl",
Amin Hassani538bd592020-11-04 20:46:08 -0800352 "common/system_state.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700353 "aosp/binder_service_android.cc",
354 "aosp/binder_service_stable_android.cc",
355 "aosp/daemon_android.cc",
356 "aosp/daemon_state_android.cc",
357 "aosp/hardware_android.cc",
358 "aosp/logging_android.cc",
359 "aosp/network_selector_android.cc",
360 "aosp/update_attempter_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700361 "certificate_checker.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800362 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700363 "libcurl_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700364 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700365 "update_boot_flags_action.cc",
366 "update_status_utils.cc",
367 ],
368}
369
370// update_engine (type: executable)
371// ========================================================
372// update_engine daemon.
373cc_binary {
374 name: "update_engine",
375 defaults: [
376 "ue_defaults",
377 "libupdate_engine_android_exports",
378 ],
379
380 static_libs: ["libupdate_engine_android"],
Tao Bao1e1c86c2019-04-18 10:48:32 -0700381 required: [
382 "cacerts_google",
Tianjie Xube4ea232019-10-15 18:08:31 -0700383 "otacerts",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700384 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700385
Amin Hassaniec7bc112020-10-29 16:47:58 -0700386 srcs: ["main.cc", "aosp/metrics_reporter_android.cc"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700387 init_rc: ["update_engine.rc"],
388}
389
390// update_engine_sideload (type: executable)
391// ========================================================
392// A binary executable equivalent to update_engine daemon that installs an update
393// from a local file directly instead of running in the background. Used in
394// recovery image.
395cc_binary {
396 name: "update_engine_sideload",
397 defaults: [
398 "ue_defaults",
399 "update_metadata-protos_exports",
400 "libupdate_engine_boot_control_exports",
401 "libpayload_consumer_exports",
402 ],
403 recovery: true,
404
405 cflags: ["-D_UE_SIDELOAD"],
406 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
407 // out of the DBus interface.
408 include_dirs: ["external/cros/system_api/dbus"],
409
410 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700411 "aosp/hardware_android.cc",
412 "aosp/logging_android.cc",
413 "aosp/sideload_main.cc",
414 "aosp/update_attempter_android.cc",
415 "common/metrics_reporter_stub.cc",
416 "common/network_selector_stub.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800417 "common/system_state.cc",
418 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700419 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700420 "update_boot_flags_action.cc",
421 "update_status_utils.cc",
422 ],
423
424 // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out,
425 // as it doesn't look beneficial to be installed separately due to its size. Note
426 // that we explicitly request their recovery variants, so that the expected files
427 // will be used and installed.
428 shared_libs: [
429 "libbase",
430 "liblog",
431 ],
432 static_libs: [
433 "libpayload_consumer",
434 "libupdate_engine_boot_control",
435 "update_metadata-protos",
436
437 // We add the static versions of the shared libraries that are not installed to
438 // recovery image due to size concerns. Need to include all the static library
439 // dependencies of these static libraries.
Yifan Hong126d13e2020-09-21 19:50:06 -0700440 "gkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700441 "libevent",
442 "libmodpb64",
443 "libgtest_prod",
444 "libprotobuf-cpp-lite",
445 "libbrillo-stream",
446 "libbrillo",
447 "libchrome",
448 ],
449 target: {
450 recovery: {
451 exclude_shared_libs: [
452 "libprotobuf-cpp-lite",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700453 "libbrillo-stream",
454 "libbrillo",
455 "libchrome",
456 ],
457 },
458 },
459
Tao Bao1e1c86c2019-04-18 10:48:32 -0700460 required: [
Tianjie Xube4ea232019-10-15 18:08:31 -0700461 "otacerts.recovery",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700462 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700463}
464
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700465// update_engine_client (type: executable)
466// ========================================================
467// update_engine console client.
468cc_binary {
469 name: "update_engine_client",
470 defaults: ["ue_defaults"],
471
472 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
473 // out of the DBus interface.
474 include_dirs: ["external/cros/system_api/dbus"],
475
476 shared_libs: [
477 "libbinder",
478 "libbinderwrapper",
479 "libbrillo-binder",
480 "libutils",
481 ],
482
483 aidl: {
484 local_include_dirs: ["binder_bindings"],
485 },
486
487 srcs: [
488 ":libupdate_engine_aidl",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700489 "aosp/update_engine_client_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700490 "common/error_code_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700491 "update_status_utils.cc",
492 ],
493}
494
495// libpayload_generator (type: static_library)
496// ========================================================
497// server-side code. This is used for delta_generator and unittests but not
498// for any client code.
499cc_defaults {
500 name: "libpayload_generator_exports",
501 defaults: [
502 "libpayload_consumer_exports",
503 "update_metadata-protos_exports",
504 ],
505
Tianjie37ae8562020-03-25 15:16:01 -0700506 header_libs: [
507 "bootimg_headers",
508 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700509 static_libs: [
510 "libavb",
511 "libbrotli",
512 "libbsdiff",
513 "libdivsufsort",
514 "libdivsufsort64",
515 "liblzma",
516 "libpayload_consumer",
517 "libpuffdiff",
518 "libverity_tree",
519 "update_metadata-protos",
Kelvin Zhangeb8703b2020-12-10 14:17:21 -0500520 "libpayload_extent_utils",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700521 ],
522 shared_libs: [
523 "libbase",
524 "libext2fs",
525 ],
526}
527
528cc_library_static {
David Andersonc1c93052020-08-26 18:22:09 +0000529 name: "libpayload_extent_ranges",
530 defaults: [
531 "ue_defaults",
532 ],
533 host_supported: true,
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400534 recovery_available: true,
David Andersonc1c93052020-08-26 18:22:09 +0000535 srcs: [
536 "payload_generator/extent_ranges.cc",
537 ],
538 static_libs: [
539 "update_metadata-protos",
540 ],
541}
542
543cc_library_static {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700544 name: "libpayload_generator",
545 defaults: [
546 "ue_defaults",
547 "libpayload_generator_exports",
548 ],
549 host_supported: true,
550
551 srcs: [
Amin Hassani538bd592020-11-04 20:46:08 -0800552 "common/system_state.cc",
553 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700554 "payload_generator/ab_generator.cc",
555 "payload_generator/annotated_operation.cc",
556 "payload_generator/blob_file_writer.cc",
557 "payload_generator/block_mapping.cc",
558 "payload_generator/boot_img_filesystem.cc",
559 "payload_generator/bzip.cc",
Kelvin Zhang7a265752020-10-29 15:51:35 -0400560 "payload_generator/cow_size_estimator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700561 "payload_generator/deflate_utils.cc",
562 "payload_generator/delta_diff_generator.cc",
563 "payload_generator/delta_diff_utils.cc",
564 "payload_generator/ext2_filesystem.cc",
565 "payload_generator/extent_ranges.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700566 "payload_generator/full_update_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700567 "payload_generator/mapfile_filesystem.cc",
Tianjiee9156ec2020-08-11 11:13:54 -0700568 "payload_generator/merge_sequence_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700569 "payload_generator/payload_file.cc",
570 "payload_generator/payload_generation_config_android.cc",
571 "payload_generator/payload_generation_config.cc",
Amin Hassani79821002019-05-06 17:40:49 -0700572 "payload_generator/payload_properties.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700573 "payload_generator/payload_signer.cc",
574 "payload_generator/raw_filesystem.cc",
575 "payload_generator/squashfs_filesystem.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700576 "payload_generator/xz_android.cc",
577 ],
578}
579
580// delta_generator (type: executable)
581// ========================================================
582// server-side delta generator.
583cc_binary_host {
584 name: "delta_generator",
585 defaults: [
586 "ue_defaults",
587 "libpayload_generator_exports",
588 "libpayload_consumer_exports",
589 ],
590
591 static_libs: [
592 "libavb_host_sysdeps",
593 "libpayload_consumer",
594 "libpayload_generator",
595 ],
596
597 srcs: ["payload_generator/generate_delta_main.cc"],
598}
599
600cc_test {
601 name: "ue_unittest_delta_generator",
602 defaults: [
603 "ue_defaults",
604 "libpayload_generator_exports",
605 "libpayload_consumer_exports",
606 ],
607
608 static_libs: [
609 "libpayload_consumer",
610 "libpayload_generator",
611 ],
612
613 srcs: ["payload_generator/generate_delta_main.cc"],
614
615 gtest: false,
616 stem: "delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700617}
618
619// test_http_server (type: executable)
620// ========================================================
621// Test HTTP Server.
622cc_test {
623 name: "test_http_server",
624 defaults: ["ue_defaults"],
625 srcs: [
626 "common/http_common.cc",
627 "test_http_server.cc",
628 ],
629
630 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700631}
632
633// test_subprocess (type: executable)
634// ========================================================
635// Test helper subprocess program.
636cc_test {
637 name: "test_subprocess",
638 defaults: ["ue_defaults"],
639 srcs: ["test_subprocess.cc"],
640
641 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700642}
643
644// Public keys for unittests.
645// ========================================================
646genrule {
647 name: "ue_unittest_keys",
648 cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" +
xunchangcda3c032019-03-26 15:41:14 -0700649 "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" +
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700650 "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem) &&" +
651 "openssl pkey -in $(location unittest_key_EC.pem) -pubout -out $(location unittest_key_EC.pub.pem)",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700652 srcs: [
653 "unittest_key.pem",
654 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -0700655 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700656 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700657 ],
658 out: [
659 "unittest_key.pub.pem",
660 "unittest_key2.pub.pem",
xunchangcda3c032019-03-26 15:41:14 -0700661 "unittest_key_RSA4096.pub.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700662 "unittest_key_EC.pub.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700663 ],
664}
665
666// Sample images for unittests.
667// ========================================================
668// Extract sample image from the compressed sample_images.tar.bz2 file used by
669// the unittests.
670genrule {
671 name: "ue_unittest_disk_imgs",
672 cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img",
673 srcs: ["sample_images/sample_images.tar.bz2"],
674 out: [
675 "gen/disk_ext2_1k.img",
676 "gen/disk_ext2_4k.img",
677 "gen/disk_ext2_4k_empty.img",
678 "gen/disk_ext2_unittest.img",
679 ],
680}
681
682// update_engine_unittests (type: executable)
683// ========================================================
684// Main unittest file.
685cc_test {
686 name: "update_engine_unittests",
687 defaults: [
688 "ue_defaults",
689 "libpayload_generator_exports",
690 "libupdate_engine_android_exports",
691 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700692
693 static_libs: [
694 "libpayload_generator",
695 "libbrillo-test-helpers",
696 "libgmock",
697 "libchrome_test_helpers",
698 "libupdate_engine_android",
Tianjie Xu173e6192019-12-10 10:56:01 -0800699 "libdm",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700700 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700701
Yifan Hong87ea73f2019-09-12 13:07:37 -0700702 header_libs: [
703 "libstorage_literals_headers",
704 ],
705
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700706 data: [
Tao Bao9456b6f2019-04-29 18:14:58 -0700707 ":test_http_server",
708 ":test_subprocess",
709 ":ue_unittest_delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700710 ":ue_unittest_disk_imgs",
711 ":ue_unittest_keys",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700712 "otacerts.zip",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700713 "unittest_key.pem",
714 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -0700715 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700716 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700717 "update_engine.conf",
718 ],
719
Tao Bao9456b6f2019-04-29 18:14:58 -0700720 // We cannot use the default generated AndroidTest.xml because of the use of helper modules
721 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
722 test_config: "test_config.xml",
723 test_suites: ["device-tests"],
724
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700725 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700726 "aosp/dynamic_partition_control_android_unittest.cc",
727 "aosp/update_attempter_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700728 "certificate_checker_unittest.cc",
729 "common/action_pipe_unittest.cc",
730 "common/action_processor_unittest.cc",
731 "common/action_unittest.cc",
Kelvin Zhangb05e4e22020-09-25 16:16:19 -0400732 "common/cow_operation_convert_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700733 "common/cpu_limiter_unittest.cc",
734 "common/fake_prefs.cc",
735 "common/file_fetcher_unittest.cc",
736 "common/hash_calculator_unittest.cc",
737 "common/http_fetcher_unittest.cc",
738 "common/hwid_override_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700739 "common/metrics_reporter_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700740 "common/mock_http_fetcher.cc",
741 "common/prefs_unittest.cc",
742 "common/proxy_resolver_unittest.cc",
743 "common/subprocess_unittest.cc",
744 "common/terminator_unittest.cc",
745 "common/test_utils.cc",
746 "common/utils_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700747 "download_action_android_unittest.cc",
Jae Hoon Kim0ae8fe12019-06-26 14:32:50 -0700748 "libcurl_http_fetcher_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700749 "payload_consumer/bzip_extent_writer_unittest.cc",
750 "payload_consumer/cached_file_descriptor_unittest.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700751 "payload_consumer/certificate_parser_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700752 "payload_consumer/delta_performer_integration_test.cc",
753 "payload_consumer/delta_performer_unittest.cc",
Kelvin Zhang9bd519d2020-09-23 12:55:19 -0400754 "payload_consumer/partition_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700755 "payload_consumer/extent_reader_unittest.cc",
756 "payload_consumer/extent_writer_unittest.cc",
Kelvin Zhang9754f172020-09-25 15:22:35 -0400757 "payload_consumer/snapshot_extent_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700758 "payload_consumer/fake_file_descriptor.cc",
759 "payload_consumer/file_descriptor_utils_unittest.cc",
760 "payload_consumer/file_writer_unittest.cc",
761 "payload_consumer/filesystem_verifier_action_unittest.cc",
Amin Hassani23795032020-11-24 14:38:55 -0800762 "payload_consumer/install_plan_unittest.cc",
Tianjie99d570d2020-06-04 14:57:19 -0700763 "payload_consumer/partition_update_generator_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700764 "payload_consumer/postinstall_runner_action_unittest.cc",
765 "payload_consumer/verity_writer_android_unittest.cc",
766 "payload_consumer/xz_extent_writer_unittest.cc",
767 "payload_generator/ab_generator_unittest.cc",
768 "payload_generator/blob_file_writer_unittest.cc",
769 "payload_generator/block_mapping_unittest.cc",
770 "payload_generator/boot_img_filesystem_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700771 "payload_generator/deflate_utils_unittest.cc",
772 "payload_generator/delta_diff_utils_unittest.cc",
773 "payload_generator/ext2_filesystem_unittest.cc",
774 "payload_generator/extent_ranges_unittest.cc",
775 "payload_generator/extent_utils_unittest.cc",
776 "payload_generator/fake_filesystem.cc",
777 "payload_generator/full_update_generator_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700778 "payload_generator/mapfile_filesystem_unittest.cc",
Tianjie87af6c02020-08-11 15:06:26 -0700779 "payload_generator/merge_sequence_generator_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700780 "payload_generator/payload_file_unittest.cc",
781 "payload_generator/payload_generation_config_android_unittest.cc",
782 "payload_generator/payload_generation_config_unittest.cc",
Jae Hoon Kim4b6d1262019-06-20 10:41:18 -0700783 "payload_generator/payload_properties_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700784 "payload_generator/payload_signer_unittest.cc",
785 "payload_generator/squashfs_filesystem_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700786 "payload_generator/zip_unittest.cc",
787 "testrunner.cc",
Jae Hoon Kim916af852019-08-01 17:45:30 -0700788 "update_status_utils_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700789 ],
790}
791
792// Brillo update payload generation script
793// ========================================================
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +0100794sh_binary {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700795 name: "brillo_update_payload",
796 device_supported: false,
797 host_supported: true,
798
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +0100799 src: "scripts/brillo_update_payload",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700800 required: [
801 "delta_generator",
802 "shflags",
803 "simg2img",
804 ],
805
806 target: {
807 darwin: {
808 enabled: false,
809 },
810 },
Colin Cross606913a2017-11-14 13:05:37 -0800811}
Yifan Hongd51738c2020-07-23 17:06:25 -0700812
813// update_engine header library
814cc_library_headers {
815 name: "libupdate_engine_headers",
Yifan Hong309c8a82020-10-06 18:31:08 -0700816
817 // This header library is available to core and product modules.
Justin Yun6d121de2020-11-11 19:31:57 +0900818 product_available: true,
Yifan Hong309c8a82020-10-06 18:31:08 -0700819
Yifan Hongd51738c2020-07-23 17:06:25 -0700820 export_include_dirs: ["."],
821 apex_available: [
822 "com.android.gki.*",
David Anderson5e6dfe32020-09-17 15:50:33 -0700823 "//apex_available:platform",
Yifan Hongd51738c2020-07-23 17:06:25 -0700824 ],
David Andersonc1c93052020-08-26 18:22:09 +0000825 host_supported: true,
David Anderson5e6dfe32020-09-17 15:50:33 -0700826 recovery_available: true,
827 ramdisk_available: true,
828
829 target: {
830 darwin: {
831 enabled: false,
832 },
833 }
Yifan Hongd51738c2020-07-23 17:06:25 -0700834}