summaryrefslogtreecommitdiffstats
path: root/edify (unfollow)
Commit message (Collapse)AuthorFilesLines
2017-03-22Remove malloc in edify functionsTianjie Xu4-129/+153
And switch them to std::vector & std::unique_ptr Bug: 32117870 Test: recovery tests passed on sailfish Change-Id: I5a45951c4bdf895be311d6d760e52e7a1b0798c3
2016-11-01Cleanup ReadArgs & ReadValueArgs usageTianjie Xu2-135/+13
ReadArgs will switch to using std::string and std::unique_ptr. Also cleanup the callers. Test: mma & component test passed. Change-Id: I4724406ae6c0c134a27bbd1cdd24ad5d343b2a3b
2016-10-15Change StringValue to use std::stringTianjie Xu3-173/+205
Changing the field of 'Value' in edify to std::string from char*. Meanwhile cleaning up the users of 'Value' and switching them to cpp style. Test: compontent tests passed. Bug: 31713288 Change-Id: Iec5a7d601b1e4ca40935bf1c70d325dafecec235
2016-10-13edify: Some clean-ups to libedify.Tao Bao5-91/+47
- Remove dead declarations in expr.h: SetError(), GetError(), ClearError(). - Remove the declaration of Build() out of expr.h. - Use std::unordered_map to implement RegisterFunction() and FindFunction(); kill FinishRegistration(). - Add a testcase for calling unknown functions. Test: mmma bootable/recovery; recovery_component_test passes. Change-Id: I9af6825ae677f92b22d716a4a5682f58522af03b
2016-10-04edify: Move State.script and State.errmsg to std::string.Tao Bao3-60/+37
This way we kill a few strdup() and free() calls. Test: 1. recovery_component_test still passes; 2. Applying an update with the new updater works; 3. The error code in a script with abort("E310: xyz") is recorded into last_install correctly. Change-Id: Ibda4da5937346e058a0d7cc81764d6f02920010a
2016-10-04edify: Move the testcases to gtest.Tao Bao3-227/+109
Now they live in tests/component/edify_test.cpp. Also rename edify/main.cpp to edify/edify_parser.cpp. It becomes a host-side debugging tool that validates the input edify script. However, it supports edify builtin functions only and doesn't recognize the ones defined via updater. Test: recovery_component_test passes on device. Change-Id: Ib94a787bf15098a9cc078d256b6a6dc96ff12b2e
2016-09-30Turn on -Werror for recoveryTianjie Xu1-0/+2
Also remove the 0xff comparison when validating the bootloader message fields. As the fields won't be erased to 0xff after we remove the MTD support. Bug: 28202046 Test: The recovery folder compiles for aosp_x86-eng Change-Id: Ibb30ea1b2b28676fb08c7e92a1e5f7b6ef3247ab (cherry picked from commit 7aa88748f6ec4e53333d1a15747bc44826ccc410)
2016-09-30Turn on -Werror for recoveryTianjie Xu1-0/+2
Also remove the 0xff comparison when validating the bootloader message fields. As the fields won't be erased to 0xff after we remove the MTD support. Bug: 28202046 Test: The recovery folder compiles for aosp_x86-eng Change-Id: Ibb30ea1b2b28676fb08c7e92a1e5f7b6ef3247ab
2016-06-03Call ioctl before each write on retryTianjie Xu1-0/+2
If the update is a retry, ioctl(BLKDISCARD) the destination blocks before writing to these blocks. Bug: 28990135 Change-Id: I1e703808e68ebb1292cd66afd76be8fd6946ee59
2016-05-20Allow recovery to return error codesTianjie Xu3-11/+50
Write error code, cause code, and retry count into last_install. So we can have more information about the reason of a failed OTA. Example of new last_install: @/cache/recovery/block.map package name 0 install result retry: 1 retry count (new) error: 30 error code (new) cause: 12 error cause (new) Details in: go/android-ota-errorcode Bug: 28471955 Change-Id: I00e7153c821e7355c1be81a86c7f228108f3dc37
2016-04-18Fix google-runtime-int warnings.Chih-Hung Hsieh1-3/+4
Bug: 28220065 Change-Id: Ida199c66692a1638be6990d583d2ed42583fb592
2016-01-27edify: accept long string literal.Yabin Cui2-13/+16
Bug: 24717917 Change-Id: I134cf00ae7efbc3703f976459a1b9f9a197e495d
2016-01-13Rename .l/.y to .ll/.yyYing Wang3-2/+2
Now to generate .cpp you need to use .ll/.yy. Bug: 26492989 Change-Id: Ib078e03b3b0758f7a62595c343e52ae856bcb33f
2016-01-12Rename .l/.y to .ll/.yyYing Wang3-2/+2
Now to generate .cpp you need to use .ll/.yy. Bug: 26492989 Change-Id: Ib078e03b3b0758f7a62595c343e52ae856bcb33f
2015-11-16recovery: Switch to clangTao Bao1-0/+2
And a few trival fixes to suppress warnings. Change-Id: Id28e3581aaca4bda59826afa80c0c1cdfb0442fc (cherry picked from commit 80e46e08de5f65702fa7f7cd3ef83f905d919bbc)
2015-08-20edify: Switch to C++.Tao Bao5-37/+27
Change-Id: I71aede6e29af1dc4bb858a62016c8035db5d3452
2015-08-08Use CPPFLAGS instead of CFLAGS.Dan Albert1-4/+4
While we build these as C, to the build system they are technically C++ and are subject to the global CPPFLAGS. Set LOCAL_CPPFLAGS here instead of LOCAL_CFLAGS so we can be sure we override anything provided by the build system. Bug: http://b/23043421 Change-Id: I344b54ae4ff9f142365a42c33ba160c1be17a342
2015-06-03recovery: Switch to clangTao Bao1-0/+2
And a few trival fixes to suppress warnings. Change-Id: I38734b5f4434643e85feab25f4807b46a45d8d65
2014-12-18Remove an uninitialized value.Dan Albert1-2/+1
The assignment of this value was removed in 0d32f25, but the declaration was still there and still tested. Clang issues a warning for this. Change-Id: I748bfb8b4f78ceed1c1b5b1bb80cb4e873e4facc
2014-11-20Global C++11 compatibility.Dan Albert1-3/+4
Our build system compiles flex/bison as C++ rather than C, but a few projects add `-x c` to their flags, forcing the compiler to compile them as C. This causes the compiler to reject the global C++ standard flag, so we need to explicitly provide a C standard flag to override it. Bug: 18466763 Change-Id: Id68ad9317261ed4d857a949b07288bd137ff6303
2014-02-14clean up some warnings when building recoveryDoug Zongker5-7/+15
Change-Id: I1541534ee6978ddf8d548433986679ce9507d508
2013-07-09recovery: move log output to stdoutDoug Zongker2-7/+7
Recovery currently has a random mix of messages printed to stdout and messages printed to stderr, which can make logs hard to read. Move everything to stdout. Change-Id: Ie33bd4a9e1272e731302569cdec918e0534c48a6
2012-04-12minor recovery changesDoug Zongker2-2/+10
- add the --just_exit option to make recovery exit normally without doing anything - make it possible to build updater extensions in C++ - add the clear_display command so that the updater binary can request recovery switch to the NONE background UI These are all used to support the notion of using OTA as a factory reflash mechanism. Change-Id: Ib00d1cbf540feff38f52a61a2cf198915b48488c
2010-02-25make StringValue wrapper okay to call on NULLDoug Zongker1-0/+1
The docs say "don't do this", but it's trivial to make safe. Make StringValue(NULL) return NULL instead of crashing. Change-Id: I2221bcb4c98d8adb4e25c764d7bdcfa787822bcf
2010-02-23refactor applypatch and friendsDoug Zongker2-1/+4
Change the applypatch function to take meaningful arguments instead of argc and argv. Move all the parsing of arguments into main.c (for the standalone binary) and into install.c (for the updater function). applypatch() takes patches as Value objects, so we can pass in blobs extracted from the package without ever writing them to temp files. The patching code is changed to read the patch from memory instead of a file. A bunch of compiler warnings (mostly about signed vs unsigned types) are fixed. Support for the IMGDIFF1 format is dropped. (We've been generating IMGDIFF2 packages for some time now.) Change-Id: I217563c500012750f27110db821928a06211323f
2010-02-20add missing includes to fix mac build (maybe)Doug Zongker2-0/+4
Change-Id: Id2712940c4929f3a8b3ba5d4e9e03bb8034747ee
2010-02-18relocate applypatch; add type system and new functions to edifyDoug Zongker2-60/+166
- Move applypatch to this package (from build). - Add a rudimentary type system to edify: instead of just returning a char*, functions now return a Value*, which is a struct that can carry different types of value (currently just STRING and BLOB). Convert all functions to this new scheme. - Change the one-argument form of package_extract_file to return a Value of the new BLOB type. - Add read_file() to load a local file and return a blob, and sha1_check() to test a blob (or string) against a set of possible sha1s. read_file() uses the file-loading code from applypatch so it can read MTD partitions as well. This is the start of better integration between applypatch and the rest of edify. b/2361316 - VZW Issue PP628: Continuous reset to Droid logo: framework-res.apk update failed (CR LIBtt59130) Change-Id: Ibd038074749a4d515de1f115c498c6c589ee91e5
2010-02-18Filename check and free allocated stringsKenny Root2-0/+7
Make sure file is valid before we try to read it. Also free all the strings we allocate in various functions so we don't leak memory. Change-Id: Ica3c8dae992e73718c79c12ff5d7e315c290caea
2009-06-18add file_getprop() to updaterDoug Zongker2-0/+17
Add a function to read a property from a ".prop"-formatted file (key=value pairs, one per line, ignore # comment lines and blank lines). Move ErrorAbort to the core of edify; it's not specific to updater now that errors aren't stored in the app cookie.
2009-06-13add less_than_int, greater_than_int to edifyDoug Zongker2-0/+63
Add functions less_than_int() and greater_than_int() that interpret their args as ints and do the comparison. ("<" and ">" operators, if implemented, should do string comparison.) This lets us do the build time check currently done by the check_prereq binary.
2009-06-12fixes to edify and updater scriptDoug Zongker6-442/+540
A few more changes to edify: - fix write_raw_image(); my last change neglected to close the write context, so the written image was corrupt. - each expression tracks the span of the source code from which it was compiled, so that assert()'s error message can include the source of the expression that failed. - the 'cookie' argument to each Function is replaced with a State object, which contains the cookie, the source script (for use with the above spans), and the current error message (replacing the global variables that were used for this purpose). - in the recovery image, a new command "ui_print" can be sent back through the command pipe to cause text to appear on the screen. Add a new ui_print() function to print things from scripts. Rename existing "print" function to "stdout".
2009-06-12edify extensions for OTA package installation, part 2Doug Zongker3-8/+11
Adds more edify functions for OTAs: is_mounted getprop apply_patch apply_patch_check apply_patch_space write_raw_image write_firmware_image package_extract_file This allows us to install radios, hboots, boot images, and install incremental OTA packages. Fixes a couple of dumb bugs in edify itself: - we were doubling the size of the function table each time it was *not* full, rather than each time it was full - "no such function" errors weren't visible to the parser, so they didn't prevent execution of the script.
2009-06-12edify extensions for OTA package installation, part 1Doug Zongker6-12/+136
Adds the following edify functions: mount unmount format show_progress delete delete_recursive package_extract symlink set_perm set_perm_recursive This set is enough to extract and install the system part of a (full) OTA package. Adds the updater binary that extracts an edify script from the OTA package and then executes it. Minor changes to the edify core (adds a sleep() builtin for debugging, adds "." to the set of characters that can appear in an unquoted string).
2009-06-10core of edify, an eventual replacement for amendDoug Zongker7-0/+889
Edify is a simple scripting language for OTA installation, to be used when we move to OTAs being installed via binaries shipped with the package.