Bug 2221

Summary: Qt does not compile (dependencies not taken into account?)
Product: buildroot Reporter: Luca Ceresoli <luca.ceresoli>
Component: OtherAssignee: unassigned
Status: RESOLVED FIXED    
Severity: major CC: buildroot, luca.ceresoli
Priority: P5    
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Host: Target:
Build:

Description Luca Ceresoli 2010-07-14 12:29:30 UTC
Qt fails the configure step with the following output:

Creating qmake. Please wait...
make[2]: Entering directory `/home/murray/devel/keyser/package/buildroot/output/build/qt-everywhere-opensource-src-4.6.2/qmake'
make[2]: Nothing to be done for `first'.
make[2]: Leaving directory `/home/murray/devel/keyser/package/buildroot/output/build/qt-everywhere-opensource-src-4.6.2/qmake'
The DirectFB screen driver functionality test failed!
 You might need to modify the include and library search paths by editing
 QT_CFLAGS_DIRECTFB and QT_LIBS_DIRECTFB in
 /home/murray/devel/keyser/package/buildroot/output/build/qt-everywhere-opensource-src-4.6.2/mkspecs/qws/linux-arm-g++.
make[1]: *** [/home/murray/devel/keyser/package/buildroot/output/build/qt-everywhere-opensource-src-4.6.2/.configured] Error 1
make[1]: Leaving directory `/home/murray/devel/keyser/package/buildroot'
make: *** [/home/murray/devel/keyser/package/buildroot/output/images/rootfs.arm.tar] Error 2

After make exited I noticed that output/build/directfb*/ had not been created,
which suggests the dependency of Qt on DirectFB has not been taken into account.
Nataraj S Narayan reported a problem that may have the same cause with Qt
trying to use mysql
(http://lists.busybox.net/pipermail/buildroot/2010-July/036068.html).
Comment 1 Luca Ceresoli 2010-07-15 12:46:14 UTC
This patch seems to solve both Nataraj's and my issue.

diff --git a/package/qt/qt.mk b/package/qt/qt.mk
index e2ebbb2..4bfd67a 100644
--- a/package/qt/qt.mk
+++ b/package/qt/qt.mk
@@ -115,6 +115,7 @@ QT_CONFIGURE += -no-gfx-multiscreen
 endif
 ifeq ($(BR2_PACKAGE_QT_GFX_DIRECTFB),y)
 QT_CONFIGURE += -qt-gfx-directfb
+QT_DEP_LIBS+=directfb
 else
 QT_CONFIGURE += -no-gfx-directfb
 endif
@@ -273,6 +274,7 @@ QT_CONFIGURE+= -qt-sql-ibase
 endif
 ifeq ($(BR2_PACKAGE_QT_MYSQL),y)
 QT_CONFIGURE+= -qt-sql-mysql
+QT_DEP_LIBS+=mysql
 endif
 ifeq ($(BR2_PACKAGE_QT_ODBC),y)
 QT_CONFIGURE+= -qt-sql-odbc

I could compile buildroot, but I'm not sure this patch really solves the bug. Given this is a precedence problem I could just have been lucky with make.

In fact the value of QT_DEP_LIBS is used only once (line 608):

 qt: $(QT_DEP_LIBS) $(TARGET_DIR)/usr/lib/libQtCore.so.4

Which does *not* force make to build the libs before libQtCore.so.4.
According to the makefile, the unpack/config/compile and the following libQtCore.so.4 steps do not depend on $(QT_DEP_LIBS).

Am I missing something?

Luca
Comment 2 Thomas Petazzoni 2010-07-16 21:48:36 UTC
I've handled the mysql part of the problem in the patch http://lists.busybox.net/pipermail/buildroot/2010-July/036122.html, which is part of a pull request I hope Peter will merge soon.

The DirectFB part of the problem remains to be fixed, though.
Comment 3 Peter Korsgaard 2010-07-16 21:58:28 UTC
Fixed in git, thanks!

The QT_DEP_LIBS is correct because of the way we build stuff in BR (single threaded toplevel make).