[U-Boot] [PATCH v2] Allow providing default environment from file
Lukasz Majewski
lukma at denx.de
Tue Mar 20 14:20:46 UTC 2018
Hi Rasmus,
> Modifying the default environment via CONFIG_EXTRA_ENV_SETTINGS is
> somewhat inflexible, partly because the cpp language does not allow
> appending to an existing macro. This prevents reuse of "environment
> fragments" for different boards, which in turn makes maintaining that
> environment consistently tedious and error-prone.
It is also possible to build boot.scr image, which is afterwards read
from e.g. vfat, from text file.
As a reference and example please look
into ./boards/samsung/common/bootscripts/*.cmd
>
> This implements a Kconfig option for allowing one to define the entire
> default environment in an external file, which can then, for example,
> be generated programmatically as part of a Yocto recipe,
Is this yocto generation upstreamed? Or this is some kind of internal
patch?
> or simply be
> kept in version control separately from the U-boot repository.
>
> Tested-by: Sean Nyekjaer <sean.nyekjaer at prevas.dk>
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes at prevas.dk>
> ---
> v2:
> * rename CONFIG_DEFAULT_ENV_FROM_FILE -> CONFIG_USE_DEFAULT_ENV_FILE
> * add Tested-by
> * provide a little more rationale (example use case instead of just
> "sometimes be useful")
> * rebase to current master (v2018.03-189-gda773532cd)
>
> This adds xxd as a build-time requirement. Not sure whether that needs
> mentioning in the Kconfig help text. On my Ubuntu 16.04, it is
> provided by the vim-common package, while more recent Ubuntu and
> Debian seem to have split it to a separate package.
>
> Makefile | 16 ++++++++++++++++
> env/Kconfig | 18 ++++++++++++++++++
> include/env_default.h | 4 ++++
> 3 files changed, 38 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index 5fa14789d9..867b189c41 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -423,6 +423,7 @@ endif
>
> version_h := include/generated/version_autogenerated.h
> timestamp_h := include/generated/timestamp_autogenerated.h
> +defaultenv_h := include/generated/defaultenv_autogenerated.h
>
> no-dot-config-targets := clean clobber mrproper distclean \
> help %docs check% coccicheck \
> @@ -1387,6 +1388,10 @@ ifeq ($(wildcard $(LDSCRIPT)),)
> @/bin/false
> endif
>
> +ifeq ($(CONFIG_USE_DEFAULT_ENV_FILE),y)
> +prepare1: $(defaultenv_h)
> +endif
> +
> archprepare: prepare1 scripts_basic
>
> prepare0: archprepare FORCE
> @@ -1434,12 +1439,23 @@ define filechk_timestamp.h
> fi)
> endef
>
> +define filechk_defaultenv.h
> + (grep -v '^#' | \
> + grep -v '^$$' | \
> + tr '\n' '\0' | \
> + sed -e 's/\\\x0/\n/' | \
> + xxd -i ; echo ", 0x00" ; )
> +endef
> +
> $(version_h): include/config/uboot.release FORCE
> $(call filechk,version.h)
>
> $(timestamp_h): $(srctree)/Makefile FORCE
> $(call filechk,timestamp.h)
>
> +$(defaultenv_h): $(CONFIG_DEFAULT_ENV_FILE:"%"=%) FORCE
> + $(call filechk,defaultenv.h)
> +
> #
> ---------------------------------------------------------------------------
> quiet_cmd_cpp_lds = LDS $@ cmd_cpp_lds = $(CPP)
> -Wp,-MD,$(depfile) $(cpp_flags) $(LDPPFLAGS) \ diff --git
> a/env/Kconfig b/env/Kconfig index a3c6298273..e8e21dcfc6 100644
> --- a/env/Kconfig
> +++ b/env/Kconfig
> @@ -486,4 +486,22 @@ config ENV_SIZE
>
> endif
>
> +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.
> +
> +config DEFAULT_ENV_FILE
> + string "Path to default environment file"
> + depends on USE_DEFAULT_ENV_FILE
> + help
> + The path containing the default environment. The format is
> + the same as accepted by the mkenvimage tool: lines
> + containing key=value pairs, blank lines and lines beginning
> + with # are ignored.
> +
> endmenu
> diff --git a/include/env_default.h b/include/env_default.h
> index b574345af2..1fbeb92f38 100644
> --- a/include/env_default.h
> +++ b/include/env_default.h
> @@ -22,6 +22,7 @@ static char default_environment[] = {
> #else
> const uchar default_environment[] = {
> #endif
> +#ifndef CONFIG_USE_DEFAULT_ENV_FILE
> #ifdef CONFIG_ENV_CALLBACK_LIST_DEFAULT
> ENV_CALLBACK_VAR "=" CONFIG_ENV_CALLBACK_LIST_DEFAULT "\0"
> #endif
> @@ -108,6 +109,9 @@ const uchar default_environment[] = {
> CONFIG_EXTRA_ENV_SETTINGS
> #endif
> "\0"
> +#else /* CONFIG_USE_DEFAULT_ENV_FILE */
> +#include "generated/defaultenv_autogenerated.h"
> +#endif
> #ifdef DEFAULT_ENV_INSTANCE_EMBEDDED
> }
> #endif
The patch looks ok.
Reviewed-by: Lukasz Majewski <lukma at denx.de>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20180320/50d34f4e/attachment.sig>
More information about the U-Boot
mailing list