User:Robin Cornelius/standalone qtwebkit

From Second Life Wiki
Jump to navigation Jump to search

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