kde-apps/cantor: Fix build w/ USE=julia and KF-5.31
authorAndreas Sturmlechner <asturm@gentoo.org>
Sat, 11 Feb 2017 21:49:09 +0000 (22:49 +0100)
committerAndreas Sturmlechner <asturm@gentoo.org>
Sat, 11 Feb 2017 23:34:46 +0000 (00:34 +0100)
Package-Manager: portage-2.3.3

kde-apps/cantor/cantor-16.12.2.ebuild
kde-apps/cantor/cantor-9999.ebuild [new file with mode: 0644]
kde-apps/cantor/files/cantor-16.12.2-julia-kf-5.31.patch [new file with mode: 0644]

index 669532f8098868f9380e033c2b75c66f243269d9..2e6883b3b3a2a10588f1cfe6231dd8bdaaf0219d 100644 (file)
@@ -59,6 +59,7 @@ RESTRICT+=" test"
 PATCHES=(
        "${FILESDIR}"/${P}-bashism.patch
        "${FILESDIR}"/${P}-python-kf-5.31.patch
+       "${FILESDIR}"/${P}-julia-kf-5.31.patch
 )
 
 pkg_pretend() {
diff --git a/kde-apps/cantor/cantor-9999.ebuild b/kde-apps/cantor/cantor-9999.ebuild
new file mode 100644 (file)
index 0000000..fb71acb
--- /dev/null
@@ -0,0 +1,107 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+KDE_HANDBOOK="forceoptional"
+KDE_TEST="forceoptional"
+PYTHON_COMPAT=( python2_7 )
+# FIXME: PYTHON_COMPAT=( python{2_7,3_4,3_5} )
+inherit kde5 python-r1
+
+DESCRIPTION="Interface for doing mathematics and scientific computing"
+HOMEPAGE="https://www.kde.org/applications/education/cantor https://edu.kde.org/cantor"
+KEYWORDS=""
+IUSE="analitza julia lua postscript python qalculate +R"
+
+REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} )"
+
+# TODO Add Sage Mathematics Software backend (http://www.sagemath.org)
+# FIXME: $(python_gen_cond_dep 'dev-qt/qtdbus:5' 'python3*')
+DEPEND="
+       $(add_frameworks_dep karchive)
+       $(add_frameworks_dep kcompletion)
+       $(add_frameworks_dep kconfig)
+       $(add_frameworks_dep kconfigwidgets)
+       $(add_frameworks_dep kcoreaddons)
+       $(add_frameworks_dep kcrash)
+       $(add_frameworks_dep ki18n)
+       $(add_frameworks_dep kiconthemes)
+       $(add_frameworks_dep kio)
+       $(add_frameworks_dep knewstuff)
+       $(add_frameworks_dep kparts)
+       $(add_frameworks_dep kpty)
+       $(add_frameworks_dep ktexteditor)
+       $(add_frameworks_dep kwidgetsaddons)
+       $(add_frameworks_dep kxmlgui)
+       $(add_qt_dep qtgui)
+       $(add_qt_dep qtprintsupport)
+       $(add_qt_dep qtsvg)
+       $(add_qt_dep qtwidgets)
+       $(add_qt_dep qtxml)
+       $(add_qt_dep qtxmlpatterns)
+       analitza? ( $(add_kdeapps_dep analitza) )
+       julia? ( dev-lang/julia )
+       lua? ( dev-lang/luajit:2 )
+       qalculate? (
+               sci-libs/cln
+               sci-libs/libqalculate:=
+       )
+       postscript? ( app-text/libspectre )
+       python? ( ${PYTHON_DEPS} )
+       R? ( dev-lang/R )
+"
+RDEPEND="${RDEPEND}"
+
+RESTRICT+=" test"
+
+PATCHES=( "${FILESDIR}"/${PN}-16.12.2-bashism.patch )
+
+pkg_pretend() {
+       kde5_pkg_pretend
+
+       if ! has_version sci-mathematics/maxima && ! has_version sci-mathematics/octave && \
+               ! use analitza && ! use julia && ! use lua && ! use python && ! use qalculate && ! use R; then
+               einfo "You have decided to build ${PN} with no backend."
+               einfo "To have this application functional, please enable one of the backends via USE flag:"
+               einfo "    analitza, julia, lua, python, qalculate, R"
+               einfo "Alternatively, install one of these:"
+               einfo "    # emerge sci-mathematics/maxima"
+               einfo "    # emerge sci-mathematics/octave"
+               einfo
+       fi
+
+       if ! has_version virtual/latex-base; then
+               einfo "For LaTeX support:"
+               einfo "    # emerge virtual/latex-base"
+       fi
+}
+
+pkg_setup() {
+       use python && python_setup
+       kde5_pkg_setup
+}
+
+src_prepare() {
+       kde5_src_prepare
+
+       # FIXME: shipped FindPythonLibs3.cmake does not work for Gentoo
+       sed -e "/^find_package(PythonLibs3)/ s/^/#/" \
+               -i src/backends/CMakeLists.txt || die
+}
+
+src_configure() {
+       use julia && addpredict /proc/self/mem # bug 602894
+
+       local mycmakeargs=(
+               $(cmake-utils_use_find_package analitza Analitza5)
+               $(cmake-utils_use_find_package julia Julia)
+               $(cmake-utils_use_find_package lua LuaJIT)
+               $(cmake-utils_use_find_package postscript LibSpectre)
+               $(cmake-utils_use_find_package python PythonLibs)
+               $(cmake-utils_use_find_package qalculate Qalculate)
+               $(cmake-utils_use_find_package R R)
+       )
+       kde5_src_configure
+}
diff --git a/kde-apps/cantor/files/cantor-16.12.2-julia-kf-5.31.patch b/kde-apps/cantor/files/cantor-16.12.2-julia-kf-5.31.patch
new file mode 100644 (file)
index 0000000..425c61e
--- /dev/null
@@ -0,0 +1,190 @@
+From 45322d9f58f50df3d4d5755d4199e579f6fd8646 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
+Date: Sat, 11 Feb 2017 22:46:35 +0100
+Subject: [PATCH] [julia] Fix build with -fno-operator-names
+
+REVIEW: 129942
+---
+ src/backends/julia/juliaexpression.cpp         |  6 +++---
+ src/backends/julia/juliaextensions.cpp         |  4 ++--
+ src/backends/julia/juliahighlighter.cpp        |  4 ++--
+ src/backends/julia/juliakeywords.cpp           | 10 +++++-----
+ src/backends/julia/juliaserver/juliaserver.cpp |  4 ++--
+ src/backends/julia/juliaserver/main.cpp        |  4 ++--
+ src/backends/julia/juliasession.cpp            |  4 ++--
+ 7 files changed, 18 insertions(+), 18 deletions(-)
+
+diff --git a/src/backends/julia/juliaexpression.cpp b/src/backends/julia/juliaexpression.cpp
+index 27cdd85..618200d 100644
+--- a/src/backends/julia/juliaexpression.cpp
++++ b/src/backends/julia/juliaexpression.cpp
+@@ -40,7 +40,7 @@ void JuliaExpression::evaluate()
+     // Plots integration
+     m_plot_filename.clear();
+-    if (juliaSession->integratePlots() and checkPlotShowingCommands()) {
++    if (juliaSession->integratePlots() && checkPlotShowingCommands()) {
+         // Simply add plot saving command to the end of execution
+         QStringList inlinePlotFormats;
+         inlinePlotFormats << QLatin1String("svg");
+@@ -73,8 +73,8 @@ void JuliaExpression::finalize()
+         setResult(new Cantor::TextResult(juliaSession->getOutput()));
+         setStatus(Cantor::Expression::Error);
+     } else {
+-        if (not m_plot_filename.isEmpty()
+-                and QFileInfo(m_plot_filename).exists()) {
++        if (!m_plot_filename.isEmpty()
++                && QFileInfo(m_plot_filename).exists()) {
+             // If we have plot in result, show it
+             setResult(
+                 new Cantor::ImageResult(QUrl::fromLocalFile(m_plot_filename)));
+diff --git a/src/backends/julia/juliaextensions.cpp b/src/backends/julia/juliaextensions.cpp
+index 4585c6f..ad5e3a9 100644
+--- a/src/backends/julia/juliaextensions.cpp
++++ b/src/backends/julia/juliaextensions.cpp
+@@ -138,7 +138,7 @@ QString JuliaPlotExtension::plotFunction2d(
+ {
+     auto new_left = left;
+     auto new_right = right;
+-    if (new_left.isEmpty() and new_right.isEmpty()) {
++    if (new_left.isEmpty() && new_right.isEmpty()) {
+         new_left = QLatin1String("-1");
+         new_right = QLatin1String("1");
+     } else if (new_left.isEmpty()) {
+@@ -165,7 +165,7 @@ QString JuliaPlotExtension::plotFunction3d(
+ {
+     auto update_interval = [](Interval &interval) {
+-        if (interval.first.isEmpty() and interval.second.isEmpty()) {
++        if (interval.first.isEmpty() && interval.second.isEmpty()) {
+             interval.first = QLatin1String("-1");
+             interval.second = QLatin1String("1");
+         } else if (interval.first.isEmpty()) {
+diff --git a/src/backends/julia/juliahighlighter.cpp b/src/backends/julia/juliahighlighter.cpp
+index 4795361..f7d3622 100644
+--- a/src/backends/julia/juliahighlighter.cpp
++++ b/src/backends/julia/juliahighlighter.cpp
+@@ -98,7 +98,7 @@ void JuliaHighlighter::highlightBlock(const QString &text)
+     while (pos < text.length()) {
+         // Trying to close current environments
+         bool triggered = false;
+-        for (int i = 0; i < flags.size() and not triggered; i++) {
++        for (int i = 0; i < flags.size() && !triggered; i++) {
+             int flag = flags[i];
+             QRegExp &regexp = regexps_ends[i];
+             QTextCharFormat &format = formats[i];
+@@ -144,7 +144,7 @@ void JuliaHighlighter::highlightBlock(const QString &text)
+             singleLineCommentStart.indexIn(text, pos);
+         if (singleLineCommentStartPos != -1
+-                and singleLineCommentStartPos < minPos) {
++                && singleLineCommentStartPos < minPos) {
+             // single line comment starts earlier
+             setFormat(pos, text.length() - pos, commentFormat());
+             break;
+diff --git a/src/backends/julia/juliakeywords.cpp b/src/backends/julia/juliakeywords.cpp
+index f0a5846..8a0efec 100644
+--- a/src/backends/julia/juliakeywords.cpp
++++ b/src/backends/julia/juliakeywords.cpp
+@@ -62,11 +62,11 @@ void JuliaKeywords::loadFromFile()
+         const QStringRef name = xml.name();
+         if (name == QLatin1String("keywords")
+-                or name == QLatin1String("variables")
+-                or name == QLatin1String("plot_showing_commands")) {
++                || name == QLatin1String("variables")
++                || name == QLatin1String("plot_showing_commands")) {
+             while (xml.readNextStartElement()) {
+                 Q_ASSERT(
+-                    xml.isStartElement() and xml.name() == QLatin1String("word")
++                    xml.isStartElement() && xml.name() == QLatin1String("word")
+                 );
+                 const QString text = xml.readElementText();
+@@ -91,7 +91,7 @@ void JuliaKeywords::loadFromFile()
+ void JuliaKeywords::addVariable(const QString &variable)
+ {
+-    if (not m_variables.contains(variable)) {
++    if (!m_variables.contains(variable)) {
+         m_variables << variable;
+     }
+ }
+@@ -104,7 +104,7 @@ void JuliaKeywords::clearVariables()
+ void JuliaKeywords::addFunction(const QString &function)
+ {
+-    if (not m_functions.contains(function)) {
++    if (!m_functions.contains(function)) {
+         m_functions << function;
+     }
+ }
+diff --git a/src/backends/julia/juliaserver/juliaserver.cpp b/src/backends/julia/juliaserver/juliaserver.cpp
+index c9beb4c..91585cf 100644
+--- a/src/backends/julia/juliaserver/juliaserver.cpp
++++ b/src/backends/julia/juliaserver/juliaserver.cpp
+@@ -47,7 +47,7 @@ void JuliaServer::runJuliaCommand(const QString &command)
+ {
+     // Redirect stdout, stderr to temprorary files
+     QTemporaryFile output, error;
+-    if (not output.open() or not error.open()) {
++    if (!output.open() || !error.open()) {
+         qFatal("Unable to create temprorary files for stdout/stderr");
+         return;
+     }
+@@ -90,7 +90,7 @@ void JuliaServer::runJuliaCommand(const QString &command)
+         bool is_nothing = jl_unbox_bool(
+             static_cast<jl_value_t *>(jl_call2(equality, nothing, val))
+         );
+-        if (not is_nothing) {
++        if (!is_nothing) {
+             jl_static_show(JL_STDOUT, val);
+         }
+         m_was_exception = false;
+diff --git a/src/backends/julia/juliaserver/main.cpp b/src/backends/julia/juliaserver/main.cpp
+index ad7e4d9..11687ec 100644
+--- a/src/backends/julia/juliaserver/main.cpp
++++ b/src/backends/julia/juliaserver/main.cpp
+@@ -30,7 +30,7 @@ int main(int argc, char *argv[])
+ {
+     QCoreApplication app(argc, argv);
+-    if (not QDBusConnection::sessionBus().isConnected()) {
++    if (!QDBusConnection::sessionBus().isConnected()) {
+         qWarning() << "Can't connect to the D-Bus session bus.\n"
+                       "To start it, run: eval `dbus-launch --auto-syntax`";
+         return 1;
+@@ -39,7 +39,7 @@ int main(int argc, char *argv[])
+     const QString &serviceName =
+         QString::fromLatin1("org.kde.Cantor.Julia-%1").arg(app.applicationPid());
+-    if (not QDBusConnection::sessionBus().registerService(serviceName)) {
++    if (!QDBusConnection::sessionBus().registerService(serviceName)) {
+         qWarning() << QDBusConnection::sessionBus().lastError().message();
+         return 2;
+     }
+diff --git a/src/backends/julia/juliasession.cpp b/src/backends/julia/juliasession.cpp
+index 425e6cb..9183e11 100644
+--- a/src/backends/julia/juliasession.cpp
++++ b/src/backends/julia/juliasession.cpp
+@@ -86,7 +86,7 @@ void JuliaSession::login()
+         QDBusConnection::sessionBus()
+     );
+-    if (not m_interface->isValid()) {
++    if (!m_interface->isValid()) {
+         qWarning() << QDBusConnection::sessionBus().lastError().message();
+         return;
+     }
+@@ -213,7 +213,7 @@ bool JuliaSession::getWasException()
+ {
+     const QDBusReply<bool> &reply =
+         m_interface->call(QLatin1String("getWasException"));
+-    return reply.isValid() and reply.value();
++    return reply.isValid() && reply.value();
+ }
+ void JuliaSession::listVariables()
+-- 
+2.10.2
+