summaryrefslogtreecommitdiff
path: root/net-p2p/ktorrent
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2018-09-15 17:37:09 +0100
committerV3n3RiX <venerix@redcorelinux.org>2018-09-15 17:37:09 +0100
commit586819755b4dbfdffdc8a725ab7c0f86095b8489 (patch)
treed6790c838cfe9607c996e4913fdf11bad5fdd528 /net-p2p/ktorrent
parent3f71901f8c228f4de570abed1831ce3ee425343e (diff)
gentoo resync : 15.09.2018
Diffstat (limited to 'net-p2p/ktorrent')
-rw-r--r--net-p2p/ktorrent/Manifest3
-rw-r--r--net-p2p/ktorrent/files/ktorrent-5.1.1-scanfolder-memcorruption.patch69
-rw-r--r--net-p2p/ktorrent/ktorrent-5.1.1.ebuild105
3 files changed, 177 insertions, 0 deletions
diff --git a/net-p2p/ktorrent/Manifest b/net-p2p/ktorrent/Manifest
index 8a66bb6d4caf..5fcb91934e06 100644
--- a/net-p2p/ktorrent/Manifest
+++ b/net-p2p/ktorrent/Manifest
@@ -1,5 +1,8 @@
AUX ktorrent-5.1.0-cmake-3.11.patch 412 BLAKE2B 4ee01320022113b981ff1a314f8ed73895e0606615a5b91967bc04e72a328554f2345952f8bfd5bb09ff08991657b662f7db6d5a778316fd5ea5f4da1c8aeb1f SHA512 d3c3020407aabf8166ff08a1cce16a20693f273de5a1da5a2c6c21f5359a32799247153ca5d9e22fba45790ffd56b86e53465e2d3d9b0ce986fd896d5eedd63e
AUX ktorrent-5.1.0-qt-5.11.patch 2249 BLAKE2B f6d27bc5ed7ccb55622412799df823e674b0e11d48a7fe91444e3f652a44fdffa17248e34446a54b197c1b177b333e85beeb73d0c0edcb62add96f7c65b3b98b SHA512 7482a3228794f36e368cf9ddadc9cb57f62cec0b87903a19a67572bc362fd8d63728400ac43626c5acc947b017c9e64886dc7c1ec949fed14a4fca401845b404
+AUX ktorrent-5.1.1-scanfolder-memcorruption.patch 2244 BLAKE2B 53efe0320124f954adff60144981d740e5cdf45ed4712fa43f112bb6133fb24b4303e6f969d9a73598525dea4f6706c22e57d2e5c7378c69e494dd924360a307 SHA512 8d3868a6f75e2f53fa11762378a676736df09e14e6fbde04f0dcfb45eb56e8b739d17b3ea96af4be21edb22edad610982865b33508847f07ac2eba744f62ae5e
DIST ktorrent-5.1.0.tar.xz 2046916 BLAKE2B 865004b84d649774420e2bd0087c416c5de4df40dfe5800ec539049001d93f66925025780987060ad09e1ba2a20045bd6d92c9202c98c28ec68d87758a88af74 SHA512 7bfe3a04a2b0f62d68b41c946af34e9f6ead6aa4ff7818a9c0ce2e83629d311e9e9be5fb1689065ce2601c43bd576b27d8c6946b845d4cdf5fa6362d53e8dd25
+DIST ktorrent-5.1.1.tar.xz 2049392 BLAKE2B 09ad841e1b6d7f332b19e2a660130b1f2b998cd6839614800cde7c99c8ec7f119f2adbdc3d9e06c8525e2dde534d73dab521c7df1d01b2fd0eb6b11fbb868d8f SHA512 bbe744853018380e30efc6ef95916a9b6f0ebec812d70d7970e5e7183d860d147b0693dd0107b146a5987aa27f30cd335fad73c8967839d53eee1c5b63a53c06
EBUILD ktorrent-5.1.0.ebuild 3066 BLAKE2B afa0b164599cdb37394ae6460f140c4d731a88c0953503779c459cd6848fa2481bb0f5b430cd9ea0e5eb47e4fcd00b697255b86880fe1208fc528fbb0807112a SHA512 625f7977ab1bb4623b791fa193ff6d0826d3bbc6352586e1cd53b7a52d1c2a4f01402770a2964ba6b386e49a5590ffaf113ba20d9eae86fba87000f491491e92
+EBUILD ktorrent-5.1.1.ebuild 3088 BLAKE2B a85b69fbd6e0a7ec761a9633546df529a27b4a8fe13c4f1ebf178186a70675e0dc6a81b667f2a03966f4f52d89418310d7a41574f04676165bdd650a19c89162 SHA512 0c5f44c2553e7ee3f5006c81f65e7391f05d32231aef6853f053912a0717d93b3aaa95da9bd8f3d627a555f0fb4b43c2de38b203c78e1f512f1c73d8e4d83654
MISC metadata.xml 1341 BLAKE2B 91b9b58b6df009f42960708b09f926b3bdf6849ebffd8d46114c28c7f2df2c0972a8b5460333ac6758f138729a7c689f6a61d4a58494bc44af2e364d1dbc3e05 SHA512 dfff24b08dba8615c983c1360fe10efcb60744651d5484a8bd1a7a731697b9dd4a10126b8d66276f96a8524352b1e4ba99b28b773d292362b3f7506a45da5a80
diff --git a/net-p2p/ktorrent/files/ktorrent-5.1.1-scanfolder-memcorruption.patch b/net-p2p/ktorrent/files/ktorrent-5.1.1-scanfolder-memcorruption.patch
new file mode 100644
index 000000000000..4c41a6af11db
--- /dev/null
+++ b/net-p2p/ktorrent/files/ktorrent-5.1.1-scanfolder-memcorruption.patch
@@ -0,0 +1,69 @@
+From 2d73d5f25a1a364a2115fb1d3262377f7fdf99cd Mon Sep 17 00:00:00 2001
+From: Valeriy Malov <jazzvoid@gmail.com>
+Date: Wed, 5 Sep 2018 20:43:51 +0300
+Subject: Fix memory corruption in ScanFolder plugin
+
+Summary:
+Reasoning behind this patch is kinda dubious because I don't fully understand what happens, but it shouldn't make the matters worse either
+
+Seems like deletion of KDirWatch objects from scan_folder in ~ScanThread(), after said QThread has been stopped, causes memory corruption.
+
+Preemptively deleting scan_folder contents before we stop the thread resolves this.
+
+also mark booleans shared across main thread and KDirWatch callbacks as atomic
+
+Test Plan:
+Without this patch unloading ScanFolder plugin sometimes crashes ktorrent, including unloading on exit
+Doesn't happen anymore with this patch
+
+Reviewers: stikonas
+
+Reviewed By: stikonas
+
+Differential Revision: https://phabricator.kde.org/D15265
+---
+ plugins/scanfolder/scanthread.cpp | 5 +++++
+ plugins/scanfolder/scanthread.h | 5 +++--
+ 2 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/scanfolder/scanthread.cpp b/plugins/scanfolder/scanthread.cpp
+index 0e62768..d7b13e0 100644
+--- a/plugins/scanfolder/scanthread.cpp
++++ b/plugins/scanfolder/scanthread.cpp
+@@ -156,6 +156,11 @@ namespace kt
+ void ScanThread::stop()
+ {
+ stop_requested = true;
++
++ // XXX seems like deleting KDirWatch object(s) created in scan_folders
++ // in destructor of this QThread after it has been stopped
++ // causes memory corruption, so we delete them early
++ scan_folders.clear();
+ exit();
+ wait();
+ }
+diff --git a/plugins/scanfolder/scanthread.h b/plugins/scanfolder/scanthread.h
+index d13ca08..fb214a4 100644
+--- a/plugins/scanfolder/scanthread.h
++++ b/plugins/scanfolder/scanthread.h
+@@ -29,6 +29,7 @@
+ #include <util/ptrmap.h>
+ #include "scanfolder.h"
+
++#include <atomic>
+
+ class QDir;
+
+@@ -88,8 +89,8 @@ namespace kt
+ private:
+ QMutex mutex;
+ QStringList folders;
+- bool stop_requested;
+- bool recursive;
++ std::atomic<bool> stop_requested;
++ std::atomic<bool> recursive;
+ bt::PtrMap<QString, ScanFolder> scan_folders;
+ };
+
+--
+cgit v0.11.2
diff --git a/net-p2p/ktorrent/ktorrent-5.1.1.ebuild b/net-p2p/ktorrent/ktorrent-5.1.1.ebuild
new file mode 100644
index 000000000000..dc9e90bf939a
--- /dev/null
+++ b/net-p2p/ktorrent/ktorrent-5.1.1.ebuild
@@ -0,0 +1,105 @@
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+FRAMEWORKS_MINIMAL="5.50.0" # for syndication
+KDE_HANDBOOK="optional"
+KDE_TEST="optional"
+VIRTUALX_REQUIRED="test"
+inherit kde5
+
+DESCRIPTION="Powerful BitTorrent client based on KDE Frameworks"
+HOMEPAGE="https://www.kde.org/applications/internet/ktorrent/"
+[[ ${KDE_BUILD_TYPE} = release ]] && SRC_URI="mirror://kde/stable/${PN}/${PV/%.0}/${P}.tar.xz"
+
+LICENSE="GPL-2"
+KEYWORDS="~amd64 ~x86"
+IUSE="+bwscheduler +downloadorder +infowidget +ipfilter +kross +logviewer +magnetgenerator
++mediaplayer rss +scanfolder +search +shutdown +stats +upnp +zeroconf"
+
+COMMON_DEPEND="
+ $(add_frameworks_dep kcmutils)
+ $(add_frameworks_dep kconfig)
+ $(add_frameworks_dep kconfigwidgets)
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep kcrash)
+ $(add_frameworks_dep kdbusaddons)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kiconthemes)
+ $(add_frameworks_dep kio)
+ $(add_frameworks_dep knotifications)
+ $(add_frameworks_dep knotifyconfig)
+ $(add_frameworks_dep kparts)
+ $(add_frameworks_dep kwidgetsaddons)
+ $(add_frameworks_dep kwindowsystem)
+ $(add_frameworks_dep kxmlgui)
+ $(add_frameworks_dep solid)
+ $(add_qt_dep qtdbus)
+ $(add_qt_dep qtgui)
+ $(add_qt_dep qtnetwork)
+ $(add_qt_dep qtwidgets)
+ $(add_qt_dep qtxml)
+ =net-libs/libktorrent-2.1*:5
+ infowidget? ( dev-libs/geoip )
+ kross? (
+ $(add_frameworks_dep karchive)
+ $(add_frameworks_dep kitemviews)
+ $(add_frameworks_dep kross)
+ )
+ mediaplayer? (
+ media-libs/phonon[qt5(+)]
+ >=media-libs/taglib-1.5
+ )
+ rss? (
+ $(add_frameworks_dep kdewebkit)
+ $(add_frameworks_dep syndication)
+ )
+ search? (
+ $(add_frameworks_dep kdewebkit)
+ $(add_qt_dep qtwebkit)
+ )
+ shutdown? ( $(add_plasma_dep plasma-workspace) )
+ stats? ( $(add_frameworks_dep kplotting) )
+ upnp? ( $(add_frameworks_dep kcompletion) )
+ zeroconf? ( $(add_frameworks_dep kdnssd) )
+"
+DEPEND="${COMMON_DEPEND}
+ dev-libs/boost
+ sys-devel/gettext
+"
+RDEPEND="${COMMON_DEPEND}
+ ipfilter? (
+ app-arch/bzip2
+ app-arch/unzip
+ $(add_frameworks_dep ktextwidgets)
+ $(add_kdeapps_dep kio-extras)
+ )
+ !net-p2p/ktorrent:4
+"
+
+PATCHES=( "${FILESDIR}/${P}-scanfolder-memcorruption.patch" )
+
+src_configure() {
+ local mycmakeargs=(
+ -DENABLE_BWSCHEDULER_PLUGIN=$(usex bwscheduler)
+ -DENABLE_DOWNLOADORDER_PLUGIN=$(usex downloadorder)
+ -DENABLE_INFOWIDGET_PLUGIN=$(usex infowidget)
+ -DWITH_SYSTEM_GEOIP=$(usex infowidget)
+ -DENABLE_IPFILTER_PLUGIN=$(usex ipfilter)
+ -DENABLE_SCRIPTING_PLUGIN=$(usex kross)
+ -DENABLE_LOGVIEWER_PLUGIN=$(usex logviewer)
+ -DENABLE_MAGNETGENERATOR_PLUGIN=$(usex magnetgenerator)
+ -DENABLE_MEDIAPLAYER_PLUGIN=$(usex mediaplayer)
+ $(cmake-utils_use_find_package rss KF5Syndication)
+ -DENABLE_SCANFOLDER_PLUGIN=$(usex scanfolder)
+ -DENABLE_SEARCH_PLUGIN=$(usex search)
+ -DENABLE_SHUTDOWN_PLUGIN=$(usex shutdown)
+ -DENABLE_STATS_PLUGIN=$(usex stats)
+ -DENABLE_UPNP_PLUGIN=$(usex upnp)
+ -DENABLE_ZEROCONF_PLUGIN=$(usex zeroconf)
+ )
+# add back when ported
+# -DENABLE_WEBINTERFACE_PLUGIN=$(usex webinterface)
+ kde5_src_configure
+}