[RFC PATCH] tools: env: Add an option to have an empty default environment

Chris Packham judge.packham at gmail.com
Thu Aug 13 03:37:27 CEST 2020


When building envtools via tools-only_defconfig the builtin defaults
are based on options in the defconfig. For example:

  bootcmd=bootp; setenv bootargs root=/dev/nfs nfsroot=${serverip}:${rootpath} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; bootm
  bootdelay=2
  baudrate=115200
  stdin=serial,cros-ec-keyb,usbkbd
  stdout=serial,vidconsole
  stderr=serial,vidconsole
  ethaddr=00:00:11:22:33:44
  eth3addr=00:00:11:22:33:45
  eth5addr=00:00:11:22:33:46
  eth6addr=00:00:11:22:33:47
  ipaddr=1.2.3.4
  bootm_size=0x10000000
  kernel_addr_r=0x1000000
  fdt_addr_r=0xc00000
  ramdisk_addr_r=0x2000000
  scriptaddr=0x1000
  pxefile_addr_r=0x2000

These may or may not be sensible for any particular target. Rather than
trying to have a set of defaults that work for every target add a config
option to make the default environment completely empty.

Signed-off-by: Chris Packham <judge.packham at gmail.com>
---

 configs/tools-only_defconfig | 1 +
 env/Kconfig                  | 7 +++++++
 include/env_default.h        | 2 ++
 3 files changed, 10 insertions(+)

diff --git a/configs/tools-only_defconfig b/configs/tools-only_defconfig
index a853abf2b8fc..0ddd0518ef9a 100644
--- a/configs/tools-only_defconfig
+++ b/configs/tools-only_defconfig
@@ -12,6 +12,7 @@ CONFIG_BOOTP_DNS2=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_HOSTFILE=y
 CONFIG_SYS_RELOC_GD_ENV_ADDR=y
+CONFIG_EMPTY_DEFAULT_ENV=y
 CONFIG_BOOTP_SEND_HOSTNAME=y
 CONFIG_IP_DEFRAG=y
 # CONFIG_ACPIGEN is not set
diff --git a/env/Kconfig b/env/Kconfig
index af4d9cbaa4d8..f7860f01cc16 100644
--- a/env/Kconfig
+++ b/env/Kconfig
@@ -614,6 +614,13 @@ config DEFAULT_ENV_FILE
 	  containing key=value pairs, blank lines and lines beginning
 	  with # are ignored.
 
+config EMPTY_DEFAULT_ENV
+	bool "Create an empty default environment"
+	help
+	  Create an empty default environment. This is intended to be
+	  used when building generic target tools and no sensible
+	  default that can be included.
+
 config ENV_VARS_UBOOT_RUNTIME_CONFIG
 	bool "Add run-time information to the environment"
 	help
diff --git a/include/env_default.h b/include/env_default.h
index 8a0c3057f0aa..859188a8e7c9 100644
--- a/include/env_default.h
+++ b/include/env_default.h
@@ -23,6 +23,7 @@ static char default_environment[] = {
 const uchar default_environment[] = {
 #endif
 #ifndef CONFIG_USE_DEFAULT_ENV_FILE
+#ifndef CONFIG_EMPTY_DEFAULT_ENV
 #ifdef	CONFIG_ENV_CALLBACK_LIST_DEFAULT
 	ENV_CALLBACK_VAR "=" CONFIG_ENV_CALLBACK_LIST_DEFAULT "\0"
 #endif
@@ -107,6 +108,7 @@ const uchar default_environment[] = {
 #endif
 #ifdef	CONFIG_EXTRA_ENV_SETTINGS
 	CONFIG_EXTRA_ENV_SETTINGS
+#endif
 #endif
 	"\0"
 #else /* CONFIG_USE_DEFAULT_ENV_FILE */
-- 
2.28.0



More information about the U-Boot mailing list