* [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file @ 2024-06-17 16:00 Luca Ceresoli via buildroot 2024-06-28 13:20 ` Kory Maincent via buildroot 2024-07-12 9:23 ` Arnout Vandecappelle via buildroot 0 siblings, 2 replies; 6+ messages in thread From: Luca Ceresoli via buildroot @ 2024-06-17 16:00 UTC (permalink / raw) To: buildroot; +Cc: Köry Maincent, Luca Ceresoli, Thomas Petazzoni By default U-Boot builds a default environment from its own configuration and a board-specific set of variables. However it also allows to bypass this entirely and define the entire default environment from a text file. Expose this feature to Buildroot. This allows to have a file e.g. in board/.../uboot.env which contains an easy to maintain text file with the wanted default environment, without patching the U-Boot source code. Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> --- boot/uboot/Config.in | 29 +++++++++++++++++++++++++++++ boot/uboot/uboot.mk | 9 +++++++++ 2 files changed, 38 insertions(+) diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in index f37040a28a97..a3bf3e009c52 100644 --- a/boot/uboot/Config.in +++ b/boot/uboot/Config.in @@ -136,6 +136,35 @@ config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES that will be merged to the main U-Boot configuration file. endif +config BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE + bool "Generate default environment from text file" + select BR2_TARGET_UBOOT_NEEDS_XXD + help + Define the entire U-Boot default environment from a file, + disabling all the logic to generate it from the U-Boot source + code and other configuration values. + + Based on the USE_DEFAULT_ENV_FILE and DEFAULT_ENV_FILE U-Boot + configuration variables. + + Requires U-Boot >= v2018.05. + +config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE + string "Text file with default environment" + depends on BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE + help + Text file containing the variables to be used as the default + environment in U-Boot. + + From the U-Boot documentation: + + The format is the same as accepted by the mkenvimage tool, with + lines containing key=value pairs. Blank lines and lines + beginning with '#' are ignored. + + For more info see: + https://docs.u-boot.org/en/latest/usage/environment.html#external-environment-file + config BR2_TARGET_UBOOT_NEEDS_DTC bool "U-Boot needs dtc" select BR2_PACKAGE_HOST_DTC diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk index 19f4cdb557e6..3b3d3a13e711 100644 --- a/boot/uboot/uboot.mk +++ b/boot/uboot/uboot.mk @@ -390,6 +390,14 @@ UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig # override again. In addition, host-ccache is not ready at kconfig # time, so use HOSTCC_NOCCACHE. UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS="" + +ifeq ($(BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE),y) +UBOOT_DEFAULT_ENV_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_DEFAULT_ENV_FILE)) +define UBOOT_KCONFIG_DEFAULT_ENV_FILE + $(call KCONFIG_SET_OPT,CONFIG_USE_DEFAULT_ENV_FILE,y) + $(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENV_FILE,"$(shell readlink -f $(UBOOT_DEFAULT_ENV_FILE))") +endef +endif endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) @@ -530,6 +538,7 @@ define UBOOT_KCONFIG_FIXUP_CMDS $(UBOOT_ZYNQMP_KCONFIG_PMUFW) $(UBOOT_ZYNQMP_KCONFIG_PM_CFG) $(UBOOT_ZYNQMP_KCONFIG_PSU_INIT) + $(UBOOT_KCONFIG_DEFAULT_ENV_FILE) endef ifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy) --- base-commit: 7bfea9372f1842279a8f57b5fc4428bbae822e91 change-id: 20240617-uboot-default-env-46688521fbae Best regards, -- Luca Ceresoli <luca.ceresoli@bootlin.com> _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file 2024-06-17 16:00 [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file Luca Ceresoli via buildroot @ 2024-06-28 13:20 ` Kory Maincent via buildroot 2024-07-12 9:23 ` Arnout Vandecappelle via buildroot 1 sibling, 0 replies; 6+ messages in thread From: Kory Maincent via buildroot @ 2024-06-28 13:20 UTC (permalink / raw) To: Luca Ceresoli; +Cc: Thomas Petazzoni, buildroot Hello Luca, On Mon, 17 Jun 2024 18:00:50 +0200 Luca Ceresoli <luca.ceresoli@bootlin.com> wrote: > By default U-Boot builds a default environment from its own configuration > and a board-specific set of variables. However it also allows to bypass > this entirely and define the entire default environment from a text file. > > Expose this feature to Buildroot. This allows to have a file e.g. in > board/.../uboot.env which contains an easy to maintain text file with the > wanted default environment, without patching the U-Boot source code. > > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> > --- > boot/uboot/Config.in | 29 +++++++++++++++++++++++++++++ > boot/uboot/uboot.mk | 9 +++++++++ > 2 files changed, 38 insertions(+) > > diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in > index f37040a28a97..a3bf3e009c52 100644 > --- a/boot/uboot/Config.in > +++ b/boot/uboot/Config.in > @@ -136,6 +136,35 @@ config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES > that will be merged to the main U-Boot configuration file. > endif > > +config BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE > + bool "Generate default environment from text file" > + select BR2_TARGET_UBOOT_NEEDS_XXD > + help > + Define the entire U-Boot default environmen/*t from a file, > + disabling all the logic to generate it from the U-Boot source > + code and other configuration values. > + > + Based on the USE_DEFAULT_ENV_FILE and DEFAULT_ENV_FILE U-Boot > + configuration variables. > + > + Requires U-Boot >= v2018.05. > + > +config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE > + string "Text file with default environment" > + depends on BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE > + help > + Text file containing the variables to be used as the default > + environment in U-Boot. > + > + From the U-Boot documentation: > + > + The format is the same as accepted by the mkenvimage tool, with Line exceed 62 characters. Please use check-package tool: ./utils/check-package boot/uboot/* boot/uboot/Config.in:161: help text: <tab><2 spaces><62 chars> (https://nightly.buildroot.org/#writing-rules-config-in) Except for that fix: Acked-by: Kory Maincent <Kory.maincent@bootlin.com> Regards, -- Köry Maincent, Bootlin Embedded Linux and kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file 2024-06-17 16:00 [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file Luca Ceresoli via buildroot 2024-06-28 13:20 ` Kory Maincent via buildroot @ 2024-07-12 9:23 ` Arnout Vandecappelle via buildroot 2024-07-15 13:51 ` Luca Ceresoli via buildroot 1 sibling, 1 reply; 6+ messages in thread From: Arnout Vandecappelle via buildroot @ 2024-07-12 9:23 UTC (permalink / raw) To: Luca Ceresoli, buildroot Cc: Köry Maincent, Heiko Thiery, Thomas Petazzoni Hi Luca, On 17/06/2024 18:00, Luca Ceresoli via buildroot wrote: > By default U-Boot builds a default environment from its own configuration > and a board-specific set of variables. However it also allows to bypass > this entirely and define the entire default environment from a text file. > > Expose this feature to Buildroot. This allows to have a file e.g. in > board/.../uboot.env which contains an easy to maintain text file with the > wanted default environment, without patching the U-Boot source code. Earlier, Heiko sent a similar patch but using a different U-Boot config option [1]. We're going to merge only one of them :-) This one is a bit more elegant I think because it doesn't require discovering the vendor directory. > Signed-off-by: Luca Ceresoli <luca.ceresoli@bootlin.com> > --- > boot/uboot/Config.in | 29 +++++++++++++++++++++++++++++ > boot/uboot/uboot.mk | 9 +++++++++ > 2 files changed, 38 insertions(+) > > diff --git a/boot/uboot/Config.in b/boot/uboot/Config.in > index f37040a28a97..a3bf3e009c52 100644 > --- a/boot/uboot/Config.in > +++ b/boot/uboot/Config.in > @@ -136,6 +136,35 @@ config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES > that will be merged to the main U-Boot configuration file. > endif > > +config BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE > + bool "Generate default environment from text file" I think that rather than two options, we want just one string option. If it's empty, it is disabled. > + select BR2_TARGET_UBOOT_NEEDS_XXD > + help > + Define the entire U-Boot default environment from a file, > + disabling all the logic to generate it from the U-Boot source > + code and other configuration values. > + > + Based on the USE_DEFAULT_ENV_FILE and DEFAULT_ENV_FILE U-Boot > + configuration variables. > + > + Requires U-Boot >= v2018.05. > + > +config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE > + string "Text file with default environment" > + depends on BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE > + help > + Text file containing the variables to be used as the default > + environment in U-Boot. > + > + From the U-Boot documentation: > + > + The format is the same as accepted by the mkenvimage tool, with > + lines containing key=value pairs. Blank lines and lines > + beginning with '#' are ignored. > + > + For more info see: > + https://docs.u-boot.org/en/latest/usage/environment.html#external-environment-file Excellent help text! > + > config BR2_TARGET_UBOOT_NEEDS_DTC > bool "U-Boot needs dtc" > select BR2_PACKAGE_HOST_DTC > diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk > index 19f4cdb557e6..3b3d3a13e711 100644 > --- a/boot/uboot/uboot.mk > +++ b/boot/uboot/uboot.mk > @@ -390,6 +390,14 @@ UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig > # override again. In addition, host-ccache is not ready at kconfig > # time, so use HOSTCC_NOCCACHE. > UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS="" > + > +ifeq ($(BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE),y) > +UBOOT_DEFAULT_ENV_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_DEFAULT_ENV_FILE)) > +define UBOOT_KCONFIG_DEFAULT_ENV_FILE > + $(call KCONFIG_SET_OPT,CONFIG_USE_DEFAULT_ENV_FILE,y) > + $(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENV_FILE,"$(shell readlink -f $(UBOOT_DEFAULT_ENV_FILE))") I think we mostly use `` rather than $(shell ...) - with the backticks, it's much easier to understand when it's going to be evaluated. Regards, Arnout [1] https://patchwork.ozlabs.org/project/buildroot/patch/20240617-uboot-default-env-v1-1-9ac88f0e1789@bootlin.com/ > +endef > +endif > endif # BR2_TARGET_UBOOT_BUILD_SYSTEM_LEGACY > > UBOOT_CUSTOM_DTS_PATH = $(call qstrip,$(BR2_TARGET_UBOOT_CUSTOM_DTS_PATH)) > @@ -530,6 +538,7 @@ define UBOOT_KCONFIG_FIXUP_CMDS > $(UBOOT_ZYNQMP_KCONFIG_PMUFW) > $(UBOOT_ZYNQMP_KCONFIG_PM_CFG) > $(UBOOT_ZYNQMP_KCONFIG_PSU_INIT) > + $(UBOOT_KCONFIG_DEFAULT_ENV_FILE) > endef > > ifeq ($(BR2_TARGET_UBOOT)$(BR_BUILDING),yy) > > --- > base-commit: 7bfea9372f1842279a8f57b5fc4428bbae822e91 > change-id: 20240617-uboot-default-env-46688521fbae > > Best regards, _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file 2024-07-12 9:23 ` Arnout Vandecappelle via buildroot @ 2024-07-15 13:51 ` Luca Ceresoli via buildroot 2024-07-15 14:49 ` Arnout Vandecappelle via buildroot 0 siblings, 1 reply; 6+ messages in thread From: Luca Ceresoli via buildroot @ 2024-07-15 13:51 UTC (permalink / raw) To: Arnout Vandecappelle Cc: Köry Maincent, Heiko Thiery, Thomas Petazzoni, buildroot Hi Arnout, On Fri, 12 Jul 2024 11:23:12 +0200 Arnout Vandecappelle <arnout@mind.be> wrote: > Hi Luca, > > On 17/06/2024 18:00, Luca Ceresoli via buildroot wrote: > > By default U-Boot builds a default environment from its own configuration > > and a board-specific set of variables. However it also allows to bypass > > this entirely and define the entire default environment from a text file. > > > > Expose this feature to Buildroot. This allows to have a file e.g. in > > board/.../uboot.env which contains an easy to maintain text file with the > > wanted default environment, without patching the U-Boot source code. > > Earlier, Heiko sent a similar patch but using a different U-Boot config option > [1]. We're going to merge only one of them :-) Wrong URL (below). i think you refer to this, dating almost a year ago so congratulations for your memory: https://lore.kernel.org/all/20230804085118.315117-1-heiko.thiery@gmail.com/ Thanks for letting me know about this. > This one is a bit more elegant I think because it doesn't require discovering > the vendor directory. Ok, good to know, so let me refine it and send a v2. > > --- a/boot/uboot/Config.in > > +++ b/boot/uboot/Config.in > > @@ -136,6 +136,35 @@ config BR2_TARGET_UBOOT_CONFIG_FRAGMENT_FILES > > that will be merged to the main U-Boot configuration file. > > endif > > > > +config BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE > > + bool "Generate default environment from text file" > > I think that rather than two options, we want just one string option. If it's > empty, it is disabled. OK. > > + select BR2_TARGET_UBOOT_NEEDS_XXD > > + help > > + Define the entire U-Boot default environment from a file, > > + disabling all the logic to generate it from the U-Boot source > > + code and other configuration values. > > + > > + Based on the USE_DEFAULT_ENV_FILE and DEFAULT_ENV_FILE U-Boot > > + configuration variables. > > + > > + Requires U-Boot >= v2018.05. > > + > > +config BR2_TARGET_UBOOT_DEFAULT_ENV_FILE > > + string "Text file with default environment" > > + depends on BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE > > + help > > + Text file containing the variables to be used as the default > > + environment in U-Boot. > > + > > + From the U-Boot documentation: > > + > > + The format is the same as accepted by the mkenvimage tool, with > > + lines containing key=value pairs. Blank lines and lines > > + beginning with '#' are ignored. > > + > > + For more info see: > > + https://docs.u-boot.org/en/latest/usage/environment.html#external-environment-file > > Excellent help text! Thanks! [that's because I'm lazy: finding the info was painful, I don't want to do that again so let's write it down, upstream it and let the Internet make it available to the future myself :) ] > > --- a/boot/uboot/uboot.mk > > +++ b/boot/uboot/uboot.mk > > @@ -390,6 +390,14 @@ UBOOT_KCONFIG_EDITORS = menuconfig xconfig gconfig nconfig > > # override again. In addition, host-ccache is not ready at kconfig > > # time, so use HOSTCC_NOCCACHE. > > UBOOT_KCONFIG_OPTS = $(UBOOT_MAKE_OPTS) HOSTCC="$(HOSTCC_NOCCACHE)" HOSTLDFLAGS="" > > + > > +ifeq ($(BR2_TARGET_UBOOT_USE_DEFAULT_ENV_FILE),y) > > +UBOOT_DEFAULT_ENV_FILE = $(call qstrip,$(BR2_TARGET_UBOOT_DEFAULT_ENV_FILE)) > > +define UBOOT_KCONFIG_DEFAULT_ENV_FILE > > + $(call KCONFIG_SET_OPT,CONFIG_USE_DEFAULT_ENV_FILE,y) > > + $(call KCONFIG_SET_OPT,CONFIG_DEFAULT_ENV_FILE,"$(shell readlink -f $(UBOOT_DEFAULT_ENV_FILE))") > > I think we mostly use `` rather than $(shell ...) - with the backticks, it's > much easier to understand when it's going to be evaluated. I did some quick tests with the backticks and wasn't able to make it work, but if you have a suggestion to make it work I'll be glad to try that. So I'm sending v2 still using $(shell ...) for the time being. About which is the "common habit", I found very few cases with both, so no obvious winner apparently. However in this same file (boot/uboot/uboot.mk) there are two readlink usages already, both using the $(shell ...) pattern. Disclaimer: both have been added by me :) Luca -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file 2024-07-15 13:51 ` Luca Ceresoli via buildroot @ 2024-07-15 14:49 ` Arnout Vandecappelle via buildroot 2024-07-16 12:40 ` Luca Ceresoli via buildroot 0 siblings, 1 reply; 6+ messages in thread From: Arnout Vandecappelle via buildroot @ 2024-07-15 14:49 UTC (permalink / raw) To: Luca Ceresoli Cc: Köry Maincent, Heiko Thiery, Thomas Petazzoni, buildroot On 15/07/2024 15:51, Luca Ceresoli wrote: > Hi Arnout, > > On Fri, 12 Jul 2024 11:23:12 +0200 > Arnout Vandecappelle <arnout@mind.be> wrote: [snip] >> I think we mostly use `` rather than $(shell ...) - with the backticks, it's >> much easier to understand when it's going to be evaluated. > > I did some quick tests with the backticks and wasn't able to make it > work, but if you have a suggestion to make it work I'll be glad to try > that. KCONFIG_SET_OPT adds double quotes around its argument, so backticks will indeed not work! Regards, Arnout > > So I'm sending v2 still using $(shell ...) for the time being. > > About which is the "common habit", I found very few cases with both, so > no obvious winner apparently. However in this same file > (boot/uboot/uboot.mk) there are two readlink usages already, both using > the $(shell ...) pattern. Disclaimer: both have been added by me :) > > Luca > _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file 2024-07-15 14:49 ` Arnout Vandecappelle via buildroot @ 2024-07-16 12:40 ` Luca Ceresoli via buildroot 0 siblings, 0 replies; 6+ messages in thread From: Luca Ceresoli via buildroot @ 2024-07-16 12:40 UTC (permalink / raw) To: Arnout Vandecappelle Cc: Köry Maincent, Heiko Thiery, Thomas Petazzoni, buildroot Hi Arnout, On Mon, 15 Jul 2024 16:49:38 +0200 Arnout Vandecappelle <arnout@mind.be> wrote: > On 15/07/2024 15:51, Luca Ceresoli wrote: > > Hi Arnout, > > > > On Fri, 12 Jul 2024 11:23:12 +0200 > > Arnout Vandecappelle <arnout@mind.be> wrote: > > [snip] > >> I think we mostly use `` rather than $(shell ...) - with the backticks, it's > >> much easier to understand when it's going to be evaluated. > > > > I did some quick tests with the backticks and wasn't able to make it > > work, but if you have a suggestion to make it work I'll be glad to try > > that. > > KCONFIG_SET_OPT adds double quotes around its argument, so backticks will > indeed not work! Thanks for the explanation! Luca -- Luca Ceresoli, Bootlin Embedded Linux and Kernel engineering https://bootlin.com _______________________________________________ buildroot mailing list buildroot@buildroot.org https://lists.buildroot.org/mailman/listinfo/buildroot ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-07-16 12:40 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-06-17 16:00 [Buildroot] [PATCH] uboot: allow taking the entire default environment from a text file Luca Ceresoli via buildroot 2024-06-28 13:20 ` Kory Maincent via buildroot 2024-07-12 9:23 ` Arnout Vandecappelle via buildroot 2024-07-15 13:51 ` Luca Ceresoli via buildroot 2024-07-15 14:49 ` Arnout Vandecappelle via buildroot 2024-07-16 12:40 ` Luca Ceresoli via buildroot
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox