env: Allow U-Boot scripts to be placed in a .env file
authorSimon Glass <sjg@chromium.org>
Fri, 22 Oct 2021 03:08:46 +0000 (21:08 -0600)
committerTom Rini <trini@konsulko.com>
Tue, 16 Nov 2021 19:35:08 +0000 (14:35 -0500)
commit86b9c3e4e48ba47ef28781d06b97846aca74bc8e
treebd000f2e8969f1e35a7e245d700d7d9f3d95f301
parentea754aa5658f395200a2b9a2573291a03c63bc77
env: Allow U-Boot scripts to be placed in a .env file

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.

Add 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>
directory, typically called <board>.env and controlled by the
CONFIG_ENV_SOURCE_FILE option.

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.

In many cases environment variables need access to the U-Boot CONFIG
variables to select different options. Enable this so that the environment
scripts can be as useful as the ones currently in the board config files.
This uses the C preprocessor, means that comments can be included in the
environment using /* ... */

Also support += to allow variables to be appended to. This is needed when
using the preprocessor.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Marek BehĂșn <marek.behun@nic.cz>
Tested-by: Marek BehĂșn <marek.behun@nic.cz>
MAINTAINERS
Makefile
config.mk
doc/usage/environment.rst
doc/usage/index.rst
env/Kconfig
env/embedded.c
include/env_default.h
scripts/env2string.awk [new file with mode: 0644]
test/py/tests/test_env.py