Bug 35647

Summary: [Qt] Include file clash when compiling Qt 4.6 with MySQL and WebKit
Product: WebKit Reporter: Tor Arne Vestbø <vestbo>
Component: New BugsAssignee: Nobody <webkit-unassigned>
Status: RESOLVED INVALID    
Severity: Normal CC: hausmann
Priority: P2 Keywords: Qt
Version: 528+ (Nightly build)   
Hardware: Other   
OS: OS X 10.5   

Tor Arne Vestbø
Reported 2010-03-03 03:31:53 PST
This bug report originated from issue QTBUG-6351 http://bugreports.qt.nokia.com/browse/QTBUG-6351 --- Description --- When compiling Qt 4.6 (seems to be the same issue for Git 4.6-stable, 4.6 and master, and also the release candidate 1), there seems to be a include search path clash when Qt is compiled with <tt>-qt-sql-mysql</tt> and <tt>-with-webkit</tt>. <p>Since MySQL support is not included by default, I have to compile Qt manually, and I used the following configuration: </p> <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent"> <pre>/Devel/qt/configure \ -fast \ -opensource \ -no-qt3support \ -no-xmlpatterns \ -no-stl \ -no-accessibility \ -no-multimedia \ -no-phonon \ -no-phonon-backend \ -confirm-license \ -qt-sql-sqlite \ -qt-sql-mysql \ -nomake "demos examples" \ -silent \ -qt-sql-mysql \ -release \ -I /usr/local/libmysql/include \ -L /usr/local/libmysql/lib \ </pre> </div></div> <p>As you can see, I defined an additional include path for the libmysql code/libraries. Now when I run <em>make</em>, it compiles fine for a while, but as soon as it reaches a certain part of WebKit code, the following happens:</p> <div class="preformatted panel" style="border-width: 1px;"><div class="preformattedContent panelContent"> <pre>[...] compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSCustomPositionErrorCallback.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSCustomVoidCallback.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSCustomXPathNSResolver.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDataGridColumnListCustom.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDataGridDataSource.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDocumentCustom.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDocumentFragmentCustom.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMGlobalObject.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowBase.cpp compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp: In member function 'JSC::JSValue WebCore::JSDOMWindow::atob(JSC::ExecState*, const JSC::ArgList&amp;)': /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp:1015: error: 'base64Decode' was not declared in this scope /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp: In member function 'JSC::JSValue WebCore::JSDOMWindow::btoa(JSC::ExecState*, const JSC::ArgList&amp;)': /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowCustom.cpp:1041: error: 'base64Encode' was not declared in this scope compiling /Devel/qt/src/3rdparty/webkit/WebCore/bindings/js/JSDOMWindowShell.cpp make[2]: *** [obj/release/JSDOMWindowCustom.o] Error 1 make[2]: *** Waiting for unfinished jobs.... make[1]: *** [release] Error 2 make: *** [sub-webkit-make_default-ordered] Error 2 bbense-mbp:qt bbense$ </pre> </div></div> <p>It seems that it's possible to work around this by moving the libmysql from a "contained" place like <em>/usr/local/libmysql/</em>, which in turn contains <em>include</em>, <em>lib</em> and <em>bin</em>; to their "public" places like <em>/usr/local/include</em>, etc.</p> <p>I consider this to be a blocker, since it costs a LOT of time if you run into this issue and it likely leads to more reports and problems on the user side.<br/> I assume this is due to the wrong order of include paths, and WebKit includes a file that appears to have the same name in the MySQL drivers, and that one is included instead.</p> <p>Also, take a look at a discussion on the mailing lists for more information:<br/> <span class="nobr"><a href="http://lists.trolltech.com/pipermail/qt4-preview-feedback/2009-November/001114.html">http://lists.trolltech.com/pipermail/qt4-preview-feedback/2009-November/001114.html<sup><img class="rendericon" src="http://bugreports.qt.nokia.com/images/icons/linkext7.gif" height="7" width="7" align="absmiddle" alt="" border="0"/></sup></a></span></p> --- Comments --- Don't use P0. I still think it was a poor design choice on MySQL's part to have a header called "config.h"
Attachments
Simon Hausmann
Comment 1 2010-03-17 15:31:45 PDT
Re-opened upstream Qt bugreport, as this is really an issue with configure and qmake, not a QtWebKit bug.
Note You need to log in before you can comment on or make changes to this bug.