[Buildroot] Busybox build fails on raspberrypi defconfig

Thomas Petazzoni thomas.petazzoni at free-electrons.com
Thu Jun 18 09:02:11 UTC 2015


Hello,

On Thu, 18 Jun 2015 10:54:23 +0200, Johan Oudinet wrote:

> As I don't know how to do better than make clean and make defconfig to
> rebuild from scratch, I've cloned the repository elsewhere.
> Indeed, this time, it successfully compiles.
> 
> I still don't know why it didn't compile before, as I'm pretty sure
> the .config was using uClibc-ng configuration file (because I've
> manually changed it to uClibc-0.9.33.config when I reverted to uClibc
> 0.9.33). At least, I know the problem is not in the git master branch.

I told you in my previous e-mail, but maybe it wasn't clear. It's due
to a kconfig limitation/bug. Basically, here is the scenario:

 * You start from a fresh configuration.

 * You select uClibc 0.9.33, and exit menuconfig.

 * Automatically, the file package/uclibc/uClibc-0.9.33.config is used
   as the uclibc configuration file (option BR2_UCLIBC_CONFIG)

 * Now, you go back to menuconfig, and you decide to switch to
   uClibc-ng.

-> And now, instead of automatically switching to
package/uclibc/uClibc-ng.config, package/uclibc/uClibc-0.9.33.config is
kept as the value of BR2_UCLIBC_CONFIG. This is the limitation of
kconfig I'm talking about above.

See the log below:

$ make distclean
$ make menuconfig
[ no changes, so uClibc 0.9.33 is chosen, at least as long as you are
using Buildroot 2015.05 or older ]
$ grep -E "(BR2_UCLIBC_VERSION|BR2_UCLIBC_CONFIG)" .config
[...]
BR2_UCLIBC_VERSION_0_9_33=y
# BR2_UCLIBC_VERSION_NG is not set
[...]
BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config"
$ make menuconfig
[ switch to uClibc-ng, save and exit ]
$ grep -E "(BR2_UCLIBC_VERSION|BR2_UCLIBC_CONFIG)" .config
[...]
# BR2_UCLIBC_VERSION_0_9_33 is not set
BR2_UCLIBC_VERSION_NG=y
[...]
BR2_UCLIBC_CONFIG="package/uclibc/uClibc-0.9.33.config"

So you end up doing a build of uClibc-ng, but using the uClibc 0.9.33
configuration file, which does not have UTMP=y (because that option did
not exist back in uClibc 0.9.33). So from the point of view of
uClibc-ng, UTMP support is disabled.

One way we could get around this problem is by making the
BR2_UCLIBC_CONFIG option visible only if the user selects another
option like "Use a custom uClibc configuration file".

Best regards,

Thomas
-- 
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com


More information about the buildroot mailing list