From: Lukasz Majewski <lukma@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [RFC PATCH] Allow providing default environment from file
Date: Thu, 25 Jan 2018 10:30:37 +0100 [thread overview]
Message-ID: <20180125103037.1ca9fa1e@jawa> (raw)
In-Reply-To: <20180124095559.28317-1-rasmus.villemoes@prevas.dk>
Hi Rasmus,
> It is sometimes useful to be able to define the entire default
> environment in an external file.
There is already available script for extracting the environment.
Please look into:
./scripts/get_default_envs.sh
Maybe you can reuse it in this patch?
> This implements a Kconfig option for
> allowing that.
>
> It is somewhat annoying to have two visible Kconfig options; it would
> probably be more user-friendly to just have the string option (with
> empty string obviously meaning not to use this feature). But then we'd
> also need a hidden CONFIG that we can use in the #ifdef in
> env_default.h, and I don't think one can set a def_bool based on
> whether a string-valued config is empty or not.
>
> I've tried to make the accepted format the same as the one the
> mkenvimage tool accepts. I have no idea how portable the sed script
> implementing the "allow embedded newlines in values" is. Nor do I know
> if one can expect xxd to be available.
>
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
> ---
> Makefile | 16 ++++++++++++++++
> env/Kconfig | 18 ++++++++++++++++++
> include/env_default.h | 4 ++++
> 3 files changed, 38 insertions(+)
>
> diff --git a/Makefile b/Makefile
> index 4981a2ed6f..e5ba5213fd 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 \
> @@ -1366,6 +1367,10 @@ ifeq ($(wildcard $(LDSCRIPT)),)
> @/bin/false
> endif
>
> +ifeq ($(CONFIG_DEFAULT_ENV_FROM_FILE),y)
> +prepare1: $(defaultenv_h)
> +endif
> +
> archprepare: prepare1 scripts_basic
>
> prepare0: archprepare FORCE
> @@ -1413,12 +1418,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 a24370786b..1baebd743b 100644
> --- a/env/Kconfig
> +++ b/env/Kconfig
> @@ -482,4 +482,22 @@ config ENV_SIZE
>
> endif
>
> +config DEFAULT_ENV_FROM_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 DEFAULT_ENV_FROM_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..656d202cc7 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_DEFAULT_ENV_FROM_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_DEFAULT_ENV_FROM_FILE */
> +#include "generated/defaultenv_autogenerated.h"
> +#endif
> #ifdef DEFAULT_ENV_INSTANCE_EMBEDDED
> }
> #endif
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/20180125/eeedb078/attachment.sig>
next prev parent reply other threads:[~2018-01-25 9:30 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-01-24 9:55 [U-Boot] [RFC PATCH] Allow providing default environment from file Rasmus Villemoes
2018-01-25 9:30 ` Lukasz Majewski [this message]
2018-01-25 10:04 ` Rasmus Villemoes
2018-01-25 10:26 ` Lukasz Majewski
2018-01-26 13:22 ` Sean Nyekjaer
2018-02-02 20:15 ` Rasmus Villemoes
2018-03-19 7:17 ` Sean Nyekjær
2018-03-19 13:30 ` Tom Rini
2018-03-20 10:38 ` [U-Boot] [PATCH v2] " Rasmus Villemoes
2018-03-20 14:20 ` Lukasz Majewski
2018-03-20 14:47 ` Rasmus Villemoes
2018-04-04 8:40 ` Rasmus Villemoes
2018-04-07 13:25 ` [U-Boot] [U-Boot, " Tom Rini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180125103037.1ca9fa1e@jawa \
--to=lukma@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.