mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
* [ptxdist] [RFC] u-boot: Build in default envinronment from file
@ 2026-06-01 13:42 Ladislav Michl
  2026-06-05 14:34 ` Michael Olbrich
  0 siblings, 1 reply; 5+ messages in thread
From: Ladislav Michl @ 2026-06-01 13:42 UTC (permalink / raw)
  To: ptxdist

Incorporating default envinroment from external file makes changes to it
much easier compared to creating patch for u-boot creating config file
with CONFIG_EXTRA_ENV_SETTINGS macro.
This however requires xxd tool, so question is where to get it from?
1. leave to user, similar as HOST_SYSTEM_BC is made
2. add HOST_XXD, make it depend on HOST_VIM to reuse archive and compile
   just xxd
3. patch u-boot to not use xxd

Except for the last case we would need something like 
select HOST_XXD if U_BOOT_DEFAULT_ENV
in the Kconfig.

Also, do we want envinronment file name configurable?

Thanks for the suggestions,
	ladis

---
 platforms/u-boot.in |  9 +++++++++
 rules/u-boot.make   | 23 +++++++++++++++++++++++
 2 files changed, 32 insertions(+)

diff --git a/platforms/u-boot.in b/platforms/u-boot.in
index d263135ca..c1abe3930 100644
--- a/platforms/u-boot.in
+++ b/platforms/u-boot.in
@@ -73,6 +73,15 @@ config U_BOOT_CONFIGFILE_KCONFIG
 	help
 	  This entry specifies the .config file used to compile U-Boot.
 
+config U_BOOT_DEFAULT_ENV
+	prompt "compile in default environment from file"
+	bool
+	help
+	  Text file uboot-defaultenv.txt in the platform config directory
+	  describing the builtin default environment.
+	  The file should have lines in the form var=value, one per line.
+	  Blank lines and lines starting with a # are ignored.
+
 endif
 
 if U_BOOT_CONFIGSYSTEM_LEGACY
diff --git a/rules/u-boot.make b/rules/u-boot.make
index d3ea65cf2..1966ba9b6 100644
--- a/rules/u-boot.make
+++ b/rules/u-boot.make
@@ -39,6 +39,11 @@ endif
 U_BOOT_INJECT_PATH	:= ${PTXDIST_SYSROOT_TARGET}/usr/lib/firmware
 U_BOOT_INJECT_OOT	:= $(call ptx/ifdef, PTXCONF_U_BOOT_BUILD_OOT,YES,NO)
 
+ifdef PTXCONF_U_BOOT_DEFAULT_ENV
+U_BOOT_DEFAULT_ENV_TXT	:= $(call ptx/in-platformconfigdir, uboot-defaultenv.txt)
+$(call ptx/cfghash-file, U_BOOT, $(U_BOOT_DEFAULT_ENV_TXT))
+endif
+
 ifdef PTXCONF_U_BOOT_BOOT_SCRIPT
 U_BOOT_BOOT_SCRIPT_TXT := $(call ptx/in-platformconfigdir, uboot.scr)
 U_BOOT_BOOT_SCRIPT_BIN := $(call remove_quotes, \
@@ -119,6 +124,24 @@ endif
 
 $(STATEDIR)/u-boot.compile:
 	@$(call targetinfo)
+ifdef PTXCONF_U_BOOT_DEFAULT_ENV
+	@rm -rf $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
+	@ln -s $(U_BOOT_DEFAULT_ENV_TXT) $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
+#	# pre-2025.10
+	@sed -i -e 's,^.*CONFIG_USE_DEFAULT_ENV_FILE.*$$,CONFIG_USE_DEFAULT_ENV_FILE=y,g' \
+		$(U_BOOT_BUILD_DIR)/.config
+	@sed -i -e '/\\<CONFIG_DEFAULT_ENV_FILE\\>/d' \
+		$(U_BOOT_BUILD_DIR)/.config
+	@sed -i -e '/CONFIG_USE_DEFAULT_ENV_FILE=y/a CONFIG_DEFAULT_ENV_FILE=".ptxdist-defaultenv"' \
+		$(U_BOOT_BUILD_DIR)/.config
+#	# 2025.10 and later
+	@sed -i -e 's,^.*CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE.*$$,CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y,g' \
+		$(U_BOOT_BUILD_DIR)/.config
+	@sed -i -e '/\\<CONFIG_ENV_DEFAULT_ENV_TEXT_FILE\\>/d' \
+		$(U_BOOT_BUILD_DIR)/.config
+	@sed -i -e '/CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y/a CONFIG_ENV_DEFAULT_ENV_TEXT_FILE=".ptxdist-defaultenv"' \
+		$(U_BOOT_BUILD_DIR)/.config
+endif
 	@$(call world/compile, U_BOOT)
 ifdef PTXCONF_U_BOOT_VERIFY_SIGNATURE
 	@mv $(U_BOOT_BUILD_DIR)/u-boot.dtb $(U_BOOT_BUILD_DIR)/u-boot-pubkey.dtb
-- 
2.47.3




^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [ptxdist] [RFC] u-boot: Build in default envinronment from file
  2026-06-01 13:42 [ptxdist] [RFC] u-boot: Build in default envinronment from file Ladislav Michl
@ 2026-06-05 14:34 ` Michael Olbrich
  2026-06-05 15:13   ` Ladislav Michl
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Olbrich @ 2026-06-05 14:34 UTC (permalink / raw)
  To: Ladislav Michl; +Cc: ptxdist

On Mon, Jun 01, 2026 at 03:42:49PM +0200, Ladislav Michl wrote:
> Incorporating default envinroment from external file makes changes to it
> much easier compared to creating patch for u-boot creating config file
> with CONFIG_EXTRA_ENV_SETTINGS macro.
> This however requires xxd tool, so question is where to get it from?
> 1. leave to user, similar as HOST_SYSTEM_BC is made

I think we can go with this one.

> 2. add HOST_XXD, make it depend on HOST_VIM to reuse archive and compile
>    just xxd
> 3. patch u-boot to not use xxd
> 
> Except for the last case we would need something like 
> select HOST_XXD if U_BOOT_DEFAULT_ENV
> in the Kconfig.
> 
> Also, do we want envinronment file name configurable?

No, there is no good reason for something like that.

> Thanks for the suggestions,
> 	ladis
> 
> ---
>  platforms/u-boot.in |  9 +++++++++
>  rules/u-boot.make   | 23 +++++++++++++++++++++++
>  2 files changed, 32 insertions(+)
> 
> diff --git a/platforms/u-boot.in b/platforms/u-boot.in
> index d263135ca..c1abe3930 100644
> --- a/platforms/u-boot.in
> +++ b/platforms/u-boot.in
> @@ -73,6 +73,15 @@ config U_BOOT_CONFIGFILE_KCONFIG
>  	help
>  	  This entry specifies the .config file used to compile U-Boot.
>  
> +config U_BOOT_DEFAULT_ENV
> +	prompt "compile in default environment from file"
> +	bool
> +	help
> +	  Text file uboot-defaultenv.txt in the platform config directory
> +	  describing the builtin default environment.
> +	  The file should have lines in the form var=value, one per line.
> +	  Blank lines and lines starting with a # are ignored.
> +
>  endif
>  
>  if U_BOOT_CONFIGSYSTEM_LEGACY
> diff --git a/rules/u-boot.make b/rules/u-boot.make
> index d3ea65cf2..1966ba9b6 100644
> --- a/rules/u-boot.make
> +++ b/rules/u-boot.make
> @@ -39,6 +39,11 @@ endif
>  U_BOOT_INJECT_PATH	:= ${PTXDIST_SYSROOT_TARGET}/usr/lib/firmware
>  U_BOOT_INJECT_OOT	:= $(call ptx/ifdef, PTXCONF_U_BOOT_BUILD_OOT,YES,NO)
>  
> +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> +U_BOOT_DEFAULT_ENV_TXT	:= $(call ptx/in-platformconfigdir, uboot-defaultenv.txt)
> +$(call ptx/cfghash-file, U_BOOT, $(U_BOOT_DEFAULT_ENV_TXT))
> +endif
> +
>  ifdef PTXCONF_U_BOOT_BOOT_SCRIPT
>  U_BOOT_BOOT_SCRIPT_TXT := $(call ptx/in-platformconfigdir, uboot.scr)
>  U_BOOT_BOOT_SCRIPT_BIN := $(call remove_quotes, \
> @@ -119,6 +124,24 @@ endif
>  
>  $(STATEDIR)/u-boot.compile:
>  	@$(call targetinfo)
> +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> +	@rm -rf $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv

Did you test this with PTXCONF_U_BOOT_BUILD_OOT enabled?

> +	@ln -s $(U_BOOT_DEFAULT_ENV_TXT) $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
> +#	# pre-2025.10
> +	@sed -i -e 's,^.*CONFIG_USE_DEFAULT_ENV_FILE.*$$,CONFIG_USE_DEFAULT_ENV_FILE=y,g' \
> +		$(U_BOOT_BUILD_DIR)/.config
> +	@sed -i -e '/\\<CONFIG_DEFAULT_ENV_FILE\\>/d' \
> +		$(U_BOOT_BUILD_DIR)/.config
> +	@sed -i -e '/CONFIG_USE_DEFAULT_ENV_FILE=y/a CONFIG_DEFAULT_ENV_FILE=".ptxdist-defaultenv"' \
> +		$(U_BOOT_BUILD_DIR)/.config
> +#	# 2025.10 and later
> +	@sed -i -e 's,^.*CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE.*$$,CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y,g' \
> +		$(U_BOOT_BUILD_DIR)/.config
> +	@sed -i -e '/\\<CONFIG_ENV_DEFAULT_ENV_TEXT_FILE\\>/d' \
> +		$(U_BOOT_BUILD_DIR)/.config
> +	@sed -i -e '/CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y/a CONFIG_ENV_DEFAULT_ENV_TEXT_FILE=".ptxdist-defaultenv"' \
> +		$(U_BOOT_BUILD_DIR)/.config

I'd like to avoid patching the config like that. I know we do it in barebox
as well, but:
1. it's an absolute path that cannot be in the config
2. only the variable with the path, not enabling it as well
3. legacy, so changing it will break things.

Please just check here, that the correct options are set and describe what
needs to be done in the menu help.

Michael

> +endif
>  	@$(call world/compile, U_BOOT)
>  ifdef PTXCONF_U_BOOT_VERIFY_SIGNATURE
>  	@mv $(U_BOOT_BUILD_DIR)/u-boot.dtb $(U_BOOT_BUILD_DIR)/u-boot-pubkey.dtb
> -- 
> 2.47.3
> 
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [ptxdist] [RFC] u-boot: Build in default envinronment from file
  2026-06-05 14:34 ` Michael Olbrich
