Difference between revisions of "User:Robin Cornelius/standalone qtwebkit"

From Second Life Wiki
Jump to navigation Jump to search
(Refresh patch and mention it was already applied)
Line 80: Line 80:
== Part 2 Patching the viewer to use a shared libqtwebkit ==
== Part 2 Patching the viewer to use a shared libqtwebkit ==


Apply the following patch to the viewer code to only link against libqtwebkit
The following patch needs to be applied to viewer code older than SVN revision 2976, to only link against libqtwebkit.
It is already included in snowglobe 1.2 (revision 2976 and higher).


Index: indra/cmake/WebKitLibPlugin.cmake
Index: indra/cmake/WebKitLibPlugin.cmake
===================================================================
===================================================================
--- indra/cmake/WebKitLibPlugin.cmake   (revision 2882)
--- indra/cmake/WebKitLibPlugin.cmake (revision 2973)
+++ indra/cmake/WebKitLibPlugin.cmake   (working copy)
+++ indra/cmake/WebKitLibPlugin.cmake (working copy)
@@ -36,28 +36,5 @@
@@ -34,30 +34,34 @@
  elseif (LINUX)
        debug ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib
       set(WEBKIT_PLUGIN_LIBRARIES
        )
           llqtwebkit
elseif (LINUX)
  -
-    set(WEBKIT_PLUGIN_LIBRARIES
-        qgif
-        llqtwebkit
-#        qico
+    if (STANDALONE)
-        qjpeg
+       set(WEBKIT_PLUGIN_LIBRARIES llqtwebkit)
-#        qpng
+    else (STANDALONE)
-#        qtiff
+      set(WEBKIT_PLUGIN_LIBRARIES
-#        qsvg
+           llqtwebkit
  -
   
-#        QtSvg
-        qgif
-        QtWebKit
-#        qico
-        QtOpenGL
-        qjpeg
-        QtNetwork
-#        qpng
-        QtGui
-#        qtiff
-        QtCore
-#        qsvg
  -
+          qgif
-        fontconfig
+#          qico
-        X11
+          qjpeg
-        Xrender
+#          qpng
-        GL
+#          qtiff
  -
+#          qsvg
-#        sqlite3
   
-#        Xi
-#        QtSvg
-#        SM
-        QtWebKit
           )
-        QtOpenGL
  endif (WINDOWS)
-        QtNetwork
-        QtGui
-        QtCore
+#          QtSvg
+          QtWebKit
+          QtOpenGL
+          QtNetwork
+          QtGui
+          QtCore
   
-        fontconfig
-        X11
-        Xrender
-        GL
+          fontconfig
+          X11
+          Xrender
+          GL
   
-#        sqlite3
-#        Xi
-#        SM
-        )
+#          sqlite3
+#          Xi
+#          SM
+           )
+    endif (STANDALONE)
endif (WINDOWS)

Revision as of 05:20, 7 November 2009

Instructions for building the qt/webkit media plugin using distribution (shared) qt4, instead of static qt4 that the default LL build uses.

Part 1 qtwebkit in shared form

First of all you need to grab the latest code for qt/webkit this is in a mecurial (hg) repository and if you install the mecurial tools for your distribution you can then fetch the code with

 hg clone http://hg.secondlife.com/llqtwebkit/

To get this to build some minor changes are required :-

diff -r d3b5f3a6f6c1 llembeddedbrowserwindow.cpp
--- a/llembeddedbrowserwindow.cpp	Mon Sep 21 14:26:31 2009 -0700
+++ b/llembeddedbrowserwindow.cpp	Tue Nov 03 20:50:14 2009 +0000
@@ -68,7 +68,7 @@
 #include <qdebug.h>
 #endif
 
