aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Detect interrupted update due to power offTianjie Xu2017-11-301-268/+297
| | | | | | | | | | | An interrupted update may stash extra blocks in /cache, leading to a failure when checking the cache size. We can save the incremented retry_count in the BCB before installing the update; and distinguish a fresh update from an interrupted one this way. Bug: 68679601 Test: An interrupted update reapplies successfully. Change-Id: Ic1403e1fd25a937c91ef34c14b92a0f6c8f1c0f4
* Drop -Wno-unused-parameter.Tao Bao2017-10-111-11/+10
| | | | | | | The only one left is libedify. Will handle that in a separate CL. Test: mmma bootable/recovery Change-Id: I732a5f85229da90fd767bee2e46c5c95f529c396
* Revert "Revert "Move error_code.h into otautil.""Tao Bao2017-10-091-1/+1
| | | | | | | | | | | | | | | | This reverts commit 26436d6d6010d5323349af7e119ff8f34f85c40c to re-land "Move error_code.h into otautil.". This way it stops requiring relative path ".." in LOCAL_C_INCLUDES (uncrypt and edify). Soong doesn't accept non-local ".." in "local_include_dirs". This CL needs to land with device-specific module changes (e.g. adding the dependency on libotautil). Test: lunch aosp_{angler,bullhead,dragon,fugu,sailfish}-userdebug; mmma bootable/recovery Change-Id: If193241801af2dae73eccd31ce57cd2b81c9fd96
* Revert "Move error_code.h into otautil."Tao Bao2017-10-051-1/+1
| | | | | | | | This reverts commit 623fe7e701d5d0fb17082d1ced14498af1b44e5b. Reason for revert: Need to address device-specific modules. Change-Id: Ib7a4191e7f193dfff49b02d3de76dda856800251
* Move error_code.h into otautil.Tao Bao2017-10-041-1/+1
| | | | | | | | | This way it stops requiring relative path ".." in LOCAL_C_INCLUDES (uncrypt and edify). Soong doesn't accept non-local ".." in "local_include_dirs". Test: mmma bootable/recovery Change-Id: Ia4649789cef2aaeb2785483660e9ea5a8b389c62
* roots: Fix an issue with volume_for_path().Tao Bao2017-10-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The earlier commit in 2dfc1a38982c4052bb32bc7fc06edeadf3908fb9 unintentionally changed the behavior. It gives a different result when looking up non-existent mount points (e.g. /cache on marlin). The logic behind volume_for_path("/xyz") is unclear: - It's fine to return non-null value if it's called by ensure_path_mounted() before accessing that file "/xyz". (Just based on the function name, we're not actually having this case.) - It should return nullptr if the caller is interested in the existence of that particular mount point "/xyz". This CL renames the function to volume_for_mount_point(), which does an exact match by querying the given mount point from libfs_mgr. The former volume_for_path() has been moved down to function scope for serving ensure_path_mounted() only. Test: Build and boot into recovery on bullhead and marlin respectively. 'View recovery logs'. Test: 'Mount /system' Test: 'Apply update from ADB' Change-Id: I1a16390f57540cae08a2b8f3d439d17886975217
* Add a new option in recovery menu to test the background textsTianjie Xu2017-09-271-0/+5
| | | | | | | | | | | | Add a new option "Run locale test" to check the background text images (i.e. texts for "erasing", "error", "no_command" and "installing" with different locales.) Use volume up/down button to cycle through all the locales embedded in the png file, and power button to go back to recovery main menu. Test: Run locale test with bullhead. Change-Id: Ib16e119f372110cdb5e611ef497b0f9b9b418f51
* Remove EXPAND/STRINGIFY macros.Tao Bao2017-09-131-1/+5
| | | | | | | | | | | | | | | | | | | This reverts commit 8be0f39fec7f26164fd0791ff6d15bde65fc849c to reland the change that removes EXPAND/STRINGIFY macros. It's error-prone by putting anything into a string (e.g. EXPAND(RECOVERY_API_VERSION) would become "RECOVER_API_VERSION" if we forgot to pass -DRECOVERY_API_VERSION=3). The initial attempt put RECOVERY_API_VERSION into common.h, which might be included by device-specific codes but without defining that when compiling the module. This CL avoids the issue by using a constant in the header, with a static_assert in recovery.cpp that guards the consistency. Test: recovery_component_test Test: Sideload OTAs on bullhead and sailfish respectively. Change-Id: I12af3f73392a85554ba703f04970ec9d984ccbaa
* Merge "screen_ui: Word-wrap menu headers."Tao Bao2017-08-161-4/+5
|\ | | | | | | | | | | am: 162b92323b Change-Id: I93c959422c5b56a15875580159ecfc1a1d44087d
| * screen_ui: Word-wrap menu headers.Tao Bao2017-08-151-4/+5
| | | | | | | | | | | | | | | | | | | | | | This CL adds ScreenRecoveryUI::DrawWrappedTextLines() to better handle long menu header texts. It does a word wrap at spaces, if available. This avoids fixed-length menu headers being truncated on small screens. Bug: 64293520 Test: On bullhead, boot into recovery with --prompt_and_wipe_data, and check the prompt texts. Change-Id: Ia22746583516dd230567a267584aca558429395e
* | Merge "otautil: Clean up dirCreateHierarchy()."Tao Bao2017-07-301-13/+13
|\| | | | | | | | | | | am: 610712101b Change-Id: I95350c4b2aab36dd89ea7813f2eb63d407b5f8ac
| * otautil: Clean up dirCreateHierarchy().Tao Bao2017-07-271-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | - Changed to std::string based implementation (mostly moved from the former make_parents() in updater/install.cpp); - Removed the timestamp parameter, which is only neeed by file-based OTA; - Changed the type of mode from int to mode_t; - Renamed dirCreateHierarchy() to mkdir_recursively(). Test: recovery_unit_test passes. Test: No external user of dirCreateHierarchy() in code search. Change-Id: I71f8c4b29bab625513bbc3af6d0d1ecdc3a2719a
* | Merge "recovery: Fix the flickering when turning on text mode."Tao Bao2017-07-251-9/+8
|\| | | | | | | | | | | am: 771dfb0016 Change-Id: Ic85356b782c6b83725d85f2104fb30fc81ad2ed1
| * recovery: Fix the flickering when turning on text mode.Tao Bao2017-07-251-9/+8
| | | | | | | | | | | | | | | | | | | | | | | | When there's no command specified when booting into debuggable builds (such as using `adb reboot recovery`), we turn on the text mode (i.e. recovery menu) directly. This CL fixes the issue to avoid showing the background image in a flash while turning on the text mode. Bug: 63985334 Test: `fastboot boot $OUT/recovery.img` and it shows the recovery menu directly without the no command image in a flash. Change-Id: Id86bbe346ab76c8defc95e2b423e695a86774b09
* | Merge "Avoid crashing recovery with unwritable /cache."Tao Bao2017-07-211-25/+23
|\| | | | | | | | | | | am: 9187f1cc51 Change-Id: Ie5708c2f703aefbfcad85ad0d2d24ae36b725c78
| * Avoid crashing recovery with unwritable /cache.Tao Bao2017-07-211-25/+23
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When /cache is unwritable, recovery hits a crash loop. Because it passes nullptr to fileno(3) when writing back the locale file. This prevents user from recovering a device - it cannot boot far enough to recovery menu which allows wiping /cache. Bug: 63927337 Test: Corrupt /cache and boot into recovery on bullhead: 1. m -j recoveryimage 2. fastboot erase cache 3. fastboot boot $OUT/recovery.img 4. recovery menu shows up. Change-Id: I1407743f802049eb48add56a36298b665cb86139
* | Merge "Fix the android-cloexec-* warnings in bootable/recovery"Tianjie Xu2017-07-191-24/+24
|\| | | | | | | | | | | am: 94a8ea1797 Change-Id: I57ae57bab58f603540654bb24df9facca9a7d625
| * Fix the android-cloexec-* warnings in bootable/recoveryTianjie Xu2017-07-191-24/+24
| | | | | | | | | | | | | | | | Add the O_CLOEXEC or 'e' accordingly. Bug: 63510015 Test: recovery tests pass Change-Id: I7094bcc6af22c9687eb535116b2ca6a59178b303
* | Fix "No file_contexts" warningJeff Vander Stoep2017-06-151-6/+3
|\ \ | |/ |/| | | | | | | am: e35926e1af Change-Id: Ia050561286c30d8198f3185da9e3cd31372b1d79
| * Fix "No file_contexts" warningJeff Vander Stoep2017-06-151-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | Fixed by Loading the file_contexts specified in libselinux, whereas previously recovery loaded /file_contexts which no longer exists. Bug: 62587423 Test: build and flash recovery on Angler. Warning is gone. Test: Wipe data and cache. Test: sideload OTA Change-Id: I11581c878b860ac5f412e6e8e7acde811f37870f (cherry picked from commit 2330dd8733ce0b207058e3003a3b1efebc022394)
| * Fix the input parameter for "set_retry_bootloader_message"Tianjie Xu2017-05-171-13/+13
| | | | | | | | | | | | | | | | | | | | We're not updating argc & argv during get_args(), so some boot arguments missed when we set the boot message for retry. Bug: 38383406 Test: boot command sets correctly during retry attempt. Change-Id: Ie8583a22fad5e0084245e3431d4018518d508dfd (cherry picked from commit 72449c9f995649b1427b2116985ed9826a141d46)
| * Adding support for quiescent reboot to recoveryDmitri Plotnikov2017-04-271-6/+20
| | | | | | | | | | | | | | | | | | Bug: 37401320 Test: build and push OTA and hit adb reboot recovery,quiescent. The screen should remain off throughout the upgrade process. (cherry picked from commit 8706a98aa635236a95795f0a0c122bb3e591a50d) Change-Id: I79789a151f6faafda8ecc6198c2182cc2a91da70
| * Merge "Add the missing sr-Latn into png files and rename the png locale ↵Tianjie Xu2017-03-281-1/+1
| | | | | | | | | | | | | | | | | | header" am: 713d915636 am: dc235b5ab9 am: 5ec12126f0 Change-Id: Ia6b861c91958d3be23a4a7456d6d5d8e4a1607c8 (cherry picked from commit 9166f66eee883d6d6cc280a6c355e5528bb4a3f0)
* | Retry the update if ApplyBSDiffPatch | ApplyImagePatch failsTianjie Xu2017-05-231-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We have seen one case when bspatch failed likely due to patch corruption. Since the package has passed verification before, we want to reboot and retry the patch command again since there's no alternative for users. We won't delete the stash before reboot, and the src has passed SHA1 check. If there's an error on the patch, it will fail the package verification during retry. Bug: 37855643 Test: angler reboots and retries the update when bspatch fails. Change-Id: I2ebac9621bd1f0649bb301b9a28a0dd079ed4e1d
* | Fix the input parameter for "set_retry_bootloader_message"Tianjie Xu2017-05-171-13/+13
| | | | | | | | | | | | | | | | | | We're not updating argc & argv during get_args(), so some boot arguments missed when we set the boot message for retry. Bug: 38383406 Test: boot command sets correctly during retry attempt. Change-Id: Ie8583a22fad5e0084245e3431d4018518d508dfd
* | Revert "Remove EXPAND/STRINGIFY macros."Tao Bao2017-05-031-1/+1
| | | | | | | | | | | | | | | | | | | | This reverts commit ec9706738f35a859f66fd0758b73381055804f63. Reason for revert: It's not a good idea to put RECOVERY_API_VERSION in common.h, which might be included by device-specific codes (but with RECOVERY_API_VERSION undefined). Change-Id: I9feb9c64a5af3e9165164622a59b043aa28a8b8c
* | Remove EXPAND/STRINGIFY macros.Tao Bao2017-05-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | They are error-prone by putting anything into a string (e.g. EXPAND(RECOVERY_API_VERSION) would become "RECOVER_API_VERSION" if we forgot to pass -DRECOVERY_API_VERSION=3). RECOVERY_API_VERSION is the only user (in bootable/recovery) that gets stringified. Assign it to a typed var and sanity check the value. Don't see other reference to the macros from device-specific recovery directories (they can still define that locally if really needed). Test: recovery_component_test Test: Sideload an OTA on angler and marlin respectively. Change-Id: I358bbdf8f0a99db5ce4c7bc2fdcafe8013501b64
* | adb_install: Stop passing RecoveryUI as a parameter.Tao Bao2017-05-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | It's already a global declared in common.h which is included by adb_install.cpp. Remove '#include "minadbd/fuse_adb_provider.h"' that's not needed by adb_install.cpp (minadbd takes care of that). Test: mmma bootable/recovery Change-Id: I6d08b7abc706b4b05de2ef46a57ced2204ad297e
* | Merge "Adding support for quiescent reboot to recovery"Treehugger Robot2017-04-271-6/+20
|\ \
| * | Adding support for quiescent reboot to recoveryDmitri Plotnikov2017-04-191-6/+20
| | | | | | | | | | | | | | | | | | Bug: 37401320 Test: build and push OTA and hit adb reboot recovery,quiescent. The screen should remain off throughout the upgrade process. Change-Id: Ibed3795c09e26c4fa73684d40b94e40c78394d3f
* | | recovery: Remove the include of adb.h.Tao Bao2017-04-241-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | recovery.cpp doesn't have a direct dependency on adb.h (only minadbd does). 'adb.h' was once needed for DEFAULT_ADB_PORT, until being killed by commit acb2a2fa4c415944a27539461ba3757f3edbb128. Test: mmma bootable/recovery Change-Id: I84f87988d01c3f0c3d1383cc3cffde2e7d5e7aea
* | | Reboot the device on user build after the install failsTianjie Xu2017-04-211-4/+12
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Users can't do much after the install fails with the device showing "error" under recovery. So our best choice is to reboot the device since sometimes the system image is still bootable (i.e. on package verification failure). At worst the device would stuck in a boot loop where the users need the same professional knowledge to recover as before. Behaviors after installation failure (including data wipe): If recovery text is visible: No change. If recovery text is not visible: Old behavior: Wait under "error" screen. Reboot after UI timeout (120s) if not connected to usb charger. New behavior: Wait for 5s (shortens from the 120s timeout) under "error" screen and reboot (w or w/o charger). sideload-auto-reboot (only available for userdebug): Old behavior: Reboot immediately after installation failure. New behavior: Wait for 5s under "error" screen and reboot. Bug: 35386985 Test: On angler user, device auto reboots 5s after a failing OTA. Change-Id: I3ff0ead86e2ccec9445d6a2865bc2c463855f23c
* | Merge "Add the missing sr-Latn into png files and rename the png locale header"Tianjie Xu2017-03-281-1/+1
|\ \ | |/ |/|
| * Add the missing sr-Latn into png files and rename the png locale headerTianjie Xu2017-03-241-1/+1
| | | | | | | | | | | | | | | | | | | | | | Switch the locale header in the png files from Locale.toString() to Locale.toLanguageTag(). For example, en_US --> en-us and sr__#Latn --> sr-Latn. Also clean up recovery a bit to expect the new locale format. Bug: 35215015 Test: sr-Latn shows correctly under graphic tests && recovery tests pass Change-Id: Ic62bab7756cdc6e5f98f26076f7c2dd046f811db
* | Merge "Fix the wrong parameter when calling read_metadata_from_package()."Tao Bao2017-03-241-37/+35
|\ \
| * | Fix the wrong parameter when calling read_metadata_from_package().Tao Bao2017-03-241-37/+35
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | The call to read_metadata_from_package() is broken due to being passed an invalid pointer (ZipArchiveHandle vs ZipArchiveHandle*). It's introduced when switching from minzip to libziparchive. Compiler didn't complain, because ZipArchiveHandle is typedef'd as void*, which legitly accepts a void**. Also clean up secure_wipe_partition() logs a bit by using android-base logging. Bug: 36427762 Test: Send a wipe package. Change-Id: I791a0f09a066f1c257dae890e7ae13d02a02e78b
* / Reword the wipe warning message to be more comprehensible.Paul Crowley2017-03-231-4/+6
|/ | | | | | Test: My device was crashing anyway, so observed message on crash. Bug: 34669779 Change-Id: Ib85d1d137139f5e14f735c972c2312acce2caf5f
* recovery: Replace the hard-coded 1000 with AID_SYSTEM.Tao Bao2017-03-221-2/+3
| | | | | Test: mmma bootable/recovery Change-Id: Icea5bd91a976957e8b6ab46e367345ff69a53ca4
* recovery: Fix the FIXME in get_menu_selection().Tao Bao2017-03-071-99/+94
| | | | | | | | | | | | | | It used to return a REBOOT action on timeout, until the CL in commit daefc1d442fb421606680feb9aeb59c133f4c427 that redefined the return value of get_menu_selection() (changing from action to a menu index). Prior to this CL, it was returning 0 (i.e. the value of Device::REBOOT) to trigger the reboot. This CL specifies a return value of -1 to indicate the timeout. Test: Boot into a user build recovery; it reboots automatically on timeout (120 sec). Change-Id: I4aedb7a4628bf258017078fe73eb8b48a21d0ea8
* recovery: Move a few int to bool.Tao Bao2017-03-071-67/+68
| | | | | | | | | | Most of the changes are trivial. Also update a dead reference to device_handle_key() in device.h comment, and add some comments to get_menu_selection() function. Test: `mmma bootable/recovery` Change-Id: I59ef9213ec88ab35c0e7b8a7813ccf9c56dbd5c5
* Merge "recovery: Drop the "--stages" / '-g' argument."Tao Bao2017-03-071-13/+4
|\
| * recovery: Drop the "--stages" / '-g' argument.Tao Bao2017-03-071-13/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | This was introduced in commit c87bab101893e8322b49d7c8600e3367b20ab50a. But the stage info should be passed through BCB only (there's a dedicated field in struct bootloader_message). This CL removes it from recovery arguments, and also moves 'stage' variable to std::string. Test: 'stage' variable is not used by any device-specific recovery code. Test: Code search shows no hit of '--stages' use. Change-Id: Iccbde578a13255f2b55dd4a928e9ecf487f16b97
* | Merge "recovery: Add SetStage() into 'Run graphics test'."Tao Bao2017-03-071-25/+37
|\ \
| * | recovery: Add SetStage() into 'Run graphics test'.Tao Bao2017-03-071-25/+37
| |/ | | | | | | | | | | | | | | This allows a quicker test for stage UI. Bug: 27804510 Test: 'Run graphices test' with the new recovery image. Change-Id: I47689ae8e4cac6d7e5d1f6a10b9e393d50d713f3
* / recovery: Minor clean up to choose_recovery_file().Tao Bao2017-03-071-51/+35
|/ | | | | Test: 'View recovery logs' on bullhead and sailfish. Change-Id: I53272b121e3e55e6fe4c77b71e3c2e819e72cb64
* recovery: Remember the last log position.Tao Bao2017-02-281-1/+2
| | | | | | | After reading one log entry, it should stay at the same menu position. Test: 'View recovery logs' -> Read -> Exit Change-Id: I4b579be4c2fe1e3a1dcc4873e128fd0b2d619ba3
* recovery: Don't show "No /cache partition found" on screen.Tao Bao2017-02-241-1/+0
| | | | | | | People have been confused by the message and thought that's an error. Test: Boot recovery on sailfish; choose 'View recovery logs'. Change-Id: I2c540f18d6493c1a129233d10ecbc96823dd3601
* recovery: Clean up browse_directory().Tao Bao2017-02-101-92/+55
| | | | | | | | | | Get rid of the malloc/realloc/free'd menus. browse_directory() will only be called on devices with SD card. Tested the CL by temporarily setting SDCARD_ROOT to a different location. Test: See above. Change-Id: I935e1bf4bad0273e3dff87fa2536924f1219adb5
* Replace _exit(-1) with _exit(EXIT_FAILURE).Tao Bao2017-02-031-3/+3
| | | | | | | | | -1 is not a valid exit status. Also replace a few exit(1) with exit(EXIT_FAILURE). Test: mmma bootable/recovery Change-Id: I4596c8328b770bf95acccc06a4401bd5cabd4bfd
* recovery: Move property_get() to android::base::GetProperty().Tao Bao2017-01-131-14/+12
| | | | | | | | Test: Apply two A/B incremental OTAs with the new recovery image. The one with incorrect pre-build should be blocked, while the other works fine. Change-Id: I94d97eb8798599da1630f66343fb603e87464187