summaryrefslogtreecommitdiffstats
path: root/source/kde/patch
diff options
context:
space:
mode:
author Patrick J Volkerding <volkerdi@slackware.com>2012-09-26 01:10:42 +0000
committer Eric Hameleers <alien@slackware.com>2018-05-31 22:51:55 +0200
commit9664bee729d487bcc0a0bc35859f8e13d5421c75 (patch)
treeb428a16618e36ed864a8d76ea3435e19a452bf90 /source/kde/patch
parent75a4a592e5ccda30715f93563d741b83e0dcf39e (diff)
downloadcurrent-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.gz
current-9664bee729d487bcc0a0bc35859f8e13d5421c75.tar.xz
Slackware 14.0slackware-14.0
Wed Sep 26 01:10:42 UTC 2012 Slackware 14.0 x86_64 stable is released! We're perfectionists here at Slackware, so this release has been a long time a-brewing. But we think you'll agree that it was worth the wait. Slackware 14.0 combines modern components, ease of use, and flexible configuration... our "KISS" philosophy demands it. The ISOs are off to be replicated, a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. Please consider supporting the Slackware project by picking up a copy from store.slackware.com. We're taking pre-orders now, and offer a discount if you sign up for a subscription. Thanks to everyone who helped make this happen. The Slackware team, the upstream developers, and (of course) the awesome Slackware user community. Have fun! :-)
Diffstat (limited to 'source/kde/patch')
-rw-r--r--source/kde/patch/README18
-rw-r--r--source/kde/patch/amarok.patch3
-rw-r--r--source/kde/patch/amarok/amarok-liblastfm1.patch704
-rw-r--r--source/kde/patch/calligra.patch3
-rw-r--r--source/kde/patch/calligra/calligra.words.fix_overflow.diff16
-rw-r--r--source/kde/patch/kde-workspace.patch5
-rw-r--r--source/kde/patch/kde-workspace/kde-workspace.batteryapplet.diff16
-rw-r--r--source/kde/patch/kde-workspace/kde-workspace.kdm.server.timeout.diff14
-rw-r--r--source/kde/patch/kdelibs.patch8
-rw-r--r--source/kde/patch/kdelibs/kdelibs.docbook.patch11
-rw-r--r--source/kde/patch/kdelibs/kdelibs.upnp_conditional.patch15
-rw-r--r--source/kde/patch/kdepim.patch3
-rw-r--r--source/kde/patch/kdepim/kdepim-4.5.85-install-headers.patch124
-rw-r--r--source/kde/patch/kdewebdev.patch5
-rw-r--r--source/kde/patch/kdewebdev/include-tidy.patch13
-rw-r--r--source/kde/patch/korundum.patch4
-rw-r--r--source/kde/patch/korundum/korundum_ruby19.patch31
17 files changed, 993 insertions, 0 deletions
diff --git a/source/kde/patch/README b/source/kde/patch/README
new file mode 100644
index 000000000..2478e45f9
--- /dev/null
+++ b/source/kde/patch/README
@@ -0,0 +1,18 @@
+
+IMPORTANT!
+
+To fail/exit a script, use this:
+
+[command that fails] || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
+DO NOT USE THIS:
+
+[command that fails] || exit 1
+
+as it will cause the parent script to exit in the wrong location and possibly
+silently skip building some packages.
+
+Thanks,
+
+The Management
+
diff --git a/source/kde/patch/amarok.patch b/source/kde/patch/amarok.patch
new file mode 100644
index 000000000..35d438318
--- /dev/null
+++ b/source/kde/patch/amarok.patch
@@ -0,0 +1,3 @@
+# Build against liblastfm 1.0.1.
+cat $CWD/patch/amarok/amarok-liblastfm1.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
diff --git a/source/kde/patch/amarok/amarok-liblastfm1.patch b/source/kde/patch/amarok/amarok-liblastfm1.patch
new file mode 100644
index 000000000..434993121
--- /dev/null
+++ b/source/kde/patch/amarok/amarok-liblastfm1.patch
@@ -0,0 +1,704 @@
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/CMakeLists.txt amarok-2.5.96/CMakeLists.txt
+--- amarok-2.5.96.orig/CMakeLists.txt 2012-07-31 12:17:20.000000000 +0200
++++ amarok-2.5.96/CMakeLists.txt 2012-08-02 16:34:08.465503197 +0200
+@@ -129,7 +129,7 @@
+ # macro_log_feature( STRIGI_FOUND "strigi" "Index metadata of files" "http://strigi.sourceforge.net" FALSE "" "" )
+
+ macro_optional_find_package(LibLastFm)
+- macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-0.3.0.tar.bz2" FALSE "" "version 0.3.x (versions 1.0 or higher are incompatible)" )
++ macro_log_feature( LIBLASTFM_FOUND "liblastfm" "Enable Last.Fm service, including scrobbling, song submissions, and suggested song dynamic playlists" "http://cdn.last.fm/src/liblastfm-1.0.0.tar.gz" FALSE "1.0.0" "" )
+ macro_bool_to_01( LIBLASTFM_FOUND HAVE_LIBLASTFM )
+
+ macro_optional_find_package( FFmpeg )
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/cmake/modules/FindLibLastFm.cmake amarok-2.5.96/cmake/modules/FindLibLastFm.cmake
+--- amarok-2.5.96.orig/cmake/modules/FindLibLastFm.cmake 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/cmake/modules/FindLibLastFm.cmake 2012-08-02 16:32:36.418653940 +0200
+@@ -6,7 +6,7 @@
+ # LIBLASTFM_FOUND, whether liblastfm was found
+
+
+-find_path(LIBLASTFM_INCLUDE_DIR NAMES Audioscrobbler
++find_path(LIBLASTFM_INCLUDE_DIR NAMES lastfm
+ HINTS
+ ~/usr/include
+ /opt/local/include
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/LastfmReadLabelCapability.cpp amarok-2.5.96/src/LastfmReadLabelCapability.cpp
+--- amarok-2.5.96.orig/src/LastfmReadLabelCapability.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/LastfmReadLabelCapability.cpp 2012-08-02 16:32:36.419653927 +0200
+@@ -22,8 +22,7 @@
+ #include <QMap>
+ #include <QNetworkReply>
+
+-#include <lastfm/XmlQuery>
+-#include <ws.h>
++#include <lastfm/XmlQuery.h>
+ #include "core/support/Amarok.h"
+
+ namespace Capabilities
+@@ -72,7 +71,8 @@
+ {
+ case QNetworkReply::NoError:
+ {
+- lastfm::XmlQuery lfm = m_job->readAll();
++ lastfm::XmlQuery lfm;
++ lfm.parse(m_job->readAll());
+ QList<lastfm::XmlQuery> tags = lfm.children( "tag" );
+ QStringList ret;
+ foreach( const lastfm::XmlQuery &child, tags )
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp amarok-2.5.96/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp
+--- amarok-2.5.96.orig/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/context/engines/upcomingevents/UpcomingEventsEngine.cpp 2012-08-02 16:32:35.962659642 +0200
+@@ -27,10 +27,6 @@
+ #include "EngineController.h"
+ #include "LastFmEventXmlParser.h"
+
+-// LastFm
+-#include <lastfm/XmlQuery>
+-#include <lastfm/ws.h>
+-
+ // KDE
+ #include <KDateTime>
+
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/core/support/Amarok.h amarok-2.5.96/src/core/support/Amarok.h
+--- amarok-2.5.96.orig/src/core/support/Amarok.h 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/core/support/Amarok.h 2012-08-02 16:32:35.962659642 +0200
+@@ -203,6 +203,7 @@
+
+ inline const char* discogsApiKey() { return "91734dd989"; }
+ inline const char* lastfmApiKey() { return "402d3ca8e9bc9d3cf9b85e1202944ca5"; }
++ inline const char* lastfmApiSharedSecret() { return "fe0dcde9fcd14c2d1d50665b646335e9"; }
+ inline const char* yahooBossApiKey() { return "oQepTNrV34G9Satb1dgRZ8hdl1uhJvguDSU5Knl2Xd4ALK85knYt6ylr.FTA57XMRBA-"; }
+ inline const char* flickrApiKey() { return "9c5a288116c34c17ecee37877397fe31"; }
+ }
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/ampache/LastfmInfoParser.cpp amarok-2.5.96/src/services/ampache/LastfmInfoParser.cpp
+--- amarok-2.5.96.orig/src/services/ampache/LastfmInfoParser.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/ampache/LastfmInfoParser.cpp 2012-08-02 16:32:35.954659742 +0200
+@@ -20,8 +20,7 @@
+ #include "core/support/Amarok.h"
+ #include "core/support/Debug.h"
+
+-#include <lastfm/XmlQuery>
+-#include <lastfm/ws.h>
++#include <lastfm/XmlQuery.h>
+
+ #include <KLocale>
+
+@@ -55,7 +54,8 @@
+ {
+ case QNetworkReply::NoError:
+ {
+- lastfm::XmlQuery lfm = m_jobs[ "getTrackInfo" ]->readAll();
++ lastfm::XmlQuery lfm;
++ lfm.parse( m_jobs[ "getTrackInfo" ]->readAll() );
+ lastfm::XmlQuery wiki = lfm["track"]["wiki"];
+ const QString contentText = wiki["content"].text();
+ const QString publishedDate = wiki["published"].text();
+@@ -103,7 +103,8 @@
+ {
+ case QNetworkReply::NoError:
+ {
+- lastfm::XmlQuery lfm = m_jobs[ "getAlbumInfo" ]->readAll();
++ lastfm::XmlQuery lfm;
++ lfm.parse( m_jobs[ "getAlbumInfo" ]->readAll() );
+ lastfm::XmlQuery wiki = lfm["album"]["wiki"];
+ const QString summaryText = wiki["summary"].text();
+ const QString contentText = wiki["content"].text();
+@@ -155,7 +156,8 @@
+ {
+ case QNetworkReply::NoError:
+ {
+- lastfm::XmlQuery lfm = m_jobs[ "getArtistInfo" ]->readAll();
++ lastfm::XmlQuery lfm;
++ lfm.parse( m_jobs[ "getArtistInfo" ]->readAll() );
+ debug() << lfm.text();
+ lastfm::XmlQuery bio = lfm["artist"]["bio"];
+ const QString summaryText = bio["summary"].text();
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/LastFmService.cpp amarok-2.5.96/src/services/lastfm/LastFmService.cpp
+--- amarok-2.5.96.orig/src/services/lastfm/LastFmService.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/LastFmService.cpp 2012-08-02 16:32:35.955659729 +0200
+@@ -46,8 +46,8 @@
+ #include "widgets/SearchWidget.h"
+ #include "NetworkAccessManagerProxy.h"
+
+-#include <lastfm/Audioscrobbler> // from liblastfm
+-#include <lastfm/XmlQuery>
++#include <lastfm/Audioscrobbler.h> // from liblastfm
++#include <lastfm/XmlQuery.h>
+
+ #include <KLocale>
+ #include <KPasswordDialog>
+@@ -224,10 +224,7 @@
+ {
+ // set the global static Lastfm::Ws stuff
+ lastfm::ws::ApiKey = Amarok::lastfmApiKey();
+- lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
+- // testing w/ official keys
+- //Ws::SharedSecret = "73582dfc9e556d307aead069af110ab8";
+- //Ws::ApiKey = "c8c7b163b11f92ef2d33ba6cd3c2c3c3";
++ lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
+ m_userNameArray = qstrdup( m_userName.toLatin1().data() );
+ lastfm::ws::Username = m_userNameArray;
+ if( lastfm::nam() != The::networkAccessManager() )
+@@ -309,7 +306,8 @@
+ case QNetworkReply::NoError:
+ {
+
+- lastfm::XmlQuery lfm = lastfm::XmlQuery( m_jobs[ "auth" ]->readAll() );
++ lastfm::XmlQuery lfm;
++ lfm.parse( m_jobs[ "auth" ]->readAll() );
+ LastFmServiceConfig config;
+
+ if( lfm.children( "error" ).size() > 0 )
+@@ -359,10 +357,8 @@
+ {
+ case QNetworkReply::NoError:
+ {
+- try
+- {
+- lastfm::XmlQuery lfm( m_jobs[ "getUserInfo" ]->readAll() );
+-
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( m_jobs[ "getUserInfo" ]->readAll() ) ) {
+ m_country = lfm["user"]["country"].text();
+ m_age = lfm["user"]["age"].text();
+ m_gender = lfm["user"]["gender"].text();
+@@ -381,9 +377,10 @@
+ }
+ updateProfileInfo();
+
+- } catch( lastfm::ws::ParseError& e )
++ }
++ else
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+ }
+ break;
+ } case QNetworkReply::AuthenticationRequiredError:
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/LastFmServiceCollection.cpp amarok-2.5.96/src/services/lastfm/LastFmServiceCollection.cpp
+--- amarok-2.5.96.orig/src/services/lastfm/LastFmServiceCollection.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/LastFmServiceCollection.cpp 2012-08-02 16:32:35.956659716 +0200
+@@ -26,7 +26,7 @@
+ #include "core-impl/collections/support/MemoryQueryMaker.h"
+
+ #include <lastfm/ws.h>
+-#include <lastfm/XmlQuery>
++#include <lastfm/XmlQuery.h>
+
+ #include <QNetworkReply>
+
+@@ -154,10 +154,9 @@
+ case QNetworkReply::NoError:
+ {
+ // iterate through each neighbour
+- try
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
+ {
+- lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
+-
+ foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
+ {
+ const QString name = e[ "name" ].text();
+@@ -168,9 +167,10 @@
+ addTrack( trackPtr );
+ }
+
+- } catch( lastfm::ws::ParseError& e )
++ }
++ else
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+ }
+ break;
+ }
+@@ -195,15 +195,14 @@
+ case QNetworkReply::NoError:
+ {
+ // iterate through each neighbour
+- try
++ if( !m_jobs[ "user.getNeighbours" ] )
++ {
++ debug() << "BAD! got no result object";
++ return;
++ }
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( m_jobs[ "user.getNeighbours" ]->readAll() ) )
+ {
+- if( !m_jobs[ "user.getNeighbours" ] )
+- {
+- debug() << "BAD! got no result object";
+- return;
+- }
+- lastfm::XmlQuery lfm( m_jobs[ "user.getNeighbours" ]->readAll() );
+-
+ // iterate through each neighbour
+ foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children( "user" ) )
+ {
+@@ -218,9 +217,10 @@
+
+ // should be safe, as both slots SHOULD get called before we return to the event loop...
+ m_jobs[ "user.getNeighbours" ]->deleteLater();
+- } catch( lastfm::ws::ParseError& e )
++ }
++ else
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+ }
+ break;
+ }
+@@ -248,10 +248,9 @@
+ {
+ case QNetworkReply::NoError:
+ {
+- try
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
+ {
+- lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
+-
+ foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
+ {
+ const QString name = e[ "name" ].text();
+@@ -261,9 +260,10 @@
+ addTrack( trackPtr );
+ }
+
+- } catch( lastfm::ws::ParseError& e )
++ }
++ else
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+ }
+ break;
+ }
+@@ -293,10 +293,9 @@
+ {
+ case QNetworkReply::NoError:
+ {
+- try
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( m_jobs[ "user.getFriends" ]->readAll() ) )
+ {
+- lastfm::XmlQuery lfm( m_jobs[ "user.getFriends" ]->readAll() );
+-
+ foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children( "user" ) )
+ {
+ const QString name = e[ "name" ].text();
+@@ -306,9 +305,10 @@
+ addTrack( trackPtr );
+ }
+
+- } catch( lastfm::ws::ParseError& e )
++ }
++ else
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+ }
+ break;
+ }
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/LastFmServiceSettings.cpp amarok-2.5.96/src/services/lastfm/LastFmServiceSettings.cpp
+--- amarok-2.5.96.orig/src/services/lastfm/LastFmServiceSettings.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/LastFmServiceSettings.cpp 2012-08-02 16:32:35.957659703 +0200
+@@ -23,9 +23,9 @@
+ #include "NetworkAccessManagerProxy.h"
+ #include "ui_LastFmConfigWidget.h"
+
+-#include <lastfm/Audioscrobbler> // from liblastfm
++#include <lastfm/Audioscrobbler.h> // from liblastfm
+ #include <lastfm/ws.h>
+-#include <lastfm/XmlQuery>
++#include <lastfm/XmlQuery.h>
+
+ #include <QCryptographicHash>
+ #include <QNetworkAccessManager>
+@@ -100,7 +100,7 @@
+ m_configDialog->testLogin->setText( i18n( "Testing..." ) );
+ // set the global static Lastfm::Ws stuff
+ lastfm::ws::ApiKey = Amarok::lastfmApiKey();
+- lastfm::ws::SharedSecret = "fe0dcde9fcd14c2d1d50665b646335e9";
++ lastfm::ws::SharedSecret = Amarok::lastfmApiSharedSecret();
+ lastfm::ws::Username = qstrdup( m_configDialog->kcfg_ScrobblerUsername->text().toLatin1().data() );
+ if( lastfm::nam() != The::networkAccessManager() )
+ lastfm::setNetworkAccessManager( The::networkAccessManager() );
+@@ -126,7 +126,8 @@
+ {
+ DEBUG_BLOCK
+
+- lastfm::XmlQuery lfm = lastfm::XmlQuery( m_authQuery->readAll() );
++ lastfm::XmlQuery lfm;
++ lfm.parse( m_authQuery->readAll() );
+
+ switch( m_authQuery->error() )
+ {
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/LastFmTreeModel.cpp amarok-2.5.96/src/services/lastfm/LastFmTreeModel.cpp
+--- amarok-2.5.96.orig/src/services/lastfm/LastFmTreeModel.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/LastFmTreeModel.cpp 2012-08-02 16:32:35.958659691 +0200
+@@ -26,8 +26,8 @@
+ #include "AmarokMimeData.h"
+
+ #include <lastfm/ws.h>
+-#include <lastfm/Tag>
+-#include <lastfm/XmlQuery>
++#include <lastfm/Tag.h>
++#include <lastfm/XmlQuery.h>
+
+ #include <KIcon>
+ #include <KLocale>
+@@ -68,11 +68,12 @@
+ {
+ DEBUG_BLOCK
+
+- try
+- {
+ // Iterate over each neighbor, in two passes: 1) Get data 2) Sort data, store in model
+
+- lastfm::XmlQuery lfm( m_jobs[ "getNeighbours" ]->readAll() );
++ lastfm::XmlQuery lfm;
++ lfm.parse( m_jobs[ "getNeighbours" ]->readAll() );
++ if( lfm.parseError().enumValue() == lastfm::ws::NoError )
++ {
+ foreach( const lastfm::XmlQuery &e, lfm[ "neighbours" ].children ( "user" ) )
+ {
+ const QString name = e[ "name" ].text();
+@@ -88,11 +89,11 @@
+ appendUserStations( neighbor, name );
+ }
+ m_neighbors.sort();
++ } else {
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++ return;
+ }
+- catch( lastfm::ws::ParseError e )
+- {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
+- }
++
+ emitRowChanged(LastFm::Neighbors);
+ m_jobs[ "getNeighbours" ]->deleteLater();
+ }
+@@ -102,11 +103,11 @@
+ {
+ DEBUG_BLOCK
+
+- try
+- {
+- // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
++ // Iterate over each friend, in two passes: 1) Get data 2) Sort data, store in model
+
+- lastfm::XmlQuery lfm( m_jobs[ "getFriends" ]->readAll() );
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( m_jobs[ "getFriends" ]->readAll() ) )
++ {
+ foreach( const lastfm::XmlQuery &e, lfm[ "friends" ].children ( "user" ) )
+ {
+ const QString name = e[ "name" ].text();
+@@ -123,11 +124,11 @@
+ appendUserStations( afriend, name );
+ }
+ m_friends.sort();
++ } else {
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++ return;
+ }
+- catch( lastfm::ws::ParseError e )
+- {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
+- }
++
+ emitRowChanged(LastFm::Friends);
+ m_jobs[ "getFriends" ]->deleteLater();
+ }
+@@ -137,10 +138,9 @@
+ {
+ DEBUG_BLOCK
+ WeightedStringList list;
+- try
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( m_jobs[ "getTopArtists" ]->readAll() ) )
+ {
+- lastfm::XmlQuery lfm( m_jobs[ "getTopArtists" ]->readAll() );
+-
+ foreach( const lastfm::XmlQuery &e, lfm[ "topartists" ].children ( "artist" ) )
+ {
+ const QString name = e[ "name" ].text();
+@@ -158,9 +158,10 @@
+ m_myTopArtists->appendChild ( artist );
+ }
+
+- } catch( lastfm::ws::ParseError e )
++ }
++ else
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+ }
+ emitRowChanged(LastFm::TopArtists);
+ m_jobs[ "getTopArtists" ]->deleteLater();
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/LastFmTreeModel.h amarok-2.5.96/src/services/lastfm/LastFmTreeModel.h
+--- amarok-2.5.96.orig/src/services/lastfm/LastFmTreeModel.h 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/LastFmTreeModel.h 2012-08-02 16:32:35.957659703 +0200
+@@ -22,7 +22,7 @@
+ #include "core/meta/Meta.h"
+ #include "WeightedStringList.h"
+
+-#include <lastfm/User>
++#include <lastfm/User.h>
+
+ #include <QAbstractItemModel>
+ #include <QHash>
+@@ -136,7 +136,7 @@
+ LastFmTreeItem *m_myTopArtists;
+
+ QString m_userName;
+- lastfm::AuthenticatedUser m_user;
++ lastfm::User m_user;
+
+ QStringList m_friends;
+ QStringList m_neighbors;
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/ScrobblerAdapter.h amarok-2.5.96/src/services/lastfm/ScrobblerAdapter.h
+--- amarok-2.5.96.orig/src/services/lastfm/ScrobblerAdapter.h 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/ScrobblerAdapter.h 2012-08-02 16:32:35.958659691 +0200
+@@ -20,8 +20,8 @@
+
+ #include "core/meta/Meta.h"
+
+-#include <lastfm/Audioscrobbler>
+-#include <lastfm/Track>
++#include <lastfm/Audioscrobbler.h>
++#include <lastfm/Track.h>
+
+ #include <QVariant>
+
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/biases/LastFmBias.cpp amarok-2.5.96/src/services/lastfm/biases/LastFmBias.cpp
+--- amarok-2.5.96.orig/src/services/lastfm/biases/LastFmBias.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/biases/LastFmBias.cpp 2012-08-02 16:32:35.958659691 +0200
+@@ -34,9 +34,8 @@
+ #include "core/collections/QueryMaker.h"
+ #include "core-impl/collections/support/CollectionManager.h"
+
+-#include "lastfm/Artist"
+-#include "lastfm/ws.h"
+-#include "lastfm/XmlQuery"
++#include <lastfm/Artist.h>
++#include <lastfm/ws.h>
+
+ #include <QLabel>
+ #include <QComboBox>
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/biases/WeeklyTopBias.cpp amarok-2.5.96/src/services/lastfm/biases/WeeklyTopBias.cpp
+--- amarok-2.5.96.orig/src/services/lastfm/biases/WeeklyTopBias.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/biases/WeeklyTopBias.cpp 2012-08-02 16:32:35.960659667 +0200
+@@ -34,9 +34,9 @@
+ #include "core/collections/QueryMaker.h"
+ #include "core-impl/collections/support/CollectionManager.h"
+
+-#include "lastfm/Artist"
+-#include "lastfm/ws.h"
+-#include "lastfm/XmlQuery"
++#include <lastfm/Artist.h>
++#include <lastfm/ws.h>
++#include <lastfm/XmlQuery.h>
+
+ #include <QNetworkReply>
+
+@@ -371,10 +371,9 @@
+ }
+
+
+- try
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( reply->readAll() ) )
+ {
+- lastfm::XmlQuery lfm( reply->readAll() );
+-
+ // debug() << "got response:" << lfm;
+ QStringList artists;
+ for( int i = 0; i < lfm[ "weeklyartistchart" ].children( "artist" ).size(); i++ )
+@@ -398,10 +397,10 @@
+ warning() << "Got a reply for a week"<<week<<"that was not requested.";
+ return;
+ }
+-
+- } catch( lastfm::ws::ParseError& e )
++ }
++ else
+ {
+- debug() << "caught exception parsing weekly artist chart.";
++ debug() << "failed to parse weekly artist chart.";
+ }
+
+ reply->deleteLater();
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/meta/LastFmMeta.cpp amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.cpp
+--- amarok-2.5.96.orig/src/services/lastfm/meta/LastFmMeta.cpp 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.cpp 2012-08-02 16:32:35.961659655 +0200
+@@ -41,7 +41,7 @@
+ #include <QWeakPointer>
+ #include <QUrl>
+
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+
+ namespace LastFm {
+
+@@ -451,8 +451,7 @@
+ DEBUG_BLOCK
+
+ debug() << "info:" << d->lastFmTrack.artist() << d->lastFmTrack.title();
+- d->wsReply = lastfm::MutableTrack( d->lastFmTrack ).love();
+- connect( d->wsReply, SIGNAL( finished() ), this, SLOT( slotWsReply() ) );
++ lastfm::MutableTrack( d->lastFmTrack ).love();
+ }
+
+ void
+@@ -477,9 +476,9 @@
+ {
+ if( d->trackFetch->error() == QNetworkReply::NoError )
+ {
+- try
++ lastfm::XmlQuery lfm;
++ if( lfm.parse( d->trackFetch->readAll() ) )
+ {
+- lastfm::XmlQuery lfm( d->trackFetch->readAll() );
+ QString id = lfm[ "track" ][ "id" ].text();
+ QString streamable = lfm[ "track" ][ "streamable" ].text();
+ if( streamable.toInt() == 1 )
+@@ -487,9 +486,10 @@
+ else
+ init();
+
+- } catch( lastfm::ws::ParseError& e )
++ }
++ else
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
+ }
+ } else
+ {
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/meta/LastFmMeta.h amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.h
+--- amarok-2.5.96.orig/src/services/lastfm/meta/LastFmMeta.h 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/meta/LastFmMeta.h 2012-08-02 16:32:35.960659667 +0200
+@@ -24,7 +24,7 @@
+ #include "ServiceMetaBase.h" // for the SourceInfoProvider
+
+
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+
+
+ #include <QObject>
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/meta/LastFmMeta_p.h amarok-2.5.96/src/services/lastfm/meta/LastFmMeta_p.h
+--- amarok-2.5.96.orig/src/services/lastfm/meta/LastFmMeta_p.h 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/meta/LastFmMeta_p.h 2012-08-02 16:32:35.961659655 +0200
+@@ -26,10 +26,10 @@
+ #include "core/statistics/StatisticsProvider.h"
+ #include "core-impl/statistics/providers/tag/TagStatisticsProvider.h"
+
+-#include <lastfm/Track>
++#include <lastfm/Track.h>
+ #include <lastfm/ws.h>
+-#include <lastfm/RadioTuner>
+-#include <lastfm/XmlQuery>
++#include <lastfm/RadioTuner.h>
++#include <lastfm/XmlQuery.h>
+
+ #include <kio/job.h>
+ #include <kio/jobclasses.h>
+@@ -144,26 +144,24 @@
+ return;
+ if( m_userFetch->error() == QNetworkReply::NoError )
+ {
+- try
++ lastfm::XmlQuery lfm;
++ if( !lfm.parse( m_userFetch->readAll() ) )
+ {
+- lastfm::XmlQuery lfm( m_userFetch->readAll() );
+- albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
+- trackUrl = lfm[ "track" ][ "url" ].text();
+- artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
+-
+- notifyObservers();
++ debug() << "Got exception in parsing from last.fm:" << lfm.parseError().message();
++ return;
++ }
++ albumUrl = lfm[ "track" ][ "album" ][ "url" ].text();
++ trackUrl = lfm[ "track" ][ "url" ].text();
++ artistUrl = lfm[ "track" ][ "artist" ][ "url" ].text();
+
+- imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
++ notifyObservers();
+
+- if( !imageUrl.isEmpty() )
+- {
+- KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
+- connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
+- }
++ imageUrl = lfm[ "track" ][ "album" ][ "image size=large" ].text();
+
+- } catch( lastfm::ws::ParseError& e )
++ if( !imageUrl.isEmpty() )
+ {
+- debug() << "Got exception in parsing from last.fm:" << e.what();
++ KIO::Job* job = KIO::storedGet( KUrl( imageUrl ), KIO::Reload, KIO::HideProgressInfo );
++ connect( job, SIGNAL( result( KJob* ) ), this, SLOT( fetchImageFinished( KJob* ) ) );
+ }
+ }
+
+diff -U 3 -H -d -r -N -- amarok-2.5.96.orig/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h amarok-2.5.96/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h
+--- amarok-2.5.96.orig/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h 2012-07-31 12:10:56.000000000 +0200
++++ amarok-2.5.96/src/services/lastfm/meta/MultiPlayableCapabilityImpl_p.h 2012-08-02 16:32:35.962659642 +0200
+@@ -25,8 +25,9 @@
+ #include "core/meta/Meta.h"
+ #include "core/capabilities/MultiPlayableCapability.h"
+
+-#include <lastfm/Track>
+-#include <lastfm/RadioTuner>
++#include <lastfm/Track.h>
++#include <lastfm/RadioStation.h>
++#include <lastfm/RadioTuner.h>
+ #include <lastfm/ws.h>
+
+ #include <KLocale>
+@@ -55,24 +56,23 @@
+ {
+ DEBUG_BLOCK
+ m_tuner = new lastfm::RadioTuner( lastfm::RadioStation( m_track->uidUrl() ) );
+-
++
+ connect( m_tuner, SIGNAL( trackAvailable() ), this, SLOT( slotNewTrackAvailable() ) );
+- connect( m_tuner, SIGNAL( error( lastfm::ws::Error ) ), this, SLOT( error( lastfm::ws::Error ) ) );
++ connect( m_tuner, SIGNAL( error(lastfm::ws::Error,QString) ), this, SLOT( error( lastfm::ws::Error ) ) );
+ }
+-
++
+ virtual void fetchNext()
+ {
+ DEBUG_BLOCK
+ m_currentTrack = m_tuner->takeNextTrack();
+ m_track->setTrackInfo( m_currentTrack );
+-
+ }
+-
++
+ using Observer::metadataChanged;
+ virtual void metadataChanged( Meta::TrackPtr track )
+ {
+ const LastFm::TrackPtr ltrack = LastFm::TrackPtr::dynamicCast( track );
+-
++
+ if( ltrack.isNull() )
+ return;
+
+@@ -94,7 +94,7 @@
+ m_track->setTrackInfo( m_currentTrack );
+ }
+ }
+-
++
+ virtual void skip()
+ {
+ fetchNext();
diff --git a/source/kde/patch/calligra.patch b/source/kde/patch/calligra.patch
new file mode 100644
index 000000000..aac4ebf95
--- /dev/null
+++ b/source/kde/patch/calligra.patch
@@ -0,0 +1,3 @@
+# Patch an overflow vulnerability in calligra:
+zcat $CWD/patch/calligra/calligra.words.fix_overflow.diff.gz | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
diff --git a/source/kde/patch/calligra/calligra.words.fix_overflow.diff b/source/kde/patch/calligra/calligra.words.fix_overflow.diff
new file mode 100644
index 000000000..1a68b3f9d
--- /dev/null
+++ b/source/kde/patch/calligra/calligra.words.fix_overflow.diff
@@ -0,0 +1,16 @@
+diff --git a/filters/words/msword-odf/wv2/src/styles.cpp b/filters/words/msword-odf/wv2/src/styles.cpp
+index 02a82a0..78ac31d 100644
+--- a/filters/words/msword-odf/wv2/src/styles.cpp
++++ b/filters/words/msword-odf/wv2/src/styles.cpp
+@@ -248,6 +248,11 @@ throw(InvalidFormatException)
+ #ifdef WV2_DEBUG_STYLESHEET
+ wvlog << "cbUPX: " << cbUPX << endl;
+ #endif
++ // do not overflow the allocated buffer grupx
++ if (offset + cbUPX > grupxLen) {
++ wvlog << "====> Error: grupx would overflow!" << endl;
++ return false;
++ }
+ for ( U16 j = 0; j < cbUPX; ++j ) {
+ grupx[ offset + j ] = stream->readU8(); // read the whole UPX
+ #ifdef WV2_DEBUG_STYLESHEET
diff --git a/source/kde/patch/kde-workspace.patch b/source/kde/patch/kde-workspace.patch
new file mode 100644
index 000000000..27eab8742
--- /dev/null
+++ b/source/kde/patch/kde-workspace.patch
@@ -0,0 +1,5 @@
+# Increase the timeout to accomodate slow-to-initialize video chipset drivers:
+zcat $CWD/patch/kde-workspace/kde-workspace.kdm.server.timeout.diff.gz | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
+# Always show 'remaining time' in the popup of the battery plasmoid:
+zcat $CWD/patch/kde-workspace/kde-workspace.batteryapplet.diff.gz | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/patch/kde-workspace/kde-workspace.batteryapplet.diff b/source/kde/patch/kde-workspace/kde-workspace.batteryapplet.diff
new file mode 100644
index 000000000..ef899e83f
--- /dev/null
+++ b/source/kde/patch/kde-workspace/kde-workspace.batteryapplet.diff
@@ -0,0 +1,16 @@
+diff -ur kdebase-workspace-4.5.80/plasma/generic/applets/battery/battery.cpp kdebase-workspace-4.5.80-battery-plasmoid-showremainingtime/plasma/generic/applets/battery/battery.cpp
+--- kdebase-workspace-4.5.80/plasma/generic/applets/battery/battery.cpp 2010-11-19 11:51:21.000000000 +0100
++++ kdebase-workspace-4.5.80-battery-plasmoid-showremainingtime/plasma/generic/applets/battery/battery.cpp 2010-11-20 20:39:11.000000000 +0100
+@@ -712,7 +712,11 @@
+ m_acInfoLabel->setText(i18n("<b>Not plugged in</b>"));
+ }
+
+- if (batteryCount && showRemainingTime && m_remainingMSecs > 0) {
++ // Always show the remaining time in the popup.
++ // We don't just set m_showRemainingTime to true by default because
++ // that'd try to use the time also for the icon. That won't fit on
++ // small panels.
++ if (batteryCount && m_remainingMSecs > 0) {
+ m_remainingTimeLabel->show();
+ m_remainingInfoLabel->show();
+ // we don't have too much accuracy so only give hours and minutes
diff --git a/source/kde/patch/kde-workspace/kde-workspace.kdm.server.timeout.diff b/source/kde/patch/kde-workspace/kde-workspace.kdm.server.timeout.diff
new file mode 100644
index 000000000..4dd98484d
--- /dev/null
+++ b/source/kde/patch/kde-workspace/kde-workspace.kdm.server.timeout.diff
@@ -0,0 +1,14 @@
+--- ./kdm/config.def.orig 2010-09-30 16:20:21.000000000 -0500
++++ ./kdm/config.def 2010-12-01 19:13:02.356002453 -0600
+@@ -1343,9 +1343,9 @@
+
+ Key: ServerTimeout
+ Type: int
+-Default: 30
++Default: 45
+ User: core
+-Instance: #:*/
++Instance: :*/
+ Comment:
+ How long to wait for a local &X-Server; to come up.
+ Description:
diff --git a/source/kde/patch/kdelibs.patch b/source/kde/patch/kdelibs.patch
new file mode 100644
index 000000000..d66622e08
--- /dev/null
+++ b/source/kde/patch/kdelibs.patch
@@ -0,0 +1,8 @@
+# Slackware ships a different version of XML DTDs:
+zcat $CWD/patch/kdelibs/kdelibs.docbook.patch.gz | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
+# Make uPnP support depend on the environment variable SOLID_UPNP,
+# e.g. by creating an /etc/profile.d/upnp.sh file with the following contents:
+# export SOLID_UPNP=1
+cat $CWD/patch/kdelibs/kdelibs.upnp_conditional.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
diff --git a/source/kde/patch/kdelibs/kdelibs.docbook.patch b/source/kde/patch/kdelibs/kdelibs.docbook.patch
new file mode 100644
index 000000000..6a20cd279
--- /dev/null
+++ b/source/kde/patch/kdelibs/kdelibs.docbook.patch
@@ -0,0 +1,11 @@
+--- kdelibs-4.4.85/cmake/modules/FindDocBookXML.cmake.orig 2010-05-27 19:25:00.000000000 +0200
++++ kdelibs-4.4.85/cmake/modules/FindDocBookXML.cmake 2010-06-07 16:18:35.000000000 +0200
+@@ -12,7 +12,7 @@
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+-set (DOCBOOKXML_CURRENTDTD_VERSION "4.2"
++set (DOCBOOKXML_CURRENTDTD_VERSION "4.5"
+ CACHE INTERNAL "Required version of XML DTDs")
+
+ set (DTD_PATH_LIST
diff --git a/source/kde/patch/kdelibs/kdelibs.upnp_conditional.patch b/source/kde/patch/kdelibs/kdelibs.upnp_conditional.patch
new file mode 100644
index 000000000..3a1944774
--- /dev/null
+++ b/source/kde/patch/kdelibs/kdelibs.upnp_conditional.patch
@@ -0,0 +1,15 @@
+--- kdelibs-4.8.0/solid/solid/managerbase.cpp.orig 2011-07-27 20:34:39.000000000 +0200
++++ kdelibs-4.8.0/solid/solid/managerbase.cpp 2012-01-26 09:17:49.409993419 +0100
+@@ -90,7 +90,11 @@
+ # endif
+
+ # if defined (HUPNP_FOUND)
+- m_backends << new Solid::Backends::UPnP::UPnPDeviceManager(0);
++ bool solidUpnpEnabled
++ = QString::fromLocal8Bit(qgetenv("SOLID_UPNP")).toInt()==1;
++ if (solidUpnpEnabled) {
++ m_backends << new Solid::Backends::UPnP::UPnPDeviceManager(0);
++ }
+ # endif
+ }
+ }
diff --git a/source/kde/patch/kdepim.patch b/source/kde/patch/kdepim.patch
new file mode 100644
index 000000000..7618dc8a8
--- /dev/null
+++ b/source/kde/patch/kdepim.patch
@@ -0,0 +1,3 @@
+# Install the kleopatra headers, or else kopete-cryptography will not build:
+cat $CWD/patch/kdepim/kdepim-4.5.85-install-headers.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
diff --git a/source/kde/patch/kdepim/kdepim-4.5.85-install-headers.patch b/source/kde/patch/kdepim/kdepim-4.5.85-install-headers.patch
new file mode 100644
index 000000000..aa43059af
--- /dev/null
+++ b/source/kde/patch/kdepim/kdepim-4.5.85-install-headers.patch
@@ -0,0 +1,124 @@
+diff -ur kdepim-4.5.85/kleopatra/libkleopatraclient/CMakeLists.txt kdepim-4.5.85-install-headers/kleopatra/libkleopatraclient/CMakeLists.txt
+--- kdepim-4.5.85/kleopatra/libkleopatraclient/CMakeLists.txt 2010-01-27 01:22:34.000000000 +0100
++++ kdepim-4.5.85-install-headers/kleopatra/libkleopatraclient/CMakeLists.txt 2010-12-08 14:40:45.000000000 +0100
+@@ -6,3 +6,7 @@
+
+ add_subdirectory( tests )
+
++install(
++ FILES kleopatraclient_export.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/libkleopatraclient
++ )
+diff -ur kdepim-4.5.85/kleopatra/libkleopatraclient/core/CMakeLists.txt kdepim-4.5.85-install-headers/kleopatra/libkleopatraclient/core/CMakeLists.txt
+--- kdepim-4.5.85/kleopatra/libkleopatraclient/core/CMakeLists.txt 2010-11-19 11:51:51.000000000 +0100
++++ kdepim-4.5.85-install-headers/kleopatra/libkleopatraclient/core/CMakeLists.txt 2010-12-08 14:42:12.000000000 +0100
+@@ -55,4 +55,12 @@
+ DESTINATION ${LIB_INSTALL_DIR}
+ )
+
+-
++install(
++ FILES
++ initialization.h
++ command.h
++ selectcertificatecommand.h
++ signencryptfilescommand.h
++ decryptverifyfilescommand.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/libkleopatraclient/core
++ )
+diff -ur kdepim-4.5.85/kleopatra/libkleopatraclient/gui/CMakeLists.txt kdepim-4.5.85-install-headers/kleopatra/libkleopatraclient/gui/CMakeLists.txt
+--- kdepim-4.5.85/kleopatra/libkleopatraclient/gui/CMakeLists.txt 2010-07-29 11:58:45.000000000 +0200
++++ kdepim-4.5.85-install-headers/kleopatra/libkleopatraclient/gui/CMakeLists.txt 2010-12-08 14:42:41.000000000 +0100
+@@ -20,3 +20,8 @@
+ DESTINATION ${LIB_INSTALL_DIR}
+ )
+
++install(
++ FILES
++ certificaterequester.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/libkleopatraclient/gui
++ )
+diff -ur kdepim-4.5.85/libkleo/CMakeLists.txt kdepim-4.5.85-install-headers/libkleo/CMakeLists.txt
+--- kdepim-4.5.85/libkleo/CMakeLists.txt 2010-12-01 23:23:12.000000000 +0100
++++ kdepim-4.5.85-install-headers/libkleo/CMakeLists.txt 2010-12-08 15:22:00.000000000 +0100
+@@ -112,6 +112,64 @@
+ set_target_properties(kleo PROPERTIES VERSION ${GENERIC_LIB_VERSION} SOVERSION ${GENERIC_LIB_SOVERSION} )
+ install(TARGETS kleo ${INSTALL_TARGETS_DEFAULT_ARGS})
+
++install( FILES
++ kleo/kleo_export.h
++ kleo/enum.h
++ kleo/oidmap.h
++ kleo/cryptobackend.h
++ kleo/cryptobackendfactory.h
++ kleo/cryptoconfig.h
++ kleo/dn.h
++ kleo/job.h
++ kleo/keylistjob.h
++ kleo/keygenerationjob.h
++ kleo/abstractimportjob.h
++ kleo/importjob.h
++ kleo/importfromkeyserverjob.h
++ kleo/exportjob.h
++ kleo/changeexpiryjob.h
++ kleo/changeownertrustjob.h
++ kleo/downloadjob.h
++ kleo/deletejob.h
++ kleo/encryptjob.h
++ kleo/decryptjob.h
++ kleo/signjob.h
++ kleo/specialjob.h
++ kleo/verifydetachedjob.h
++ kleo/verifyopaquejob.h
++ kleo/decryptverifyjob.h
++ kleo/signencryptjob.h
++ kleo/signkeyjob.h
++ kleo/adduseridjob.h
++ kleo/refreshkeysjob.h
++ kleo/multideletejob.h
++ kleo/hierarchicalkeylistjob.h
++ kleo/keyfilter.h
++ kleo/keyfiltermanager.h
++ kleo/changepasswdjob.h
++ kleo/checksumdefinition.h
++ kleo/exception.h
++ kleo/kconfigbasedkeyfilter.h
++ kleo/listallkeysjob.h
++ kleo/stl_util.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/kleo COMPONENT Devel)
++
++install ( FILES
++ ui/kdhorizontalline.h
++ ui/messagebox.h
++ ui/progressbar.h
++ ui/progressdialog.h
++ ui/keylistview.h
++ ui/keyselectiondialog.h
++ ui/keyrequester.h
++ ui/keyapprovaldialog.h
++ ui/dnattributeorderconfigwidget.h
++ ui/cryptoconfigmodule.h
++ ui/cryptoconfigdialog.h
++ ui/directoryserviceswidget.h
++ ui/filenamerequester.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/kleo/ui COMPONENT Devel)
++
+ if ( WIN32 )
+ install ( FILES libkleopatrarc-win32.desktop DESTINATION ${CONFIG_INSTALL_DIR} RENAME libkleopatrarc )
+ else ( WIN32 )
+diff -ur kdepim-4.5.85/libkpgp/CMakeLists.txt kdepim-4.5.85-install-headers/libkpgp/CMakeLists.txt
+--- kdepim-4.5.85/libkpgp/CMakeLists.txt 2010-07-29 11:59:00.000000000 +0200
++++ kdepim-4.5.85-install-headers/libkpgp/CMakeLists.txt 2010-12-08 14:43:33.000000000 +0100
+@@ -35,3 +35,11 @@
+ install(FILES kpgp.upd DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
+ install(PROGRAMS kpgp-3.1-upgrade-address-data.pl DESTINATION ${KCONF_UPDATE_INSTALL_DIR})
+
++install(FILES
++ kpgp.h
++ kpgpbase.h
++ kpgpblock.h
++ kpgpkey.h
++ kpgpui.h
++ libkpgp_export.h
++ DESTINATION ${INCLUDE_INSTALL_DIR}/kpgp COMPONENT Devel )
+
diff --git a/source/kde/patch/kdewebdev.patch b/source/kde/patch/kdewebdev.patch
new file mode 100644
index 000000000..ccac0a79d
--- /dev/null
+++ b/source/kde/patch/kdewebdev.patch
@@ -0,0 +1,5 @@
+# Make it find tidy:
+zcat $CWD/patch/kdewebdev/include-tidy.patch.gz \
+ | sed -e "s#/tmp/package-kdewebdev#${SLACK_KDE_BUILD_DIR}/${module}/package-kdewebdev#" \
+ | patch -p0 --verbose \
+ || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
diff --git a/source/kde/patch/kdewebdev/include-tidy.patch b/source/kde/patch/kdewebdev/include-tidy.patch
new file mode 100644
index 000000000..fd4de940e
--- /dev/null
+++ b/source/kde/patch/kdewebdev/include-tidy.patch
@@ -0,0 +1,13 @@
+--- klinkstatus/src/tidy/tidyx.h.orig 2009-09-03 09:55:38.886267704 -0500
++++ klinkstatus/src/tidy/tidyx.h 2009-09-03 09:57:29.032269520 -0500
+@@ -48,8 +48,8 @@
+ Created 2002-07-11 by Charles Reitzel
+ */
+
+-#include <tidy.h>
+-#include <buffio.h>
++#include "/tmp/package-kdewebdev/usr/include/tidy/tidy.h"
++#include "/tmp/package-kdewebdev/usr/include/tidy/buffio.h"
+
+ #include <config-tidy.h>
+
diff --git a/source/kde/patch/korundum.patch b/source/kde/patch/korundum.patch
new file mode 100644
index 000000000..7a8b7cfaa
--- /dev/null
+++ b/source/kde/patch/korundum.patch
@@ -0,0 +1,4 @@
+# Build against Ruby 1.9.3.
+# See also https://bugs.kde.org/show_bug.cgi?id=287057
+cat $CWD/patch/korundum/korundum_ruby19.patch | patch -p1 --verbose || { touch ${SLACK_KDE_BUILD_DIR}/${PKGNAME}.failed ; continue ; }
+
diff --git a/source/kde/patch/korundum/korundum_ruby19.patch b/source/kde/patch/korundum/korundum_ruby19.patch
new file mode 100644
index 000000000..561d8de13
--- /dev/null
+++ b/source/kde/patch/korundum/korundum_ruby19.patch
@@ -0,0 +1,31 @@
+diff -up korundum-4.8.0/src/krubypluginfactory.cpp.ruby19 korundum-4.8.0/src/krubypluginfactory.cpp
+--- korundum-4.8.0/src/krubypluginfactory.cpp.ruby19 2011-07-27 13:37:29.000000000 -0500
++++ korundum-4.8.0/src/krubypluginfactory.cpp 2012-02-17 08:30:38.785635819 -0600
+@@ -39,7 +39,7 @@
+ extern "C" {
+ extern VALUE rb_load_path;
+ extern VALUE qt_internal_module;
+-void Init_prelude(void);
++// void Init_prelude(void);
+ }
+
+ //
+@@ -165,7 +165,7 @@ QObject *KRubyPluginFactory::create(cons
+ #if RUBY_VERSION >= 0x10900
+ VALUE gem = rb_define_module("Gem");
+ rb_const_set(gem, rb_intern("Enable"), Qtrue);
+- Init_prelude();
++// Init_prelude();
+ #endif
+
+ ruby_incpush(QFile::encodeName(program.path()));
+@@ -342,7 +342,7 @@ int kdemain(int argc, char **argv)
+ #if RUBY_VERSION >= 0x10900
+ VALUE gem = rb_define_module("Gem");
+ rb_const_set(gem, rb_intern("Enable"), Qtrue);
+- Init_prelude();
++// Init_prelude();
+ #endif
+
+ ruby_incpush(QFile::encodeName(program.path()));
+