commit:     c322214967d93dd6ad80fa992366f5a1177fa7f0
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Oct  3 11:18:46 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Oct  3 11:45:50 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c3222149

kde-apps/konqueror: Fix compatibility with KDE Frameworks 5.86

Closes: https://bugs.gentoo.org/815022
Package-Manager: Portage-3.0.26, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 .../files/konqueror-21.04.3-kf-5.86-compat.patch   | 250 +++++++++++++++++++++
 kde-apps/konqueror/konqueror-21.04.3-r2.ebuild     |  91 ++++++++
 kde-apps/konqueror/konqueror-21.08.1-r2.ebuild     |  92 ++++++++
 3 files changed, 433 insertions(+)

diff --git a/kde-apps/konqueror/files/konqueror-21.04.3-kf-5.86-compat.patch 
b/kde-apps/konqueror/files/konqueror-21.04.3-kf-5.86-compat.patch
new file mode 100644
index 00000000000..0814c335a73
--- /dev/null
+++ b/kde-apps/konqueror/files/konqueror-21.04.3-kf-5.86-compat.patch
@@ -0,0 +1,250 @@
+From 6a46c0c8701fbde143a33e4be61f198e98f53c10 Mon Sep 17 00:00:00 2001
+From: David Faure <[email protected]>
+Date: Sun, 19 Sep 2021 12:03:46 +0200
+Subject: [PATCH 1/5] Don't open HTTP URLs in another browser than Konqueror,
+ from Konqueror
+
+From 8506c585594d9d0cfc0ebe8b869ca05ff7610fa7 Mon Sep 17 00:00:00 2001
+From: Stefano Crocco <[email protected]>
+Date: Sun, 19 Sep 2021 20:56:38 +0200
+Subject: [PATCH 2/5] Make Konqueror compatible with KIO 5.86.0
+
+Due to a change in KIO::DesktopExecParser::hasSchemeHandler (commit
+5fa55a2395cbfb6504e56bf71c869c8e49902e13Q) URLs entered in the
+navigation bar either were always opened in a new tab or they were
+opened in another program altogether (for example, man and info URLs).
+
+To fix this issue, it has been necessary to copy the implementation of
+KRun::init and KParts::BrowserRun::init in KonqRun::init, making the
+necessary changes to restore the old behaviour.
+
+(cherry picked from commit ba1ea2b74f77832d2a26bb74fed18970eeadf301)
+
+From ec995b8091e97750c12e8e543d298a7a56045d41 Mon Sep 17 00:00:00 2001
+From: Stefano Crocco <[email protected]>
+Date: Sun, 19 Sep 2021 22:01:30 +0200
+Subject: [PATCH 3/5] Fix signature and avoid calling url() repeatedly
+
+(cherry picked from commit 0326d9b8553a7c33d0c1498ca4c0199cc2344e15)
+
+From d368615b28a97993ce53691731f5152f044f98a2 Mon Sep 17 00:00:00 2001
+From: Stefano Crocco <[email protected]>
+Date: Sun, 19 Sep 2021 22:47:03 +0200
+Subject: [PATCH 4/5] Add a comment explaining the interaction with
+ WebEnginePart
+
+(cherry picked from commit 5c4b0456af2a534c65c60b16add4012566309fb9)
+
+From 036fdfe1666294e5388803eb8877971362347428 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <[email protected]>
+Date: Thu, 30 Sep 2021 13:58:28 +0200
+Subject: [PATCH 5/5] Replace handleInitError with KParts::BrowserRun::init
+
+Avoids breaking string freeze.
+
+Thanks-to: Stefano Crocco <[email protected]>
+Signed-off-by: Andreas Sturmlechner <[email protected]>
+
+BUG: 442636
+---
+
+diff --git a/src/konqrun.cpp b/src/konqrun.cpp
+index 8bfc22285..4415c67c4 100644
+--- a/src/konqrun.cpp
++++ b/src/konqrun.cpp
+@@ -27,8 +27,17 @@
+ #include <kio/job.h>
+ #include <QMimeDatabase>
+ #include <QMimeType>
++#include <QHostInfo>
++#include <QFileInfo>
++
+ #include <KIO/ApplicationLauncherJob>
+ #include <KIO/JobUiDelegate>
++#include <KUrlAuthorized>
++#include <KIO/DesktopExecParser>
++#include <KProtocolInfo>
++#include <KProtocolManager>
++#include <KApplicationTrader>
++#include <KJobWidgets>
+ 
+ #include <KService>
+ #include <KMimeTypeTrader>
+@@ -48,8 +57,9 @@ KonqRun::KonqRun(KonqMainWindow *mainWindow, KonqView 
*_childView,
+                          // Don't use inline errors on reloading due to 
auto-refresh sites, but use them in all other cases
+                          // (no reload or user-requested reload)
+                          !req.args.reload() || req.userRequestedReload),
+-      m_pMainWindow(mainWindow), m_pView(_childView), 
m_bFoundMimeType(false), m_req(req)
++      m_pMainWindow(mainWindow), m_pView(_childView), 
m_bFoundMimeType(false), m_req(req), m_inlineErrors(!req.args.reload() || 
req.userRequestedReload)
+ {
++    setEnableExternalBrowser(false);
+     //qCDebug(KONQUEROR_LOG) << "KonqRun::KonqRun() " << this;
+     Q_ASSERT(!m_pMainWindow.isNull());
+     if (m_pView) {
+@@ -188,15 +198,124 @@ void KonqRun::handleError(KJob *job)
+     KParts::BrowserRun::handleError(job);
+ }
+ 
++//Code copied from browserrun.cpp
++void KonqRun::switchToErrorUrl(KIO::Error error, const QString &stringUrl)
++{
++    KRun::setUrl(makeErrorUrl(error, stringUrl, url()));
++    setJob(nullptr);
++    mimeTypeDetermined(QStringLiteral("text/html"));
++}
++
++//Most of the code in this function has been copied from krun.cpp and 
browserrun.cpp
+ void KonqRun::init()
+ {
+-    KParts::BrowserRun::init();
+-    // Maybe init went to the "let's try stat'ing" part. Then connect to info 
messages.
+-    // (in case it goes to scanFile, this will be done below)
+-    KIO::StatJob *job = dynamic_cast<KIO::StatJob *>(KRun::job());
++    QUrl url = KRun::url();
++    if (!url.isValid() || url.scheme().isEmpty()) {
++        if (m_inlineErrors && !url.isValid()) {
++            switchToErrorUrl(KIO::ERR_MALFORMED_URL, url.toString());
++            return;
++        }
++        const QString error = !url.isValid() ? url.errorString() : 
url.toString();
++        KParts::BrowserRun::init();
++        qCWarning(KONQUEROR_LOG) << "Malformed URL:" << error;
++        setError(true);
++        setFinished(true);
++        return;
++    }
++
++    if (!KUrlAuthorized::authorizeUrlAction(QStringLiteral("open"), QUrl(), 
url)) {
++        QString msg = KIO::buildErrorString(KIO::ERR_ACCESS_DENIED, 
url.toDisplayString());
++        KParts::BrowserRun::init();
++        setError(true);
++        setFinished(true);
++        return;
++    }
++
++    if (url.scheme().startsWith(QLatin1String("http")) && usingWebEngine()) {
++        //This is a fake mimetype, needed only to ensure that the URL will be 
handled
++        //by WebEnginePart which will then determine the real mimetype. If 
it's
++        //a mimetype it can't handle, it'll emit the 
KParts::BrowserExtension::openUrlRequest
++        //passing the real mimetype. Knowing the mimetype, 
KonqMainWindow::openUrl will handle
++        //it correctly without needing to use KonqRun again.
++        mimeTypeDetermined(QStringLiteral("text/html"));
++    } else if (url.isLocalFile()
++               && (url.host().isEmpty() || (url.host() == 
QLatin1String("localhost"))
++                   || (url.host().compare(QHostInfo::localHostName(), 
Qt::CaseInsensitive) == 0))) {
++        const QString localPath = url.toLocalFile();
++        if (!QFile::exists(localPath)) {
++            if (m_inlineErrors) {
++                switchToErrorUrl(KIO::ERR_DOES_NOT_EXIST, localPath);
++            } else {
++                KParts::BrowserRun::init();
++                setError(true);
++                setFinished(true);
++            }
++            return;
++        }
++
++        QMimeDatabase db;
++        QMimeType mime = db.mimeTypeForUrl(url);
++        if (mime.isDefault() && !QFileInfo(localPath).isReadable()) {
++            // Unknown MIME type because the file is unreadable, no point in 
showing an open-with dialog (#261002)
++            const QString msg = KIO::buildErrorString(KIO::ERR_ACCESS_DENIED, 
localPath);
++            KParts::BrowserRun::init();
++            setError(true);
++            setFinished(true);
++            return;
++        } else {
++            mimeTypeDetermined(mime.name());
++            return;
++        }
++    } else if (KIO::DesktopExecParser::hasSchemeHandler(url) && 
!KProtocolInfo::isKnownProtocol(url)) {
++        // looks for an application associated with 
x-scheme-handler/<protocol>
++        KService::Ptr service = 
KApplicationTrader::preferredService(QLatin1String("x-scheme-handler/") + 
url.scheme());
++        if (service) {
++            //  if there's one...
++            if (runApplication(*service, QList<QUrl>() << url, window(), 
RunFlags{}, QString(), QByteArray())) {
++                setFinished(true);
++                return;
++            }
++        } else {
++            // fallback, look for associated helper protocol
++            Q_ASSERT(KProtocolInfo::isHelperProtocol(url.scheme()));
++            const auto exec = KProtocolInfo::exec(url.scheme());
++            if (exec.isEmpty()) {
++                // use default MIME type opener for file
++                mimeTypeDetermined(KProtocolManager::defaultMimetype(url));
++                return;
++            } else {
++                if (run(exec, QList<QUrl>() << url, window(), QString(), 
QString(), QByteArray())) {
++                    setFinished(true);
++                    return;
++                }
++            }
++        }
++    }
++
++    // Let's see whether it is a directory
++
++    if (!KProtocolManager::supportsListing(url)) {
++        // No support for listing => it can't be a directory (example: http)
++
++        if (!KProtocolManager::supportsReading(url)) {
++            // No support for reading files either => we can't do anything 
(example: mailto URL, with no associated app)
++            KParts::BrowserRun::init();
++            setError(true);
++            setFinished(true);
++            return;
++        }
++        scanFile();
++        return;
++    }
++
++    // It may be a directory or a file, let's stat
++    KIO::JobFlags flags = progressInfo() ? KIO::DefaultFlags : 
KIO::HideProgressInfo;
++    KIO::StatJob *job = KIO::statDetails(url, KIO::StatJob::SourceSide, 
KIO::StatBasic, flags);
++    KJobWidgets::setWindow(job, window());
++    connect(job, &KJob::result, this, &KonqRun::slotStatResult);
++    setJob(job);
+     if (job && !job->error() && m_pView) {
+-        connect(job, SIGNAL(infoMessage(KJob*,QString,QString)),
+-                m_pView, SLOT(slotInfoMessage(KJob*,QString)));
++        connect(job, &KIO::StatJob::infoMessage, m_pView, 
&KonqView::slotInfoMessage);
+     }
+ }
+ 
+diff --git a/src/konqrun.h b/src/konqrun.h
+index 591b91d19..88782ea03 100644
+--- a/src/konqrun.h
++++ b/src/konqrun.h
+@@ -26,6 +26,8 @@
+ #include "konqopenurlrequest.h"
+ #include <QUrl>
+ 
++#include <KIO/Global>
++
+ class KonqMainWindow;
+ class KonqView;
+ 
+@@ -69,6 +71,14 @@ protected:
+     void init() override;
+     void scanFile() override;
+ 
++    /**
++     * Displays an error page appropriate to the given error code
++     *
++     * @param error the error code
++     * @param stringUrl the string representation of the URL which caused the 
error
++     */
++    void switchToErrorUrl(KIO::Error error, const QString &stringUrl);
++
+ protected Q_SLOTS:
+     void slotRedirection(KIO::Job *, const QUrl &);
+ 
+@@ -81,6 +91,7 @@ private:
+     bool m_bFoundMimeType;
+     KonqOpenURLRequest m_req;
+     QUrl m_mailto;
++    bool m_inlineErrors;
+ };
+ 
+ #endif // KONQRUN_H

diff --git a/kde-apps/konqueror/konqueror-21.04.3-r2.ebuild 
b/kde-apps/konqueror/konqueror-21.04.3-r2.ebuild
new file mode 100644
index 00000000000..abaf095e12c
--- /dev/null
+++ b/kde-apps/konqueror/konqueror-21.04.3-r2.ebuild
@@ -0,0 +1,91 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="optional"
+ECM_TEST="true"
+KFMIN=5.80.0
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit flag-o-matic ecm kde.org optfeature
+
+DESCRIPTION="Web browser and file manager based on KDE Frameworks"
+HOMEPAGE="https://apps.kde.org/konqueror/";
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="activities speech X"
+
+# 4 of 4 tests fail. Last checked for 4.0.3
+RESTRICT="test"
+
+COMMON_DEPEND="
+       >=dev-qt/qtdbus-${QTMIN}:5
+       >=dev-qt/qtgui-${QTMIN}:5
+       >=dev-qt/qtscript-${QTMIN}:5
+       >=dev-qt/qtwebengine-${QTMIN}:5[widgets]
+       >=dev-qt/qtwidgets-${QTMIN}:5
+       >=dev-qt/qtxml-${QTMIN}:5
+       >=kde-frameworks/karchive-${KFMIN}:5
+       >=kde-frameworks/kbookmarks-${KFMIN}:5
+       >=kde-frameworks/kcmutils-${KFMIN}:5
+       >=kde-frameworks/kcodecs-${KFMIN}:5
+       >=kde-frameworks/kcompletion-${KFMIN}:5
+       >=kde-frameworks/kconfig-${KFMIN}:5
+       >=kde-frameworks/kconfigwidgets-${KFMIN}:5
+       >=kde-frameworks/kcoreaddons-${KFMIN}:5
+       >=kde-frameworks/kcrash-${KFMIN}:5
+       >=kde-frameworks/kdbusaddons-${KFMIN}:5
+       >=kde-frameworks/kdesu-${KFMIN}:5
+       >=kde-frameworks/kguiaddons-${KFMIN}:5
+       >=kde-frameworks/ki18n-${KFMIN}:5
+       >=kde-frameworks/kiconthemes-${KFMIN}:5
+       >=kde-frameworks/kio-${KFMIN}:5
+       >=kde-frameworks/kitemviews-${KFMIN}:5
+       >=kde-frameworks/kjobwidgets-${KFMIN}:5
+       >=kde-frameworks/kparts-${KFMIN}:5
+       >=kde-frameworks/kservice-${KFMIN}:5
+       >=kde-frameworks/kwallet-${KFMIN}:5
+       >=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+       >=kde-frameworks/kwindowsystem-${KFMIN}:5
+       >=kde-frameworks/kxmlgui-${KFMIN}:5
+       sys-libs/zlib
+       speech? ( >=dev-qt/qtspeech-${QTMIN}:5 )
+       X? ( >=dev-qt/qtx11extras-${QTMIN}:5 )
+"
+DEPEND="${COMMON_DEPEND}
+       activities? ( >=kde-frameworks/kactivities-${KFMIN}:5 )
+"
+RDEPEND="${COMMON_DEPEND}
+       kde-apps/kfind:5
+       kde-plasma/kde-cli-tools:5
+"
+
+PATCHES=( "${FILESDIR}/${P}-kf-5.86-compat.patch" ) # bug 815022
+
+src_prepare() {
+       [[ ${CHOST} == *-solaris* ]] && append-ldflags -lmalloc
+
+       ecm_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               $(cmake_use_find_package activities KF5Activities)
+               $(cmake_use_find_package speech Qt5TextToSpeech)
+               $(cmake_use_find_package X X11)
+       )
+       ecm_src_configure
+}
+
+pkg_postinst() {
+       if [[ -z "${REPLACING_VERSIONS}" ]]; then
+               optfeature "bookmarks support" kde-apps/keditbookmarks:${SLOT}
+               optfeature "filemanager component" kde-apps/dolphin:${SLOT}
+               optfeature "SVG support" kde-apps/svg:${SLOT}
+               optfeature "Java support on webpages" virtual/jre
+       fi
+       ecm_pkg_postinst
+}

diff --git a/kde-apps/konqueror/konqueror-21.08.1-r2.ebuild 
b/kde-apps/konqueror/konqueror-21.08.1-r2.ebuild
new file mode 100644
index 00000000000..5387dda9cf6
--- /dev/null
+++ b/kde-apps/konqueror/konqueror-21.08.1-r2.ebuild
@@ -0,0 +1,92 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_HANDBOOK="optional"
+ECM_TEST="true"
+KFMIN=5.84.0
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit flag-o-matic ecm kde.org optfeature
+
+DESCRIPTION="Web browser and file manager based on KDE Frameworks"
+HOMEPAGE="https://apps.kde.org/konqueror/";
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="activities speech X"
+
+# 4 of 4 tests fail. Last checked for 4.0.3
+RESTRICT="test"
+
+COMMON_DEPEND="
+       >=dev-qt/qtdbus-${QTMIN}:5
+       >=dev-qt/qtgui-${QTMIN}:5
+       >=dev-qt/qtscript-${QTMIN}:5
+       >=dev-qt/qtwebengine-${QTMIN}:5[widgets]
+       >=dev-qt/qtwidgets-${QTMIN}:5
+       >=dev-qt/qtxml-${QTMIN}:5
+       >=kde-frameworks/karchive-${KFMIN}:5
+       >=kde-frameworks/kbookmarks-${KFMIN}:5
+       >=kde-frameworks/kcmutils-${KFMIN}:5
+       >=kde-frameworks/kcodecs-${KFMIN}:5
+       >=kde-frameworks/kcompletion-${KFMIN}:5
+       >=kde-frameworks/kconfig-${KFMIN}:5
+       >=kde-frameworks/kconfigwidgets-${KFMIN}:5
+       >=kde-frameworks/kcoreaddons-${KFMIN}:5
+       >=kde-frameworks/kcrash-${KFMIN}:5
+       >=kde-frameworks/kdbusaddons-${KFMIN}:5
+       >=kde-frameworks/kdesu-${KFMIN}:5
+       >=kde-frameworks/kguiaddons-${KFMIN}:5
+       >=kde-frameworks/ki18n-${KFMIN}:5
+       >=kde-frameworks/kiconthemes-${KFMIN}:5
+       >=kde-frameworks/kio-${KFMIN}:5
+       >=kde-frameworks/kitemviews-${KFMIN}:5
+       >=kde-frameworks/kjobwidgets-${KFMIN}:5
+       >=kde-frameworks/kparts-${KFMIN}:5
+       >=kde-frameworks/kservice-${KFMIN}:5
+       >=kde-frameworks/kwallet-${KFMIN}:5
+       >=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+       >=kde-frameworks/kwindowsystem-${KFMIN}:5
+       >=kde-frameworks/kxmlgui-${KFMIN}:5
+       sys-libs/zlib
+       speech? ( >=dev-qt/qtspeech-${QTMIN}:5 )
+       X? ( >=dev-qt/qtx11extras-${QTMIN}:5 )
+"
+DEPEND="${COMMON_DEPEND}
+       activities? ( >=kde-frameworks/kactivities-${KFMIN}:5 )
+"
+RDEPEND="${COMMON_DEPEND}
+       kde-apps/kfind:5
+       kde-plasma/kde-cli-tools:5
+"
+
+PATCHES=( "${FILESDIR}/${PN}-21.04.3-kf-5.86-compat.patch" ) # bug 815022
+
+src_prepare() {
+       [[ ${CHOST} == *-solaris* ]] && append-ldflags -lmalloc
+
+       ecm_src_prepare
+}
+
+src_configure() {
+       local mycmakeargs=(
+               -DCMAKE_DISABLE_FIND_PACKAGE_Hunspell=ON # requires fixing bug 
634122
+               $(cmake_use_find_package activities KF5Activities)
+               $(cmake_use_find_package speech Qt5TextToSpeech)
+               $(cmake_use_find_package X X11)
+       )
+       ecm_src_configure
+}
+
+pkg_postinst() {
+       if [[ -z "${REPLACING_VERSIONS}" ]]; then
+               optfeature "bookmarks support" kde-apps/keditbookmarks:${SLOT}
+               optfeature "filemanager component" kde-apps/dolphin:${SLOT}
+               optfeature "SVG support" kde-apps/svg:${SLOT}
+               optfeature "Java support on webpages" virtual/jre
+       fi
+       ecm_pkg_postinst
+}

Reply via email to