summaryrefslogtreecommitdiff
path: root/libre/kdelibs
diff options
context:
space:
mode:
Diffstat (limited to 'libre/kdelibs')
-rw-r--r--libre/kdelibs/PKGBUILD63
-rw-r--r--libre/kdelibs/kde-applications-menu.patch22
-rw-r--r--libre/kdelibs/kdelibs-cve-2014-5033.patch36
-rw-r--r--libre/kdelibs/kdelibs.install13
-rw-r--r--libre/kdelibs/khtml-fsdg.diff50
-rw-r--r--libre/kdelibs/pyqt.patch247
-rw-r--r--libre/kdelibs/qt4.patch11
7 files changed, 442 insertions, 0 deletions
diff --git a/libre/kdelibs/PKGBUILD b/libre/kdelibs/PKGBUILD
new file mode 100644
index 000000000..045450038
--- /dev/null
+++ b/libre/kdelibs/PKGBUILD
@@ -0,0 +1,63 @@
+# $Id: PKGBUILD 219465 2014-08-07 18:21:58Z andrea $
+# Maintainer (Arch): Andrea Scarpino <andrea@archlinux.org
+# Contributor (Arch): Pierre Schmitz <pierre@archlinux.de>
+# Maintainer: André Silva <emulatorman@parabola.nu>
+
+pkgname=kdelibs
+pkgver=4.14.0
+pkgrel=1.parabola1
+pkgdesc="KDE Core Libraries, without nonfree plugins recommendation support"
+arch=('i686' 'x86_64' 'mips64el')
+url='https://projects.kde.org/projects/kde/kdelibs'
+license=('GPL' 'LGPL' 'FDL')
+replaces=('kdelibs-libre')
+conflicts=('kdelibs-libre')
+depends=('attica' 'libxss' 'krb5' 'grantlee' 'qca' 'libdbusmenu-qt' 'polkit-qt'
+ 'shared-mime-info' 'enchant' 'giflib' 'jasper' 'openexr' 'strigi'
+ 'docbook-xsl' 'upower' 'udisks2' 'libxcursor' 'phonon-qt4'
+ 'media-player-info' 'libxtst' 'libutempter' 'qtwebkit' 'icu')
+makedepends=('cmake' 'automoc4' 'avahi' 'libgl' 'hspell' 'mesa')
+install=${pkgname}.install
+source=("http://download.kde.org/stable/${pkgver}/src/${pkgname}-${pkgver}.tar.xz"
+ 'kde-applications-menu.patch' 'khtml-fsdg.diff' 'qt4.patch')
+sha1sums=('d8c56abfa101b0bd39e05ae36b7f6063d8fe360c'
+ '86ee8c8660f19de8141ac99cd6943964d97a1ed7'
+ 'a1502a964081ad583a00cf90c56e74bf60121830'
+ 'ed1f57ee661e5c7440efcaba7e51d2554709701c')
+
+prepare() {
+ mkdir build
+ cd ${pkgname}-${pkgver}
+ # avoid file conflict with gnome-menus
+ patch -p1 -i "${srcdir}"/kde-applications-menu.patch
+ # don't ask the user to download a plugin, it's probably nonfree.
+ patch -p1 -i "${srcdir}"/khtml-fsdg.diff
+ # qmake refers to Qt5
+ patch -p1 -i "${srcdir}"/qt4.patch
+}
+
+build() {
+ cd build
+ cmake ../${pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DKDE4_BUILD_TESTS=OFF \
+ -DCMAKE_SKIP_RPATH=ON \
+ -DKDE_DISTRIBUTION_TEXT='Parabola GNU/Linux-libre' \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DSYSCONF_INSTALL_DIR=/etc \
+ -DHTML_INSTALL_DIR=/usr/share/doc/kde/html \
+ -DKDE_DEFAULT_HOME='.kde4' \
+ -DWITH_FAM=OFF \
+ -DWITH_SOLID_UDISKS2=ON
+ make
+}
+
+package() {
+ cd "${srcdir}"/build
+ make DESTDIR="${pkgdir}" install
+
+ # cert bundle seems to be hardcoded
+ # link it to the one from ca-certificates
+ rm -f "${pkgdir}"/usr/share/apps/kssl/ca-bundle.crt
+ ln -sf /etc/ssl/certs/ca-certificates.crt "${pkgdir}"/usr/share/apps/kssl/ca-bundle.crt
+}
diff --git a/libre/kdelibs/kde-applications-menu.patch b/libre/kdelibs/kde-applications-menu.patch
new file mode 100644
index 000000000..4b513298a
--- /dev/null
+++ b/libre/kdelibs/kde-applications-menu.patch
@@ -0,0 +1,22 @@
+--- kdelibs-4.3.98/kded/CMakeLists.txt 2009-10-02 14:55:17.000000000 +0000
++++ kdelibs-4.3.98/kded/CMakeLists.txt 2010-01-31 22:16:13.946933892 +0000
+@@ -69,7 +69,7 @@
+ if (WIN32)
+ install( FILES applications.menu DESTINATION ${SHARE_INSTALL_PREFIX}/xdg/menus )
+ else (WIN32)
+-install( FILES applications.menu DESTINATION ${SYSCONF_INSTALL_DIR}/xdg/menus )
++install( FILES applications.menu DESTINATION ${SYSCONF_INSTALL_DIR}/xdg/menus RENAME kde-applications.menu )
+ endif (WIN32)
+ install( FILES kdedmodule.desktop DESTINATION ${SERVICETYPES_INSTALL_DIR} )
+ install( FILES kded.upd DESTINATION ${DATA_INSTALL_DIR}/kconf_update )
+--- kdelibs-4.3.98/kded/kbuildsycoca.cpp 2009-12-04 23:10:18.000000000 +0000
++++ kdelibs-4.3.98/kded/kbuildsycoca.cpp 2010-01-31 22:16:13.962766572 +0000
+@@ -302,7 +302,7 @@
+ if (!m_trackId.isEmpty())
+ g_vfolder->setTrackId(m_trackId);
+
+- VFolderMenu::SubMenu *kdeMenu = g_vfolder->parseMenu("applications.menu", true);
++ VFolderMenu::SubMenu *kdeMenu = g_vfolder->parseMenu("kde-applications.menu", true);
+
+ KServiceGroup::Ptr entry = g_bsgf->addNew("/", kdeMenu->directoryFile, KServiceGroup::Ptr(), false);
+ entry->setLayoutInfo(kdeMenu->layoutList);
diff --git a/libre/kdelibs/kdelibs-cve-2014-5033.patch b/libre/kdelibs/kdelibs-cve-2014-5033.patch
new file mode 100644
index 000000000..c85eccd6b
--- /dev/null
+++ b/libre/kdelibs/kdelibs-cve-2014-5033.patch
@@ -0,0 +1,36 @@
+--- a/kdecore/auth/backends/polkit-1/Polkit1Backend.cpp
++++ b/kdecore/auth/backends/polkit-1/Polkit1Backend.cpp
+@@ -144,7 +144,7 @@
+
+ Action::AuthStatus Polkit1Backend::actionStatus(const QString &action)
+ {
+- PolkitQt1::UnixProcessSubject subject(QCoreApplication::applicationPid());
++ PolkitQt1::SystemBusNameSubject subject(QString::fromUtf8(callerID()));
+ PolkitQt1::Authority::Result r = PolkitQt1::Authority::instance()->checkAuthorizationSync(action, subject,
+ PolkitQt1::Authority::None);
+ switch (r) {
+@@ -160,21 +160,12 @@
+
+ QByteArray Polkit1Backend::callerID() const
+ {
+- QByteArray a;
+- QDataStream s(&a, QIODevice::WriteOnly);
+- s << QCoreApplication::applicationPid();
+-
+- return a;
++ return QDBusConnection::systemBus().baseService().toUtf8();
+ }
+
+ bool Polkit1Backend::isCallerAuthorized(const QString &action, QByteArray callerID)
+ {
+- QDataStream s(&callerID, QIODevice::ReadOnly);
+- qint64 pid;
+-
+- s >> pid;
+-
+- PolkitQt1::UnixProcessSubject subject(pid);
++ PolkitQt1::SystemBusNameSubject subject(QString::fromUtf8(callerID));
+ PolkitQt1::Authority *authority = PolkitQt1::Authority::instance();
+
+ PolkitResultEventLoop e;
+
diff --git a/libre/kdelibs/kdelibs.install b/libre/kdelibs/kdelibs.install
new file mode 100644
index 000000000..c77e68041
--- /dev/null
+++ b/libre/kdelibs/kdelibs.install
@@ -0,0 +1,13 @@
+post_install() {
+ xdg-icon-resource forceupdate --theme hicolor &> /dev/null
+ update-mime-database usr/share/mime &> /dev/null
+ update-desktop-database -q
+}
+
+post_upgrade() {
+ post_install
+}
+
+post_remove() {
+ post_install
+}
diff --git a/libre/kdelibs/khtml-fsdg.diff b/libre/kdelibs/khtml-fsdg.diff
new file mode 100644
index 000000000..1a531b3c8
--- /dev/null
+++ b/libre/kdelibs/khtml-fsdg.diff
@@ -0,0 +1,50 @@
+diff -ru kdelibs-4.8.0.orig/khtml/html/html_objectimpl.cpp kdelibs-4.8.0/khtml/html/html_objectimpl.cpp
+--- kdelibs-4.8.0.orig/khtml/html/html_objectimpl.cpp 2012-01-30 19:46:27.684114289 +0100
++++ kdelibs-4.8.0/khtml/html/html_objectimpl.cpp 2012-01-30 19:47:47.222111046 +0100
+@@ -577,46 +577,6 @@
+
+ void HTMLObjectBaseElementImpl::slotPartLoadingErrorNotify()
+ {
+- // If we have an embed, we may be able to tell the user where to
+- // download the plugin.
+-
+- HTMLEmbedElementImpl *embed = relevantEmbed();
+- QString serviceType; // shadows ours, but we don't care.
+-
+- if (!embed)
+- return;
+-
+- serviceType = embed->serviceType;
+-
+- KHTMLPart* part = document()->part();
+- KParts::BrowserExtension *ext = part->browserExtension();
+-
+- if(!embed->pluginPage.isEmpty() && ext) {
+- // Prepare the mimetype to show in the question (comment if available, name as fallback)
+- QString mimeName = serviceType;
+- KMimeType::Ptr mime = KMimeType::mimeType(serviceType, KMimeType::ResolveAliases);
+- if ( mime && mime->name() != KMimeType::defaultMimeType() )
+- mimeName = mime->comment();
+-
+- // Check if we already asked the user, for this page
+- if (!mimeName.isEmpty() && !part->pluginPageQuestionAsked(serviceType))
+- {
+- part->setPluginPageQuestionAsked(serviceType);
+-
+- // Prepare the URL to show in the question (host only if http, to make it short)
+- KUrl pluginPageURL(embed->pluginPage);
+- QString shortURL = pluginPageURL.protocol() == "http" ? pluginPageURL.host() : pluginPageURL.prettyUrl();
+- int res = KMessageBox::questionYesNo( part->view(),
+- i18n("No plugin found for '%1'.\nDo you want to download one from %2?", mimeName, shortURL),
+- i18n("Missing Plugin"), KGuiItem(i18n("Download")), KGuiItem(i18n("Do Not Download")), QString("plugin-")+serviceType);
+- if (res == KMessageBox::Yes)
+- {
+- // Display vendor download page
+- ext->createNewWindow(pluginPageURL);
+- return;
+- }
+- }
+- }
+ }
+
+
diff --git a/libre/kdelibs/pyqt.patch b/libre/kdelibs/pyqt.patch
new file mode 100644
index 000000000..eadd2f2ac
--- /dev/null
+++ b/libre/kdelibs/pyqt.patch
@@ -0,0 +1,247 @@
+Make FindPyKDE4 work with PyQt's new build system.
+Make FindPyQt4 work with PyQt's new build system.
+
+Since PyQt 4.10, PyQt.pyqtconfig is deprecated and not available unless
+PyQt is built using the old configure script.
+
+PyKDE4 itself has recently been adjusted to mimic PyQt itself and only
+install its pykdeconfig module if pyqtconfig is present. Additionally,
+information such as SIP flags and the directory where PyKDE's SIP files
+are installed are now also provided in the
+PyKDE4.kdecore.PYKDE_CONFIGURATION dict.
+
+This commit completely rewrites FindPyKDE4.py to make it look like
+FindPyQt.cmake after commit a7e4743: most of the information used by
+FindPyKDE4.cmake is fetched from PyKDE4.kdecore, and we first try to
+obtain the SIP flags and directory from pykdeconfig and, if it fails, we
+use PYKDE_CONFIGURATION.
+
+Furthermore, FindPyKDE4.py now only prints the variables that are
+actually consumed by FindPyKDE4.cmake -- it is not possible to obtain
+all the data provided by pykdeconfig in PYKDE_CONFIGURATION. We've also
+stopped reading and setting PYKDE4_VERSION_TAG, since PyKDE4 stopped
+setting a KDE tag in 2008 (and its value was 3_92_0 at the time).
+
+CCBUG: 327633
+REVIEW: 119454
+
+BUG: 337462
+FIXED-IN: 4.14.0
+REVIEW: 119302
+--- kdelibs-4.13.3/cmake/modules/FindPyKDE4.cmake~ 2014-08-06 21:54:27.564432282 +0000
++++ kdelibs-4.13.3/cmake/modules/FindPyKDE4.cmake 2014-08-06 21:54:43.417702615 +0000
+@@ -25,7 +25,6 @@
+ STRING(REGEX REPLACE ".*\npykde_version_str:([^\n]+).*$" "\\1" PYKDE4_VERSION_STR ${pykde_config})
+ STRING(REGEX REPLACE ".*\npykde_kde_sip_flags:([^\n]+).*$" "\\1" PYKDE4_SIP_FLAGS ${pykde_config})
+ STRING(REGEX REPLACE ".*\npykde_sip_dir:([^\n]+).*$" "\\1" PYKDE4_SIP_DIR ${pykde_config})
+- STRING(REGEX REPLACE ".*\npykde_version_tag:([^\n]+).*$" "\\1" PYKDE4_VERSION_TAG ${pykde_config})
+ MESSAGE(STATUS "Found PyKDE4 version ${PYKDE4_VERSION_STR} ${PYKDE4_SIP_DIR}")
+
+ SET(PYKDE4_FOUND TRUE)
+@@ -183,3 +182,4 @@
+ endif(WIN32)
+ ENDMACRO(PYKDE4_ADD_EXECUTABLE)
+
++
+--- kdelibs-4.13.3/cmake/modules/FindPyKDE4.py~ 2014-08-06 21:54:56.427650960 +0000
++++ kdelibs-4.13.3/cmake/modules/FindPyKDE4.py 2014-08-06 21:55:04.400952596 +0000
+@@ -1,46 +1,23 @@
+-# By Simon Edwards <simon@simonzone.com>
+-# modified by Paul Giannaros <paul@giannaros.org> to add better PyKDE4
+-# sip directory finding
+-# This file is in the public domain.
++# Copyright (c) 2014, Raphael Kubo da Costa <rakuco@FreeBSD.org>
++# Redistribution and use is allowed according to the terms of the BSD license.
++# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+-import sys
+-import os
+-import PyKDE4.pykdeconfig
+-import PyQt4.pyqtconfig
++import PyKDE4.kdecore
+
+-if "_pkg_config" in dir(PyKDE4.pykdeconfig):
+- _pkg_config = PyKDE4.pykdeconfig._pkg_config
++if __name__ == '__main__':
++ try:
++ import PyKDE4.pykdeconfig
++ pykdecfg = PyKDE4.pykdeconfig.Configuration()
++ sip_dir = pykdecfg.pykde_sip_dir
++ sip_flags = pykdecfg.pykde_kde_sip_flags
++ except ImportError:
++ # PyQt4 >= 4.10.0 was built with configure-ng.py instead of
++ # configure.py, so pyqtconfig.py and pykdeconfig.py are not installed.
++ sip_dir = PyKDE4.kdecore.PYKDE_CONFIGURATION['sip_dir']
++ sip_flags = PyKDE4.kdecore.PYKDE_CONFIGURATION['sip_flags']
+
+- for varname in [
+- 'kde_version',
+- 'kde_version_extra',
+- 'kdebasedir',
+- 'kdeincdir',
+- 'kdelibdir',
+- 'libdir',
+- 'pykde_kde_sip_flags',
+- 'pykde_mod_dir',
+- 'pykde_modules',
+- 'pykde_sip_dir',
+- 'pykde_version',
+- 'pykde_version_str']:
+- varvalue = _pkg_config[varname]
+- if varname == 'pykde_sip_dir':
+- d = os.path.join(_pkg_config[varname], 'PyKDE4')
+- if os.path.exists(d):
+- varvalue = d
+- print("%s:%s\n" % (varname, varvalue))
+- pykde_version_tag = ''
+- in_t = False
+- for item in _pkg_config['pykde_kde_sip_flags'].split():
+- if item == "-t":
+- in_t = True
+- elif in_t:
+- if item.startswith("KDE_"):
+- pykde_version_tag = item
+- else:
+- in_t = False
+- print("pykde_version_tag:%s" % pykde_version_tag)
++ print('pykde_version:%06.x' % PyKDE4.kdecore.version())
++ print('pykde_version_str:%s' % PyKDE4.kdecore.versionString())
++ print('pykde_sip_dir:%s' % sip_dir)
++ print('pykde_sip_flags:%s' % sip_flags)
+
+-else:
+- sys.exit(1)
+--- kdelibs-4.13.3/cmake/modules/FindPyQt.py~ 2014-08-06 21:55:55.874081319 +0000
++++ kdelibs-4.13.3/cmake/modules/FindPyQt.py 2014-08-06 21:56:06.250706848 +0000
+@@ -1,24 +1,49 @@
+ # Copyright (c) 2007, Simon Edwards <simon@simonzone.com>
++# Copyright (c) 2014, Raphael Kubo da Costa <rakuco@FreeBSD.org>
+ # Redistribution and use is allowed according to the terms of the BSD license.
+ # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+
+-import PyQt4.pyqtconfig
++import PyQt4.QtCore
++import os
++import sys
+
+-pyqtcfg = PyQt4.pyqtconfig.Configuration()
+-print("pyqt_version:%06.0x" % pyqtcfg.pyqt_version)
+-print("pyqt_version_str:%s" % pyqtcfg.pyqt_version_str)
+-
+-pyqt_version_tag = ""
+-in_t = False
+-for item in pyqtcfg.pyqt_sip_flags.split(' '):
+- if item=="-t":
+- in_t = True
+- elif in_t:
+- if item.startswith("Qt_4"):
+- pyqt_version_tag = item
++def get_default_sip_dir():
++ # This is based on QScintilla's configure.py, and only works for the
++ # default case where installation paths have not been changed in PyQt's
++ # configuration process.
++ if sys.platform == 'win32':
++ pyqt_sip_dir = os.path.join(sys.prefix, 'sip', 'PyQt4')
+ else:
+- in_t = False
+-print("pyqt_version_tag:%s" % pyqt_version_tag)
++ pyqt_sip_dir = os.path.join(sys.prefix, 'share', 'sip', 'PyQt4')
++ return pyqt_sip_dir
++
++def get_qt4_tag(sip_flags):
++ in_t = False
++ for item in sip_flags.split(' '):
++ if item == '-t':
++ in_t = True
++ elif in_t:
++ if item.startswith('Qt_4'):
++ return item
++ else:
++ in_t = False
++ raise ValueError('Cannot find Qt\'s tag in PyQt4\'s SIP flags.')
++
++if __name__ == '__main__':
++ try:
++ import PyQt4.pyqtconfig
++ pyqtcfg = PyQt4.pyqtconfig.Configuration()
++ sip_dir = pyqtcfg.pyqt_sip_dir
++ sip_flags = pyqtcfg.pyqt_sip_flags
++ except ImportError:
++ # PyQt4 >= 4.10.0 was built with configure-ng.py instead of
++ # configure.py, so pyqtconfig.py is not installed.
++ sip_dir = get_default_sip_dir()
++ sip_flags = PyQt4.QtCore.PYQT_CONFIGURATION['sip_flags']
++
++ print('pyqt_version:%06.x' % PyQt4.QtCore.PYQT_VERSION)
++ print('pyqt_version_str:%s' % PyQt4.QtCore.PYQT_VERSION_STR)
++ print('pyqt_version_tag:%s' % get_qt4_tag(sip_flags))
++ print('pyqt_sip_dir:%s' % sip_dir)
++ print('pyqt_sip_flags:%s' % sip_flags)
+
+-print("pyqt_sip_dir:%s" % pyqtcfg.pyqt_sip_dir)
+-print("pyqt_sip_flags:%s" % pyqtcfg.pyqt_sip_flags)
+--- kdelibs-4.13.3/cmake/modules/FindPyQt4.cmake~ 2014-08-06 21:55:16.697570407 +0000
++++ kdelibs-4.13.3/cmake/modules/FindPyQt4.cmake 2014-08-06 21:55:38.597483393 +0000
+@@ -9,16 +9,20 @@
+ # Find the installed version of PyQt4. FindPyQt4 should only be called after
+ # Python has been found.
+ #
+-# This file defines the following variables:
++# This file defines the following variables, which can also be overriden by
++# users:
+ #
+ # PYQT4_VERSION - The version of PyQt4 found expressed as a 6 digit hex number
+ # suitable for comparison as a string
+ #
+ # PYQT4_VERSION_STR - The version of PyQt4 as a human readable string.
+ #
+-# PYQT4_VERSION_TAG - The PyQt version tag using by PyQt's sip files.
++# PYQT4_VERSION_TAG - The Qt4 version tag used by PyQt's sip files.
+ #
+-# PYQT4_SIP_DIR - The directory holding the PyQt4 .sip files.
++# PYQT4_SIP_DIR - The directory holding the PyQt4 .sip files. This can be unset
++# if PyQt4 was built using its new build system and pyqtconfig.py is not
++# present on the system, as in this case its value cannot be determined
++# automatically.
+ #
+ # PYQT4_SIP_FLAGS - The SIP flags used to build PyQt.
+
+@@ -31,13 +35,27 @@
+
+ EXECUTE_PROCESS(COMMAND ${PYTHON_EXECUTABLE} ${_find_pyqt_py} OUTPUT_VARIABLE pyqt_config)
+ IF(pyqt_config)
+- STRING(REGEX REPLACE "^pyqt_version:([^\n]+).*$" "\\1" PYQT4_VERSION ${pyqt_config})
+- STRING(REGEX REPLACE ".*\npyqt_version_str:([^\n]+).*$" "\\1" PYQT4_VERSION_STR ${pyqt_config})
+- STRING(REGEX REPLACE ".*\npyqt_version_tag:([^\n]+).*$" "\\1" PYQT4_VERSION_TAG ${pyqt_config})
+- STRING(REGEX REPLACE ".*\npyqt_sip_dir:([^\n]+).*$" "\\1" PYQT4_SIP_DIR ${pyqt_config})
+- STRING(REGEX REPLACE ".*\npyqt_sip_flags:([^\n]+).*$" "\\1" PYQT4_SIP_FLAGS ${pyqt_config})
++ STRING(REGEX MATCH "^pyqt_version:([^\n]+).*$" _dummy ${pyqt_config})
++ SET(PYQT4_VERSION "${CMAKE_MATCH_1}" CACHE STRING "PyQt4's version as a 6-digit hexadecimal number")
+
+- SET(PYQT4_FOUND TRUE)
++ STRING(REGEX MATCH ".*\npyqt_version_str:([^\n]+).*$" _dummy ${pyqt_config})
++ SET(PYQT4_VERSION_STR "${CMAKE_MATCH_1}" CACHE STRING "PyQt4's version as a human-readable string")
++
++ STRING(REGEX MATCH ".*\npyqt_version_tag:([^\n]+).*$" _dummy ${pyqt_config})
++ SET(PYQT4_VERSION_TAG "${CMAKE_MATCH_1}" CACHE STRING "The Qt4 version tag used by PyQt4's .sip files")
++
++ STRING(REGEX MATCH ".*\npyqt_sip_dir:([^\n]+).*$" _dummy ${pyqt_config})
++ SET(PYQT4_SIP_DIR "${CMAKE_MATCH_1}" CACHE PATH "The base directory where PyQt4's .sip files are installed")
++
++ STRING(REGEX MATCH ".*\npyqt_sip_flags:([^\n]+).*$" _dummy ${pyqt_config})
++ SET(PYQT4_SIP_FLAGS "${CMAKE_MATCH_1}" CACHE STRING "The SIP flags used to build PyQt4")
++
++ IF(NOT IS_DIRECTORY "${PYQT4_SIP_DIR}")
++ MESSAGE(WARNING "The base directory where PyQt4's SIP files are installed could not be determined. This usually means PyQt4 was built with its new build system and pyqtconfig.py is not present.\n"
++ "Please set the PYQT4_SIP_DIR variable manually.")
++ ELSE(NOT IS_DIRECTORY "${PYQT4_SIP_DIR}")
++ SET(PYQT4_FOUND TRUE)
++ ENDIF(NOT IS_DIRECTORY "${PYQT4_SIP_DIR}")
+ ENDIF(pyqt_config)
+
+ IF(PYQT4_FOUND)
+@@ -51,3 +69,4 @@
+ ENDIF(PYQT4_FOUND)
+
+ ENDIF(EXISTS PYQT4_VERSION)
++
diff --git a/libre/kdelibs/qt4.patch b/libre/kdelibs/qt4.patch
new file mode 100644
index 000000000..bb4312d40
--- /dev/null
+++ b/libre/kdelibs/qt4.patch
@@ -0,0 +1,11 @@
+--- kdelibs-4.10.1/cmake/modules/FindQt4.cmake~ 2013-03-07 16:57:29.735552097 +0000
++++ kdelibs-4.10.1/cmake/modules/FindQt4.cmake 2013-03-07 16:57:52.038725421 +0000
+@@ -446,7 +446,7 @@
+ # check for qmake
+ # Debian uses qmake-qt4
+ # macports' Qt uses qmake-mac
+-FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake qmake4 qmake-qt4 qmake-mac PATHS
++FIND_PROGRAM(QT_QMAKE_EXECUTABLE NAMES qmake4 qmake-qt4 qmake-mac PATHS
+ "[HKEY_CURRENT_USER\\Software\\Trolltech\\Qt3Versions\\4.0.0;InstallDir]/bin"
+ "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\4.0.0;InstallDir]/bin"
+ "[HKEY_CURRENT_USER\\Software\\Trolltech\\Versions\\${qt_install_version};InstallDir]/bin"