Skip to contentSkip to conversation

package/uboot-tools: use U-Boot host tool printinitialenv to extract environment

PATCH Superseded Heiko Thiery 2 participants 5 messages Jan 5

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 package/uboot-tools: use U-Boot host tool printinitialenv to extract environment

If u-boot is compiled with the LTO option, it is no longer possible to use the script 'get_default_envs.sh' for creating an initial U-boot environment binary image. 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

---
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(-)
boot/uboot/uboot.mk +4 -0
index c92568a559..e613d015a9 100644
@@ -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
package/uboot-tools/uboot-tools.mk +5 -4
index 1925047ccd..f8d9cae270 100644
@@ -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
Signature · 6 lines
2.39.5

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#1 lore raw

Hello Heiko,

package/uboot-tools/uboot-tools.mk HOST_UBOOT_TOOLS_DEPENDENCIES += uboot · line 160

Quoted 4 lines · On Mon, 5 Jan 2026 14:23:27 +0100 Heiko Thiery <[email protected]> wrote:
package/uboot-tools/uboot-tools.mk +4 -0
+	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); \

Aren't you now missing the > $(UBOOT_TOOLS_GENERATE_ENV_FILE) redirection in this "else" clause ?

I'm not sure why we're using $(UBOOT_SRCDIR) in all of this instead of $(@D), but that's a comment unrelated to your change.

Thomas

Signature · 7 lines
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#2 lore raw

Hi Thomas,

Am Mo., 5. Jan. 2026 um 14:42 Uhr schrieb Thomas Petazzoni <[email protected]>:

Quoted 6 lines

Hello Heiko,

On Mon, 5 Jan 2026 14:23:27 +0100
Heiko Thiery <[email protected]> wrote:

Quoted 7 lines

package/uboot-tools/uboot-tools.mk HOST_UBOOT_TOOLS_DEPENDENCIES += uboot · line 160

Quoted 4 lines
package/uboot-tools/uboot-tools.mk +4 -0
+     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); \

Aren't you now missing the > $(UBOOT_TOOLS_GENERATE_ENV_FILE) redirection in this "else" clause ?

you are right ;-/

Quoted 5 lines

I'm not sure why we're using $(UBOOT_SRCDIR) in all of this instead of $(@D), but that's a comment unrelated to your change.

At least for the first case we need to use the file coming from the built U-Boot and not from the used sources from u-boot-tools package (an older U-Boot version). How it is for the "old" path I do not know if we could use here the script from the u-boot-tools package version or if it is also related to the U-Boot sources related to the environment.

Quoted 6 lines

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

Signature · 6 lines
BR
Heiko
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#3 lore raw
Quoted 9 lines · On Mon, 5 Jan 2026 14:50:44 +0100 Heiko Thiery <[email protected]> wrote:
Quoted 2 lines

I'm not sure why we're using $(UBOOT_SRCDIR) in all of this instead of $(@D), but that's a comment unrelated to your change.

At least for the first case we need to use the file coming from the built U-Boot and not from the used sources from u-boot-tools package (an older U-Boot version). How it is for the "old" path I do not know if we could use here the script from the u-boot-tools package version or if it is also related to the U-Boot sources related to the environment.

Aaah, yes, indeed.

Isn't it a bit crappy that the uboot-tools package does that? This logic is in uboot-tools, but it uses nothing from uboot-tools, only stuff from the uboot package. But oh well, we're not going to revolutionize this now :)

Thomas

Signature · 7 lines
Thomas Petazzoni, co-owner and CEO, Bootlin
Embedded Linux and Kernel engineering and training
https://bootlin.com
_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
#4 lore raw
Quoted 13 lines · Thomas Petazzoni
Quoted 9 lines · On Mon, 5 Jan 2026 14:50:44 +0100 Heiko Thiery <[email protected]> wrote:
Quoted 2 lines

I'm not sure why we're using $(UBOOT_SRCDIR) in all of this instead of $(@D), but that's a comment unrelated to your change.

At least for the first case we need to use the file coming from the built U-Boot and not from the used sources from u-boot-tools package (an older U-Boot version). How it is for the "old" path I do not know if we could use here the script from the u-boot-tools package version or if it is also related to the U-Boot sources related to the environment.

Quoted 6 lines

Aaah, yes, indeed.

Isn't it a bit crappy that the uboot-tools package does that? This logic is in uboot-tools, but it uses nothing from uboot-tools, only stuff from the uboot package. But oh well, we're not going to revolutionize this now :)

The file that comes out of it is used in HOST_UBOOT_TOOLS_GENERATE_ENVIMAGE.
Of course, we could generate that file in uboot.mk and then use it in uboot-tools.mk, but then uboot.mk has to "know" that it needs to create this file...

Regards,
Arnout

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot