[RFC PATCH] Provide mechanism for build-time default env entries

Joel Johnson mrjoel at lixil.net
Sun Jan 19 08:37:38 CET 2020


This enables the building user to specify environment values to be
included in the static default_environment with an image. This is
useful to build multiple otherwise like configured images, varying
by environment unique entries.

---

I expected something like this to already be present, but couldn't
find such a mechanism. I also assumed that something similar may
have been proposed previously, but also couldn't find anything via
searching.

Signed-off-by: Joel Johnson <mrjoel at lixil.net>
---
 env/Kconfig           | 19 +++++++++++++++----
 include/env_default.h |  3 +++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/env/Kconfig b/env/Kconfig
index ed12609f6a..5049cb78be 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -556,14 +556,25 @@ config SYS_RELOC_GD_ENV_ADDR
 	  Relocate the early env_addr pointer so we know it is not inside
 	  the binary. Some systems need this and for the rest, it doesn't hurt.
 
+config USER_ENV_SETTINGS
+	string "User build-time additional environment entries"
+	help
+	  This value is reserved for the building user to provide custom
+	  environment entries to be added to the default environment. Care must
+	  be taken to not break the environment, incompatible entries may cause
+	  failure to compile, or failure of the target board to properly
+	  initialize or boot. The format is key=value pairs, with entries
+	  separated by C-style escaped null terminated values, such as:
+	    "key1=valueA\0key2=valueB\0key3=valueC".
+
 config USE_DEFAULT_ENV_FILE
 	bool "Create default environment from file"
 	help
 	  Normally, the default environment is automatically generated
-	  based on the settings of various CONFIG_* options, as well
-	  as the CONFIG_EXTRA_ENV_SETTINGS. By selecting this option,
-	  you can instead define the entire default environment in an
-	  external file.
+	  based on the settings of various CONFIG_* options, combined with values
+	  of board specific CONFIG_EXTRA_ENV_SETTINGS and user provided
+	  CONFIG_USER_ENV_SETTINGS. By selecting this option, you can instead
+	  define the entire default environment in an external file.
 
 config DEFAULT_ENV_FILE
 	string "Path to default environment file"
diff --git a/include/env_default.h b/include/env_default.h
index 56a8bae39a..9396a34715 100644
--- a/include/env_default.h
+++ b/include/env_default.h
@@ -109,6 +109,9 @@ const uchar default_environment[] = {
 #endif
 #ifdef	CONFIG_EXTRA_ENV_SETTINGS
 	CONFIG_EXTRA_ENV_SETTINGS
+#endif
+#ifdef	CONFIG_USER_ENV_SETTINGS
+	CONFIG_USER_ENV_SETTINGS
 #endif
 	"\0"
 #else /* CONFIG_USE_DEFAULT_ENV_FILE */
-- 
2.20.1



More information about the U-Boot mailing list