package/uboot-tools: use U-Boot host tool printinitialenv to extract environment
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.
---
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
@@ -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
@@ -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
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
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
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
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