Commit Graph

5521 Commits

Author SHA1 Message Date
Tianjie Xu 6c87845cfb Merge "Add a singleton CacheLocation to replace the hard coded locations" am: 47cd789eed
am: a72f93d6da

Change-Id: Ie505267652e83735f60e8acc93da22e2ac1abe69
2018-03-01 18:52:54 +00:00
Tianjie Xu a72f93d6da Merge "Add a singleton CacheLocation to replace the hard coded locations"
am: 47cd789eed

Change-Id: I11c265d3adebc338e0603ed00c7d1aaaffae0253
2018-03-01 18:45:52 +00:00
Tianjie Xu 47cd789eed Merge "Add a singleton CacheLocation to replace the hard coded locations" 2018-03-01 18:36:05 +00:00
Tianjie Xu 3bbb20f557 Add a singleton CacheLocation to replace the hard coded locations
This class allows us to set the following locations dynamically:
cache_temp_source, last_command_file, stash_directory_base.

In the updater's main function, we reset the values of these variables
to their default locations in /cache; while we can set them to temp
files in unit tests or host simulation.

Test: unit tests pass
Change-Id: I528652650caa41373617ab055d41b1f1a4ec0f87
2018-02-28 11:19:11 -08:00
Tianjie Xu e0f7c39c4f Merge "Fix the behavior of undefined commands in BlockImageVerify" am: ac4818d6af
am: 7b9a92c1e2

Change-Id: I7891f4e907cc73618b99e2102eb8844771554b1f
2018-02-28 19:05:04 +00:00
Tianjie Xu 7b9a92c1e2 Merge "Fix the behavior of undefined commands in BlockImageVerify"
am: ac4818d6af

Change-Id: I5e42bcafca4c42e6c30cef082c03ad2b8d18ac6c
2018-02-28 18:59:33 +00:00
Tianjie Xu ac4818d6af Merge "Fix the behavior of undefined commands in BlockImageVerify" 2018-02-28 18:49:56 +00:00
Tianjie Xu c242084539 Fix the behavior of undefined commands in BlockImageVerify
In BlockImageVerify some commands are undefined, e.g. "erase", "new",
"zero". And we should not error out if the corresponding function
pointer of these commands is null; otherwise we will fail the
verification.

The old code is:
if (cmd->f != nullptr && cmd->f(params) == -1)
  return false;

In the last_command_file change the logic was wrongly modified to
if (cmd->f == nullptr)
  return false;
...
if (cmd->f(params) == -1)
  return false;

Test: sideload an incremental OTA twice on bullhead
Change-Id: I2561c365badb850da0e416629ccd61f0df7da5d7
2018-02-27 23:04:14 -08:00
Tianjie Xu 98da1357b4 Merge "Remove the assumption of target chunk size in imgdiff" am: cc3446a7f7
am: a306d7bc55

Change-Id: Ieb2fe6cf9f8bf71a5018809f16510c4ef05420d4
2018-02-23 21:43:14 +00:00
Tianjie Xu a306d7bc55 Merge "Remove the assumption of target chunk size in imgdiff"
am: cc3446a7f7

Change-Id: Ic5d50e6c54dfd352950925d01448020669735056
2018-02-23 21:31:09 +00:00
Treehugger Robot cc3446a7f7 Merge "Remove the assumption of target chunk size in imgdiff" 2018-02-23 21:12:39 +00:00
Tianjie Xu 572abbb81c Remove the assumption of target chunk size in imgdiff
In the split mode of imgdiff, we used to assume that the size of a split
target chunk is always greater than the blocksize i.e. 4096. This may
lead to the following assertion failure:
I0221 04:57:33.451323 818464 common.py:205 imgdiff F 02-21 04:57:33 821203 821203 imgdiff.cpp:999]
Check failed: tgt_size >= BLOCK_SIZE (tgt_size=476, BLOCK_SIZE=4096)

This CL removes the assumption and handles the edge cases.

Test: generate and verify the incremental update for TFs in the bug; unit test passes

Bug: 73757557
Bug: 73711365
Change-Id: Iadbb4ee658995f5856cd488f3793980881a59620
2018-02-23 10:44:05 -08:00
George Burgess IV c298833b1c Merge "Replace vfork() with fork()." am: 21b381622d
am: 44f2cb2d67

Change-Id: Ie67e2e0a39c781e27916294f501fcc4ef8fbd38f
2018-02-23 17:31:08 +00:00
George Burgess IV 44f2cb2d67 Merge "Replace vfork() with fork()."
am: 21b381622d

Change-Id: Ia06201cedfcca6358f6f65face5325a4cf528f72
2018-02-23 17:24:51 +00:00
Treehugger Robot 21b381622d Merge "Replace vfork() with fork()." 2018-02-23 17:04:34 +00:00
George Burgess IV 1cfb361129 Replace vfork() with fork().
The static analyzer complained about the function calls we were doing
here to vector::data() and vector::operator[]:
bootable/recovery/roots.cpp:193:11: warning: This function call is
prohibited after a successful vfork

Since it's not clear that vfork() is needed here, just use fork()
instead.

Bug: None
Test: Reran the static analyzer with only this patch applied. Bug
disappeared
Change-Id: I580f8243a21899f1e1678c8aee6948dfa7f69a1d
2018-02-22 19:25:22 -08:00
hansson b1ac1b8494 Merge "Set LOCAL_SDK_VERSION where possible." am: bf52b7e00b
am: cd06b1696d

Change-Id: I78bbe2e58b6d7d442984d3533dedbae705cb156f
2018-02-21 17:37:58 +00:00
hansson cd06b1696d Merge "Set LOCAL_SDK_VERSION where possible."
am: bf52b7e00b

Change-Id: I91a73e01b2a9b13923a551957da98a2eb9363dc9
2018-02-21 17:31:10 +00:00
hansson bf52b7e00b Merge "Set LOCAL_SDK_VERSION where possible." 2018-02-21 17:20:44 +00:00
Anton Hansson 6cc499ae07 Set LOCAL_SDK_VERSION where possible.
This change sets LOCAL_SDK_VERSION for all packages where
this is possible without breaking the build, and
LOCAL_PRIVATE_PLATFORM_APIS := true otherwise.

Setting one of these two will be made required soon, and this
is a change in preparation for that. Not setting LOCAL_SDK_VERSION
makes the app implicitly depend on the bootclasspath, which is
often not required. This change effectively makes depending on
private apis opt-in rather than opt-out.

Test: make relevant packages
Bug: 73535841
Change-Id: I82fee834c5d92e699e9571933faded11c6d4596e
2018-02-21 14:11:02 +00:00
Tianjie Xu bda2f67775 Merge "Disable building libapplypatch on mac" am: c1e1d7e711
am: 2754916f01

Change-Id: Ibfb57ca66bb826b2710db4572a2d3d730a7db0e5
2018-02-18 08:35:39 +00:00
Tianjie Xu 2754916f01 Merge "Disable building libapplypatch on mac"
am: c1e1d7e711

Change-Id: I333af93c0dc7cf8b2a175f6c42c5321f442bd115
2018-02-18 08:24:05 +00:00
Treehugger Robot c1e1d7e711 Merge "Disable building libapplypatch on mac" 2018-02-18 08:15:13 +00:00
Tianjie Xu 7a4dacf724 Disable building libapplypatch on mac
The sdk_mac on build server fails with the error:
bootable/recovery/applypatch/freecache.cpp:23:10: fatal error: 'sys/statfs.h' file not found

So we will disable libapplypatch on mac.

Test: the library still builds on linux; and check the other host targets in the same cl.
Change-Id: Ie4a30708726e51c810f7ad7f1085d38154076cca
2018-02-17 22:06:31 -08:00
Tianjie Xu 021d8fe0a3 Merge "Skip the cache size check on host" am: 31bcd7c002
am: fb8496e3aa

Change-Id: If57297252bfe3ccf9c45028747a8fa8760052c48
2018-02-17 00:36:42 +00:00
Tianjie Xu fb8496e3aa Merge "Skip the cache size check on host"
am: 31bcd7c002

Change-Id: If265166022cc36142e4cc6061f1165e9814e9482
2018-02-17 00:29:07 +00:00
Tianjie Xu 31bcd7c002 Merge "Skip the cache size check on host" 2018-02-17 00:15:19 +00:00
Tao Bao 78997a2af5 Merge "recovery: Porting screensave mode for new platform." am: 15e376d792
am: 470b4fef7f

Change-Id: I30b84b2cd5071842493f5900a3485cd4f5bc9769
2018-02-16 05:21:53 +00:00
Tao Bao 470b4fef7f Merge "recovery: Porting screensave mode for new platform."
am: 15e376d792

Change-Id: I2537ea9b3b4a5560c79226450fcf236ec0935e9e
2018-02-16 05:15:40 +00:00
Tao Bao 15e376d792 Merge "recovery: Porting screensave mode for new platform." 2018-02-16 05:07:57 +00:00
Tianjie Xu f6cd6b9e85 Merge "Reorder the functions in updater/install.cpp" am: 9818283da7
am: 576d2754ee

Change-Id: Iafbe590ed553d3be8b3875b797aeffc88ae67605
2018-02-13 06:56:58 +00:00
Tianjie Xu 576d2754ee Merge "Reorder the functions in updater/install.cpp"
am: 9818283da7

Change-Id: I3451ff1641495a7a676d5ea3bea81ce38815fc2f
2018-02-13 06:48:24 +00:00
Tianjie Xu 9818283da7 Merge "Reorder the functions in updater/install.cpp" 2018-02-13 05:32:10 +00:00
Tianjie Xu e40c80d021 Skip the cache size check on host
When running the update simulation, we choose to skip the cache size
check for now due to the lack of "/cache" on host. And in later cls we
can implement a cache size estimator to make the check more constrained.

Also build the host version of support libraries.

Test: unit test pass
Change-Id: I3ed93c857fd02f7b62f5baba9130f75c3236e717
2018-02-12 15:19:37 -08:00
Tianjie Xu 5419ad31e7 Reorder the functions in updater/install.cpp
There is no logical change to the file; merely the function definition
reorder and some comestic change to make the future review easier.

Test: mma
Change-Id: I7ffe952f8c78e840f10aa6bfad0c4b5a58e29896
2018-02-12 11:55:05 -08:00
Tianjie Xu c052f787a9 Merge "Log the last command to cache" am: 6a3646fc03
am: 6d78bb5236

Change-Id: Ifd886d148fec5d5b17bb29d65a8c83f4cfbc8c32
2018-02-08 20:11:38 +00:00
Tianjie Xu 6d78bb5236 Merge "Log the last command to cache"
am: 6a3646fc03

Change-Id: I4e0e399b6140084cd681c5aba746d7b9dbe069d8
2018-02-08 20:06:35 +00:00
Tianjie Xu 6a3646fc03 Merge "Log the last command to cache" 2018-02-08 19:53:37 +00:00
Tao Bao 1e7d0922c7 Merge "Document instructions for using adb under recovery." am: 7ee7e27400
am: 41186e13b7

Change-Id: I400e8c56060cf52718603fff80423ec5f1780088
2018-02-08 19:40:31 +00:00
Tao Bao 41186e13b7 Merge "Document instructions for using adb under recovery."
am: 7ee7e27400

Change-Id: Ia63a213baf4c1886379003220580e42cdc0f19c2
2018-02-08 19:36:32 +00:00
Treehugger Robot 7ee7e27400 Merge "Document instructions for using adb under recovery." 2018-02-08 19:20:57 +00:00
Tao Bao c84a4ef053 Document instructions for using adb under recovery.
Fixes: 72740736
Test: N/A
Change-Id: Ifc96ed785fd80501bc6c276cb649c8cc1f05be0e
2018-02-07 20:55:33 -08:00
Tianjie Xu 284752e2bc Log the last command to cache
When performing an update, save the index and cmdline of the current
command into the last command file if this command writes to the stash
either explicitly of implicitly. This mitigates the overhead to update
the last command file for every command. I ran a simple test on angler
and the time to update 1000 times is ~2.3 seconds.

Upon resuming an update, read the saved index first; then
  1. In verification mode, check if all commands before the saved index
     have already produced the expected target blocks. If not, delete the
     last command file so that we will later resume the update from the
     start of the transfer list.
  2. In update mode, skip all commands before the saved index. Therefore,
     we can avoid deleting stashes with duplicate id unintentionally;
     and also speed up the update.

If an update succeeds or is unresumable, delete the last command file.
Bug: 69858743
Test: Unittest passed, apply a failed update with invalid cmd on angler
and check the last_command content, apply a failed update with invalid
source hash and last_command is deleted.
Change-Id: Ib60ba1e3c6d111d9f33097759b17dbcef97a37bf
2018-02-06 16:16:49 -08:00
Tianjie Xu 39b6c7fcfe Merge "Avoid overwrite of the error message in AbortFn" am: bded087f7d
am: 20af3722d8

Change-Id: I61b6206e807d4a10091e05e8c4b4de0c525b7d42
2018-01-30 22:02:50 +00:00
Tianjie Xu 20af3722d8 Merge "Avoid overwrite of the error message in AbortFn"
am: bded087f7d

Change-Id: I0b000ba5d8855c38e4f4b301c68c4134c0f2287d
2018-01-30 21:51:11 +00:00
Tianjie Xu bded087f7d Merge "Avoid overwrite of the error message in AbortFn" 2018-01-30 21:44:02 +00:00
Tianjie Xu 5ad802839d Avoid overwrite of the error message in AbortFn
The AbortFn() used to overwrite the error message, hiding the real
failure reported in ErrorAbort(). And we will miss the failure in
the script patterns like 'blockimageupdate() || abort()'

We will ensure there's one line break at the end of ErrorAbort's
error message; and append to the existing error message when calling
abort().

Test: Message from ErrorAbort shows up in the log
Change-Id: I3aebd06629c5129330250c7fe5e8cdead2ae85bc
2018-01-29 11:42:59 -08:00
Sen Jiang cbbf671919 Merge "Add update_channel field to bootloader_message_ab." am: 63eb1a4444
am: 7441ee7aff

Change-Id: I390bba7bd9a76e732873f6abc03a419ec8b2f2d6
2018-01-26 01:00:05 +00:00
Sen Jiang 7441ee7aff Merge "Add update_channel field to bootloader_message_ab."
am: 63eb1a4444

Change-Id: Ie12275c2694cabcf5b934f0673ecb228d6c8c3e6
2018-01-26 00:58:01 +00:00
Sen Jiang 63eb1a4444 Merge "Add update_channel field to bootloader_message_ab." 2018-01-26 00:48:09 +00:00