diff options
Diffstat (limited to 'libre-testing/kdelibs-libre')
-rw-r--r-- | libre-testing/kdelibs-libre/PKGBUILD | 69 | ||||
-rw-r--r-- | libre-testing/kdelibs-libre/fix-kmail-crash.patch | 71 | ||||
-rw-r--r-- | libre-testing/kdelibs-libre/kde-applications-menu.patch | 22 | ||||
-rw-r--r-- | libre-testing/kdelibs-libre/kdelibs.install | 13 | ||||
-rw-r--r-- | libre-testing/kdelibs-libre/khtml-fsdg.diff | 50 | ||||
-rw-r--r-- | libre-testing/kdelibs-libre/use-pythondontwritebytecode.patch | 80 |
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) |