diff mbox series

[v3] package/uboot-tools: use uboot host tool printinitialenv to extract env

Message ID 20260106151022.29135-1-heiko.thiery@gmail.com
State New
Headers show
Series [v3] package/uboot-tools: use uboot host tool printinitialenv to extract env | expand

Commit Message

Heiko Thiery Jan. 6, 2026, 3:10 p.m. UTC
If u-boot is compiled with the LTO option, it is no longer possible to
use the script 'get_default_envs.sh'. The problem was already observed
and a solution available upstream u-boot since the commit 486aef08de09 [1].
This was first available in release v2023.04.

Now if the the new tool 'printinitialenv' is available it is used. The
tool is build with u-boot that is a dependency of this package.

[1] https://source.denx.de/u-boot/custodians/u-boot-tegra/-/commit/486aef08de091ca35386f32fe961a201c3cfa9d4

Signed-off-by: Heiko Thiery <heiko.thiery@gmail.com>
---
v3:
    - fixed redirect (thanks Thomas)
v2:
    - used hint from Arnout to check for availibity of the new tool

 boot/uboot/uboot.mk                | 4 ++++
 package/uboot-tools/uboot-tools.mk | 9 +++++----
 2 files changed, 9 insertions(+), 4 deletions(-)

Comments

Thomas Petazzoni Jan. 6, 2026, 3:43 p.m. UTC | #1
Hello Heiko,

On Tue,  6 Jan 2026 16:10:23 +0100
Heiko Thiery <heiko.thiery@gmail.com> wrote:

> diff --git a/package/uboot-tools/uboot-tools.mk b/package/uboot-tools/uboot-tools.mk
> index 1925047ccd..69e03f40d8 100644
> --- a/package/uboot-tools/uboot-tools.mk
> +++ b/package/uboot-tools/uboot-tools.mk
> @@ -154,10 +154,11 @@ HOST_UBOOT_TOOLS_DEPENDENCIES += uboot
>  ifeq ($(UBOOT_TOOLS_GENERATE_ENV_FILE),)
>  UBOOT_TOOLS_GENERATE_ENV_FILE = $(@D)/boot-env-defaults.txt
>  define HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS
> -	CROSS_COMPILE="$(TARGET_CROSS)" \
> -		$(UBOOT_SRCDIR)/scripts/get_default_envs.sh \
> -		$(UBOOT_SRCDIR) \
> -		> $(UBOOT_TOOLS_GENERATE_ENV_FILE)  
> +	if [ -x $(UBOOT_SRCDIR)/tools/printinitialenv ]; then \
> +		$(UBOOT_SRCDIR)/tools/printinitialenv > $(UBOOT_TOOLS_GENERATE_ENV_FILE); \
> +	else \
> +		CROSS_COMPILE="$(TARGET_CROSS)" $(UBOOT_SRCDIR)/scripts/get_default_envs.sh > $(UBOOT_SRCDIR); \

The redirect is still broken here, this command line is not correct, as
it's not the same as it used to be.

Thomas
Heiko Thiery Jan. 6, 2026, 3:50 p.m. UTC | #2
Hi,

Am Di., 6. Jan. 2026 um 16:43 Uhr schrieb Thomas Petazzoni
<thomas.petazzoni@bootlin.com>:
>
> Hello Heiko,
>
> On Tue,  6 Jan 2026 16:10:23 +0100
> Heiko Thiery <heiko.thiery@gmail.com> wrote:
>
> > diff --git a/package/uboot-tools/uboot-tools.mk b/package/uboot-tools/uboot-tools.mk
> > index 1925047ccd..69e03f40d8 100644
> > --- a/package/uboot-tools/uboot-tools.mk
> > +++ b/package/uboot-tools/uboot-tools.mk
> > @@ -154,10 +154,11 @@ HOST_UBOOT_TOOLS_DEPENDENCIES += uboot
> >  ifeq ($(UBOOT_TOOLS_GENERATE_ENV_FILE),)
> >  UBOOT_TOOLS_GENERATE_ENV_FILE = $(@D)/boot-env-defaults.txt
> >  define HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS
> > -     CROSS_COMPILE="$(TARGET_CROSS)" \
> > -             $(UBOOT_SRCDIR)/scripts/get_default_envs.sh \
> > -             $(UBOOT_SRCDIR) \
> > -             > $(UBOOT_TOOLS_GENERATE_ENV_FILE)
> > +     if [ -x $(UBOOT_SRCDIR)/tools/printinitialenv ]; then \
> > +             $(UBOOT_SRCDIR)/tools/printinitialenv > $(UBOOT_TOOLS_GENERATE_ENV_FILE); \
> > +     else \
> > +             CROSS_COMPILE="$(TARGET_CROSS)" $(UBOOT_SRCDIR)/scripts/get_default_envs.sh > $(UBOOT_SRCDIR); \
>
> The redirect is still broken here, this command line is not correct, as
> it's not the same as it used to be.
>

shame on me .. I shouldn't do things like that on the side and then
send them out untested.

> Thomas
> --
> Thomas Petazzoni, co-owner and CEO, Bootlin
> Embedded Linux and Kernel engineering and training
> https://bootlin.com
diff mbox series

Patch

diff --git a/boot/uboot/uboot.mk b/boot/uboot/uboot.mk
index c92568a559..e613d015a9 100644
--- a/boot/uboot/uboot.mk
+++ b/boot/uboot/uboot.mk
@@ -144,6 +144,10 @@  UBOOT_MAKE_TARGET += u-boot.stm32
 endif
 endif
 
+ifeq ($(BR2_PACKAGE_HOST_UBOOT_TOOLS_ENVIMAGE),y)
+UBOOT_MAKE_TARGET += u-boot-initial-env
+endif
+
 ifeq ($(BR2_TARGET_UBOOT_INITIAL_ENV),y)
 UBOOT_MAKE_TARGET += u-boot-initial-env
 define UBOOT_INSTALL_UBOOT_INITIAL_ENV
diff --git a/package/uboot-tools/uboot-tools.mk b/package/uboot-tools/uboot-tools.mk
index 1925047ccd..69e03f40d8 100644
--- a/package/uboot-tools/uboot-tools.mk
+++ b/package/uboot-tools/uboot-tools.mk
@@ -154,10 +154,11 @@  HOST_UBOOT_TOOLS_DEPENDENCIES += uboot
 ifeq ($(UBOOT_TOOLS_GENERATE_ENV_FILE),)
 UBOOT_TOOLS_GENERATE_ENV_FILE = $(@D)/boot-env-defaults.txt
 define HOST_UBOOT_TOOLS_GENERATE_ENV_DEFAULTS
-	CROSS_COMPILE="$(TARGET_CROSS)" \
-		$(UBOOT_SRCDIR)/scripts/get_default_envs.sh \
-		$(UBOOT_SRCDIR) \
-		> $(UBOOT_TOOLS_GENERATE_ENV_FILE)
+	if [ -x $(UBOOT_SRCDIR)/tools/printinitialenv ]; then \
+		$(UBOOT_SRCDIR)/tools/printinitialenv > $(UBOOT_TOOLS_GENERATE_ENV_FILE); \
+	else \
+		CROSS_COMPILE="$(TARGET_CROSS)" $(UBOOT_SRCDIR)/scripts/get_default_envs.sh > $(UBOOT_SRCDIR); \
+	fi
 endef
 endif # UBOOT_TOOLS_GENERATE_ENV_FILE
 endif # BR2_TARGET_UBOOT