commit: 040f3e11669ec6f7154588421cff00c1d6990578 Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> AuthorDate: Thu Dec 29 02:35:38 2016 +0000 Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org> CommitDate: Fri Dec 30 00:24:36 2016 +0000 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=040f3e11
app-office/calligra: Fix configure, remove file collisions, crash fixes Gentoo-bug: 603584, 603772 Package-Manager: portage-2.3.0 app-office/calligra/calligra-3.0.0-r1.ebuild | 248 +++++++++++++++++++++ .../files/calligra-3.0.0-optionaldeps.patch | 20 ++ .../calligra/files/calligra-3.0.0-plan-crash.patch | 199 +++++++++++++++++ .../files/calligra-3.0.0-words-crash.patch | 75 +++++++ 4 files changed, 542 insertions(+) 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 00000000..a7247a7 --- /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 00000000..a36edee --- /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 00000000..3e1073f --- /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 <dand...@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 00000000..4fe9283 --- /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 <dand...@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 +