summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--kde-frameworks/kio/files/kio-5.52.0-sendfile.patch109
-rw-r--r--kde-frameworks/kio/kio-5.52.0-r1.ebuild82
2 files changed, 191 insertions, 0 deletions
diff --git a/kde-frameworks/kio/files/kio-5.52.0-sendfile.patch b/kde-frameworks/kio/files/kio-5.52.0-sendfile.patch
new file mode 100644
index 00000000000..d02b8f50b19
--- /dev/null
+++ b/kde-frameworks/kio/files/kio-5.52.0-sendfile.patch
@@ -0,0 +1,109 @@
+From 31980ecd1cacac9bd75ce35e3048946e1c27e1a0 Mon Sep 17 00:00:00 2001
+From: David Edmundson <kde@davidedmundson.co.uk>
+Date: Wed, 21 Nov 2018 15:30:48 +0000
+Subject: Restore sendfile support
+
+Summary:
+Somehow in the kdelibs -> framework port the cmake checks for
+HAVE_SENDFILE got lost.
+
+That re-enables a massive optimisation in the file kioslave that has all the code existing and used in kdelibs4 that we're currently missing.
+
+Test Plan:
+Put a compilation fail inside the #ifdef, before it wasn't triggered, now it is.
+
+Ran unit tests
+Moved a file in dolphin
+
+Reviewers: dfaure
+
+Reviewed By: dfaure
+
+Subscribers: ngraham, apol, kde-frameworks-devel
+
+Tags: #frameworks
+
+Differential Revision: https://phabricator.kde.org/D17048
+---
+ src/ioslaves/file/ConfigureChecks.cmake | 1 +
+ src/ioslaves/file/config-kioslave-file.h.cmake | 2 ++
+ src/ioslaves/file/file_unix.cpp | 2 +-
+ 3 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/ioslaves/file/ConfigureChecks.cmake b/src/ioslaves/file/ConfigureChecks.cmake
+index 5a83d1b..39fcd6f 100644
+--- a/src/ioslaves/file/ConfigureChecks.cmake
++++ b/src/ioslaves/file/ConfigureChecks.cmake
+@@ -7,6 +7,7 @@ include(CheckStructHasMember)
+ check_include_files(sys/time.h HAVE_SYS_TIME_H)
+ check_include_files(string.h HAVE_STRING_H)
+ check_include_files(limits.h HAVE_LIMITS_H)
++check_function_exists(sendfile HAVE_SENDFILE)
+
+ check_function_exists(posix_fadvise HAVE_FADVISE) # kioslave
+
+diff --git a/src/ioslaves/file/config-kioslave-file.h.cmake b/src/ioslaves/file/config-kioslave-file.h.cmake
+index e47fdb2..3df7ebd 100644
+--- a/src/ioslaves/file/config-kioslave-file.h.cmake
++++ b/src/ioslaves/file/config-kioslave-file.h.cmake
+@@ -13,3 +13,5 @@
+ /* Defined if system has extended file attributes support. */
+ #cmakedefine01 HAVE_SYS_XATTR_H
+
++/* Defined if system has the sendfile function. */
++#cmakedefine01 HAVE_SENDFILE
+diff --git a/src/ioslaves/file/file_unix.cpp b/src/ioslaves/file/file_unix.cpp
+index 817cce8..34422e5 100644
+--- a/src/ioslaves/file/file_unix.cpp
++++ b/src/ioslaves/file/file_unix.cpp
+@@ -49,7 +49,7 @@
+ #include "fdreceiver.h"
+
+ //sendfile has different semantics in different platforms
+-#if defined HAVE_SENDFILE && defined Q_OS_LINUX
++#if HAVE_SENDFILE && defined Q_OS_LINUX
+ #define USE_SENDFILE 1
+ #endif
+
+--
+cgit v0.11.2
+From 8f926e4596221b11e62c7ac80bb5864d3d8cf4f6 Mon Sep 17 00:00:00 2001
+From: David Edmundson <kde@davidedmundson.co.uk>
+Date: Wed, 21 Nov 2018 15:30:53 +0000
+Subject: Use correct variable type for returned value from read/sendfile
+
+Summary:
+n stores the read/transferred bytes. This returns a ssize_t.
+We were casting to an int, which theoretically is a loss of data.
+
+In practice it isn't an issue as we only read a max of MAX_IPC_SIZE at a
+time, which would fit in an int.
+
+Reviewers: apol
+
+Reviewed By: apol
+
+Subscribers: kde-frameworks-devel
+
+Tags: #frameworks
+
+Differential Revision: https://phabricator.kde.org/D17051
+---
+ src/ioslaves/file/file_unix.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/ioslaves/file/file_unix.cpp b/src/ioslaves/file/file_unix.cpp
+index 34422e5..7ed0ae8 100644
+--- a/src/ioslaves/file/file_unix.cpp
++++ b/src/ioslaves/file/file_unix.cpp
+@@ -251,7 +251,7 @@ void FileProtocol::copy(const QUrl &srcUrl, const QUrl &destUrl,
+
+ KIO::filesize_t processed_size = 0;
+ char buffer[ MAX_IPC_SIZE ];
+- int n;
++ ssize_t n = 0;
+ #ifdef USE_SENDFILE
+ bool use_sendfile = buff_src.st_size < 0x7FFFFFFF;
+ #endif
+--
+cgit v0.11.2
diff --git a/kde-frameworks/kio/kio-5.52.0-r1.ebuild b/kde-frameworks/kio/kio-5.52.0-r1.ebuild
new file mode 100644
index 00000000000..7a9357c5fed
--- /dev/null
+++ b/kde-frameworks/kio/kio-5.52.0-r1.ebuild
@@ -0,0 +1,82 @@
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_TEST="forceoptional"
+VIRTUALX_REQUIRED="test"
+inherit kde5
+
+DESCRIPTION="Framework providing transparent file and data management"
+LICENSE="LGPL-2+"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="acl +handbook kerberos +kwallet X"
+
+RDEPEND="
+ $(add_frameworks_dep kauth)
+ $(add_frameworks_dep karchive)
+ $(add_frameworks_dep kbookmarks)
+ $(add_frameworks_dep kcodecs)
+ $(add_frameworks_dep kcompletion)
+ $(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 kitemviews)
+ $(add_frameworks_dep kjobwidgets)
+ $(add_frameworks_dep knotifications)
+ $(add_frameworks_dep kservice)
+ $(add_frameworks_dep ktextwidgets)
+ $(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 'ssl')
+ $(add_qt_dep qtscript)
+ $(add_qt_dep qtwidgets)
+ $(add_qt_dep qtxml)
+ dev-libs/libxml2
+ dev-libs/libxslt
+ acl? (
+ sys-apps/attr
+ virtual/acl
+ )
+ handbook? ( $(add_frameworks_dep kdoctools) )
+ kerberos? ( virtual/krb5 )
+ kwallet? ( $(add_frameworks_dep kwallet) )
+ X? ( $(add_qt_dep qtx11extras) )
+"
+DEPEND="${RDEPEND}
+ $(add_qt_dep qtconcurrent)
+ test? ( sys-libs/zlib )
+ X? (
+ x11-base/xorg-proto
+ x11-libs/libX11
+ x11-libs/libXrender
+ )
+"
+PDEPEND="
+ $(add_frameworks_dep kded)
+"
+
+# tests hang
+RESTRICT+=" test"
+
+PATCHES=( "${FILESDIR}/${P}-sendfile.patch" )
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_find_package acl ACL)
+ $(cmake-utils_use_find_package handbook KF5DocTools)
+ $(cmake-utils_use_find_package kerberos GSSAPI)
+ $(cmake-utils_use_find_package kwallet KF5Wallet)
+ $(cmake-utils_use_find_package X X11)
+ )
+
+ kde5_src_configure
+}