@ 2026-06-05 15:13   ` Ladislav Michl
  2026-06-05 15:46     ` Michael Olbrich
  0 siblings, 1 reply; 5+ messages in thread
From: Ladislav Michl @ 2026-06-05 15:13 UTC (permalink / raw)
  To: Michael Olbrich; +Cc: ptxdist

On Fri, Jun 05, 2026 at 04:34:04PM +0200, Michael Olbrich wrote:
> On Mon, Jun 01, 2026 at 03:42:49PM +0200, Ladislav Michl wrote:
> > Incorporating default envinroment from external file makes changes to it
> > much easier compared to creating patch for u-boot creating config file
> > with CONFIG_EXTRA_ENV_SETTINGS macro.
> > This however requires xxd tool, so question is where to get it from?
> > 1. leave to user, similar as HOST_SYSTEM_BC is made
> 
> I think we can go with this one.
> 
> > 2. add HOST_XXD, make it depend on HOST_VIM to reuse archive and compile
> >    just xxd
> > 3. patch u-boot to not use xxd
> > 
> > Except for the last case we would need something like 
> > select HOST_XXD if U_BOOT_DEFAULT_ENV
> > in the Kconfig.
> > 
> > Also, do we want envinronment file name configurable?
> 
> No, there is no good reason for something like that.
> 
> > Thanks for the suggestions,
> > 	ladis
> > 
> > ---
> >  platforms/u-boot.in |  9 +++++++++
> >  rules/u-boot.make   | 23 +++++++++++++++++++++++
> >  2 files changed, 32 insertions(+)
> > 
> > diff --git a/platforms/u-boot.in b/platforms/u-boot.in
> > index d263135ca..c1abe3930 100644
> > --- a/platforms/u-boot.in
> > +++ b/platforms/u-boot.in
> > @@ -73,6 +73,15 @@ config U_BOOT_CONFIGFILE_KCONFIG
> >  	help
> >  	  This entry specifies the .config file used to compile U-Boot.
> >  
> > +config U_BOOT_DEFAULT_ENV
> > +	prompt "compile in default environment from file"
> > +	bool
> > +	help
> > +	  Text file uboot-defaultenv.txt in the platform config directory
> > +	  describing the builtin default environment.
> > +	  The file should have lines in the form var=value, one per line.
> > +	  Blank lines and lines starting with a # are ignored.
> > +
> >  endif
> >  
> >  if U_BOOT_CONFIGSYSTEM_LEGACY
> > diff --git a/rules/u-boot.make b/rules/u-boot.make
> > index d3ea65cf2..1966ba9b6 100644
> > --- a/rules/u-boot.make
> > +++ b/rules/u-boot.make
> > @@ -39,6 +39,11 @@ endif
> >  U_BOOT_INJECT_PATH	:= ${PTXDIST_SYSROOT_TARGET}/usr/lib/firmware
> >  U_BOOT_INJECT_OOT	:= $(call ptx/ifdef, PTXCONF_U_BOOT_BUILD_OOT,YES,NO)
> >  
> > +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> > +U_BOOT_DEFAULT_ENV_TXT	:= $(call ptx/in-platformconfigdir, uboot-defaultenv.txt)
> > +$(call ptx/cfghash-file, U_BOOT, $(U_BOOT_DEFAULT_ENV_TXT))
> > +endif
> > +
> >  ifdef PTXCONF_U_BOOT_BOOT_SCRIPT
> >  U_BOOT_BOOT_SCRIPT_TXT := $(call ptx/in-platformconfigdir, uboot.scr)
> >  U_BOOT_BOOT_SCRIPT_BIN := $(call remove_quotes, \
> > @@ -119,6 +124,24 @@ endif
> >  
> >  $(STATEDIR)/u-boot.compile:
> >  	@$(call targetinfo)
> > +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> > +	@rm -rf $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
> 
> Did you test this with PTXCONF_U_BOOT_BUILD_OOT enabled?

In fact I tested only OOT build...

> > +	@ln -s $(U_BOOT_DEFAULT_ENV_TXT) $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
> > +#	# pre-2025.10
> > +	@sed -i -e 's,^.*CONFIG_USE_DEFAULT_ENV_FILE.*$$,CONFIG_USE_DEFAULT_ENV_FILE=y,g' \
> > +		$(U_BOOT_BUILD_DIR)/.config
> > +	@sed -i -e '/\\<CONFIG_DEFAULT_ENV_FILE\\>/d' \
> > +		$(U_BOOT_BUILD_DIR)/.config
> > +	@sed -i -e '/CONFIG_USE_DEFAULT_ENV_FILE=y/a CONFIG_DEFAULT_ENV_FILE=".ptxdist-defaultenv"' \
> > +		$(U_BOOT_BUILD_DIR)/.config
> > +#	# 2025.10 and later
> > +	@sed -i -e 's,^.*CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE.*$$,CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y,g' \
> > +		$(U_BOOT_BUILD_DIR)/.config
> > +	@sed -i -e '/\\<CONFIG_ENV_DEFAULT_ENV_TEXT_FILE\\>/d' \
> > +		$(U_BOOT_BUILD_DIR)/.config
> > +	@sed -i -e '/CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y/a CONFIG_ENV_DEFAULT_ENV_TEXT_FILE=".ptxdist-defaultenv"' \
> > +		$(U_BOOT_BUILD_DIR)/.config
> 
> I'd like to avoid patching the config like that. I know we do it in barebox
> as well, but:

Indeed, barebox was my inspiration.

> 1. it's an absolute path that cannot be in the config
> 2. only the variable with the path, not enabling it as well
> 3. legacy, so changing it will break things.
> 
> Please just check here, that the correct options are set and describe what
> needs to be done in the menu help.

Just to be clear: are you suggesting to propose a filename user will
set in u-boot config and the only thing ptxdist does then is to provide
a symling of that name? So I can delete all those nice sed regular
expressions... ;-) What is the suggested default environment name then?

> Michael
> 
> > +endif
> >  	@$(call world/compile, U_BOOT)
> >  ifdef PTXCONF_U_BOOT_VERIFY_SIGNATURE
> >  	@mv $(U_BOOT_BUILD_DIR)/u-boot.dtb $(U_BOOT_BUILD_DIR)/u-boot-pubkey.dtb
> > -- 
> > 2.47.3
> > 
> > 
> > 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [ptxdist] [RFC] u-boot: Build in default envinronment from file
  2026-06-05 15:13   ` Ladislav Michl
@ 2026-06-05 15:46     ` Michael Olbrich
  2026-06-05 15:52       ` Ladislav Michl
  0 siblings, 1 reply; 5+ messages in thread
From: Michael Olbrich @ 2026-06-05 15:46 UTC (permalink / raw)
  To: Ladislav Michl; +Cc: ptxdist

On Fri, Jun 05, 2026 at 05:13:29PM +0200, Ladislav Michl wrote:
> On Fri, Jun 05, 2026 at 04:34:04PM +0200, Michael Olbrich wrote:
> > On Mon, Jun 01, 2026 at 03:42:49PM +0200, Ladislav Michl wrote:
> > > Incorporating default envinroment from external file makes changes to it
> > > much easier compared to creating patch for u-boot creating config file
> > > with CONFIG_EXTRA_ENV_SETTINGS macro.
> > > This however requires xxd tool, so question is where to get it from?
> > > 1. leave to user, similar as HOST_SYSTEM_BC is made
> > 
> > I think we can go with this one.
> > 
> > > 2. add HOST_XXD, make it depend on HOST_VIM to reuse archive and compile
> > >    just xxd
> > > 3. patch u-boot to not use xxd
> > > 
> > > Except for the last case we would need something like 
> > > select HOST_XXD if U_BOOT_DEFAULT_ENV
> > > in the Kconfig.
> > > 
> > > Also, do we want envinronment file name configurable?
> > 
> > No, there is no good reason for something like that.
> > 
> > > Thanks for the suggestions,
> > > 	ladis
> > > 
> > > ---
> > >  platforms/u-boot.in |  9 +++++++++
> > >  rules/u-boot.make   | 23 +++++++++++++++++++++++
> > >  2 files changed, 32 insertions(+)
> > > 
> > > diff --git a/platforms/u-boot.in b/platforms/u-boot.in
> > > index d263135ca..c1abe3930 100644
> > > --- a/platforms/u-boot.in
> > > +++ b/platforms/u-boot.in
> > > @@ -73,6 +73,15 @@ config U_BOOT_CONFIGFILE_KCONFIG
> > >  	help
> > >  	  This entry specifies the .config file used to compile U-Boot.
> > >  
> > > +config U_BOOT_DEFAULT_ENV
> > > +	prompt "compile in default environment from file"
> > > +	bool
> > > +	help
> > > +	  Text file uboot-defaultenv.txt in the platform config directory
> > > +	  describing the builtin default environment.
> > > +	  The file should have lines in the form var=value, one per line.
> > > +	  Blank lines and lines starting with a # are ignored.
> > > +
> > >  endif
> > >  
> > >  if U_BOOT_CONFIGSYSTEM_LEGACY
> > > diff --git a/rules/u-boot.make b/rules/u-boot.make
> > > index d3ea65cf2..1966ba9b6 100644
> > > --- a/rules/u-boot.make
> > > +++ b/rules/u-boot.make
> > > @@ -39,6 +39,11 @@ endif
> > >  U_BOOT_INJECT_PATH	:= ${PTXDIST_SYSROOT_TARGET}/usr/lib/firmware
> > >  U_BOOT_INJECT_OOT	:= $(call ptx/ifdef, PTXCONF_U_BOOT_BUILD_OOT,YES,NO)
> > >  
> > > +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> > > +U_BOOT_DEFAULT_ENV_TXT	:= $(call ptx/in-platformconfigdir, uboot-defaultenv.txt)
> > > +$(call ptx/cfghash-file, U_BOOT, $(U_BOOT_DEFAULT_ENV_TXT))
> > > +endif
> > > +
> > >  ifdef PTXCONF_U_BOOT_BOOT_SCRIPT
> > >  U_BOOT_BOOT_SCRIPT_TXT := $(call ptx/in-platformconfigdir, uboot.scr)
> > >  U_BOOT_BOOT_SCRIPT_BIN := $(call remove_quotes, \
> > > @@ -119,6 +124,24 @@ endif
> > >  
> > >  $(STATEDIR)/u-boot.compile:
> > >  	@$(call targetinfo)
> > > +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> > > +	@rm -rf $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
> > 
> > Did you test this with PTXCONF_U_BOOT_BUILD_OOT enabled?
> 
> In fact I tested only OOT build...
> 
> > > +	@ln -s $(U_BOOT_DEFAULT_ENV_TXT) $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
> > > +#	# pre-2025.10
> > > +	@sed -i -e 's,^.*CONFIG_USE_DEFAULT_ENV_FILE.*$$,CONFIG_USE_DEFAULT_ENV_FILE=y,g' \
> > > +		$(U_BOOT_BUILD_DIR)/.config
> > > +	@sed -i -e '/\\<CONFIG_DEFAULT_ENV_FILE\\>/d' \
> > > +		$(U_BOOT_BUILD_DIR)/.config
> > > +	@sed -i -e '/CONFIG_USE_DEFAULT_ENV_FILE=y/a CONFIG_DEFAULT_ENV_FILE=".ptxdist-defaultenv"' \
> > > +		$(U_BOOT_BUILD_DIR)/.config
> > > +#	# 2025.10 and later
> > > +	@sed -i -e 's,^.*CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE.*$$,CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y,g' \
> > > +		$(U_BOOT_BUILD_DIR)/.config
> > > +	@sed -i -e '/\\<CONFIG_ENV_DEFAULT_ENV_TEXT_FILE\\>/d' \
> > > +		$(U_BOOT_BUILD_DIR)/.config
> > > +	@sed -i -e '/CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y/a CONFIG_ENV_DEFAULT_ENV_TEXT_FILE=".ptxdist-defaultenv"' \
> > > +		$(U_BOOT_BUILD_DIR)/.config
> > 
> > I'd like to avoid patching the config like that. I know we do it in barebox
> > as well, but:
> 
> Indeed, barebox was my inspiration.
> 
> > 1. it's an absolute path that cannot be in the config
> > 2. only the variable with the path, not enabling it as well
> > 3. legacy, so changing it will break things.
> > 
> > Please just check here, that the correct options are set and describe what
> > needs to be done in the menu help.
> 
> Just to be clear: are you suggesting to propose a filename user will
> set in u-boot config and the only thing ptxdist does then is to provide
> a symling of that name? So I can delete all those nice sed regular
> expressions... ;-) What is the suggested default environment name then?

What I mean is: Keep everything but the 'sed' stuff and replace that with
some 'grep .. || ptxd_bailout "some error message"' to ensure, that the
file is actually used.

Michael

> > Michael
> > 
> > > +endif
> > >  	@$(call world/compile, U_BOOT)
> > >  ifdef PTXCONF_U_BOOT_VERIFY_SIGNATURE
> > >  	@mv $(U_BOOT_BUILD_DIR)/u-boot.dtb $(U_BOOT_BUILD_DIR)/u-boot-pubkey.dtb
> > > -- 
> > > 2.47.3
> > > 
> > > 
> > > 
> > 
> > -- 
> > Pengutronix e.K.                           |                             |
> > Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> > 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> > Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> 
> 

-- 
Pengutronix e.K.                           |                             |
Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [ptxdist] [RFC] u-boot: Build in default envinronment from file
  2026-06-05 15:46     ` Michael Olbrich
