summaryrefslogtreecommitdiffstats
path: root/updater/include (follow)
Commit message (Collapse)AuthorAgeFilesLines
* Address the warnings in recovery codeTianjie Xu2020-03-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | The following warnngs generate when compile with WITH_TIDY=1 .../bootable/recovery/applypatch/imgdiff.cpp:968:7: warning: 'src_ranges' used after it was moved [bugprone-use-after-move] src_ranges.Clear(); ^ .../bootable/recovery/applypatch/imgdiff.cpp:966:27: note: move occurred here split_src_ranges->push_back(std::move(src_ranges)); The logic itself seems correct since the class is meant to be cleared after move. I feel the std::move in 966 is actually useful to call the move constructor in RangeSet. So I just modify L968 to suppress the warning. Less important ones: bootable/recovery/applypatch/applypatch_modes.cpp:79:34: warning: passing result of std::move() as a const reference argument; no move will actually happen [performance-move-const-arg] bootable/recovery/applypatch/imgdiff.cpp:1038:30: warning: passing result of std::move() as a const reference argument; no move will actually happen [performance-move-const-arg] bootable/recovery/applypatch/imgdiff.cpp:1054:48: warning: passing result of std::move() as a const reference argument; no move will actually happen [performance-move-const-arg] bootable/recovery/updater/include/private/commands.h:310:16: warning: std::move of the variable 'patch' of the trivially-copyable type 'PatchInfo' has no effect; remove std::move() [performance-move-const-arg] bootable/recovery/updater/install.cpp:663:43: warning: passing result of std::move() as a const reference argument; no move will actually happen [performance-move-const-arg] Bug: 150955971 Test: build Change-Id: Ieb75f0229c47d470d4f5ac93fab39c5698d3f914
* Simulator: add the argument to keep the updated imagesTianjie Xu2019-07-311-1/+3
| | | | | | | | | | | | | | Add the command line option to select the work directory and save the updated image files. Because some people might have interested in getting updated images from an ota file. Also, fix a minor issue that the destination of package_extract_file needs to be updated if it's a block device. Otherwise, an unintended file may be extracted in the callers' directory. Test: run simulation, run unit tests Change-Id: Ic6a7db0580bc1748d6e080102e4654da4e41fd8c
* Add command line parser for simulatorTianjie Xu2019-07-161-0/+9
| | | | | | | | | Add a command line parser. Also add the support to parse the oem property file and skip certain functions. Bug: 131911365 Test: run simulator for wear builds Change-Id: Ide306b53d3f42b29c02279969aeb18bec4045d6f
* Add a GetMappedPackageLength to UpdaterRobin Lee2019-07-081-1/+3
| | | | | | | | | | | | Corresponds to GetMappedPackageAddress. There is at least one custom device recovery with an extension to copy the package somewhere else as a backup. Ability to do this was removed in change ag/955273. Test: lunch cf_x86_tv-eng; make Test: atest recovery_unit_test recovery_component_test Change-Id: I0e61d8a8839c47721874526504ea03b9ca7bafa9
* Implement updater runtime for dynamic partitionsTianjie Xu2019-06-242-0/+9
| | | | | | | | | | The simulator skips executing the operations for dynamic partitions, and will use the logical images under target_files/IMAGES directly. (Similar to the targets without DAP enabled) Bug: 131911365 Test: run update on cuttlefish, run simulator Change-Id: Id318d97ece4560df9f20dc5cabeb8b2e261bdf9c
* Implement the TargetFile and BuildInfoTianjie Xu2019-06-013-12/+110
| | | | | | | | | | | The TargetFile class parses a target-file and provides functions to read its contents. And the BuildInfo tries to simulate the device with files on host. Some work it does includes parsing the build properties, and extracting the image files for partitions specified in the fstab. Bug: 131911365 Test: unit tests pass, run simulator with cuttlefish, wear devices and from extracted TF. Change-Id: Iefe4a96d619d2e4b3d038e31480f11a0f9a70afa
* Implement an update simulator to verify BB OTA packages on hostTianjie Xu2019-05-292-0/+94
| | | | | | | | | | | Implement the simulator runtime and build the updater simulator as a host executable. The code to parse the target-files and mocks the block devices will be submitted in the follow-up. Bug: 131911365 Test: unit tests pass Change-Id: Ib1ba939aec8333ca68a45139514d772ad7a27ad8
* Some clean ups to the updaterTianjie Xu2019-05-222-5/+0
| | | | | | | | | Remove some unnecessary includes or forward declarations. And include the correct headers to build host executables. Bug: 131911365 Test: unit tests pass Change-Id: I62e75f60678159fe24619a4bd386b1416f1a5b5d
* Add UpdaterRuntime classTianjie Xu2019-05-212-15/+83
| | | | | | | | | | | This class adds a wrapper to the runtime dependent functions. Therefore, the behavior of update on device stays the same, while simulators can have their own implementations. Also change the caller side of the registered updater functions to call these runtime wrappers. Bug: 131911365 Test: unit tests pass, sideload an update on cuttlefish Change-Id: Ib3ab67132991d67fc132f27120e4152439d16ac5
* Add Updater class and remove UpdaterInfoTianjie Xu2019-05-092-22/+66
| | | | | | | | | | | The UpdaterInfo class is merely a collection of pointers and POD types. We can replace it with a Updater class that has the ownership of the resources. This also makes this class extensible as we plan to add more functionality in the host simulator. Bug: 131911365 Test: unit tests pass, run an update on cuttlefish and check last_install Change-Id: I07ca5963bbee8ae3cb85ccc184464910aa73d4e4
* updater: add functions to modify dynamic partition metadataYifan Hong2019-01-142-0/+40
| | | | | | | | | | | | Test: sideload full OTA on cuttlefish Test: sideload incremental OTA on cuttlefish (that grows system, shrinks vendor, and move vendor to group foo) Test: verify that /cache/recovery/cc46ebfd04058569d0c6c1431c6af6c1328458e4 exists (sha1sum of "system") Bug: 111801737 Change-Id: Ibdf6565bc1b60f3665c01739b4c95a85f0261ae5
* updater: Add TransferList class.Tao Bao2018-08-171-0/+67
| | | | | | | | | This would be the top-level class that represents and holds the info parsed from a transfer list file. Bug: 112151972 Test: Run recovery_unit_test and recovery_component_test on marlin. Change-Id: I83b54df9d1411542eeeb8ef4a2db167e97f989c3
* updater: Add SourceInfo::{ReadAll,DumpBuffer,Overlaps}.Tao Bao2018-08-161-0/+26
| | | | | | Bug: 112151972 Test: Run recovery_unit_test on marlin. Change-Id: Ica2a7b3c768f5d8ca5d591a9560bca9f8ed847c5
* Add the hash_tree_info class in CommandTianjie Xu2018-08-141-0/+52
| | | | | | | | | | Add hash_tree_info to represent the hash tree computation arguments in the transfer commands 'compute_hash_tree'. Also add its parsing code in the Command class. Bug: 25170618 Test: unit tests pass Change-Id: Ie8607968377968e8fb3e58d1af0b8ca315e145be
* Add an updater function to compute hash treeTianjie Xu2018-08-061-0/+5
| | | | | | | | | | | | | | | | The new command is part of the transfer.list and allows us to compute the hash tree on non-ab devices. The required arguments for the hash_tree computation are: hash_tree_ranges source_ranges hash_algorithm salt_hex root_hash Bug: 25170618 Test: unit tests pass; run simulator with compute_hash_tree Change-Id: I8ff0d582cc8adabb8a060db7845f38b35b28e62c
* updater: Add ABORT command.Tao Bao2018-07-071-0/+12
| | | | | | | | | | | This will be used for testing purpose only, replacing the previously used "fail", to intentionally abort an update. As we're separating the logic between commands parsing and execution, "abort" needs to be considered as a valid command during the parsing. Test: recovery_unit_test and recovery_component_test on marlin. Change-Id: I47c41c423e62c41cc8515fd92f3c5959be08da02
* updater: Add Command parsing codes.Tao Bao2018-06-251-6/+284
| | | | | | | | The added codes are not used in the updater yet. The switch will happen in subsequent CLs. Test: Run recovery_unit_test and recovery_component_test on marlin. Change-Id: I1ae8a233280f02c2171b43ef028bdccdacb39c59
* updater: Add Commmand class to manage BBOTA commands.Tao Bao2018-05-261-0/+35
| | | | | | | | | | | | Move the commands map parsing out of PerformBlockImageUpdate(), as this can be done more easily by the caller. The goal (not done in this CL) is to decouple command parsing logic from the performers. This allows (a) focusing on the command logic in the performer; and (b) extending BBOTA commands syntax separately. Test: Run recovery_unit_test and recovery_component_test. Change-Id: Ife202398a7660b152d84a3ba17b90f93d19c55f2
* Add a singleton CacheLocation to replace the hard coded locationsTianjie Xu2018-02-281-1/+0
| | | | | | | | | | | | 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
* Log the last command to cacheTianjie Xu2018-02-071-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | 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
* Move Image/ImageChunk/PatchChunk declaration into header filesTianjie Xu2017-08-191-278/+0
| | | | | | | | | 1. Move the declaration of the Image classes to the header file to make testing easier. 2. Also move rangeset.h to bootable/recovery to allow access in imgdiff. Test: recovery component test Change-Id: I68a863e60a3f2e7ae46ee48f48eb15391f5f4330
* Add implemention of SortedRangeSetTianjie Xu2017-08-011-1/+115
| | | | | | | | | This is useful in imgdiff to maintain the block ranges of splitted source image. Bug: 34220646 Test: mma && unit tests pass Change-Id: I6427f2ea50f0e3b0aa3dd01880ec0206679b7429
* Change the internal representation in RangeSet.Tao Bao2017-04-031-28/+97
| | | | | | | | | | | | | | This CL makes the following changes to RangeSet: - Uses std::pair<size_t, size_t> to represent a Range; - Uses std::vector<Range> to represent a RangeSet; - Provides const iterators (forward and reverse); - Provides const accessor; - 'blocks()' returns the number of blocks (formerly 'size'); - 'size()' returns the number of Range's (formerly 'count'). Test: recovery_unit_test Test: Apply an incremental update with the new updater. Change-Id: Ia1fbb343370a152e1f7aa050cf914c2da09b1396
* Move parse_range() and range_overlaps() into RangeSet.Tao Bao2017-03-311-0/+95
| | | | | | | | | | | | | | | Also move RangeSet into a header file to make it testable, and add unit tests. In RangeSet::Parse() (the former parse_range()), use libbase logging to do assertions. This has the same effect as the previous exit(EXIT_FAILURE) to terminate the updater process and abort an update. The difference lies in the exit status code (i.e. WEXITSTATUS(status) in install.cpp), which changes from 1 (i.e. EXIT_FAILURE) to 0. Test: recovery_unit_test Test: Apply an incremental update with the new updater. Change-Id: Ie8393c78b0d8ae0fd5f0ca0646d871308d71fff0
* Replace minzip with libziparchiveTianjie Xu2016-10-181-2/+2
| | | | | | | | | | | Clean up the duplicated codes that handle the zip files in bootable/recovery; and rename the library of the remaining utility functions to libotautil. Test: Update package installed successfully on angler. Bug: 19472796 Change-Id: Iea8962fcf3004473cb0322b6bb3a9ea3ca7f679e
* Refactor libupdater into a seperate module.Tao Bao2016-10-113-0/+85
So that we can write native tests for updater functions. This CL adds a testcase for getprop() function. Test: mmma bootable/recovery; Run recovery_component_test on device. Change-Id: Iff4c1ff63c5c71aded2f9686fed6b71cc298c228