Board specific environments and broken configs
trent.piepho at igorinstitute.com
Fri May 14 23:46:38 PDT 2021
I wanted to add some additional commands to the env for a new board.
The barebox docs have this:
The default environment is composed from different directories during
arch/$ARCH/boards/<board>/env -> board specific overlay
Which made me think that putting an "env" directory in the board
directory would automatically add it to the environment. It seemed
like a few boards I looked at did this and nothing more. But no, this
does not work.
I see two ways to add extra env. One is to reference a path in
CONFIG_DEFAULT_ENVIRONMENT_PATH. The other is to add a path to
bbenv-y in the board's Makefile and then defaultenv_append_directory()
that linked in data in the board code.
But it seems like some boards do neither! How do they work? AFAICT,
the answer is they don't work.
I tried to do an exhaustive survey of board envs. I found 98 env
directories used by 95 boards. 57 of those boards use a manual
defaultenv_append_directory(). There are 39 env directories not added
this way (efika-mx-smartbook has two env dirs, one in the makefile and
one not, thus 57 + 39 - 1 = 95).
Of the 39 env dirs not added in board code, 27 are referenced in a
defconfig file in CONFIG_DEFAULT_ENVIRONMENT_PATH.
And thus 12 env dirs appear to have no use in barebox. delphi-poc20
appears to not even be a board, having just an env file, no code, no
references I could, and added in a commit for another board. Mistake?
The 12 boards with apparently unused envs:
An issue with CONFIG_DEFAULT_ENVIRONMENT_PATH is that it applies to
all boards in a config. If multiple boards are built at once, e.g.
imx_v7_defconfig, then there is no way for each board to have a
different extra env this way.
More information about the barebox