From: Reichel Andreas <[email protected]> Differences to last RFC: * use ln -f in first commit * build tests always, use make check to run them * env backends: remove logic from configure.ac, let linker handle conflicts * Use journal in bg_setenv tool instead of a temporary env, i.e. store actions instead of a differential state.
In this patch series the following is adressed: * When building and the link `bg_printenv` already exists, an error is produced. Fix that. * To maintain continuous tests, tests are compiled by default. To run the tests, use `make check`. * For better usability, `bg_setenv`'s parameter -f was changed from `--file` to `--filepath` and now accepts a path, where `BGENV.DAT` is created so that it can be directly applied to the real environment location. Also, internal logic was changed to work with a journal of actions to perform instead of a temporary environment as a differential state. * The environment API consisted of two static libraries of which one was used by the tools and one was for external applications. This API was refactored to one library only and also with respect to better file naming. FAT implementation specific stuff goes into env_api_fat.c and generic stuff into env_api.c. * The option for different environment storage backends is given by the configure option --with-env-type, which currently only supports FAT. * The number of environment partitions is now configurable with --with-num-config-parts, where the minimum amount is 1. * The complicated mapping between `boot_once` and `testing` flags and `ustate` is removed and a real `ustate` struct member is introduced. This significantly improves API usage as only two functions `set_global_state` and `get_global_state` are needed to get the update status instead of six different functions with a specific order. * Add support for user variables. From the API the user can insert all kind of binary data into the environment by defining user specific types, stored as `char *`. It is completely up to the user to interpret the stored data. From the tools side, a standard data type is defined as String and stores `char *` character arrays into the user variable space of the environment. Single variables can be set via `bg_setenv -x KEY=VAL`, where the -x option can be repeated multiple times. `bg_printenv` shows a list of all set user variables and prints their values if their type is of `String`. Variables can be deleted by omitting `VAL`. * Fix a problem with crc32 testing of environment tools: When the tools are compiled for a different size of user variable space, the position of the crc32 value changes. If it is not read correctly, tools must reinitialize the working copy of the environment to remain usable. * Documentation is updated. * Tests are updated. * docs/TODO.md is updated. Signed-off-by: Andreas Reichel <[email protected]> Reichel Andreas (12): Makefile.am: Bugfix for bg_printenv symlink tests: Build tests always, run tests on 'make check' bg_setenv: Specify output path with --filepath env: Rename environment API files env: Make backend for environment storage configurable env: Make number of config partitions configurable ustate: Refactor state variable swupdate-adapter: Simplify API Combine libraries to one API env_api_fat: Fix problem with crc32 testing env: Add user variables bg_setenv: Use task list instead of virtual environment Makefile.am | 40 +-- configure.ac | 59 +++- docs/COMPILE.md | 6 +- docs/TODO.md | 24 -- docs/TOOLS.md | 16 +- docs/UPDATE.md | 35 ++- docs/USAGE.md | 12 +- env/env_api.c | 217 +++++++++++++++ tools/bg_utils.c => env/env_api_fat.c | 349 ++++++++++++++++-------- env/fatvars.c | 54 ++-- env/uservars.c | 266 ++++++++++++++++++ include/ebgdefs.h | 20 -- include/ebgenv.h | 93 +++++++ {tools => include}/ebgpart.h | 0 tools/bg_utils.h => include/env_api.h | 44 ++- include/envdata.h | 16 +- {tools => include}/test-interface.h | 2 +- include/uservars.h | 37 +++ swupdate-adapter/ebgenv.c | 458 ------------------------------- swupdate-adapter/ebgenv.h | 90 ------- swupdate-adapter/swupdate.md | 216 +-------------- tools/bg_setenv.c | 494 ++++++++++++++++++++++------------ tools/tests/Makefile | 43 +-- tools/tests/test_api.c | 222 +++++++++++---- tools/tests/test_environment.c | 7 +- tools/tests/test_partitions.c | 42 +-- 26 files changed, 1566 insertions(+), 1296 deletions(-) create mode 100644 env/env_api.c rename tools/bg_utils.c => env/env_api_fat.c (57%) create mode 100644 env/uservars.c delete mode 100644 include/ebgdefs.h create mode 100644 include/ebgenv.h rename {tools => include}/ebgpart.h (100%) rename tools/bg_utils.h => include/env_api.h (58%) rename {tools => include}/test-interface.h (96%) create mode 100644 include/uservars.h delete mode 100644 swupdate-adapter/ebgenv.c delete mode 100644 swupdate-adapter/ebgenv.h -- 2.14.1 -- You received this message because you are subscribed to the Google Groups "EFI Boot Guard" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/efibootguard-dev/20170901153549.11204-1-andreas.reichel.ext%40siemens.com. For more options, visit https://groups.google.com/d/optout.
