[Webkit-unassigned] [Bug 35647] New: [Qt] Include file clash when compiling Qt 4.6 with MySQL and WebKit

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Wed Mar 3 03:31:53 PST 2010


https://bugs.webkit.org/show_bug.cgi?id=35647

           Summary: [Qt] Include file clash when compiling Qt 4.6 with
                    MySQL and WebKit
           Product: WebKit
           Version: 528+ (Nightly build)
          Platform: Other
        OS/Version: Mac OS X 10.5
            Status: NEW
          Keywords: Qt
          Severity: Normal
          Priority: P2
         Component: New Bugs
        AssignedTo: webkit-unassigned at lists.webkit.org
        ReportedBy: vestbo at webkit.org


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"

-- 
Configure bugmail: https://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.



More information about the webkit-unassigned mailing list