At present U-Boot environment variables, and thus scripts, are defined by CONFIG_EXTRA_ENV_SETTINGS. It is painful to add large amounts of text to this file and dealing with quoting and newlines is harder than it should be. It would be better if we could just type the script into a text file and have it included by U-Boot.
This series adds a feature that brings in a .env file associated with the board config, if present. To use it, create a file in a board/<vendor>/env directory called <board>.env (or common.env if you want the same environment for all boards for that vendor). The environment variables should be of the form "var=value". Values can extend to multiple lines. See the README under 'Environment Variables:' for more information and an example. After discussion on the mailing list the .emv file was moved from include/configs to board/. See here: http://patchwork.ozlabs.org/patch/237120/ There was also talk of using the C preprocessor for these boards. I tried this out and found it to be extremely useful. In fact without it, the scripts probably cannot move from the config header file, since many scripts are put together based on information from CONFIG variables. Another discussion was compatibility with the environment commands 'env export -t' and 'env import -t'. This series permits these to be used and the environment is exported and imported as expected. I have dropped the ugly \0 approach in favour of a more flexible awk script for parsing the environment file. The environment commands use \ at the end of a line for continuation which works nicely with this feature. I have added a patch to 'run' so that it runs the entire script, not just the first line. A nice benefit is that there is no longer any need to put ';' at the end of every line - in other words U-Boot scripts become proper scripts with multiple lines instead of messy and fragile continuations. As an example, I have converted most of the tegra environment over to this new approach on an RFC basis. Changes in v2: - Add additional include to env_embedded to deal with its dirty trick - Add dependency rule so that the environment is rebuilt when it changes - Add information and updated example script to README - Add new patch to adjust 'run' command to better support testing - Add new patch to get 'env import/export' working on sandbox - Add new patch to illustrate the impact on Tegra environment - Add separate patch to enable C preprocessor for environment files - Enable var+=value form to simplify composing variables in multiple steps - Move .env file from include/configs to board/ - Use awk script to process environment since it is much easier on the brain Simon Glass (5): sandbox: Support 'env import' and 'env export' Make 'run' use run_command_list() instead of run_command() Allow U-Boot scripts to be placed in a .env file env: Allow environment files to use the C preprocessor RFC: tegra: Convert to using environment files Makefile | 31 +++++++++- README | 49 +++++++++++++++ board/nvidia/env/common.env | 79 ++++++++++++++++++++++++ common/cmd_nvedit.c | 31 ++++++---- common/env_embedded.c | 1 + common/main.c | 2 +- config.mk | 2 + include/configs/tegra-common-post.h | 120 +----------------------------------- include/env_default.h | 2 + mkconfig | 6 ++ tools/scripts/env2string.awk | 49 +++++++++++++++ 11 files changed, 238 insertions(+), 134 deletions(-) create mode 100644 board/nvidia/env/common.env create mode 100644 tools/scripts/env2string.awk -- 1.8.3 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot