[Buildroot] 'make foo-menuconfig' broken when host-ncurses was built

Peter Korsgaard peter at korsgaard.com
Tue May 1 20:12:28 UTC 2018


>>>>> "Arnout" == Arnout Vandecappelle <arnout at mind.be> writes:

 >  Hi all,
 >  My colleague David observed that since a month or so, the dialogs of 'make
 > linux-menuconfig' looked pretty garbled. After a bit of debugging, it turns out
 > that the problem is mixing host-ncurses with recent (6.0+) system ncurses. Based
 > on the output, I suspect it's mixing an 8-bit ncurses library with widechar
 > termcap files.

 >  This issue is caused by dde090c299 linux: fix passing of host CFLAGS and LDFLAGS

 >  What happens is that kconfig uses pkg-config to discover the ncurses
 > installation. Since our host-ncurses doesn't install a pc file (and in linux.mk
 > we anyway don't pass the approprate PKG_CONFIG_* variables), this will pick up
 > the system's pkg-config settings. However, we set HOSTCC="/usr/bin/gcc -O2
 > -I.../host/include -L.../host/lib -Wl,-rpath,.../host/lib" on the linux make
 > command line, so it *will* actually pick up our host-ncurses library. On my
 > system, 'pkg-config --libs ncurses' returns '-lncurses -ltinfo'. Our ncurses
 > only has libncurses.so, so libtinfo.so will be picked up from the host.

Ahh :/

 >  The question is how to resolve this. The correct thing to do would be to
 > install the .pc file, and to do what Thomas proposed a while ago:
 > $(HOST_DIR)/bin/pkg-config returns the host config, $(CROSS_COMPILE)pkg-config
 > returns the target config. But this will probably result in breakage of a lot of
 > packages...

 >  Any better ideas?

Is that really needed? Can't we just change linux.mk to use
HOST_MAKE_ENV instead of TARGET_MAKE_ENV (it is a target package, but it
only needs to link against host libraries). That wil ensure that the
PKG_CONFIG_* environment variables are set, so if we were to install a
ncurses(w) pc file for the host, kconfig should find and use it?

-- 
Bye, Peter Korsgaard


More information about the buildroot mailing list