summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2016-12-29 03:35:38 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2016-12-30 01:24:36 +0100
commit040f3e11669ec6f7154588421cff00c1d6990578 (patch)
tree7cfe04257d55fb61ff014f4ac425dafa4b5f6d22 /app-office/calligra
parentdev-libs/xapian: remove banner for cpu flags (diff)
downloadgentoo-040f3e11669ec6f7154588421cff00c1d6990578.tar.gz
gentoo-040f3e11669ec6f7154588421cff00c1d6990578.tar.bz2
gentoo-040f3e11669ec6f7154588421cff00c1d6990578.zip
app-office/calligra: Fix configure, remove file collisions, crash fixes
Gentoo-bug: 603584, 603772 Package-Manager: portage-2.3.0
Diffstat (limited to 'app-office/calligra')
-rw-r--r--app-office/calligra/calligra-3.0.0-r1.ebuild248
-rw-r--r--app-office/calligra/files/calligra-3.0.0-optionaldeps.patch20
-rw-r--r--app-office/calligra/files/calligra-3.0.0-plan-crash.patch199
-rw-r--r--app-office/calligra/files/calligra-3.0.0-words-crash.patch75
4 files changed, 542 insertions, 0 deletions
diff --git a/app-office/calligra/calligra-3.0.0-r1.ebuild b/app-office/calligra/calligra-3.0.0-r1.ebuild
new file mode 100644
index 000000000000..a7247a72a30d
--- /dev/null
+++ b/app-office/calligra/calligra-3.0.0-r1.ebuild
@@ -0,0 +1,248 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+CHECKREQS_DISK_BUILD="4G"
+KDE_HANDBOOK="forceoptional"
+KDE_TEST="forceoptional"
+inherit check-reqs kde5 versionator
+
+DESCRIPTION="KDE Office Suite"
+HOMEPAGE="http://www.calligra.org/"
+
+case ${PV} in
+ 3.[0123456789].[789]?)
+ # beta or rc releases
+ SRC_URI="mirror://kde/unstable/${P}/${P}.tar.gz" ;;
+ 3.[0123456789].?)
+ # stable releases
+ SRC_URI="mirror://kde/stable/${P}/${P}.tar.gz"
+esac
+
+LICENSE="GPL-2"
+
+[[ ${KDE_BUILD_TYPE} == release ]] && \
+KEYWORDS="~amd64 ~x86"
+
+CAL_FTS=( karbon plan sheets words )
+CAL_EXP_FTS=( braindump stage )
+
+IUSE="activities +crypt +eigen +fontconfig gsl import-filter +lcms pim marble okular
+ openexr +pdf spacenav +truetype vc +xml X $(printf 'calligra_features_%s ' ${CAL_FTS[@]})
+ $(printf 'calligra_experimental_features_%s ' ${CAL_EXP_FTS[@]})"
+
+REQUIRED_USE="calligra_features_sheets? ( eigen )"
+
+# TODO: Not packaged: Cauchy (https://bitbucket.org/cyrille/cauchy)
+# Required for the matlab/octave formula tool
+# drop qtcore subslot operator when QT_MINIMAL >= 5.7.0
+COMMON_DEPEND="
+ $(add_frameworks_dep karchive)
+ $(add_frameworks_dep kcmutils)
+ $(add_frameworks_dep kcodecs)
+ $(add_frameworks_dep kcompletion)
+ $(add_frameworks_dep kconfig)
+ $(add_frameworks_dep kconfigwidgets)
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kdelibs4support)
+ $(add_frameworks_dep kemoticons)
+ $(add_frameworks_dep kglobalaccel)
+ $(add_frameworks_dep kguiaddons)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kiconthemes)
+ $(add_frameworks_dep kio)
+ $(add_frameworks_dep kitemmodels)
+ $(add_frameworks_dep kitemviews)
+ $(add_frameworks_dep knotifications)
+ $(add_frameworks_dep knotifyconfig)
+ $(add_frameworks_dep kparts)
+ $(add_frameworks_dep kross)
+ $(add_frameworks_dep ktexteditor)
+ $(add_frameworks_dep ktextwidgets)
+ $(add_frameworks_dep kwallet)
+ $(add_frameworks_dep kwidgetsaddons)
+ $(add_frameworks_dep kwindowsystem)
+ $(add_frameworks_dep kxmlgui)
+ $(add_frameworks_dep sonnet)
+ $(add_frameworks_dep threadweaver)
+ $(add_qt_dep designer)
+ $(add_qt_dep qtconcurrent)
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtdeclarative)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtnetwork)
+ $(add_qt_dep qtprintsupport)
+ $(add_qt_dep qtscript)
+ $(add_qt_dep qtsvg)
+ $(add_qt_dep qtwidgets)
+ $(add_qt_dep qtxml)
+ dev-lang/perl
+ dev-libs/boost
+ media-libs/libpng:0
+ sys-libs/zlib
+ virtual/libiconv
+ activities? ( $(add_frameworks_dep kactivities) )
+ crypt? ( app-crypt/qca:2[qt5] )
+ eigen? ( dev-cpp/eigen:3 )
+ fontconfig? ( media-libs/fontconfig )
+ gsl? ( sci-libs/gsl )
+ import-filter? (
+ $(add_frameworks_dep khtml)
+ app-text/libetonyek
+ app-text/libodfgen
+ app-text/libwpd:*
+ app-text/libwpg:*
+ >=app-text/libwps-0.4
+ dev-libs/librevenge
+ media-libs/libvisio
+ )
+ lcms? ( media-libs/lcms:2 )
+ marble? ( $(add_kdeapps_dep marble) )
+ openexr? ( media-libs/openexr )
+ pdf? ( app-text/poppler:=[qt5] )
+ spacenav? ( dev-libs/libspnav )
+ truetype? ( media-libs/freetype:2 )
+ X? (
+ $(add_qt_dep qtx11extras)
+ x11-libs/libX11
+ )
+ calligra_experimental_features_braindump? ( $(add_qt_dep qtwebkit) )
+ calligra_experimental_features_stage? (
+ $(add_qt_dep qtwebkit)
+ okular? ( $(add_kdeapps_dep okular) )
+ )
+ calligra_features_plan? (
+ $(add_frameworks_dep khtml)
+ $(add_qt_dep qtcore '' '' '5=')
+ dev-libs/kdiagram:5
+ dev-libs/kproperty:5
+ dev-libs/kreport:5
+ pim? (
+ $(add_kdeapps_dep akonadi)
+ $(add_kdeapps_dep akonadi-contacts)
+ $(add_kdeapps_dep kcalcore)
+ $(add_kdeapps_dep kcontacts)
+ )
+ )
+ calligra_features_words? (
+ dev-libs/libxslt
+ okular? ( $(add_kdeapps_dep okular) )
+ )
+"
+DEPEND="${COMMON_DEPEND}
+ sys-devel/gettext
+ x11-misc/shared-mime-info
+ vc? ( >=dev-libs/vc-1.1.0 )
+"
+RDEPEND="${COMMON_DEPEND}
+ calligra_features_karbon? ( media-gfx/pstoedit[plotutils] )
+ !app-office/calligra:4
+"
+RESTRICT+=" test"
+
+PATCHES=(
+ "${FILESDIR}/${P}-no-arch-detection.patch"
+ "${FILESDIR}/${P}-optionaldeps.patch"
+ "${FILESDIR}/${P}-words-crash.patch"
+ "${FILESDIR}/${P}-plan-crash.patch"
+)
+
+pkg_pretend() {
+ check-reqs_pkg_pretend
+}
+
+pkg_setup() {
+ kde5_pkg_setup
+ check-reqs_pkg_setup
+}
+
+src_prepare() {
+ kde5_src_prepare
+
+ # Unconditionally disable deprecated deps (required by QtQuick1)
+ punt_bogus_dep Qt5 Declarative
+ punt_bogus_dep Qt5 OpenGL
+
+ if ! use calligra_experimental_features_stage && \
+ ! use calligra_experimental_features_braindump; then
+ punt_bogus_dep Qt5 WebKitWidgets
+ punt_bogus_dep Qt5 WebKit
+ fi
+
+ # Hack around the excessive use of CMake macros
+ if use okular && ! use calligra_features_words; then
+ sed -i -e "/add_subdirectory( *okularodtgenerator *)/ s/^/#DONT/" \
+ extras/CMakeLists.txt || die "Failed to disable OKULAR_GENERATOR_ODT"
+ fi
+
+ if use okular && ! use calligra_experimental_features_stage; then
+ sed -i -e "/add_subdirectory( *okularodpgenerator *)/ s/^/#DONT/" \
+ extras/CMakeLists.txt || die "Failed to disable OKULAR_GENERATOR_ODP"
+ fi
+
+ rm -f po/*/*kexi*po || die
+ rm -f po/*/*krita*po || die
+}
+
+src_configure() {
+ local cal_ft myproducts experimental=OFF
+
+ # applications
+ for cal_ft in ${CAL_FTS[@]}; do
+ if use calligra_features_${cal_ft} ; then
+ myproducts+=( "${cal_ft^^}" )
+ fi
+ done
+ # experimental/unmaintained applications
+ for cal_ft in ${CAL_EXP_FTS[@]}; do
+ if use calligra_experimental_features_${cal_ft} ; then
+ experimental=ON
+ myproducts+=( "${cal_ft^^}" )
+ fi
+ done
+
+ local mycmakeargs=( -DPRODUCTSET="${myproducts[*]}" )
+
+ if [[ ${KDE_BUILD_TYPE} == release ]] ; then
+ mycmakeargs+=(
+ -DRELEASE_BUILD=ON
+ -DBUILD_UNMAINTAINED=${experimental}
+ )
+ fi
+
+ mycmakeargs+=(
+ -DPACKAGERS_BUILD=OFF
+ -DWITH_Iconv=ON
+ $(cmake-utils_use_find_package activities KF5Activities)
+ -DWITH_Qca-qt5=$(usex crypt)
+ -DWITH_Eigen3=$(usex eigen)
+ -DWITH_Fontconfig=$(usex fontconfig)
+ -DWITH_GSL=$(usex gsl)
+ -DWITH_LibEtonyek=$(usex import-filter)
+ -DWITH_LibOdfGen=$(usex import-filter)
+ -DWITH_LibRevenge=$(usex import-filter)
+ -DWITH_LibVisio=$(usex import-filter)
+ -DWITH_LibWpd=$(usex import-filter)
+ -DWITH_LibWpg=$(usex import-filter)
+ -DWITH_LibWps=$(usex import-filter)
+ $(cmake-utils_use_find_package pim KF5Akonadi)
+ $(cmake-utils_use_find_package pim KF5AkonadiContact)
+ $(cmake-utils_use_find_package pim KF5CalendarCore)
+ $(cmake-utils_use_find_package pim KF5Contacts)
+ -DWITH_LCMS2=$(usex lcms)
+ $(cmake-utils_use_find_package marble Marble)
+ -DWITH_Okular5=$(usex okular)
+ -DWITH_OpenEXR=$(usex openexr)
+ -DWITH_Poppler=$(usex pdf)
+ $(cmake-utils_use_find_package spacenav Spnav)
+ -ENABLE_CSTESTER_TESTING=$(usex test)
+ -DWITH_Freetype=$(usex truetype)
+ -DWITH_Vc=$(usex vc)
+ -DCMAKE_DISABLE_FIND_PACKAGE_Libgit2=ON
+ -DCMAKE_DISABLE_FIND_PACKAGE_Libqgit2=ON
+ )
+
+ kde5_src_configure
+}
diff --git a/app-office/calligra/files/calligra-3.0.0-optionaldeps.patch b/app-office/calligra/files/calligra-3.0.0-optionaldeps.patch
new file mode 100644
index 000000000000..a36edeef096a
--- /dev/null
+++ b/app-office/calligra/files/calligra-3.0.0-optionaldeps.patch
@@ -0,0 +1,20 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 0394af4..e11d998 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -223,11 +223,10 @@ find_package(KF5 ${REQUIRED_KF5_VERSION} REQUIRED
+ Notifications
+ KCMUtils
+ )
+-find_package(KF5 ${REQUIRED_KF5_VERSION} QUIET
+- OPTIONAL_COMPONENTS
+- Activities
+- KHtml
+-)
++
++find_package(KF5Activities)
++find_package(KF5KHtml)
++
+ set_package_properties(KF5Activities PROPERTIES
+ TYPE OPTIONAL
+ )
diff --git a/app-office/calligra/files/calligra-3.0.0-plan-crash.patch b/app-office/calligra/files/calligra-3.0.0-plan-crash.patch
new file mode 100644
index 000000000000..3e1073f9c31a
--- /dev/null
+++ b/app-office/calligra/files/calligra-3.0.0-plan-crash.patch
@@ -0,0 +1,199 @@
+From dd2cb16ab43d21ee25ba6ebfb36cd68ec9879c4f Mon Sep 17 00:00:00 2001
+From: Dag Andersen <danders@get2net.dk>
+Date: Mon, 12 Dec 2016 10:07:38 +0100
+Subject: Plan: Fix crash on close
+
+Due to accessing project node during delete
+
+BUG: 373527
+FIXED-IN: 3.0.0
+---
+ plan/libs/kernel/kptnode.cpp | 14 ++++++++++++--
+ plan/libs/kernel/kptnode.h | 5 ++++-
+ plan/libs/kernel/kptproject.cpp | 11 ++++++++++-
+ plan/libs/kernel/kptresource.cpp | 20 ++++++++++++++++----
+ plan/libs/kernel/kptresource.h | 7 ++++++-
+ 5 files changed, 48 insertions(+), 9 deletions(-)
+
+diff --git a/plan/libs/kernel/kptnode.cpp b/plan/libs/kernel/kptnode.cpp
+index d8b0e6b..e55f9ca 100644
+--- a/plan/libs/kernel/kptnode.cpp
++++ b/plan/libs/kernel/kptnode.cpp
+@@ -40,7 +40,8 @@ namespace KPlato
+ Node::Node(Node *parent)
+ : QObject( 0 ), // We don't use qobjects parent
+ m_nodes(), m_dependChildNodes(), m_dependParentNodes(),
+- m_estimate( 0 )
++ m_estimate( 0 ),
++ m_blockChanged(false)
+ {
+ //debugPlan<<"("<<this<<")";
+ m_parent = parent;
+@@ -53,7 +54,8 @@ Node::Node(const Node &node, Node *parent)
+ m_nodes(),
+ m_dependChildNodes(),
+ m_dependParentNodes(),
+- m_estimate( 0 )
++ m_estimate( 0 ),
++ m_blockChanged(false)
+ {
+ //debugPlan<<"("<<this<<")";
+ m_parent = parent;
+@@ -1225,7 +1227,15 @@ void Node::setRunningAccount(Account *acc)
+ changed();
+ }
+
++void Node::blockChanged(bool on)
++{
++ m_blockChanged = on;
++}
++
+ void Node::changed(Node *node, int property) {
++ if (m_blockChanged) {
++ return;
++ }
+ switch ( property) {
+ case Type:
+ case StartupCost:
+diff --git a/plan/libs/kernel/kptnode.h b/plan/libs/kernel/kptnode.h
+index cfcbd3e..4c98acc 100644
+--- a/plan/libs/kernel/kptnode.h
++++ b/plan/libs/kernel/kptnode.h
+@@ -528,6 +528,8 @@ public:
+ virtual void emitDocumentRemoved( Node *node, Document *doc, int idx );
+ virtual void emitDocumentChanged( Node *node, Document *doc, int idx );
+
++ void blockChanged(bool on = true);
++
+ public:
+ // These shouldn't be available to other than those who inherits
+ /// Calculate the critical path
+@@ -673,7 +675,8 @@ protected:
+ ResourceRequestCollection m_requests;
+
+ private:
+- void init();
++ void init();
++ bool m_blockChanged;
+ };
+
+ //////////////////////////////// Estimate ////////////////////////////////
+diff --git a/plan/libs/kernel/kptproject.cpp b/plan/libs/kernel/kptproject.cpp
+index 30cd450..d2fafb5 100644
+--- a/plan/libs/kernel/kptproject.cpp
++++ b/plan/libs/kernel/kptproject.cpp
+@@ -94,7 +94,16 @@ void Project::deref()
+ Project::~Project()
+ {
+ debugPlan;
+- disconnect(); // NOTE: may be a problem if somebody uses the destroyd() signal
++ disconnect();
++ for(Node *n : nodeIdDict) {
++ n->blockChanged();
++ }
++ for (Resource *r : resourceIdDict) {
++ r->blockChanged();
++ }
++ for (ResourceGroup *g : resourceGroupIdDict) {
++ g->blockChanged();
++ }
+ delete m_standardWorktime;
+ while ( !m_resourceGroups.isEmpty() )
+ delete m_resourceGroups.takeFirst();
+diff --git a/plan/libs/kernel/kptresource.cpp b/plan/libs/kernel/kptresource.cpp
+index 8a3d55e..b32d4e7 100644
+--- a/plan/libs/kernel/kptresource.cpp
++++ b/plan/libs/kernel/kptresource.cpp
+@@ -44,7 +44,8 @@ namespace KPlato
+ {
+
+ ResourceGroup::ResourceGroup()
+- : QObject( 0 )
++ : QObject( 0 ),
++ m_blockChanged(false)
+ {
+ m_project = 0;
+ m_type = Type_Work;
+@@ -80,8 +81,13 @@ void ResourceGroup::copy( const ResourceGroup *group )
+ m_name = group->m_name;
+ }
+
++void ResourceGroup::blockChanged(bool on)
++{
++ m_blockChanged = on;
++}
++
+ void ResourceGroup::changed() {
+- if ( m_project ) {
++ if (m_project && !m_blockChanged) {
+ m_project->changed( this );
+ }
+ }
+@@ -319,7 +325,8 @@ Resource::Resource()
+ m_project(0),
+ m_parent( 0 ),
+ m_autoAllocate( false ),
+- m_currentSchedule( 0 )
++ m_currentSchedule( 0 ),
++ m_blockChanged(false)
+ {
+ m_type = Type_Work;
+ m_units = 100; // %
+@@ -409,9 +416,14 @@ void Resource::copy(Resource *resource) {
+ //m_externalNames = resource->m_externalNames;
+ }
+
++void Resource::blockChanged(bool on)
++{
++ m_blockChanged = on;
++}
++
+ void Resource::changed()
+ {
+- if ( m_project ) {
++ if (m_project && !m_blockChanged) {
+ m_project->changed( this );
+ }
+ }
+diff --git a/plan/libs/kernel/kptresource.h b/plan/libs/kernel/kptresource.h
+index 10f6b92..fba020a 100644
+--- a/plan/libs/kernel/kptresource.h
++++ b/plan/libs/kernel/kptresource.h
+@@ -177,6 +177,8 @@ public:
+ DateTime startTime( long id ) const;
+ DateTime endTime( long id ) const;
+
++ void blockChanged(bool on = true);
++
+ #ifndef NDEBUG
+
+ void printDebug( const QString& ident );
+@@ -199,7 +201,7 @@ private:
+ Type m_type;
+
+ QList<ResourceGroupRequest*> m_requests;
+-
++ bool m_blockChanged;
+ };
+
+ /**
+@@ -492,6 +494,8 @@ public:
+ /// Set the @p account
+ void setAccount( Account *account );
+
++ void blockChanged(bool on = true);
++
+ // for xml loading code
+
+ class WorkInfoCache
+@@ -564,6 +568,7 @@ private:
+
+ // return this if resource has no calendar and is a material resource
+ Calendar m_materialCalendar;
++ bool m_blockChanged;
+
+ #ifndef NDEBUG
+ public:
+--
+cgit v0.11.2
+
diff --git a/app-office/calligra/files/calligra-3.0.0-words-crash.patch b/app-office/calligra/files/calligra-3.0.0-words-crash.patch
new file mode 100644
index 000000000000..4fe928371a6e
--- /dev/null
+++ b/app-office/calligra/files/calligra-3.0.0-words-crash.patch
@@ -0,0 +1,75 @@
+From 2d86293939bafd80bc320849ffcc7544350fc2bf Mon Sep 17 00:00:00 2001
+From: Dag Andersen <danders@get2net.dk>
+Date: Fri, 9 Dec 2016 11:19:36 +0100
+Subject: Words: Fix crash when adding connected text frame
+
+Summary:
+KWFrameConnectSelector crashes you activate existsingRadio button but do not select a frameset.
+This patch selects a frameset if none is selected.
+
+Reviewers: boemann
+
+Reviewed By: boemann
+
+Tags: #kexi, #calligra:_3.0
+
+Differential Revision: https://phabricator.kde.org/D3632
+---
+ words/part/dialogs/KWFrameConnectSelector.cpp | 14 ++++++++++++++
+ words/part/dialogs/KWFrameConnectSelector.h | 1 +
+ 2 files changed, 15 insertions(+)
+
+diff --git a/words/part/dialogs/KWFrameConnectSelector.cpp b/words/part/dialogs/KWFrameConnectSelector.cpp
+index 566dfe2..590d3b7 100644
+--- a/words/part/dialogs/KWFrameConnectSelector.cpp
++++ b/words/part/dialogs/KWFrameConnectSelector.cpp
+@@ -21,6 +21,7 @@
+ #include "KWDocument.h"
+ #include "frames/KWTextFrameSet.h"
+ #include "Words.h"
++#include "WordsDebug.h"
+
+ KWFrameConnectSelector::KWFrameConnectSelector(FrameConfigSharedState *state)
+ : m_state(state),
+@@ -30,6 +31,8 @@ KWFrameConnectSelector::KWFrameConnectSelector(FrameConfigSharedState *state)
+
+ connect(widget.framesList, SIGNAL(itemClicked(QTreeWidgetItem*,int)),
+ this, SLOT(frameSetSelected()));
++ connect(widget.existingRadio, SIGNAL(clicked(bool)),
++ this, SLOT(existingRadioClicked(bool)));
+ connect(widget.frameSetName, SIGNAL(textChanged(QString)),
+ this, SLOT(nameChanged(QString)));
+ }
+@@ -50,6 +53,17 @@ bool KWFrameConnectSelector::canOpen(KoShape *shape)
+ return true;
+ }
+
++void KWFrameConnectSelector::existingRadioClicked(bool on)
++{
++ // make sure there is a selcted frameset
++ if (on && !widget.framesList->currentItem() && widget.framesList->model()->rowCount() > 0) {
++ QModelIndex curr = widget.framesList->model()->index(0, 0);
++ widget.framesList->setCurrentIndex(curr);
++ widget.framesList->selectionModel()->select(curr, QItemSelectionModel::Select);
++ }
++ debugWords<<Q_FUNC_INFO<<on<<widget.framesList->currentItem();
++}
++
+ void KWFrameConnectSelector::frameSetSelected()
+ {
+ widget.existingRadio->setChecked(true);
+diff --git a/words/part/dialogs/KWFrameConnectSelector.h b/words/part/dialogs/KWFrameConnectSelector.h
+index 74d3f0d..75ec1613 100644
+--- a/words/part/dialogs/KWFrameConnectSelector.h
++++ b/words/part/dialogs/KWFrameConnectSelector.h
+@@ -50,6 +50,7 @@ public:
+ }
+
+ private Q_SLOTS:
++ void existingRadioClicked(bool on);
+ void frameSetSelected();
+ void nameChanged(const QString &text);
+
+--
+cgit v0.11.2
+