@ 2026-06-05 15:52       ` Ladislav Michl
  0 siblings, 0 replies; 5+ messages in thread
From: Ladislav Michl @ 2026-06-05 15:52 UTC (permalink / raw)
  To: ptxdist

On Fri, Jun 05, 2026 at 05:46:49PM +0200, Michael Olbrich wrote:
> On Fri, Jun 05, 2026 at 05:13:29PM +0200, Ladislav Michl wrote:
> > On Fri, Jun 05, 2026 at 04:34:04PM +0200, Michael Olbrich wrote:
> > > On Mon, Jun 01, 2026 at 03:42:49PM +0200, Ladislav Michl wrote:
> > > > Incorporating default envinroment from external file makes changes to it
> > > > much easier compared to creating patch for u-boot creating config file
> > > > with CONFIG_EXTRA_ENV_SETTINGS macro.
> > > > This however requires xxd tool, so question is where to get it from?
> > > > 1. leave to user, similar as HOST_SYSTEM_BC is made
> > > 
> > > I think we can go with this one.
> > > 
> > > > 2. add HOST_XXD, make it depend on HOST_VIM to reuse archive and compile
> > > >    just xxd
> > > > 3. patch u-boot to not use xxd
> > > > 
> > > > Except for the last case we would need something like 
> > > > select HOST_XXD if U_BOOT_DEFAULT_ENV
> > > > in the Kconfig.
> > > > 
> > > > Also, do we want envinronment file name configurable?
> > > 
> > > No, there is no good reason for something like that.
> > > 
> > > > Thanks for the suggestions,
> > > > 	ladis
> > > > 
> > > > ---
> > > >  platforms/u-boot.in |  9 +++++++++
> > > >  rules/u-boot.make   | 23 +++++++++++++++++++++++
> > > >  2 files changed, 32 insertions(+)
> > > > 
> > > > diff --git a/platforms/u-boot.in b/platforms/u-boot.in
> > > > index d263135ca..c1abe3930 100644
> > > > --- a/platforms/u-boot.in
> > > > +++ b/platforms/u-boot.in
> > > > @@ -73,6 +73,15 @@ config U_BOOT_CONFIGFILE_KCONFIG
> > > >  	help
> > > >  	  This entry specifies the .config file used to compile U-Boot.
> > > >  
> > > > +config U_BOOT_DEFAULT_ENV
> > > > +	prompt "compile in default environment from file"
> > > > +	bool
> > > > +	help
> > > > +	  Text file uboot-defaultenv.txt in the platform config directory
> > > > +	  describing the builtin default environment.
> > > > +	  The file should have lines in the form var=value, one per line.
> > > > +	  Blank lines and lines starting with a # are ignored.
> > > > +
> > > >  endif
> > > >  
> > > >  if U_BOOT_CONFIGSYSTEM_LEGACY
> > > > diff --git a/rules/u-boot.make b/rules/u-boot.make
> > > > index d3ea65cf2..1966ba9b6 100644
> > > > --- a/rules/u-boot.make
> > > > +++ b/rules/u-boot.make
> > > > @@ -39,6 +39,11 @@ endif
> > > >  U_BOOT_INJECT_PATH	:= ${PTXDIST_SYSROOT_TARGET}/usr/lib/firmware
> > > >  U_BOOT_INJECT_OOT	:= $(call ptx/ifdef, PTXCONF_U_BOOT_BUILD_OOT,YES,NO)
> > > >  
> > > > +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> > > > +U_BOOT_DEFAULT_ENV_TXT	:= $(call ptx/in-platformconfigdir, uboot-defaultenv.txt)
> > > > +$(call ptx/cfghash-file, U_BOOT, $(U_BOOT_DEFAULT_ENV_TXT))
> > > > +endif
> > > > +
> > > >  ifdef PTXCONF_U_BOOT_BOOT_SCRIPT
> > > >  U_BOOT_BOOT_SCRIPT_TXT := $(call ptx/in-platformconfigdir, uboot.scr)
> > > >  U_BOOT_BOOT_SCRIPT_BIN := $(call remove_quotes, \
> > > > @@ -119,6 +124,24 @@ endif
> > > >  
> > > >  $(STATEDIR)/u-boot.compile:
> > > >  	@$(call targetinfo)
> > > > +ifdef PTXCONF_U_BOOT_DEFAULT_ENV
> > > > +	@rm -rf $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
> > > 
> > > Did you test this with PTXCONF_U_BOOT_BUILD_OOT enabled?
> > 
> > In fact I tested only OOT build...
> > 
> > > > +	@ln -s $(U_BOOT_DEFAULT_ENV_TXT) $(U_BOOT_BUILD_DIR)/.ptxdist-defaultenv
> > > > +#	# pre-2025.10
> > > > +	@sed -i -e 's,^.*CONFIG_USE_DEFAULT_ENV_FILE.*$$,CONFIG_USE_DEFAULT_ENV_FILE=y,g' \
> > > > +		$(U_BOOT_BUILD_DIR)/.config
> > > > +	@sed -i -e '/\\<CONFIG_DEFAULT_ENV_FILE\\>/d' \
> > > > +		$(U_BOOT_BUILD_DIR)/.config
> > > > +	@sed -i -e '/CONFIG_USE_DEFAULT_ENV_FILE=y/a CONFIG_DEFAULT_ENV_FILE=".ptxdist-defaultenv"' \
> > > > +		$(U_BOOT_BUILD_DIR)/.config
> > > > +#	# 2025.10 and later
> > > > +	@sed -i -e 's,^.*CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE.*$$,CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y,g' \
> > > > +		$(U_BOOT_BUILD_DIR)/.config
> > > > +	@sed -i -e '/\\<CONFIG_ENV_DEFAULT_ENV_TEXT_FILE\\>/d' \
> > > > +		$(U_BOOT_BUILD_DIR)/.config
> > > > +	@sed -i -e '/CONFIG_ENV_USE_DEFAULT_ENV_TEXT_FILE=y/a CONFIG_ENV_DEFAULT_ENV_TEXT_FILE=".ptxdist-defaultenv"' \
> > > > +		$(U_BOOT_BUILD_DIR)/.config
> > > 
> > > I'd like to avoid patching the config like that. I know we do it in barebox
> > > as well, but:
> > 
> > Indeed, barebox was my inspiration.
> > 
> > > 1. it's an absolute path that cannot be in the config
> > > 2. only the variable with the path, not enabling it as well
> > > 3. legacy, so changing it will break things.
> > > 
> > > Please just check here, that the correct options are set and describe what
> > > needs to be done in the menu help.
> > 
> > Just to be clear: are you suggesting to propose a filename user will
> > set in u-boot config and the only thing ptxdist does then is to provide
> > a symling of that name? So I can delete all those nice sed regular
> > expressions... ;-) What is the suggested default environment name then?
> 
> What I mean is: Keep everything but the 'sed' stuff and replace that with
> some 'grep .. || ptxd_bailout "some error message"' to ensure, that the
> file is actually used.

That just reverses the problem: u-boot can change yet another time, so
testing with grep will work, while envinronment is not used. All at the
expense making it less comfortable for the poor developer.

> Michael
> 
> > > Michael
> > > 
> > > > +endif
> > > >  	@$(call world/compile, U_BOOT)
> > > >  ifdef PTXCONF_U_BOOT_VERIFY_SIGNATURE
> > > >  	@mv $(U_BOOT_BUILD_DIR)/u-boot.dtb $(U_BOOT_BUILD_DIR)/u-boot-pubkey.dtb
> > > > -- 
> > > > 2.47.3
> > > > 
> > > > 
> > > > 
> > > 
> > > -- 
> > > Pengutronix e.K.                           |                             |
> > > Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> > > 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> > > Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |
> > 
> > 
> 
> -- 
> Pengutronix e.K.                           |                             |
> Steuerwalder Str. 21                       | http://www.pengutronix.de/  |
> 31137 Hildesheim, Germany                  | Phone: +49-5121-206917-0    |
> Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-06-05 15:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-06-01 13:42 [ptxdist] [RFC] u-boot: Build in default envinronment from file Ladislav Michl
2026-06-05 14:34 ` Michael Olbrich
2026-06-05 15:13   ` Ladislav Michl
2026-06-05 15:46     ` Michael Olbrich
2026-06-05 15:52       ` Ladislav Michl

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox