forked from gentoo/gentoo
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
kde-frameworks/kio: Restore sendfile support
Backport from 5.53.0, fixes KF5-porting regression. Package-Manager: Portage-2.3.52, Repoman-2.3.12 Signed-off-by: Andreas Sturmlechner <[email protected]>
- Loading branch information
Showing
2 changed files
with
191 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
From 31980ecd1cacac9bd75ce35e3048946e1c27e1a0 Mon Sep 17 00:00:00 2001 | ||
From: David Edmundson <[email protected]> | ||
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 <[email protected]> | ||
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
} |