-#define WEBHISTORYPATCH
+//#define WEBHISTORYPATCH
 
 LLEmbeddedBrowserWindow::LLEmbeddedBrowserWindow()
 {
diff -r d3b5f3a6f6c1 llnetworkaccessmanager.cpp
--- a/llnetworkaccessmanager.cpp	Mon Sep 21 14:26:31 2009 -0700
+++ b/llnetworkaccessmanager.cpp	Tue Nov 03 20:50:14 2009 +0000
@@ -75,7 +75,7 @@
 
 void LLNetworkAccessManager::authenticationRequired(QNetworkReply *reply, QAuthenticator *authenticator)
 {
-    authenticator->tryAgainLater = true;
+    //authenticator->tryAgainLater = true;
     AuthDialog authDialog;
     int i;
     for (i = 0; i < authDialogs.count(); ++i) {
@@ -107,7 +107,7 @@
         authDialog.authenticationDialog->deleteLater();
         authDialog.authenticationDialog = 0;
         authDialogs.removeAt(i);
-        authenticator->tryAgainLater = false;
+        //authenticator->tryAgainLater = false;
     }
 }
 
diff -r d3b5f3a6f6c1 llqtwebkit.pro
--- a/llqtwebkit.pro	Mon Sep 21 14:26:31 2009 -0700
+++ b/llqtwebkit.pro	Tue Nov 03 20:50:14 2009 +0000
@@ -1,4 +1,4 @@
-CONFIG += static
+CONFIG += shared
 TEMPLATE = lib
 TARGET = 
 DEPENDPATH += .
diff -r d3b5f3a6f6c1 static.pri
--- a/static.pri	Mon Sep 21 14:26:31 2009 -0700
+++ b/static.pri	Tue Nov 03 20:50:14 2009 +0000
@@ -1,4 +1,5 @@
 unix {
-    DEFINES += STATIC_QT
-    QTPLUGIN += qgif
+    #DEFINES += STATIC_QT
+    #QTPLUGIN += qgif
+    QMAKE_LFLAGS_SHLIB *= "--rpath=/usr/lib/qt4/plugins/imageformats"
 }

This disables some features that are not avaiable in current qt4/ and in the case of the prepend patch will never be avaiable and also changes the build to use a shared qt4

To apply the above as a patch copy it to a local file, eg shared_qt.patch then from the llqtwebkit folder run :-

patch -p1 < shared_qt.patch

After sucessfully patching the code you can build with

qmake-qt4
make

This will produce a libqtwebkit.so and some symlinks to the library with so name versions. To install the quick and easy way is to

cp *.so /usr/local/lib/
cp llqtwebkit.h /usr/local/include/

Part 2 Patching the viewer to use a shared libqtwebkit

The following patch needs to be applied to viewer code older than SVN revision 2976, to only link against libqtwebkit. It is already included in snowglobe 1.2 (revision 2976 and higher).

Index: indra/cmake/WebKitLibPlugin.cmake

=======================================================

--- indra/cmake/WebKitLibPlugin.cmake (revision 2973) +++ indra/cmake/WebKitLibPlugin.cmake (working copy) @@ -34,30 +34,34 @@

        debug ${ARCH_PREBUILT_DIRS_RELEASE}/libllqtwebkit.dylib
        )
elseif (LINUX)

- set(WEBKIT_PLUGIN_LIBRARIES - llqtwebkit + if (STANDALONE) + set(WEBKIT_PLUGIN_LIBRARIES llqtwebkit) + else (STANDALONE) + set(WEBKIT_PLUGIN_LIBRARIES + llqtwebkit

- qgif -# qico - qjpeg -# qpng -# qtiff -# qsvg + qgif +# qico + qjpeg +# qpng +# qtiff +# qsvg

-# QtSvg - QtWebKit - QtOpenGL - QtNetwork - QtGui - QtCore +# QtSvg + QtWebKit + QtOpenGL + QtNetwork + QtGui + QtCore

- fontconfig - X11 - Xrender - GL + fontconfig + X11 + Xrender + GL

-# sqlite3 -# Xi -# SM - ) +# sqlite3 +# Xi +# SM + ) + endif (STANDALONE)

endif (WINDOWS)