[U-Boot] [PATCH] Allow U-Boot scripts to be placed in a .env file

Otavio Salvador otavio at ossystems.com.br
Wed Apr 24 04:14:20 CEST 2013


On Tue, Apr 23, 2013 at 9:29 PM, Simon Glass <sjg at chromium.org> wrote:
> Hi Tom,
>
> On Tue, Apr 23, 2013 at 4:33 PM, Tom Rini <trini at ti.com> wrote:
>> On Tue, Apr 23, 2013 at 02:32:00PM -0700, Simon Glass wrote:
>>> Hi Wolfgang,
>>>
>>> On Tue, Apr 16, 2013 at 10:44 PM, Wolfgang Denk <wd at denx.de> wrote:
>>> > Dear Simon Glass,
>>> >
>>> > In message <1366155414-6525-1-git-send-email-sjg at chromium.org> you wrote:
>>> >> 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 include/configs
>>> >> with the same name as you could board config file, except with a
>>> >> .env extension instead of a .h extension. The variables should be
>>> >> separated by \0. Comments are permitted, using # as the first character
>>> >> in a line.
>>> >
>>> > Please do not litter the include/configs/ directory with such stuff.
>>> > It's more than big enough already.  Please put such files into the
>>> > respective board directories.
>>>
>>> OK.
>>>
>>> >
>>> > And if you do something like this, then please go the way to the end.
>>> > Forget about the \0 termination, make it a plain text file instead,
>>> > something that can be used with "env import -t" as well (or created
>>> > with "env export -t").
>>>
>>> I'm not sure how to do this. Doesn't this mean that we cannot add
>>> multi-line scripts to the environment? That was part of my aim. But if
>>> I put a 0x0a in the script then it will think we are starting a new
>>> variable.
>>
>> The first thing that pops to mind is:
>> 1) embedded the text file into a linker-known spot
>> 2) Make part of the default env setup process be to env import -t that
>> location in memory.
>
> Well I have a working implementation - my concern was more about how
> to deal with newlines. I would like to be able to handle a script just
> written out over multiple lines in a text file. This is really nice
> because we can have proper indenting, comments, etc. As soon as we
> have to use 0x0a as the separator between each environment variable
> that is no longer possible.
>
> My current scheme requires the .env file to have \0 separating
> environment variables which is obviously not ideal. I am hoping we can
> find another way which is more textfile-friendly without losing the
> benefits.

What about using \ as continuous line indicator and otherwise finish
the line, when parsing, wiht \0?

--
Otavio Salvador                             O.S. Systems
E-mail: otavio at ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br


More information about the U-Boot mailing list