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 Bugs | Assignee: | 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ø
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&)':
/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&)':
/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 | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Simon Hausmann
Re-opened upstream Qt bugreport, as this is really an issue with configure and qmake, not a QtWebKit bug.