U-Boot building fails with: ... LD spl/u-boot-spl OBJCOPY spl/u-boot-spl-nodtb.bin COPY spl/u-boot-spl.bin MKSUNXI spl/sunxi-spl.bin BINMAN u-boot-sunxi-with-spl.bin binman: No module named _libfdt make[1]: *** [Makefile:1348: u-boot-sunxi-with-spl.bin] Error 1 This situation occurs on system with only python3 installed and after selecting python3 to install on image So far I can reproduce this situation by this way: Take clean buildroot. Configure it for for any sun7i-a20 board Turn on U-boot and select creation of SPL Turn on dtc and libfdt for uboot Configure U-boot for sunxi boards Build image. And everything will be fine After that cleanup, select python3, and try to build again It does not make, and get error in this situation. I remember there was a bug some years ago with uboot using python3 instead of python2. That bug was fixed, but looks like 'binman' now stumble on the same rope
Sorry for the late answer. I'm taking this bug. Is this report still valid? If yes, please attach a copy your defconfig. You can create it with: $ make sevedefconfig BR2_DEFCONFIG=/tmp/defconfig Then attach the generated /tmp/defconfig to this case.
I can indeed reproduce the issue with the following defconfig: BR2_arm=y BR2_TOOLCHAIN_EXTERNAL=y BR2_TOOLCHAIN_EXTERNAL_CUSTOM=y BR2_TOOLCHAIN_EXTERNAL_DOWNLOAD=y BR2_TOOLCHAIN_EXTERNAL_URL="http://autobuild.buildroot.org/toolchains/tarballs/br-arm-full-2019.05.1.tar.bz2" BR2_TOOLCHAIN_EXTERNAL_GCC_4_9=y BR2_TOOLCHAIN_EXTERNAL_HEADERS_4_14=y BR2_TOOLCHAIN_EXTERNAL_LOCALE=y # BR2_TOOLCHAIN_EXTERNAL_HAS_THREADS_DEBUG is not set BR2_TOOLCHAIN_EXTERNAL_CXX=y BR2_INIT_NONE=y BR2_SYSTEM_BIN_SH_NONE=y # BR2_PACKAGE_BUSYBOX is not set BR2_PACKAGE_LIBVIPS=y # BR2_TARGET_ROOTFS_TAR is not set The problem is that binman has the following shebang: #!/usr/bin/env python2 When python3 is selected for the target, we build host-python3, and we install all host-Python modules for host-python3. So when binman uses python2, it uses the system-provided python2, which does not have those additional Python modules installed.
binman uses python3 since version 2020.01 and https://github.com/u-boot/u-boot/commit/388560134b99dc4cc752627d3a7e9f8c8c2a89a7. uboot-tools has been bumped to 2020.01 on January 24th with https://git.buildroot.net/buildroot/commit/?id=8258a60ad403d8e2637bd1226ec43863e4160726 so perhaps this issue has been "fixed".
I indeed think this issue is resolved now that binman uses python3 in more recent versions of U-Boot. Also Buildroot has been enhanced to be able to describe U-Boot configurations that depend on python2 or python3. Let's assume this is fixed.