summaryrefslogtreecommitdiff
path: root/libre-testing/kdelibs-libre
diff options
context:
space:
mode:
Diffstat (limited to 'libre-testing/kdelibs-libre')
-rw-r--r--libre-testing/kdelibs-libre/PKGBUILD69
-rw-r--r--libre-testing/kdelibs-libre/fix-kmail-crash.patch71
-rw-r--r--libre-testing/kdelibs-libre/kde-applications-menu.patch22
-rw-r--r--libre-testing/kdelibs-libre/kdelibs.install13
-rw-r--r--libre-testing/kdelibs-libre/khtml-fsdg.diff50
-rw-r--r--libre-testing/kdelibs-libre/use-pythondontwritebytecode.patch80
6 files changed, 305 insertions, 0 deletions
diff --git a/libre-testing/kdelibs-libre/PKGBUILD b/libre-testing/kdelibs-libre/PKGBUILD
new file mode 100644
index 000000000..e5fdb1ea6
--- /dev/null
+++ b/libre-testing/kdelibs-libre/PKGBUILD
@@ -0,0 +1,69 @@
+# $Id: PKGBUILD 165921 2012-09-03 21:48:13Z andrea $
+# Maintainer: Andrea Scarpino <andrea@archlinux.org
+# Contributor: Pierre Schmitz <pierre@archlinux.de>
+# Maintainer (Parabola): André Silva <emulatorman@lavabit.com>
+
+_pkgname=kdelibs
+pkgname=kdelibs-libre
+pkgver=4.9.1
+pkgrel=1
+pkgdesc="KDE Core Libraries"
+arch=('i686' 'x86_64' 'mips64el')
+url='https://projects.kde.org/projects/kde/kdelibs'
+license=('GPL' 'LGPL' 'FDL')
+depends=('strigi' 'attica' 'libxss' 'soprano' 'krb5' 'grantlee'
+ 'shared-desktop-ontologies' 'qca' 'libdbusmenu-qt' 'polkit-qt'
+ 'shared-mime-info' 'enchant' 'giflib' 'jasper' 'openexr'
+ 'docbook-xsl' 'upower' 'udisks' 'libxcursor' 'phonon' 'qtwebkit'
+ 'media-player-info' 'libxtst')
+makedepends=('cmake' 'automoc4' 'avahi' 'libgl' 'hspell')
+provides=("kdelibs=$pkgver")
+replaces=('kdelibs')
+conflicts=('kdelibs')
+install=${_pkgname}.install
+source=("http://download.kde.org/stable/${pkgver}/src/${_pkgname}-${pkgver}.tar.xz"
+ 'kde-applications-menu.patch'
+ 'use-pythondontwritebytecode.patch'
+ 'khtml-fsdg.diff')
+sha1sums=('33fb26ec7735122b2bb084b79f8fcffb826c58f0'
+ '86ee8c8660f19de8141ac99cd6943964d97a1ed7'
+ 'bbacbbe2194f3961cd7557d98a9ddef158ca11aa'
+ 'a1502a964081ad583a00cf90c56e74bf60121830')
+
+build() {
+ cd "${srcdir}"/${_pkgname}-${pkgver}
+
+ # avoid file conflict with gnome-menus
+ patch -p1 -i "${srcdir}"/kde-applications-menu.patch
+
+ # Set PYTHONDONTWRITEBYTECODE (KDEBUG#276151)
+ patch -p0 -i "${srcdir}"/use-pythondontwritebytecode.patch
+
+ # Don't ask the user to download a plugin, it's probably nonfree.
+ patch -p1 -i "${srcdir}"/khtml-fsdg.diff
+
+ cd "${srcdir}"
+ mkdir build
+ cd build
+ cmake ../${_pkgname}-${pkgver} \
+ -DCMAKE_BUILD_TYPE=Release \
+ -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_HUpnp=OFF
+ 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-testing/kdelibs-libre/fix-kmail-crash.patch b/libre-testing/kdelibs-libre/fix-kmail-crash.patch
new file mode 100644
index 000000000..27caa25f0
--- /dev/null
+++ b/libre-testing/kdelibs-libre/fix-kmail-crash.patch
@@ -0,0 +1,71 @@
+commit 979b0436510e7807c054e79c40c3753834ac2863
+Author: Sebastian Trueg <trueg@kde.org>
+Date: Thu Mar 15 09:14:35 2012 +0100
+
+ Thread-safe ResourceWatcher handling.
+
+ We simply perform all RW operations in the manager thread.
+
+ BUG: 295474
+ FIXED-IN: 4.8.2
+
+diff --git a/nepomuk/core/resourcedata.cpp b/nepomuk/core/resourcedata.cpp
+index abe55ea..9d45228 100644
+--- a/nepomuk/core/resourcedata.cpp
++++ b/nepomuk/core/resourcedata.cpp
+@@ -175,7 +175,8 @@ void Nepomuk::ResourceData::resetAll( bool isDelete )
+ if( !m_uri.isEmpty() ) {
+ m_rm->m_initializedData.remove( m_uri );
+ if( m_rm->m_watcher && m_addedToWatcher ) {
+- m_rm->m_watcher->removeResource(Resource::fromResourceUri(m_uri));
++ // See load() for an explanation of the QMetaObject call
++ QMetaObject::invokeMethod(m_rm->m_watcher, "removeResource", Qt::AutoConnection, Q_ARG(Nepomuk::Resource, Resource::fromResourceUri(m_uri)));
+ m_addedToWatcher = false;
+ }
+ }
+@@ -393,16 +394,23 @@ bool Nepomuk::ResourceData::load()
+ m_cache.clear();
+
+ if(!m_rm->m_watcher) {
++ //
++ // The ResourceWatcher is not thread-safe. Thus, we need to ensure the safety ourselves.
++ // We do that by simply handling all RW related operations in the manager thread.
++ // This also means to invoke methods on the watcher through QMetaObject to make sure they
++ // get queued in case of calls between different threads.
++ //
+ m_rm->m_watcher = new ResourceWatcher(m_rm->m_manager);
++ m_rm->m_watcher->moveToThread(m_rm->m_manager->thread());
+ QObject::connect( m_rm->m_watcher, SIGNAL(propertyAdded(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)),
+ m_rm->m_manager, SLOT(slotPropertyAdded(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)) );
+ QObject::connect( m_rm->m_watcher, SIGNAL(propertyRemoved(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)),
+ m_rm->m_manager, SLOT(slotPropertyRemoved(Nepomuk::Resource, Nepomuk::Types::Property, QVariant)) );
+ m_rm->m_watcher->addResource( Nepomuk::Resource::fromResourceUri(m_uri) );
+- m_rm->m_watcher->start();
++ QMetaObject::invokeMethod(m_rm->m_watcher, "start", Qt::AutoConnection);
+ }
+ else {
+- m_rm->m_watcher->addResource( Nepomuk::Resource::fromResourceUri(m_uri) );
++ QMetaObject::invokeMethod(m_rm->m_watcher, "addResource", Qt::AutoConnection, Q_ARG(Nepomuk::Resource, Nepomuk::Resource::fromResourceUri(m_uri)) );
+ }
+ m_addedToWatcher = true;
+
+diff --git a/nepomuk/core/resourcewatcher.h b/nepomuk/core/resourcewatcher.h
+index 06b9622..92b12f5 100644
+--- a/nepomuk/core/resourcewatcher.h
++++ b/nepomuk/core/resourcewatcher.h
+@@ -93,6 +93,7 @@ namespace Nepomuk {
+ */
+ virtual ~ResourceWatcher();
+
++ public Q_SLOTS:
+ /**
+ * \brief Add a type to be watched.
+ *
+@@ -204,7 +205,6 @@ namespace Nepomuk {
+ */
+ QList<Types::Property> properties() const;
+
+- public Q_SLOTS:
+ /**
+ * \brief Start the signalling of changes.
+ *
diff --git a/libre-testing/kdelibs-libre/kde-applications-menu.patch b/libre-testing/kdelibs-libre/kde-applications-menu.patch
new file mode 100644
index 000000000..4b513298a
--- /dev/null
+++ b/libre-testing/kdelibs-libre/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-testing/kdelibs-libre/kdelibs.install b/libre-testing/kdelibs-libre/kdelibs.install
new file mode 100644
index 000000000..c77e68041
--- /dev/null
+++ b/libre-testing/kdelibs-libre/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-testing/kdelibs-libre/khtml-fsdg.diff b/libre-testing/kdelibs-libre/khtml-fsdg.diff
new file mode 100644
index 000000000..1a531b3c8
--- /dev/null
+++ b/libre-testing/kdelibs-libre/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-testing/kdelibs-libre/use-pythondontwritebytecode.patch b/libre-testing/kdelibs-libre/use-pythondontwritebytecode.patch
new file mode 100644
index 000000000..e221e939a
--- /dev/null
+++ b/libre-testing/kdelibs-libre/use-pythondontwritebytecode.patch
@@ -0,0 +1,80 @@
+--- cmake/modules/PythonMacros.cmake
++++ cmake/modules/PythonMacros.cmake
+@@ -23,40 +23,42 @@
+ # Install the source file.
+ INSTALL(FILES ${SOURCE_FILE} DESTINATION ${DESINATION_DIR})
+
+- # Byte compile and install the .pyc file.
+- GET_FILENAME_COMPONENT(_absfilename ${SOURCE_FILE} ABSOLUTE)
+- GET_FILENAME_COMPONENT(_filename ${SOURCE_FILE} NAME)
+- GET_FILENAME_COMPONENT(_filenamebase ${SOURCE_FILE} NAME_WE)
+- GET_FILENAME_COMPONENT(_basepath ${SOURCE_FILE} PATH)
+-
+- if(WIN32)
+- string(REGEX REPLACE ".:/" "/" _basepath "${_basepath}")
+- endif(WIN32)
+-
+- SET(_bin_py ${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/${_filename})
+- SET(_bin_pyc ${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/${_filenamebase}.pyc)
+-
+- FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_basepath})
+-
+- SET(_message "-DMESSAGE=Byte-compiling ${_bin_py}")
+-
+- GET_FILENAME_COMPONENT(_abs_bin_py ${_bin_py} ABSOLUTE)
+- IF(_abs_bin_py STREQUAL ${_absfilename}) # Don't copy the file onto itself.
+- ADD_CUSTOM_COMMAND(
+- TARGET compile_python_files
+- COMMAND ${CMAKE_COMMAND} -E echo ${_message}
+- COMMAND ${PYTHON_EXECUTABLE} ${_python_compile_py} ${_bin_py}
+- DEPENDS ${_absfilename}
+- )
+- ELSE(_abs_bin_py STREQUAL ${_absfilename})
+- ADD_CUSTOM_COMMAND(
+- TARGET compile_python_files
+- COMMAND ${CMAKE_COMMAND} -E echo ${_message}
+- COMMAND ${CMAKE_COMMAND} -E copy ${_absfilename} ${_bin_py}
+- COMMAND ${PYTHON_EXECUTABLE} ${_python_compile_py} ${_bin_py}
+- DEPENDS ${_absfilename}
+- )
+- ENDIF(_abs_bin_py STREQUAL ${_absfilename})
++ # Byte compile and install the .pyc file.
++ IF("$ENV{PYTHONDONTWRITEBYTECODE}" STREQUAL "")
++ GET_FILENAME_COMPONENT(_absfilename ${SOURCE_FILE} ABSOLUTE)
++ GET_FILENAME_COMPONENT(_filename ${SOURCE_FILE} NAME)
++ GET_FILENAME_COMPONENT(_filenamebase ${SOURCE_FILE} NAME_WE)
++ GET_FILENAME_COMPONENT(_basepath ${SOURCE_FILE} PATH)
++
++ if(WIN32)
++ string(REGEX REPLACE ".:/" "/" _basepath "${_basepath}")
++ endif(WIN32)
++
++ SET(_bin_py ${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/${_filename})
++ SET(_bin_pyc ${CMAKE_CURRENT_BINARY_DIR}/${_basepath}/${_filenamebase}.pyc)
++
++ FILE(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${_basepath})
++
++ SET(_message "-DMESSAGE=Byte-compiling ${_bin_py}")
++
++ GET_FILENAME_COMPONENT(_abs_bin_py ${_bin_py} ABSOLUTE)
++ IF(_abs_bin_py STREQUAL ${_absfilename}) # Don't copy the file onto itself.
++ ADD_CUSTOM_COMMAND(
++ TARGET compile_python_files
++ COMMAND ${CMAKE_COMMAND} -E echo ${_message}
++ COMMAND ${PYTHON_EXECUTABLE} ${_python_compile_py} ${_bin_py}
++ DEPENDS ${_absfilename}
++ )
++ ELSE(_abs_bin_py STREQUAL ${_absfilename})
++ ADD_CUSTOM_COMMAND(
++ TARGET compile_python_files
++ COMMAND ${CMAKE_COMMAND} -E echo ${_message}
++ COMMAND ${CMAKE_COMMAND} -E copy ${_absfilename} ${_bin_py}
++ COMMAND ${PYTHON_EXECUTABLE} ${_python_compile_py} ${_bin_py}
++ DEPENDS ${_absfilename}
++ )
++ ENDIF(_abs_bin_py STREQUAL ${_absfilename})
+
+- INSTALL(FILES ${_bin_pyc} DESTINATION ${DESINATION_DIR})
++ INSTALL(FILES ${_bin_pyc} DESTINATION ${DESINATION_DIR})
++ ENDIF("$ENV{PYTHONDONTWRITEBYTECODE}" STREQUAL "")
+ ENDMACRO(PYTHON_INSTALL)