blob: e192a636f94e706c2f309a5e69e30fd1a2cefcc3 [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// ========================================================
85cc_library {
86 name: "libcow_operation_convert",
87 host_supported: true,
88 recovery_available: true,
89 defaults: [
90 "ue_defaults",
91 "update_metadata-protos_exports",
92 ],
93 srcs: [
94 "common/cow_operation_convert.cc",
95 ],
96 static_libs: [
97 "libsnapshot_cow",
98 "update_metadata-protos",
99 "libpayload_extent_ranges",
100 "libbrotli",
101 "libz",
102 ],
103}
104
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700105// update_metadata-protos (type: static_library)
106// ========================================================
107// Protobufs.
108cc_defaults {
109 name: "update_metadata-protos_exports",
110
111 shared_libs: ["libprotobuf-cpp-lite"],
112}
113
114cc_library_static {
115 name: "update_metadata-protos",
116 host_supported: true,
117 recovery_available: true,
118
119 srcs: ["update_engine/update_metadata.proto"],
120 cflags: [
121 "-Wall",
122 "-Werror",
123 ],
124 proto: {
125 canonical_path_from_root: false,
126 export_proto_headers: true,
127 },
128}
129
130// libpayload_consumer (type: static_library)
131// ========================================================
132// The payload application component and common dependencies.
133cc_defaults {
134 name: "libpayload_consumer_exports",
135 defaults: ["update_metadata-protos_exports"],
136
137 static_libs: [
138 "update_metadata-protos",
139 "libxz",
140 "libbz",
141 "libbspatch",
142 "libbrotli",
Tianjie99d570d2020-06-04 14:57:19 -0700143 "libc++fs",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700144 "libfec_rs",
145 "libpuffpatch",
146 "libverity_tree",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400147 "libsnapshot_cow",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400148 "libbrotli",
149 "libz",
150 "libpayload_extent_ranges",
151 "libcow_operation_convert",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700152 ],
153 shared_libs: [
154 "libbase",
155 "libcrypto",
Sen Jiangb5f631d2018-12-18 16:59:57 -0800156 "libfec",
Tianjie99d570d2020-06-04 14:57:19 -0700157 "libziparchive",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700158 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700159}
160
161cc_library_static {
162 name: "libpayload_consumer",
163 defaults: [
164 "ue_defaults",
165 "libpayload_consumer_exports",
166 ],
167 host_supported: true,
168 recovery_available: true,
169
170 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700171 "aosp/platform_constants_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700172 "common/action_processor.cc",
173 "common/boot_control_stub.cc",
174 "common/clock.cc",
175 "common/constants.cc",
176 "common/cpu_limiter.cc",
Yifan Hongdaac7322019-11-07 10:48:26 -0800177 "common/dynamic_partition_control_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700178 "common/error_code_utils.cc",
179 "common/file_fetcher.cc",
180 "common/hash_calculator.cc",
181 "common/http_common.cc",
182 "common/http_fetcher.cc",
183 "common/hwid_override.cc",
184 "common/multi_range_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700185 "common/prefs.cc",
186 "common/proxy_resolver.cc",
187 "common/subprocess.cc",
188 "common/terminator.cc",
189 "common/utils.cc",
190 "payload_consumer/bzip_extent_writer.cc",
191 "payload_consumer/cached_file_descriptor.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700192 "payload_consumer/certificate_parser_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700193 "payload_consumer/delta_performer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700194 "payload_consumer/extent_reader.cc",
195 "payload_consumer/extent_writer.cc",
196 "payload_consumer/file_descriptor.cc",
197 "payload_consumer/file_descriptor_utils.cc",
198 "payload_consumer/file_writer.cc",
199 "payload_consumer/filesystem_verifier_action.cc",
200 "payload_consumer/install_plan.cc",
201 "payload_consumer/mount_history.cc",
202 "payload_consumer/payload_constants.cc",
203 "payload_consumer/payload_metadata.cc",
204 "payload_consumer/payload_verifier.cc",
Kelvin Zhang50bac652020-09-28 15:51:41 -0400205 "payload_consumer/partition_writer.cc",
Kelvin Zhang94f51cc2020-09-25 11:34:49 -0400206 "payload_consumer/partition_writer_factory_android.cc",
207 "payload_consumer/vabc_partition_writer.cc",
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400208 "payload_consumer/snapshot_extent_writer.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700209 "payload_consumer/postinstall_runner_action.cc",
210 "payload_consumer/verity_writer_android.cc",
211 "payload_consumer/xz_extent_writer.cc",
212 "payload_consumer/fec_file_descriptor.cc",
Tianjied3865d12020-06-03 15:25:17 -0700213 "payload_consumer/partition_update_generator_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700214 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700215}
216
217// libupdate_engine_boot_control (type: static_library)
218// ========================================================
219// A BootControl class implementation using Android's HIDL boot_control HAL.
220cc_defaults {
221 name: "libupdate_engine_boot_control_exports",
222 defaults: ["update_metadata-protos_exports"],
223
Yifan Hong420db9b2019-07-23 20:50:33 -0700224 static_libs: [
David Andersone7ce8212019-12-16 20:13:19 -0800225 "libcutils",
226 "libfs_mgr_binder",
227 "libgsi",
Yifan Hongdad0af82020-02-19 17:19:49 -0800228 "libpayload_consumer",
Yifan Hong420db9b2019-07-23 20:50:33 -0700229 "libsnapshot",
David Anderson6c190a22020-09-21 17:09:53 -0700230 "libsnapshot_cow",
231 "libz",
Yifan Hong420db9b2019-07-23 20:50:33 -0700232 "update_metadata-protos",
233 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700234 shared_libs: [
235 "libbootloader_message",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700236 "libhidlbase",
237 "liblp",
Yifan Hongd976cc52020-02-25 14:51:42 -0800238 "libstatslog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700239 "libutils",
240 "android.hardware.boot@1.0",
David Anderson2111d062019-10-15 22:36:27 -0700241 "android.hardware.boot@1.1",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700242 ],
Yifan Hong29692902020-03-26 12:47:05 -0700243 header_libs: [
244 "avb_headers",
245 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700246 target: {
247 recovery: {
David Andersone7ce8212019-12-16 20:13:19 -0800248 static_libs: [
249 "libfs_mgr",
250 "libsnapshot_nobinder",
251 ],
252 exclude_static_libs: [
253 "libfs_mgr_binder",
254 "libsnapshot",
255 ],
Yifan Hong212d7952020-02-04 11:08:08 -0800256 exclude_shared_libs: [
Yifan Hongd976cc52020-02-25 14:51:42 -0800257 "libstatslog",
Yifan Hong212d7952020-02-04 11:08:08 -0800258 ],
Yifan Hong420db9b2019-07-23 20:50:33 -0700259 },
260 },
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700261}
262
263cc_library_static {
264 name: "libupdate_engine_boot_control",
265 defaults: [
266 "ue_defaults",
267 "libupdate_engine_boot_control_exports",
Yifan Hongdad0af82020-02-19 17:19:49 -0800268 "libpayload_consumer_exports",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700269 ],
270 recovery_available: true,
271
272 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700273 "aosp/boot_control_android.cc",
274 "aosp/cleanup_previous_update_action.cc",
275 "aosp/dynamic_partition_control_android.cc",
276 "aosp/dynamic_partition_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700277 ],
278}
279
280// libupdate_engine_android (type: static_library)
281// ========================================================
282// The main daemon static_library used in Android (non-Brillo). This only has a
283// loop to apply payloads provided by the upper layer via a Binder interface.
284cc_defaults {
285 name: "libupdate_engine_android_exports",
286 defaults: [
287 "ue_defaults",
288 "libpayload_consumer_exports",
289 "libupdate_engine_boot_control_exports",
290 ],
291
292 static_libs: [
Yifan Hong126d13e2020-09-21 19:50:06 -0700293 "gkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700294 "libpayload_consumer",
295 "libupdate_engine_boot_control",
296 ],
297 shared_libs: [
298 "libandroid_net",
299 "libbase",
300 "libbinder",
301 "libbinderwrapper",
302 "libbootloader_message",
303 "libbrillo-binder",
304 "libcurl",
305 "libcutils",
Yifan Hong2562cf22020-07-21 19:28:44 -0700306 "libupdate_engine_stable-cpp",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700307 "liblog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700308 "libssl",
Tianjie Xu75cc9f22019-08-02 14:53:38 -0700309 "libstatslog",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700310 "libutils",
311 ],
312}
313
314cc_library_static {
315 name: "libupdate_engine_android",
316 defaults: [
317 "ue_defaults",
318 "libupdate_engine_android_exports",
319 ],
320
321 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
322 // out of the DBus interface.
323 include_dirs: ["external/cros/system_api/dbus"],
324
325 aidl: {
326 local_include_dirs: ["binder_bindings"],
327 export_aidl_headers: true,
328 },
329
330 srcs: [
331 ":libupdate_engine_aidl",
Amin Hassani538bd592020-11-04 20:46:08 -0800332 "common/system_state.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700333 "aosp/binder_service_android.cc",
334 "aosp/binder_service_stable_android.cc",
335 "aosp/daemon_android.cc",
336 "aosp/daemon_state_android.cc",
337 "aosp/hardware_android.cc",
338 "aosp/logging_android.cc",
339 "aosp/network_selector_android.cc",
340 "aosp/update_attempter_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700341 "certificate_checker.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800342 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700343 "libcurl_http_fetcher.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700344 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700345 "update_boot_flags_action.cc",
346 "update_status_utils.cc",
347 ],
348}
349
350// update_engine (type: executable)
351// ========================================================
352// update_engine daemon.
353cc_binary {
354 name: "update_engine",
355 defaults: [
356 "ue_defaults",
357 "libupdate_engine_android_exports",
358 ],
359
360 static_libs: ["libupdate_engine_android"],
Tao Bao1e1c86c2019-04-18 10:48:32 -0700361 required: [
362 "cacerts_google",
Tianjie Xube4ea232019-10-15 18:08:31 -0700363 "otacerts",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700364 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700365
Amin Hassaniec7bc112020-10-29 16:47:58 -0700366 srcs: ["main.cc", "aosp/metrics_reporter_android.cc"],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700367 init_rc: ["update_engine.rc"],
368}
369
370// update_engine_sideload (type: executable)
371// ========================================================
372// A binary executable equivalent to update_engine daemon that installs an update
373// from a local file directly instead of running in the background. Used in
374// recovery image.
375cc_binary {
376 name: "update_engine_sideload",
377 defaults: [
378 "ue_defaults",
379 "update_metadata-protos_exports",
380 "libupdate_engine_boot_control_exports",
381 "libpayload_consumer_exports",
382 ],
383 recovery: true,
384
385 cflags: ["-D_UE_SIDELOAD"],
386 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
387 // out of the DBus interface.
388 include_dirs: ["external/cros/system_api/dbus"],
389
390 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700391 "aosp/hardware_android.cc",
392 "aosp/logging_android.cc",
393 "aosp/sideload_main.cc",
394 "aosp/update_attempter_android.cc",
395 "common/metrics_reporter_stub.cc",
396 "common/network_selector_stub.cc",
Amin Hassani538bd592020-11-04 20:46:08 -0800397 "common/system_state.cc",
398 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700399 "metrics_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700400 "update_boot_flags_action.cc",
401 "update_status_utils.cc",
402 ],
403
404 // Use commonly used shared libraries. libprotobuf-cpp-lite.so is filtered out,
405 // as it doesn't look beneficial to be installed separately due to its size. Note
406 // that we explicitly request their recovery variants, so that the expected files
407 // will be used and installed.
408 shared_libs: [
409 "libbase",
410 "liblog",
411 ],
412 static_libs: [
413 "libpayload_consumer",
414 "libupdate_engine_boot_control",
415 "update_metadata-protos",
416
417 // We add the static versions of the shared libraries that are not installed to
418 // recovery image due to size concerns. Need to include all the static library
419 // dependencies of these static libraries.
Yifan Hong126d13e2020-09-21 19:50:06 -0700420 "gkiprops",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700421 "libevent",
422 "libmodpb64",
423 "libgtest_prod",
424 "libprotobuf-cpp-lite",
425 "libbrillo-stream",
426 "libbrillo",
427 "libchrome",
428 ],
429 target: {
430 recovery: {
431 exclude_shared_libs: [
432 "libprotobuf-cpp-lite",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700433 "libbrillo-stream",
434 "libbrillo",
435 "libchrome",
436 ],
437 },
438 },
439
Tao Bao1e1c86c2019-04-18 10:48:32 -0700440 required: [
Tianjie Xube4ea232019-10-15 18:08:31 -0700441 "otacerts.recovery",
Tao Bao1e1c86c2019-04-18 10:48:32 -0700442 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700443}
444
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700445// update_engine_client (type: executable)
446// ========================================================
447// update_engine console client.
448cc_binary {
449 name: "update_engine_client",
450 defaults: ["ue_defaults"],
451
452 // TODO(deymo): Remove external/cros/system_api/dbus once the strings are moved
453 // out of the DBus interface.
454 include_dirs: ["external/cros/system_api/dbus"],
455
456 shared_libs: [
457 "libbinder",
458 "libbinderwrapper",
459 "libbrillo-binder",
460 "libutils",
461 ],
462
463 aidl: {
464 local_include_dirs: ["binder_bindings"],
465 },
466
467 srcs: [
468 ":libupdate_engine_aidl",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700469 "aosp/update_engine_client_android.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700470 "common/error_code_utils.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700471 "update_status_utils.cc",
472 ],
473}
474
475// libpayload_generator (type: static_library)
476// ========================================================
477// server-side code. This is used for delta_generator and unittests but not
478// for any client code.
479cc_defaults {
480 name: "libpayload_generator_exports",
481 defaults: [
482 "libpayload_consumer_exports",
483 "update_metadata-protos_exports",
484 ],
485
Tianjie37ae8562020-03-25 15:16:01 -0700486 header_libs: [
487 "bootimg_headers",
488 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700489 static_libs: [
490 "libavb",
491 "libbrotli",
492 "libbsdiff",
493 "libdivsufsort",
494 "libdivsufsort64",
495 "liblzma",
496 "libpayload_consumer",
497 "libpuffdiff",
498 "libverity_tree",
499 "update_metadata-protos",
500 ],
501 shared_libs: [
502 "libbase",
503 "libext2fs",
504 ],
505}
506
507cc_library_static {
David Andersonc1c93052020-08-26 18:22:09 +0000508 name: "libpayload_extent_ranges",
509 defaults: [
510 "ue_defaults",
511 ],
512 host_supported: true,
Kelvin Zhang9b10dba2020-09-25 17:09:11 -0400513 recovery_available: true,
David Andersonc1c93052020-08-26 18:22:09 +0000514 srcs: [
515 "payload_generator/extent_ranges.cc",
516 ],
517 static_libs: [
518 "update_metadata-protos",
519 ],
520}
521
522cc_library_static {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700523 name: "libpayload_generator",
524 defaults: [
525 "ue_defaults",
526 "libpayload_generator_exports",
527 ],
528 host_supported: true,
529
530 srcs: [
Amin Hassani538bd592020-11-04 20:46:08 -0800531 "common/system_state.cc",
532 "download_action.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700533 "payload_generator/ab_generator.cc",
534 "payload_generator/annotated_operation.cc",
535 "payload_generator/blob_file_writer.cc",
536 "payload_generator/block_mapping.cc",
537 "payload_generator/boot_img_filesystem.cc",
538 "payload_generator/bzip.cc",
Kelvin Zhang7a265752020-10-29 15:51:35 -0400539 "payload_generator/cow_size_estimator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700540 "payload_generator/deflate_utils.cc",
541 "payload_generator/delta_diff_generator.cc",
542 "payload_generator/delta_diff_utils.cc",
543 "payload_generator/ext2_filesystem.cc",
544 "payload_generator/extent_ranges.cc",
545 "payload_generator/extent_utils.cc",
546 "payload_generator/full_update_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700547 "payload_generator/mapfile_filesystem.cc",
Tianjiee9156ec2020-08-11 11:13:54 -0700548 "payload_generator/merge_sequence_generator.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700549 "payload_generator/payload_file.cc",
550 "payload_generator/payload_generation_config_android.cc",
551 "payload_generator/payload_generation_config.cc",
Amin Hassani79821002019-05-06 17:40:49 -0700552 "payload_generator/payload_properties.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700553 "payload_generator/payload_signer.cc",
554 "payload_generator/raw_filesystem.cc",
555 "payload_generator/squashfs_filesystem.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700556 "payload_generator/xz_android.cc",
557 ],
558}
559
560// delta_generator (type: executable)
561// ========================================================
562// server-side delta generator.
563cc_binary_host {
564 name: "delta_generator",
565 defaults: [
566 "ue_defaults",
567 "libpayload_generator_exports",
568 "libpayload_consumer_exports",
569 ],
570
571 static_libs: [
572 "libavb_host_sysdeps",
573 "libpayload_consumer",
574 "libpayload_generator",
575 ],
576
577 srcs: ["payload_generator/generate_delta_main.cc"],
578}
579
580cc_test {
581 name: "ue_unittest_delta_generator",
582 defaults: [
583 "ue_defaults",
584 "libpayload_generator_exports",
585 "libpayload_consumer_exports",
586 ],
587
588 static_libs: [
589 "libpayload_consumer",
590 "libpayload_generator",
591 ],
592
593 srcs: ["payload_generator/generate_delta_main.cc"],
594
595 gtest: false,
596 stem: "delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700597}
598
599// test_http_server (type: executable)
600// ========================================================
601// Test HTTP Server.
602cc_test {
603 name: "test_http_server",
604 defaults: ["ue_defaults"],
605 srcs: [
606 "common/http_common.cc",
607 "test_http_server.cc",
608 ],
609
610 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700611}
612
613// test_subprocess (type: executable)
614// ========================================================
615// Test helper subprocess program.
616cc_test {
617 name: "test_subprocess",
618 defaults: ["ue_defaults"],
619 srcs: ["test_subprocess.cc"],
620
621 gtest: false,
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700622}
623
624// Public keys for unittests.
625// ========================================================
626genrule {
627 name: "ue_unittest_keys",
628 cmd: "openssl rsa -in $(location unittest_key.pem) -pubout -out $(location unittest_key.pub.pem) &&" +
xunchangcda3c032019-03-26 15:41:14 -0700629 "openssl rsa -in $(location unittest_key2.pem) -pubout -out $(location unittest_key2.pub.pem) &&" +
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700630 "openssl rsa -in $(location unittest_key_RSA4096.pem) -pubout -out $(location unittest_key_RSA4096.pub.pem) &&" +
631 "openssl pkey -in $(location unittest_key_EC.pem) -pubout -out $(location unittest_key_EC.pub.pem)",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700632 srcs: [
633 "unittest_key.pem",
634 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -0700635 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700636 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700637 ],
638 out: [
639 "unittest_key.pub.pem",
640 "unittest_key2.pub.pem",
xunchangcda3c032019-03-26 15:41:14 -0700641 "unittest_key_RSA4096.pub.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700642 "unittest_key_EC.pub.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700643 ],
644}
645
646// Sample images for unittests.
647// ========================================================
648// Extract sample image from the compressed sample_images.tar.bz2 file used by
649// the unittests.
650genrule {
651 name: "ue_unittest_disk_imgs",
652 cmd: "tar -jxf $(in) -C $(genDir)/gen disk_ext2_1k.img disk_ext2_4k.img disk_ext2_4k_empty.img disk_ext2_unittest.img",
653 srcs: ["sample_images/sample_images.tar.bz2"],
654 out: [
655 "gen/disk_ext2_1k.img",
656 "gen/disk_ext2_4k.img",
657 "gen/disk_ext2_4k_empty.img",
658 "gen/disk_ext2_unittest.img",
659 ],
660}
661
662// update_engine_unittests (type: executable)
663// ========================================================
664// Main unittest file.
665cc_test {
666 name: "update_engine_unittests",
667 defaults: [
668 "ue_defaults",
669 "libpayload_generator_exports",
670 "libupdate_engine_android_exports",
671 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700672
673 static_libs: [
674 "libpayload_generator",
675 "libbrillo-test-helpers",
676 "libgmock",
677 "libchrome_test_helpers",
678 "libupdate_engine_android",
Tianjie Xu173e6192019-12-10 10:56:01 -0800679 "libdm",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700680 ],
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700681
Yifan Hong87ea73f2019-09-12 13:07:37 -0700682 header_libs: [
683 "libstorage_literals_headers",
684 ],
685
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700686 data: [
Tao Bao9456b6f2019-04-29 18:14:58 -0700687 ":test_http_server",
688 ":test_subprocess",
689 ":ue_unittest_delta_generator",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700690 ":ue_unittest_disk_imgs",
691 ":ue_unittest_keys",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700692 "otacerts.zip",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700693 "unittest_key.pem",
694 "unittest_key2.pem",
xunchangcda3c032019-03-26 15:41:14 -0700695 "unittest_key_RSA4096.pem",
Tianjie Xu7bbe0152019-10-09 18:11:15 -0700696 "unittest_key_EC.pem",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700697 "update_engine.conf",
698 ],
699
Tao Bao9456b6f2019-04-29 18:14:58 -0700700 // We cannot use the default generated AndroidTest.xml because of the use of helper modules
701 // (i.e. test_http_server, test_subprocess, ue_unittest_delta_generator).
702 test_config: "test_config.xml",
703 test_suites: ["device-tests"],
704
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700705 srcs: [
Amin Hassaniec7bc112020-10-29 16:47:58 -0700706 "aosp/dynamic_partition_control_android_unittest.cc",
707 "aosp/update_attempter_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700708 "certificate_checker_unittest.cc",
709 "common/action_pipe_unittest.cc",
710 "common/action_processor_unittest.cc",
711 "common/action_unittest.cc",
Kelvin Zhangb05e4e22020-09-25 16:16:19 -0400712 "common/cow_operation_convert_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700713 "common/cpu_limiter_unittest.cc",
714 "common/fake_prefs.cc",
715 "common/file_fetcher_unittest.cc",
716 "common/hash_calculator_unittest.cc",
717 "common/http_fetcher_unittest.cc",
718 "common/hwid_override_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700719 "common/metrics_reporter_stub.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700720 "common/mock_http_fetcher.cc",
721 "common/prefs_unittest.cc",
722 "common/proxy_resolver_unittest.cc",
723 "common/subprocess_unittest.cc",
724 "common/terminator_unittest.cc",
725 "common/test_utils.cc",
726 "common/utils_unittest.cc",
Amin Hassaniec7bc112020-10-29 16:47:58 -0700727 "download_action_android_unittest.cc",
Jae Hoon Kim0ae8fe12019-06-26 14:32:50 -0700728 "libcurl_http_fetcher_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700729 "payload_consumer/bzip_extent_writer_unittest.cc",
730 "payload_consumer/cached_file_descriptor_unittest.cc",
Tianjie Xu7a78d632019-10-08 16:32:39 -0700731 "payload_consumer/certificate_parser_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700732 "payload_consumer/delta_performer_integration_test.cc",
733 "payload_consumer/delta_performer_unittest.cc",
Kelvin Zhang9bd519d2020-09-23 12:55:19 -0400734 "payload_consumer/partition_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700735 "payload_consumer/extent_reader_unittest.cc",
736 "payload_consumer/extent_writer_unittest.cc",
Kelvin Zhang9754f172020-09-25 15:22:35 -0400737 "payload_consumer/snapshot_extent_writer_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700738 "payload_consumer/fake_file_descriptor.cc",
739 "payload_consumer/file_descriptor_utils_unittest.cc",
740 "payload_consumer/file_writer_unittest.cc",
741 "payload_consumer/filesystem_verifier_action_unittest.cc",
Amin Hassani23795032020-11-24 14:38:55 -0800742 "payload_consumer/install_plan_unittest.cc",
Tianjie99d570d2020-06-04 14:57:19 -0700743 "payload_consumer/partition_update_generator_android_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700744 "payload_consumer/postinstall_runner_action_unittest.cc",
745 "payload_consumer/verity_writer_android_unittest.cc",
746 "payload_consumer/xz_extent_writer_unittest.cc",
747 "payload_generator/ab_generator_unittest.cc",
748 "payload_generator/blob_file_writer_unittest.cc",
749 "payload_generator/block_mapping_unittest.cc",
750 "payload_generator/boot_img_filesystem_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700751 "payload_generator/deflate_utils_unittest.cc",
752 "payload_generator/delta_diff_utils_unittest.cc",
753 "payload_generator/ext2_filesystem_unittest.cc",
754 "payload_generator/extent_ranges_unittest.cc",
755 "payload_generator/extent_utils_unittest.cc",
756 "payload_generator/fake_filesystem.cc",
757 "payload_generator/full_update_generator_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700758 "payload_generator/mapfile_filesystem_unittest.cc",
Tianjie87af6c02020-08-11 15:06:26 -0700759 "payload_generator/merge_sequence_generator_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700760 "payload_generator/payload_file_unittest.cc",
761 "payload_generator/payload_generation_config_android_unittest.cc",
762 "payload_generator/payload_generation_config_unittest.cc",
Jae Hoon Kim4b6d1262019-06-20 10:41:18 -0700763 "payload_generator/payload_properties_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700764 "payload_generator/payload_signer_unittest.cc",
765 "payload_generator/squashfs_filesystem_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700766 "payload_generator/zip_unittest.cc",
767 "testrunner.cc",
Jae Hoon Kim916af852019-08-01 17:45:30 -0700768 "update_status_utils_unittest.cc",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700769 ],
770}
771
772// Brillo update payload generation script
773// ========================================================
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +0100774sh_binary {
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700775 name: "brillo_update_payload",
776 device_supported: false,
777 host_supported: true,
778
Martin Stjernholm18e9f3c2020-09-08 13:56:59 +0100779 src: "scripts/brillo_update_payload",
Dan Willemsenf5a904e2018-10-23 01:02:44 -0700780 required: [
781 "delta_generator",
782 "shflags",
783 "simg2img",
784 ],
785
786 target: {
787 darwin: {
788 enabled: false,
789 },
790 },
Colin Cross606913a2017-11-14 13:05:37 -0800791}
Yifan Hongd51738c2020-07-23 17:06:25 -0700792
793// update_engine header library
794cc_library_headers {
795 name: "libupdate_engine_headers",
Yifan Hong309c8a82020-10-06 18:31:08 -0700796
797 // This header library is available to core and product modules.
Justin Yun6d121de2020-11-11 19:31:57 +0900798 product_available: true,
Yifan Hong309c8a82020-10-06 18:31:08 -0700799
Yifan Hongd51738c2020-07-23 17:06:25 -0700800 export_include_dirs: ["."],
801 apex_available: [
802 "com.android.gki.*",
David Anderson5e6dfe32020-09-17 15:50:33 -0700803 "//apex_available:platform",
Yifan Hongd51738c2020-07-23 17:06:25 -0700804 ],
David Andersonc1c93052020-08-26 18:22:09 +0000805 host_supported: true,
David Anderson5e6dfe32020-09-17 15:50:33 -0700806 recovery_available: true,
807 ramdisk_available: true,
808
809 target: {
810 darwin: {
811 enabled: false,
812 },
813 }
Yifan Hongd51738c2020-07-23 17:06:25 -0700814}