commit:     ec28b59c42e6c7a7de5c17c4ac2cfe9763192524
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Nov  5 16:22:55 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Nov  5 16:24:00 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ec28b59c

kde-frameworks/kio: KMountPoint: Revert to pre-libblkid parsing

Upstream commit 221a94a66c4d2f6e4f2dc938ee8a63a6ca739477

KDE-bug: https://bugs.kde.org/show_bug.cgi?id=442106
Thanks-to: Norman Back <gentoo2 <AT> thebacks.co.uk>
Bug: https://bugs.gentoo.org/821103
Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 ...kio-5.85.0-revert-to-pre-libblkid-parsing.patch | 128 +++++++++++++++++++++
 kde-frameworks/kio/kio-5.85.0-r2.ebuild            | 100 ++++++++++++++++
 kde-frameworks/kio/kio-5.87.0-r1.ebuild            |  98 ++++++++++++++++
 3 files changed, 326 insertions(+)

diff --git 
a/kde-frameworks/kio/files/kio-5.85.0-revert-to-pre-libblkid-parsing.patch 
b/kde-frameworks/kio/files/kio-5.85.0-revert-to-pre-libblkid-parsing.patch
new file mode 100644
index 00000000000..1f4c7cf0615
--- /dev/null
+++ b/kde-frameworks/kio/files/kio-5.85.0-revert-to-pre-libblkid-parsing.patch
@@ -0,0 +1,128 @@
+From 221a94a66c4d2f6e4f2dc938ee8a63a6ca739477 Mon Sep 17 00:00:00 2001
+From: Ahmad Samir <[email protected]>
+Date: Wed, 20 Oct 2021 20:01:40 +0200
+Subject: [PATCH] KMountPoint: revert to parsing /dev/disk/by-{uuid,label}/
+ manually
+
+Apparently libblkid is causing some performance issues when resolving
+UUID/LABEL tags from fstab when the device that has that UUID/LABEL isn't
+present.
+
+Parsing /dev/disk/by-* is more basic, since it's a simple check resolving
+some symlinks.
+
+Thanks to the users in the bug report for the investigative work, because
+personally I couldn't reproduce the problem on my machine no matter what I
+tried.
+
+BUG: 442106
+FIXED-IN: 5.88
+---
+ CMakeLists.txt                      |  3 +--
+ src/core/CMakeLists.txt             |  5 ++---
+ src/core/config-kmountpoint.h.cmake |  2 +-
+ src/core/kmountpoint.cpp            | 18 ++++--------------
+ 4 files changed, 8 insertions(+), 20 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index ca374a4cb..f1bb1a59b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -130,8 +130,7 @@ set_package_properties(ACL PROPERTIES DESCRIPTION "LibACL"
+ # Used by KMountPoint
+ if (CMAKE_SYSTEM_NAME MATCHES "Linux")
+     find_package(LibMount REQUIRED)
+-    find_package(Blkid REQUIRED)
+-    set(HAVE_LIBS_MOUNT_AND_BLKID ${LibMount_FOUND} AND ${Blkid_FOUND})
++    set(HAVE_LIB_MOUNT ${LibMount_FOUND})
+ endif()
+ 
+ if (ANDROID)
+diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
+index be19e9b62..67a1b1cf7 100644
+--- a/src/core/CMakeLists.txt
++++ b/src/core/CMakeLists.txt
+@@ -236,9 +236,8 @@ if(ACL_FOUND)
+   target_link_libraries(KF5KIOCore PRIVATE ${ACL_LIBS})
+ endif()
+ 
+-if(HAVE_LIBS_MOUNT_AND_BLKID)
+-  # libmount links against blkid anyway
+-  target_link_libraries(KF5KIOCore PRIVATE LibMount::LibMount Blkid::Blkid)
++if(HAVE_LIB_MOUNT)
++  target_link_libraries(KF5KIOCore PRIVATE LibMount::LibMount)
+ endif()
+ 
+ # this should be done by cmake, see bug 371721
+diff --git a/src/core/config-kmountpoint.h.cmake 
b/src/core/config-kmountpoint.h.cmake
+index f824d4042..3673eb141 100644
+--- a/src/core/config-kmountpoint.h.cmake
++++ b/src/core/config-kmountpoint.h.cmake
+@@ -1,7 +1,7 @@
+ #cmakedefine01 HAVE_GETMNTINFO
+ #cmakedefine01 GETMNTINFO_USES_STATVFS
+ 
+-#cmakedefine01 HAVE_LIBS_MOUNT_AND_BLKID
++#cmakedefine01 HAVE_LIB_MOUNT
+ 
+ #cmakedefine01 HAVE_SYS_MOUNT_H
+ #cmakedefine01 HAVE_FSTAB_H
+diff --git a/src/core/kmountpoint.cpp b/src/core/kmountpoint.cpp
+index e2d32055c..f41cff5ee 100644
+--- a/src/core/kmountpoint.cpp
++++ b/src/core/kmountpoint.cpp
+@@ -44,7 +44,7 @@ static const Qt::CaseSensitivity cs = Qt::CaseSensitive;
+ #endif
+ 
+ // Linux
+-#if HAVE_LIBS_MOUNT_AND_BLKID
++#if HAVE_LIB_MOUNT
+ #include <libmount/libmount.h>
+ #include <blkid/blkid.h>
+ #endif
+@@ -176,7 +176,7 @@ KMountPoint::List 
KMountPoint::possibleMountPoints(DetailsNeededFlags infoNeeded
+ #ifdef Q_OS_WIN
+     result = KMountPoint::currentMountPoints(infoNeeded);
+ 
+-#elif HAVE_LIBS_MOUNT_AND_BLKID
++#elif HAVE_LIB_MOUNT
+     if (struct libmnt_table *table = mnt_new_table()) {
+         // By default parses "/etc/fstab"
+         if (mnt_table_parse_fstab(table, nullptr) == 0) {
+@@ -202,23 +202,13 @@ KMountPoint::List 
KMountPoint::possibleMountPoints(DetailsNeededFlags infoNeeded
+                 // or some network mount
+                 if (const char *source = mnt_fs_get_source(fs)) {
+                     mp->d->m_mountedFrom = QFile::decodeName(source);
+-                    if 
(mp->d->m_mountedFrom.startsWith(QLatin1String("UUID")) || 
mp->d->m_mountedFrom.startsWith(QLatin1String("LABEL"))) {
+-                        // Use blkid to resolve UUID/LABEL to the device file
+-                        if (char *blkSource = blkid_evaluate_spec(source, 
nullptr)) {
+-                            mp->d->m_mountedFrom = 
QFile::decodeName(blkSource);
+-                            free(blkSource);
+-                            if ((infoNeeded & 
KMountPoint::NeedRealDeviceName) //
+-                                && 
mp->d->m_mountedFrom.startsWith(QLatin1String("/dev/"))) {
+-                                mp->d->m_device = mp->d->m_mountedFrom;
+-                            }
+-                        }
+-                    }
+                 }
+ 
+                 if (infoNeeded & NeedMountOptions) {
+                     mp->d->m_mountOptions = 
QFile::decodeName(mnt_fs_get_options(fs)).split(QLatin1Char(','));
+                 }
+ 
++                mp->d->finalizePossibleMountPoint(infoNeeded);
+                 result.append(mp);
+             }
+             mnt_free_iter(itr);
+@@ -351,7 +341,7 @@ KMountPoint::List 
KMountPoint::currentMountPoints(DetailsNeededFlags infoNeeded)
+         }
+     }
+ 
+-#elif HAVE_LIBS_MOUNT_AND_BLKID
++#elif HAVE_LIB_MOUNT
+     if (struct libmnt_table *table = mnt_new_table()) {
+         // By default, parses "/proc/self/mountinfo"
+         if (mnt_table_parse_mtab(table, nullptr) == 0) {
+-- 
+GitLab
+

diff --git a/kde-frameworks/kio/kio-5.85.0-r2.ebuild 
b/kde-frameworks/kio/kio-5.85.0-r2.ebuild
new file mode 100644
index 00000000000..ad40012c385
--- /dev/null
+++ b/kde-frameworks/kio/kio-5.85.0-r2.ebuild
@@ -0,0 +1,100 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_DESIGNERPLUGIN="true"
+ECM_TEST="forceoptional"
+PVCUT=$(ver_cut 1-2)
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org xdg-utils
+
+DESCRIPTION="Framework providing transparent file and data management"
+
+LICENSE="LGPL-2+"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="acl +handbook kerberos +kwallet X"
+
+# tests hang
+RESTRICT="test"
+
+RDEPEND="
+       dev-libs/libxml2
+       dev-libs/libxslt
+       >=dev-qt/qtdbus-${QTMIN}:5
+       >=dev-qt/qtdeclarative-${QTMIN}:5
+       >=dev-qt/qtgui-${QTMIN}:5
+       >=dev-qt/qtnetwork-${QTMIN}:5[ssl]
+       >=dev-qt/qtwidgets-${QTMIN}:5
+       >=dev-qt/qtxml-${QTMIN}:5
+       =kde-frameworks/kauth-${PVCUT}*:5
+       =kde-frameworks/karchive-${PVCUT}*:5
+       =kde-frameworks/kbookmarks-${PVCUT}*:5
+       =kde-frameworks/kcodecs-${PVCUT}*:5
+       =kde-frameworks/kcompletion-${PVCUT}*:5
+       =kde-frameworks/kconfig-${PVCUT}*:5
+       =kde-frameworks/kconfigwidgets-${PVCUT}*:5
+       =kde-frameworks/kcoreaddons-${PVCUT}*:5
+       =kde-frameworks/kcrash-${PVCUT}*:5
+       =kde-frameworks/kdbusaddons-${PVCUT}*:5
+       =kde-frameworks/kguiaddons-${PVCUT}*:5
+       =kde-frameworks/ki18n-${PVCUT}*:5
+       =kde-frameworks/kiconthemes-${PVCUT}*:5
+       =kde-frameworks/kitemviews-${PVCUT}*:5
+       =kde-frameworks/kjobwidgets-${PVCUT}*:5
+       =kde-frameworks/knotifications-${PVCUT}*:5
+       =kde-frameworks/kservice-${PVCUT}*:5
+       =kde-frameworks/ktextwidgets-${PVCUT}*:5
+       =kde-frameworks/kwidgetsaddons-${PVCUT}*:5
+       =kde-frameworks/kwindowsystem-${PVCUT}*:5
+       =kde-frameworks/kxmlgui-${PVCUT}*:5
+       =kde-frameworks/solid-${PVCUT}*:5
+       acl? (
+               sys-apps/attr
+               virtual/acl
+       )
+       handbook? ( =kde-frameworks/kdoctools-${PVCUT}*:5 )
+       kerberos? ( virtual/krb5 )
+       kwallet? ( =kde-frameworks/kwallet-${PVCUT}*:5 )
+       X? ( >=dev-qt/qtx11extras-${QTMIN}:5 )
+"
+DEPEND="${RDEPEND}
+       >=dev-qt/qtconcurrent-${QTMIN}:5
+       test? ( sys-libs/zlib )
+       X? (
+               x11-base/xorg-proto
+               x11-libs/libX11
+               x11-libs/libXrender
+       )
+"
+PDEPEND=">=kde-frameworks/kded-${PVCUT}:5"
+
+PATCHES=(
+       
"${FILESDIR}"/${P}-KDirOperator-exp-to-url-only-in-detail-treeview.patch # 
KDE-bug 440475
+       "${FILESDIR}"/${P}-allow-edit-icons-for-root-owned-desktop-files.patch 
# KDE-bug 429613
+       "${FILESDIR}"/${P}-revert-to-pre-libblkid-parsing.patch # bug 821103, 
KDE-bug 442106
+)
+
+src_configure() {
+       local mycmakeargs=(
+               -DKIO_NO_PUBLIC_QTCONCURRENT=ON
+               $(cmake_use_find_package acl ACL)
+               $(cmake_use_find_package handbook KF5DocTools)
+               $(cmake_use_find_package kerberos GSSAPI)
+               $(cmake_use_find_package kwallet KF5Wallet)
+               $(cmake_use_find_package X X11)
+       )
+
+       ecm_src_configure
+}
+
+pkg_postinst() {
+       ecm_pkg_postinst
+       xdg_desktop_database_update
+}
+
+pkg_postrm() {
+       ecm_pkg_postrm
+       xdg_desktop_database_update
+}

diff --git a/kde-frameworks/kio/kio-5.87.0-r1.ebuild 
b/kde-frameworks/kio/kio-5.87.0-r1.ebuild
new file mode 100644
index 00000000000..d33ade8d220
--- /dev/null
+++ b/kde-frameworks/kio/kio-5.87.0-r1.ebuild
@@ -0,0 +1,98 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_DESIGNERPLUGIN="true"
+ECM_TEST="forceoptional"
+PVCUT=$(ver_cut 1-2)
+QTMIN=5.15.2
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org xdg-utils
+
+DESCRIPTION="Framework providing transparent file and data management"
+
+LICENSE="LGPL-2+"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
+IUSE="acl +handbook kerberos +kwallet X"
+
+# tests hang
+RESTRICT="test"
+
+RDEPEND="
+       dev-libs/libxml2
+       dev-libs/libxslt
+       >=dev-qt/qtdbus-${QTMIN}:5
+       >=dev-qt/qtdeclarative-${QTMIN}:5
+       >=dev-qt/qtgui-${QTMIN}:5
+       >=dev-qt/qtnetwork-${QTMIN}:5[ssl]
+       >=dev-qt/qtwidgets-${QTMIN}:5
+       >=dev-qt/qtxml-${QTMIN}:5
+       =kde-frameworks/kauth-${PVCUT}*:5
+       =kde-frameworks/karchive-${PVCUT}*:5
+       =kde-frameworks/kbookmarks-${PVCUT}*:5
+       =kde-frameworks/kcodecs-${PVCUT}*:5
+       =kde-frameworks/kcompletion-${PVCUT}*:5
+       =kde-frameworks/kconfig-${PVCUT}*:5
+       =kde-frameworks/kconfigwidgets-${PVCUT}*:5
+       =kde-frameworks/kcoreaddons-${PVCUT}*:5
+       =kde-frameworks/kcrash-${PVCUT}*:5
+       =kde-frameworks/kdbusaddons-${PVCUT}*:5
+       =kde-frameworks/kguiaddons-${PVCUT}*:5
+       =kde-frameworks/ki18n-${PVCUT}*:5
+       =kde-frameworks/kiconthemes-${PVCUT}*:5
+       =kde-frameworks/kitemviews-${PVCUT}*:5
+       =kde-frameworks/kjobwidgets-${PVCUT}*:5
+       =kde-frameworks/knotifications-${PVCUT}*:5
+       =kde-frameworks/kservice-${PVCUT}*:5
+       =kde-frameworks/ktextwidgets-${PVCUT}*:5
+       =kde-frameworks/kwidgetsaddons-${PVCUT}*:5
+       =kde-frameworks/kwindowsystem-${PVCUT}*:5
+       =kde-frameworks/kxmlgui-${PVCUT}*:5
+       =kde-frameworks/solid-${PVCUT}*:5
+       acl? (
+               sys-apps/attr
+               virtual/acl
+       )
+       handbook? ( =kde-frameworks/kdoctools-${PVCUT}*:5 )
+       kerberos? ( virtual/krb5 )
+       kwallet? ( =kde-frameworks/kwallet-${PVCUT}*:5 )
+       X? ( >=dev-qt/qtx11extras-${QTMIN}:5 )
+"
+DEPEND="${RDEPEND}
+       >=dev-qt/qtconcurrent-${QTMIN}:5
+       test? ( sys-libs/zlib )
+       X? (
+               x11-base/xorg-proto
+               x11-libs/libX11
+               x11-libs/libXrender
+       )
+"
+PDEPEND=">=kde-frameworks/kded-${PVCUT}:5"
+
+PATCHES=(
+       "${FILESDIR}"/${PN}-5.85.0-revert-to-pre-libblkid-parsing.patch # bug 
821103, KDE-bug 442106
+)
+
+src_configure() {
+       local mycmakeargs=(
+               -DKIO_NO_PUBLIC_QTCONCURRENT=ON
+               $(cmake_use_find_package acl ACL)
+               $(cmake_use_find_package handbook KF5DocTools)
+               $(cmake_use_find_package kerberos GSSAPI)
+               $(cmake_use_find_package kwallet KF5Wallet)
+               $(cmake_use_find_package X X11)
+       )
+
+       ecm_src_configure
+}
+
+pkg_postinst() {
+       ecm_pkg_postinst
+       xdg_desktop_database_update
+}
+
+pkg_postrm() {
+       ecm_pkg_postrm
+       xdg_desktop_database_update
+}

Reply via email to