From patchwork Mon Aug 24 12:26:53 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mauro Condarelli X-Patchwork-Id: 510006 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by ozlabs.org (Postfix) with ESMTP id A103A140518 for ; Mon, 24 Aug 2015 22:27:10 +1000 (AEST) Received: from localhost (localhost [127.0.0.1]) by silver.osuosl.org (Postfix) with ESMTP id 85E4033598; Mon, 24 Aug 2015 12:27:09 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from silver.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id O5ym5Qt8yGxH; Mon, 24 Aug 2015 12:27:02 +0000 (UTC) Received: from ash.osuosl.org (ash.osuosl.org [140.211.166.34]) by silver.osuosl.org (Postfix) with ESMTP id 850E133556; Mon, 24 Aug 2015 12:27:02 +0000 (UTC) X-Original-To: buildroot@lists.busybox.net Delivered-To: buildroot@osuosl.org Received: from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137]) by ash.osuosl.org (Postfix) with ESMTP id C103B1C0688 for ; Mon, 24 Aug 2015 12:27:01 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by fraxinus.osuosl.org (Postfix) with ESMTP id BD92EA3FA4 for ; Mon, 24 Aug 2015 12:27:01 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from fraxinus.osuosl.org ([127.0.0.1]) by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id VHGFhBnYqazY for ; Mon, 24 Aug 2015 12:26:59 +0000 (UTC) X-Greylist: from auto-whitelisted by SQLgrey-1.7.6 Received: from relaygw3-12.mclink.it (relaygw3-12.mclink.it [213.21.178.175]) by fraxinus.osuosl.org (Postfix) with ESMTP id 3F537A3F9A for ; Mon, 24 Aug 2015 12:26:58 +0000 (UTC) Received: from smtpoutgw3.mclink.it ([172.24.30.43] verified) by relaygw3-12.mclink.it (CommuniGate Pro SMTP 6.0.6) with ESMTP id 62503487 for buildroot@buildroot.org; Mon, 24 Aug 2015 14:26:57 +0200 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A2D6AADwDNtV/7T8/l8NUINvLTyqAAEBAQEBAQaTZAEJgW+CfoMFAoFlFAEBAQEBAQGFLgEBBDhAEQshFg8JAwIBAgFFBgEMBgIBAYgVAwYRsCyQPwyFWAEBAQcBAQEBAR2GI4U0hCVshCwBBIcmhm6HGQdPhDeHbJpQhCZvAYEEgUcBAQE Received: from host180-252-static.254-95-b.business.telecomitalia.it (HELO [192.168.7.124]) ([95.254.252.180]) by smtpoutgw3.mclink.it with ESMTP; 24 Aug 2015 14:26:56 +0200 To: "Yann E. MORIN" , buildroot@buildroot.org References: <1440265993-31292-1-git-send-email-yann.morin.1998@free.fr> From: Mauro Condarelli Message-ID: <55DB0D8D.5060908@mclink.it> Date: Mon, 24 Aug 2015 14:26:53 +0200 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <1440265993-31292-1-git-send-email-yann.morin.1998@free.fr> Subject: Re: [Buildroot] [PATCH] core/pkg-kconfig: fix configurators X-BeenThere: buildroot@busybox.net X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: Discussion and development of buildroot List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: buildroot-bounces@busybox.net Sender: "buildroot" I can confirm this patch solves my problem, as shown in the following transcript: mcon@ariag25 ~/emotiq/prove/v2-testing/Buildroot $ ( cd buildroot && make O=../output linux-menuconfig ) PATH="/home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/bin:/home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/sbin:/home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/usr/bin:/home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games" BR_BINARIES_DIR=/home/mcon/emotiq/prove/v2-testing/Buildroot/output/images /usr/bin/make -j3 -C /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4 HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=arm INSTALL_MOD_PATH=/home/mcon/emotiq/prove/v2-testing/Buildroot/output/target CROSS_COMPILE=" /home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabi-" DEPMOD=/home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/sbin/depmod menuconfig make[1]: Entering directory '/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4' HOSTCC scripts/kconfig/mconf.o *** Unable to find the ncurses libraries or the *** required header files. *** 'make menuconfig' requires the ncurses libraries. *** *** Install ncurses (ncurses-devel) and try again. *** scripts/kconfig/Makefile:187: recipe for target 'scripts/kconfig/dochecklxdialog' failed make[2]: *** [scripts/kconfig/dochecklxdialog] Error 1 Makefile:541: recipe for target 'menuconfig' failed make[1]: *** [menuconfig] Error 2 make[1]: Leaving directory '/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4' linux/linux.mk:386: recipe for target '/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.kconfig_editor_menuconfig' failed make: *** [/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.kconfig_editor_menuconfig] Error 2 mcon@ariag25 ~/emotiq/prove/v2-testing/Buildroot $ patch -p1 patching file package/pkg-kconfig.mk mcon@ariag25 ~/emotiq/prove/v2-testing/Buildroot $( cd buildroot && make O=../output linux-menuconfig ) BR_BINARIES_DIR=/home/mcon/emotiq/prove/v2-testing/Buildroot/output/images /usr/bin/make -j3 -C /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4 HOSTCC="/usr/bin/gcc" HOSTCFLAGS="" ARCH=arm INSTALL_MOD_PATH=/home/mcon/emotiq/prove/v2-testing/Buildroot/output/target CROSS_COMPILE=" /home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/usr/bin/arm-buildroot-linux-gnueabi-" DEPMOD=/home/mcon/emotiq/prove/v2-testing/Buildroot/output/host/sbin/depmod menuconfig make[1]: Entering directory '/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4' HOSTCC scripts/kconfig/mconf.o HOSTCC scripts/kconfig/zconf.tab.o HOSTCC scripts/kconfig/lxdialog/checklist.o HOSTCC scripts/kconfig/lxdialog/util.o HOSTCC scripts/kconfig/lxdialog/inputbox.o HOSTCC scripts/kconfig/lxdialog/textbox.o HOSTCC scripts/kconfig/lxdialog/yesno.o HOSTCC scripts/kconfig/lxdialog/menubox.o HOSTLD scripts/kconfig/mconf scripts/kconfig/mconf Kconfig *** End of the configuration. *** Execute 'make' to start the build or try 'make help'. make[1]: Leaving directory '/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4' rm -f /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.stamp_{kconfig_fixup_done,configured,built} rm -f /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.stamp_{target,staging,images}_installed /bin/sed -i -e "/\\/d" /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config echo 'CONFIG_AEABI=y' >> /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config # As the kernel gets compiled before root filesystems are # built, we create a fake cpio file. It'll be # replaced later by the real cpio archive, and the kernel will be # rebuilt using the linux-rebuild-with-initramfs target. /bin/sed -i -e "/\\/d" /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config echo 'CONFIG_DEVTMPFS=y' >> /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config /bin/sed -i -e "/\\/d" /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config echo 'CONFIG_DEVTMPFS_MOUNT=y' >> /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config /bin/sed -i -e "/\\/d" /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config echo 'CONFIG_INOTIFY_USER=y' >> /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config /bin/sed -i -e "/\\/d" /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config echo 'CONFIG_ARM_APPENDED_DTB=y' >> /home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4/.config make[1]: Entering directory '/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4' HOSTCC scripts/kconfig/zconf.tab.o HOSTLD scripts/kconfig/conf scripts/kconfig/conf --oldconfig Kconfig # # configuration written to .config # make[1]: Leaving directory '/home/mcon/emotiq/prove/v2-testing/Buildroot/output/build/linux-4.1.4' mcon@ariag25 ~/emotiq/prove/v2-testing/Buildroot $ Tested-by: Mauro Condarelli Regards Mauro Il 22/08/2015 19:53, Yann E. MORIN ha scritto: > Currently, the configurators are using $($(2)_MAKE_ENV) , often derived > from $(TARGE_MAKE_ENV) , as the environment to be set when calling the > various configurators. > > This means that our host tools are used first, most notably pkg-config > (from host-pkgconf). > > However, this is inherently flawed. Our pkg-config, when set for the > host, only searches .pc files in $(HOST_DIR) and never ever uses the > ones from the host. For example, since we do not build a host-qt, our > pkg-config would not find the host's QtCore.pc et al. > > Consequently, on some systems (but not on others?) most of the > configurators fail to build, especially the latest kernel versions, as > they have been starting to use pkg-config two years ago. > > Fix that by filtering-out sensible values out of the environment, but > only when calling the configurators. > > Reported-by: Mauro Condarelli > Signed-off-by: "Yann E. MORIN" > Cc: Thomas Petazzoni > Cc: Mauro Condarelli > --- > package/pkg-kconfig.mk | 11 ++++++++++- > 1 file changed, 10 insertions(+), 1 deletion(-) > > diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk > index 375607f..158c386 100644 > --- a/package/pkg-kconfig.mk > +++ b/package/pkg-kconfig.mk > @@ -96,6 +96,15 @@ $$(error Internal error: no value specified for $(2)_KCONFIG_FILE) > endif > endif > > +# For the configurators, we do want to use the system-provided host tools, not > +# the ones we build. This is particularly true for pkg-config; if we use our > +# pkg-config (from host-pkgconf), then it would not look for the .pc from the > +# host, but we do need them, especially to find ncurses, GTK+, Qt (resp. for > +# menuconfig and nconfig, gconfig, xconfig). > +# So we simply remove our PATH and PKG_CONFIG_* variables. > +$(2)_CONFIGURATOR_MAKE_ENV = \ > + $$(filter-out PATH=% PKG_CONFIG=% PKG_CONFIG_SYSROOT_DIR=% PKG_CONFIG_LIBDIR=%,$$($(2)_MAKE_ENV)) > + > # Configuration editors (menuconfig, ...) > # > # We need to apply the configuration fixups right after a configuration > @@ -112,7 +121,7 @@ endif > # > $$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $(1)-%: $$($(2)_DIR)/.kconfig_editor_% > $$($(2)_DIR)/.kconfig_editor_%: $$($(2)_DIR)/.stamp_kconfig_fixup_done > - $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \ > + $$($(2)_CONFIGURATOR_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \ > $$($(2)_KCONFIG_OPTS) $$(*) > rm -f $$($(2)_DIR)/.stamp_{kconfig_fixup_done,configured,built} > rm -f $$($(2)_DIR)/.stamp_{target,staging,images}_installed diff --git a/package/pkg-kconfig.mk b/package/pkg-kconfig.mk index 375607f..158c386 100644 --- a/package/pkg-kconfig.mk +++ b/package/pkg-kconfig.mk @@ -96,6 +96,15 @@ $$(error Internal error: no value specified for $(2)_KCONFIG_FILE) endif endif +# For the configurators, we do want to use the system-provided host tools, not +# the ones we build. This is particularly true for pkg-config; if we use our +# pkg-config (from host-pkgconf), then it would not look for the .pc from the +# host, but we do need them, especially to find ncurses, GTK+, Qt (resp. for +# menuconfig and nconfig, gconfig, xconfig). +# So we simply remove our PATH and PKG_CONFIG_* variables. +$(2)_CONFIGURATOR_MAKE_ENV = \ + $$(filter-out PATH=% PKG_CONFIG=% PKG_CONFIG_SYSROOT_DIR=% PKG_CONFIG_LIBDIR=%,$$($(2)_MAKE_ENV)) + # Configuration editors (menuconfig, ...) # # We need to apply the configuration fixups right after a configuration @@ -112,7 +121,7 @@ endif # $$(addprefix $(1)-,$$($(2)_KCONFIG_EDITORS)): $(1)-%: $$($(2)_DIR)/.kconfig_editor_% $$($(2)_DIR)/.kconfig_editor_%: $$($(2)_DIR)/.stamp_kconfig_fixup_done - $$($(2)_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \ + $$($(2)_CONFIGURATOR_MAKE_ENV) $$(MAKE) -C $$($(2)_DIR) \ $$($(2)_KCONFIG_OPTS) $$(*) rm -f $$($(2)_DIR)/.stamp_{kconfig_fixup_done,configured,built} rm -f $$($(2)_DIR)/.stamp_{target,staging,images}_installed