public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/discover/files/, kde-plasma/discover/
@ 2021-05-01 21:24 Andreas Sturmlechner
  0 siblings, 0 replies; 4+ messages in thread
From: Andreas Sturmlechner @ 2021-05-01 21:24 UTC (permalink / raw
  To: gentoo-commits

commit:     05378df80892dea6bd44dfe58e64fb9ce840e3d3
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sat May  1 18:44:15 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sat May  1 21:21:55 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=05378df8

kde-plasma/discover: Fix build with dev-libs/glib-2.68

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

 kde-plasma/discover/discover-5.21.4.ebuild         |   5 +-
 .../discover/files/discover-5.21.4-glib-2.68.patch | 240 +++++++++++++++++++++
 2 files changed, 244 insertions(+), 1 deletion(-)

diff --git a/kde-plasma/discover/discover-5.21.4.ebuild b/kde-plasma/discover/discover-5.21.4.ebuild
index 2c50bd9597f..e32fb61e4cd 100644
--- a/kde-plasma/discover/discover-5.21.4.ebuild
+++ b/kde-plasma/discover/discover-5.21.4.ebuild
@@ -56,7 +56,10 @@ RDEPEND="${DEPEND}
 	>=kde-frameworks/kirigami-${KFMIN}:5
 "
 
-PATCHES=( "${FILESDIR}/${P}-missing-link.patch" ) # bug 785457
+PATCHES=(
+	"${FILESDIR}/${P}-missing-link.patch" # bug 785457
+	"${FILESDIR}/${P}-glib-2.68.patch" # bug 787155
+)
 
 src_prepare() {
 	ecm_src_prepare

diff --git a/kde-plasma/discover/files/discover-5.21.4-glib-2.68.patch b/kde-plasma/discover/files/discover-5.21.4-glib-2.68.patch
new file mode 100644
index 00000000000..903b4b8ff30
--- /dev/null
+++ b/kde-plasma/discover/files/discover-5.21.4-glib-2.68.patch
@@ -0,0 +1,240 @@
+From 12f83062b01d5ba946e6f98503b72d4e58721aa4 Mon Sep 17 00:00:00 2001
+From: Aleix Pol Gonzalez <aleixpol@kde.org>
+Date: Tue, 6 Apr 2021 23:54:52 +0000
+Subject: [PATCH] Only wrap flatpak.h includes in extern "C" with older
+ versions
+
+Seems to be the only way to be compatible backwards and forwards.
+---
+ CMakeLists.txt                                 |  1 -
+ .../backends/FlatpakBackend/CMakeLists.txt     |  6 ++++++
+ .../backends/FlatpakBackend/FlatpakBackend.h   |  4 +---
+ .../FlatpakBackend/FlatpakFetchDataJob.h       |  4 +---
+ .../FlatpakBackend/FlatpakJobTransaction.cpp   |  3 ---
+ .../FlatpakBackend/FlatpakJobTransaction.h     |  4 +---
+ .../backends/FlatpakBackend/FlatpakNotifier.h  |  4 +---
+ .../backends/FlatpakBackend/FlatpakResource.h  |  4 +---
+ .../FlatpakBackend/FlatpakSourcesBackend.h     |  4 +---
+ .../FlatpakBackend/FlatpakTransactionThread.h  |  4 +---
+ .../backends/FlatpakBackend/flatpak-helper.h   | 18 ++++++++++++++++++
+ .../backends/FwupdBackend/CMakeLists.txt       |  3 +++
+ .../backends/FwupdBackend/FwupdBackend.h       |  5 +++++
+ 13 files changed, 39 insertions(+), 25 deletions(-)
+ create mode 100644 libdiscover/backends/FlatpakBackend/flatpak-helper.h
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 889ded6c..a531d4de 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -37,7 +37,6 @@ pkg_check_modules(Fwupd IMPORTED_TARGET fwupd>=1.5.0)
+ pkg_check_modules(Markdown IMPORTED_TARGET libmarkdown)
+ find_package(KUserFeedback)
+ 
+-
+ if(NOT CMAKE_VERSION VERSION_LESS "3.10.0")
+   # CMake 3.9+ warns about automoc on files without Q_OBJECT, and doesn't know about other macros.
+   # 3.10+ lets us provide more macro names that require automoc.
+diff --git a/libdiscover/backends/FlatpakBackend/CMakeLists.txt b/libdiscover/backends/FlatpakBackend/CMakeLists.txt
+index 49ac1085..65ba622a 100644
+--- a/libdiscover/backends/FlatpakBackend/CMakeLists.txt
++++ b/libdiscover/backends/FlatpakBackend/CMakeLists.txt
+@@ -23,8 +23,14 @@ add_library(FlatpakNotifier MODULE FlatpakNotifier.cpp)
+ target_link_libraries(FlatpakNotifier Discover::Notifiers Qt5::Concurrent PkgConfig::Flatpak)
+ set_target_properties(FlatpakNotifier PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/plasma-discover)
+ 
++if (Flatpak_VERSION VERSION_LESS 1.10.2)
++    target_compile_definitions(flatpak-backend PRIVATE -DFLATPAK_EXTERNC_REQUIRED)
++    target_compile_definitions(FlatpakNotifier PRIVATE -DFLATPAK_EXTERNC_REQUIRED)
++endif()
++
+ install(TARGETS FlatpakNotifier DESTINATION ${PLUGIN_INSTALL_DIR}/discover-notifier)
+ install(PROGRAMS org.kde.discover-flatpak.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
++
+ install(FILES org.kde.discover.flatpak.appdata.xml DESTINATION ${KDE_INSTALL_METAINFODIR} )
+ 
+ ecm_install_icons(
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakBackend.h b/libdiscover/backends/FlatpakBackend/FlatpakBackend.h
+index 3b71344f..f0234cc7 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakBackend.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakBackend.h
+@@ -18,9 +18,7 @@
+ 
+ #include <AppStreamQt/component.h>
+ 
+-extern "C" {
+-#include <flatpak.h>
+-}
++#include "flatpak-helper.h"
+ 
+ class FlatpakSourcesBackend;
+ class StandardBackendUpdater;
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h b/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h
+index b9aaf80e..d63fd1bc 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakFetchDataJob.h
+@@ -8,10 +8,8 @@
+ #define FLATPAKFETCHDATAJOB_H
+ 
+ #include <QByteArray>
+-extern "C" {
+-#include <flatpak.h>
++#include "flatpak-helper.h"
+ #include <glib.h>
+-}
+ 
+ class FlatpakResource;
+ 
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp
+index 9499c566..37adb046 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp
++++ b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp
+@@ -13,9 +13,6 @@
+ #include <QDebug>
+ #include <QTimer>
+ 
+-extern "C" {
+-}
+-
+ FlatpakJobTransaction::FlatpakJobTransaction(FlatpakResource *app, Role role, bool delayStart)
+     : Transaction(app->backend(), app, role, {})
+     , m_app(app)
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h
+index ea2aafaa..0e4423ef 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.h
+@@ -10,12 +10,10 @@
+ 
+ #include <Transaction/Transaction.h>
+ #include <QPointer>
++#include "flatpak-helper.h"
+ 
+-extern "C" {
+-#include <flatpak.h>
+ #include <gio/gio.h>
+ #include <glib.h>
+-}
+ 
+ class FlatpakResource;
+ class FlatpakTransactionThread;
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h b/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h
+index fa358802..a0deb83a 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakNotifier.h
+@@ -10,9 +10,7 @@
+ #include <BackendNotifierModule.h>
+ #include <functional>
+ 
+-extern "C" {
+-#include <flatpak.h>
+-}
++#include "flatpak-helper.h"
+ 
+ class FlatpakNotifier : public BackendNotifierModule
+ {
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakResource.h b/libdiscover/backends/FlatpakBackend/FlatpakResource.h
+index 880b494b..253062db 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakResource.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakResource.h
+@@ -11,9 +11,7 @@
+ 
+ #include <resources/AbstractResource.h>
+ 
+-extern "C" {
+-#include <flatpak.h>
+-}
++#include "flatpak-helper.h"
+ 
+ #include <AppStreamQt/component.h>
+ 
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h b/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h
+index b2a6c7c2..df356337 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakSourcesBackend.h
+@@ -13,9 +13,7 @@
+ #include <QStack>
+ #include <functional>
+ 
+-extern "C" {
+-#include <flatpak.h>
+-}
++#include "flatpak-helper.h"
+ 
+ class FlatpakResource;
+ class FlatpakSourcesBackend : public AbstractSourcesBackend
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h
+index b8eef827..24718f9a 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h
+@@ -7,11 +7,9 @@
+ #ifndef FLATPAKTRANSACTIONTHREAD_H
+ #define FLATPAKTRANSACTIONTHREAD_H
+ 
+-extern "C" {
+-#include <flatpak.h>
++#include "flatpak-helper.h"
+ #include <gio/gio.h>
+ #include <glib.h>
+-}
+ 
+ #include <Transaction/Transaction.h>
+ #include <QThread>
+diff --git a/libdiscover/backends/FlatpakBackend/flatpak-helper.h b/libdiscover/backends/FlatpakBackend/flatpak-helper.h
+new file mode 100644
+index 00000000..f42eee46
+--- /dev/null
++++ b/libdiscover/backends/FlatpakBackend/flatpak-helper.h
+@@ -0,0 +1,18 @@
++/*
++ *   SPDX-FileCopyrightText: 2021 Aleix Pol Gonzalez <aleixpol@kde.org>
++ *
++ *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
++ */
++
++#ifndef FLATPAK_HELPER
++#define FLATPAK_HELPER
++
++#ifdef FLATPAK_EXTERNC_REQUIRED
++extern "C" {
++#endif
++#include <flatpak.h>
++#ifdef FLATPAK_EXTERNC_REQUIRED
++}
++#endif
++
++#endif
+diff --git a/libdiscover/backends/FwupdBackend/CMakeLists.txt b/libdiscover/backends/FwupdBackend/CMakeLists.txt
+index a018f175..59c36a8d 100644
+--- a/libdiscover/backends/FwupdBackend/CMakeLists.txt
++++ b/libdiscover/backends/FwupdBackend/CMakeLists.txt
+@@ -9,6 +9,9 @@ set(fwupd-backend_SRCS
+ 
+ add_library(fwupd-backend MODULE ${fwupd-backend_SRCS})
+ target_link_libraries(fwupd-backend Qt5::Core KF5::CoreAddons KF5::ConfigCore Discover::Common PkgConfig::Fwupd)
++if (Fwupd_VERSION VERSION_LESS 1.5.8)
++    target_compile_definitions(fwupd-backend PRIVATE -DFWUPD_EXTERNC_REQUIRED)
++endif()
+ 
+ install(TARGETS fwupd-backend DESTINATION ${PLUGIN_INSTALL_DIR}/discover)
+ 
+diff --git a/libdiscover/backends/FwupdBackend/FwupdBackend.h b/libdiscover/backends/FwupdBackend/FwupdBackend.h
+index c886384e..7b1ff180 100644
+--- a/libdiscover/backends/FwupdBackend/FwupdBackend.h
++++ b/libdiscover/backends/FwupdBackend/FwupdBackend.h
+@@ -25,9 +25,14 @@
+ #include <QCryptographicHash>
+ #include <QMap>
+ 
++#ifdef FWUPD_EXTERNC_REQUIRED
+ extern "C" {
++#endif
++
+ #include <fwupd.h>
++#ifdef FWUPD_EXTERNC_REQUIRED
+ }
++#endif
+ #include <glib-2.0/glib-object.h>
+ 
+ class QAction;
+-- 
+GitLab
+


^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/discover/files/, kde-plasma/discover/
@ 2023-09-24 21:47 Andreas Sturmlechner
  0 siblings, 0 replies; 4+ messages in thread
From: Andreas Sturmlechner @ 2023-09-24 21:47 UTC (permalink / raw
  To: gentoo-commits

commit:     7a03b1108c5d093fafd32646b56e2bef6bf962bf
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 24 20:05:52 2023 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Sep 24 21:46:49 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7a03b110

kde-plasma/discover: Fix "too many open files" w/ flatpak backend

KDE-bug: https://bugs.kde.org/show_bug.cgi?id=474231

Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 kde-plasma/discover/discover-5.27.8-r1.ebuild      |  99 +++++++++++
 .../discover-5.27.8-flatpak-qrunnable-thread.patch | 187 +++++++++++++++++++++
 2 files changed, 286 insertions(+)

diff --git a/kde-plasma/discover/discover-5.27.8-r1.ebuild b/kde-plasma/discover/discover-5.27.8-r1.ebuild
new file mode 100644
index 000000000000..2fabb5fd60ad
--- /dev/null
+++ b/kde-plasma/discover/discover-5.27.8-r1.ebuild
@@ -0,0 +1,99 @@
+# Copyright 1999-2023 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+ECM_TEST="true"
+KFMIN=5.106.0
+QTMIN=5.15.9
+inherit ecm plasma.kde.org
+
+DESCRIPTION="KDE Plasma resources management GUI"
+HOMEPAGE="https://userbase.kde.org/Discover"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc64 ~riscv ~x86"
+IUSE="+firmware flatpak snap telemetry webengine"
+
+# libmarkdown (app-text/discount) only used in PackageKitBackend
+DEPEND="
+	>=dev-libs/appstream-0.15.3:=
+	>=dev-qt/qtconcurrent-${QTMIN}:5
+	>=dev-qt/qtdbus-${QTMIN}:5
+	>=dev-qt/qtdeclarative-${QTMIN}:5
+	>=dev-qt/qtgui-${QTMIN}:5
+	>=dev-qt/qtnetwork-${QTMIN}:5
+	>=dev-qt/qtwidgets-${QTMIN}:5
+	>=kde-frameworks/attica-${KFMIN}:5
+	>=kde-frameworks/kcmutils-${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/kdeclarative-${KFMIN}:5
+	>=kde-frameworks/ki18n-${KFMIN}:5
+	>=kde-frameworks/kidletime-${KFMIN}:5
+	>=kde-frameworks/kio-${KFMIN}:5
+	>=kde-frameworks/kirigami-${KFMIN}:5
+	>=kde-frameworks/knewstuff-${KFMIN}:5
+	>=kde-frameworks/knotifications-${KFMIN}:5
+	>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+	>=kde-frameworks/kxmlgui-${KFMIN}:5
+	>=kde-frameworks/purpose-${KFMIN}:5
+	firmware? ( >=sys-apps/fwupd-1.5.0 )
+	flatpak? ( sys-apps/flatpak )
+	snap? ( sys-libs/snapd-glib:=[qt5] )
+	telemetry? ( dev-libs/kuserfeedback:5 )
+	webengine? ( >=dev-qt/qtwebview-${QTMIN}:5 )
+"
+RDEPEND="${DEPEND}
+	>=dev-qt/qtquickcontrols2-${QTMIN}:5
+	snap? ( app-containers/snapd )
+"
+BDEPEND=">=kde-frameworks/kcmutils-${KFMIN}:5"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-5.25.90-tests-optional.patch"
+	"${FILESDIR}/${P}-flatpak-qrunnable-thread.patch" # KDE-bug 474231
+)
+
+src_prepare() {
+	ecm_src_prepare
+	# we don't need it with PackageKitBackend off
+	ecm_punt_kf_module Archive
+	# we don't do anything with this
+	sed -e "s/^pkg_check_modules.*RpmOstree/#&/" \
+		-e "s/^pkg_check_modules.*Ostree/#&/" \
+		-i CMakeLists.txt || die
+}
+
+src_configure() {
+	local mycmakeargs=(
+		# TODO: Port PackageKit's portage back-end to python3
+		-DCMAKE_DISABLE_FIND_PACKAGE_packagekitqt5=ON
+		# Automated updates will not work for us
+		# https://invent.kde.org/plasma/discover/-/merge_requests/142
+		-DWITH_KCM=OFF
+		-DBUILD_DummyBackend=OFF
+		-DBUILD_FlatpakBackend=$(usex flatpak)
+		-DBUILD_FwupdBackend=$(usex firmware)
+		-DBUILD_RpmOstreeBackend=OFF
+		-DBUILD_SnapBackend=$(usex snap)
+		-DBUILD_SteamOSBackend=OFF
+		$(cmake_use_find_package telemetry KUserFeedback)
+		$(cmake_use_find_package webengine Qt5WebView)
+	)
+
+	ecm_src_configure
+}
+
+src_test() {
+	# bug 686392: needs network connection
+	local myctestargs=(
+		-E "(knsbackendtest|flatpaktest)"
+	)
+
+	ecm_src_test
+}

diff --git a/kde-plasma/discover/files/discover-5.27.8-flatpak-qrunnable-thread.patch b/kde-plasma/discover/files/discover-5.27.8-flatpak-qrunnable-thread.patch
new file mode 100644
index 000000000000..20525969b988
--- /dev/null
+++ b/kde-plasma/discover/files/discover-5.27.8-flatpak-qrunnable-thread.patch
@@ -0,0 +1,187 @@
+From 46d14515c3105e4e318d28db41057d9f1df3ce4d Mon Sep 17 00:00:00 2001
+From: Harald Sitter <sitter@kde.org>
+Date: Mon, 11 Sep 2023 07:05:52 +0200
+Subject: [PATCH] flatpak: make FlatpakTransactionThread a qrunnable instead
+
+we can't just have an unlimited number of threads for flatpak
+transactions. it'd eventually cause excessive load on both CPU and
+network to the point where things will start misbehaving. we also run
+risk of exhausting other software limited resources such as file
+descriptors.
+
+to resolve this problem we now treat the transactionthread as runnable
+and put it in a limited threadpool for concurrent execution. the new
+runnable has a finished signal that is emitted on every return from
+run() to match the QThread API.
+
+concurrency is limited to no more than 4 runnables at a time. that
+should still be plenty concurrent while generally unexpected to exhaust
+the default 1024 file descriptor limit - an install transaction appears
+to weigh between 60 and 100 fds
+
+other backends don't necessarily have this problem since they have
+daemons that do the work for us so we have way fewer open fds for them.
+
+BUG: 474231
+
+(cherry picked from commit db0ebc855517f189f64c1602a5d27e185cf02833)
+---
+ .../FlatpakBackend/FlatpakJobTransaction.cpp  | 34 ++++++++++++++++---
+ .../FlatpakTransactionThread.cpp              |  9 +++--
+ .../FlatpakBackend/FlatpakTransactionThread.h |  5 ++-
+ 3 files changed, 40 insertions(+), 8 deletions(-)
+
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp
+index 613563755..b2c1fcc20 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp
++++ b/libdiscover/backends/FlatpakBackend/FlatpakJobTransaction.cpp
+@@ -1,6 +1,7 @@
+ /*
+  *   SPDX-FileCopyrightText: 2013 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
+  *   SPDX-FileCopyrightText: 2017 Jan Grulich <jgrulich@redhat.com>
++ *   SPDX-FileCopyrightText: 2023 Harald Sitter <sitter@kde.org>
+  *
+  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+  */
+@@ -10,9 +11,30 @@
+ #include "FlatpakResource.h"
+ #include "FlatpakTransactionThread.h"
+ 
++#include <thread>
++
+ #include <QDebug>
+ #include <QTimer>
+ 
++namespace
++{
++class ThreadPool : public QThreadPool
++{
++public:
++    ThreadPool()
++    {
++        // Cap the amount of concurrency to prevent too many in-flight transactions. This in particular
++        // prevents running out of file descriptors or other limited resources.
++        // https://bugs.kde.org/show_bug.cgi?id=474231
++        constexpr auto arbitraryMaxConcurrency = 4U;
++        const auto concurrency = std::min(std::thread::hardware_concurrency(), arbitraryMaxConcurrency);
++        setMaxThreadCount(std::make_signed_t<decltype(concurrency)>(concurrency));
++    }
++};
++} // namespace
++
++Q_GLOBAL_STATIC(ThreadPool, s_pool);
++
+ FlatpakJobTransaction::FlatpakJobTransaction(FlatpakResource *app, Role role, bool delayStart)
+     : Transaction(app->backend(), app, role, {})
+     , m_app(app)
+@@ -27,11 +49,12 @@ FlatpakJobTransaction::FlatpakJobTransaction(FlatpakResource *app, Role role, bo
+ 
+ FlatpakJobTransaction::~FlatpakJobTransaction()
+ {
+-    if (m_appJob->isRunning()) {
+-        cancel();
+-        m_appJob->wait();
++    cancel();
++    if (s_pool->tryTake(m_appJob)) { // immediately delete if the runnable hasn't started yet
++        delete m_appJob;
++    } else { // otherwise defer cleanup to the pool
++        m_appJob->setAutoDelete(true);
+     }
+-    delete m_appJob;
+ }
+ 
+ void FlatpakJobTransaction::cancel()
+@@ -45,6 +68,7 @@ void FlatpakJobTransaction::start()
+ 
+     // App job will be added every time
+     m_appJob = new FlatpakTransactionThread(m_app, role());
++    m_appJob->setAutoDelete(false);
+     connect(m_appJob, &FlatpakTransactionThread::finished, this, &FlatpakJobTransaction::finishTransaction);
+     connect(m_appJob, &FlatpakTransactionThread::progressChanged, this, &FlatpakJobTransaction::setProgress);
+     connect(m_appJob, &FlatpakTransactionThread::speedChanged, this, &FlatpakJobTransaction::setDownloadSpeed);
+@@ -52,7 +76,7 @@ void FlatpakJobTransaction::start()
+     connect(m_appJob, &FlatpakTransactionThread::webflowStarted, this, &FlatpakJobTransaction::webflowStarted);
+     connect(m_appJob, &FlatpakTransactionThread::webflowDone, this, &FlatpakJobTransaction::webflowDone);
+ 
+-    m_appJob->start();
++    s_pool->start(m_appJob);
+ }
+ 
+ void FlatpakJobTransaction::finishTransaction()
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp
+index 7072460ad..738a97a8c 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp
++++ b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.cpp
+@@ -1,5 +1,6 @@
+ /*
+  *   SPDX-FileCopyrightText: 2017 Jan Grulich <jgrulich@redhat.com>
++ *   SPDX-FileCopyrightText: 2023 Harald Sitter <sitter@kde.org>
+  *
+  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+  */
+@@ -10,6 +11,7 @@
+ #include <KLocalizedString>
+ #include <QDebug>
+ #include <QDesktopServices>
++#include <QScopeGuard>
+ 
+ static int FLATPAK_CLI_UPDATE_FREQUENCY = 150;
+ 
+@@ -92,8 +94,7 @@ void FlatpakTransactionThread::webflowDoneCallback(FlatpakTransaction *transacti
+ }
+ 
+ FlatpakTransactionThread::FlatpakTransactionThread(FlatpakResource *app, Transaction::Role role)
+-    : QThread()
+-    , m_result(false)
++    : m_result(false)
+     , m_app(app)
+     , m_role(role)
+ {
+@@ -131,6 +132,10 @@ void FlatpakTransactionThread::cancel()
+ 
+ void FlatpakTransactionThread::run()
+ {
++    auto finish = qScopeGuard([this] {
++        Q_EMIT finished();
++    });
++
+     if (!m_transaction)
+         return;
+     g_autoptr(GError) localError = nullptr;
+diff --git a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h
+index 277c21902..8e3d0e2e2 100644
+--- a/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h
++++ b/libdiscover/backends/FlatpakBackend/FlatpakTransactionThread.h
+@@ -1,5 +1,6 @@
+ /*
+  *   SPDX-FileCopyrightText: 2017 Jan Grulich <jgrulich@redhat.com>
++ *   SPDX-FileCopyrightText: 2023 Harald Sitter <sitter@kde.org>
+  *
+  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+  */
+@@ -11,12 +12,13 @@
+ #include <glib.h>
+ 
+ #include <QMap>
++#include <QRunnable>
+ #include <QStringList>
+ #include <QThread>
+ #include <Transaction/Transaction.h>
+ 
+ class FlatpakResource;
+-class FlatpakTransactionThread : public QThread
++class FlatpakTransactionThread : public QObject, public QRunnable
+ {
+     Q_OBJECT
+ public:
+@@ -49,6 +51,7 @@ Q_SIGNALS:
+     void passiveMessage(const QString &msg);
+     void webflowStarted(const QUrl &url, int id);
+     void webflowDone(int id);
++    void finished();
+ 
+ private:
+     static gboolean
+-- 
+GitLab
+


^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/discover/files/, kde-plasma/discover/
@ 2021-04-04 13:23 Andreas Sturmlechner
  0 siblings, 0 replies; 4+ messages in thread
From: Andreas Sturmlechner @ 2021-04-04 13:23 UTC (permalink / raw
  To: gentoo-commits

commit:     ee5b2b3f04e3e3ee919334c251ae26dce7e761d2
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Apr  4 12:09:16 2021 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Sun Apr  4 13:19:36 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=ee5b2b3f

kde-plasma/discover: Fix CVE-2021-28117

See also: https://kde.org/info/security/advisory-20210310-1.txt

Bug: https://bugs.gentoo.org/777777
Package-Manager: Portage-3.0.18, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 kde-plasma/discover/discover-5.20.5-r1.ebuild      | 84 ++++++++++++++++++++++
 .../files/discover-5.20.5-CVE-2021-28117.patch     | 28 ++++++++
 2 files changed, 112 insertions(+)

diff --git a/kde-plasma/discover/discover-5.20.5-r1.ebuild b/kde-plasma/discover/discover-5.20.5-r1.ebuild
new file mode 100644
index 00000000000..a6b37d443f8
--- /dev/null
+++ b/kde-plasma/discover/discover-5.20.5-r1.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+ECM_TEST="forceoptional"
+KFMIN=5.74.0
+QTMIN=5.15.1
+VIRTUALX_REQUIRED="test"
+inherit ecm kde.org
+
+DESCRIPTION="KDE Plasma resources management GUI"
+HOMEPAGE="https://userbase.kde.org/Discover"
+
+LICENSE="GPL-2" # TODO: CHECK
+SLOT="5"
+KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~x86"
+IUSE="+firmware flatpak telemetry"
+
+# libmarkdown (app-text/discount) only used in PackageKitBackend
+DEPEND="
+	>=dev-qt/qtconcurrent-${QTMIN}:5
+	>=dev-qt/qtdbus-${QTMIN}:5
+	>=dev-qt/qtdeclarative-${QTMIN}:5
+	>=dev-qt/qtgui-${QTMIN}:5
+	>=dev-qt/qtnetwork-${QTMIN}:5
+	>=dev-qt/qtwidgets-${QTMIN}:5
+	>=dev-qt/qtxml-${QTMIN}:5
+	>=kde-frameworks/attica-${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/kdeclarative-${KFMIN}:5
+	>=kde-frameworks/ki18n-${KFMIN}:5
+	>=kde-frameworks/kio-${KFMIN}:5
+	>=kde-frameworks/kirigami-${KFMIN}:5
+	>=kde-frameworks/kitemmodels-${KFMIN}:5
+	>=kde-frameworks/knewstuff-${KFMIN}:5
+	>=kde-frameworks/knotifications-${KFMIN}:5
+	>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
+	>=kde-frameworks/kxmlgui-${KFMIN}:5
+	firmware? ( sys-apps/fwupd )
+	flatpak? (
+		dev-libs/appstream:=
+		sys-apps/flatpak
+	)
+	telemetry? ( dev-libs/kuserfeedback:5 )
+"
+RDEPEND="${DEPEND}
+	>=dev-qt/qtquickcontrols2-${QTMIN}:5
+	>=kde-frameworks/kirigami-${KFMIN}:5
+"
+
+PATCHES=( "${FILESDIR}/${P}-CVE-2021-28117.patch" ) # bug 777777
+
+src_prepare() {
+	ecm_src_prepare
+	# we don't need it with PackageKitBackend off
+	ecm_punt_bogus_dep KF5 Archive
+}
+
+src_configure() {
+	local mycmakeargs=(
+		-DCMAKE_DISABLE_FIND_PACKAGE_packagekitqt5=ON
+		-DCMAKE_DISABLE_FIND_PACKAGE_Snapd=ON
+		-DBUILD_FlatpakBackend=$(usex flatpak)
+		$(cmake_use_find_package flatpak AppStreamQt)
+		-DBUILD_FwupdBackend=$(usex firmware)
+		$(cmake_use_find_package telemetry KUserFeedback)
+	)
+
+	ecm_src_configure
+}
+
+src_test() {
+	# bug 686392: needs network connection
+	local myctestargs=(
+		-E "(knsbackendtest)"
+	)
+
+	ecm_src_test
+}

diff --git a/kde-plasma/discover/files/discover-5.20.5-CVE-2021-28117.patch b/kde-plasma/discover/files/discover-5.20.5-CVE-2021-28117.patch
new file mode 100644
index 00000000000..1a2685dbc8d
--- /dev/null
+++ b/kde-plasma/discover/files/discover-5.20.5-CVE-2021-28117.patch
@@ -0,0 +1,28 @@
+From 94478827aab63d2e2321f0ca9ec5553718798e60 Mon Sep 17 00:00:00 2001
+From: Aleix Pol <aleixpol@kde.org>
+Date: Wed, 10 Mar 2021 21:48:53 +0100
+Subject: [PATCH] Only turn http[s] links into clickable links
+
+CVE-2021-28117
+
+(cherry picked from commit d375031ff0262cedac7d6ee2b26d6a164ddebb67)
+---
+ libdiscover/backends/KNSBackend/KNSResource.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/libdiscover/backends/KNSBackend/KNSResource.cpp b/libdiscover/backends/KNSBackend/KNSResource.cpp
+index 4394d5df..f7670c55 100644
+--- a/libdiscover/backends/KNSBackend/KNSResource.cpp
++++ b/libdiscover/backends/KNSBackend/KNSResource.cpp
+@@ -87,7 +87,7 @@ QString KNSResource::longDescription()
+     ret.remove(QRegularExpression(QStringLiteral("\\[\\/?[a-z]*\\]")));
+     // Find anything that looks like a link (but which also is not some html
+     // tag value or another already) and make it a link
+-    static const QRegularExpression urlRegExp(QStringLiteral("(^|\\s)([-a-zA-Z0-9@:%_\\+.~#?&//=]{2,256}\\.[a-z]{2,4}\\b(\\/[-a-zA-Z0-9@:;%_\\+.~#?&//=]*)?)"), QRegularExpression::CaseInsensitiveOption);
++    static const QRegularExpression urlRegExp(QStringLiteral("(^|\\s)(http[-a-zA-Z0-9@:%_\\+.~#?&//=]{2,256}\\.[a-z]{2,4}\\b(\\/[-a-zA-Z0-9@:;%_\\+.~#?&//=]*)?)"), QRegularExpression::CaseInsensitiveOption);
+     ret.replace(urlRegExp, QStringLiteral("<a href=\"\\2\">\\2</a>"));
+     return ret;
+ }
+-- 
+GitLab
+


^ permalink raw reply related	[flat|nested] 4+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-plasma/discover/files/, kde-plasma/discover/
@ 2019-05-18  2:13 Michael Palimaka
  0 siblings, 0 replies; 4+ messages in thread
From: Michael Palimaka @ 2019-05-18  2:13 UTC (permalink / raw
  To: gentoo-commits

commit:     1d88b903b943e4f5569afeb0bfea74edddc49cb1
Author:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
AuthorDate: Sat May 18 02:11:21 2019 +0000
Commit:     Michael Palimaka <kensington <AT> gentoo <DOT> org>
CommitDate: Sat May 18 02:12:48 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1d88b903

kde-plasma/discover: fix tests

Closes: https://bugs.gentoo.org/678916
Package-Manager: Portage-2.3.62, Repoman-2.3.12
Signed-off-by: Michael Palimaka <kensington <AT> gentoo.org>

 kde-plasma/discover/discover-5.15.5.ebuild         |  2 ++
 .../discover/files/discover-5.15.5-tests.patch     | 38 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/kde-plasma/discover/discover-5.15.5.ebuild b/kde-plasma/discover/discover-5.15.5.ebuild
index 6317798c518..bd62c7d5af3 100644
--- a/kde-plasma/discover/discover-5.15.5.ebuild
+++ b/kde-plasma/discover/discover-5.15.5.ebuild
@@ -42,6 +42,8 @@ RDEPEND="${DEPEND}
 	$(add_frameworks_dep kirigami)
 "
 
+PATCHES=( "${FILESDIR}/${PN}-5.15.5-tests.patch" )
+
 src_prepare() {
 	kde5_src_prepare
 	# we don't need it with PackageKitBackend off

diff --git a/kde-plasma/discover/files/discover-5.15.5-tests.patch b/kde-plasma/discover/files/discover-5.15.5-tests.patch
new file mode 100644
index 00000000000..131a63b1e94
--- /dev/null
+++ b/kde-plasma/discover/files/discover-5.15.5-tests.patch
@@ -0,0 +1,38 @@
+From 03653a7d75ba8b24e28bc3adf5348ea3d0faf2b0 Mon Sep 17 00:00:00 2001
+From: Michael Palimaka <kensington@gentoo.org>
+Date: Thu, 16 May 2019 19:39:44 +1000
+Subject: [PATCH] Port knsbackendtest to ecm_add_test
+
+Reviewers: #plasma, apol
+
+Reviewed By: apol
+
+Subscribers: asturmlechner, plasma-devel
+
+Tags: #plasma
+
+Differential Revision: https://phabricator.kde.org/D21239
+---
+ libdiscover/backends/KNSBackend/tests/CMakeLists.txt | 10 +---------
+ 1 file changed, 1 insertion(+), 9 deletions(-)
+
+diff --git a/libdiscover/backends/KNSBackend/tests/CMakeLists.txt b/libdiscover/backends/KNSBackend/tests/CMakeLists.txt
+index 4fabe5ec..e64eb8ca 100644
+--- a/libdiscover/backends/KNSBackend/tests/CMakeLists.txt
++++ b/libdiscover/backends/KNSBackend/tests/CMakeLists.txt
+@@ -1,11 +1,3 @@
+ include_directories(..)
+ 
+-add_executable(knsbackendtest KNSBackendTest.cpp)
+-add_test(knsbackendtest knsbackendtest)
+-ecm_mark_as_test(knsbackendtest)
+-target_link_libraries(knsbackendtest
+-    Discover::Common
+-    
+-    Qt5::Test Qt5::Core
+-    KF5::NewStuff KF5::Attica
+-)
++ecm_add_test(KNSBackendTest.cpp TEST_NAME knsbackendtest LINK_LIBRARIES Discover::Common Qt5::Core Qt5::Test KF5::Attica KF5::NewStuff)
+-- 
+2.21.0
+


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-09-24 21:47 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-05-01 21:24 [gentoo-commits] repo/gentoo:master commit in: kde-plasma/discover/files/, kde-plasma/discover/ Andreas Sturmlechner
  -- strict thread matches above, loose matches on Subject: below --
2023-09-24 21:47 Andreas Sturmlechner
2021-04-04 13:23 Andreas Sturmlechner
2019-05-18  2:13 Michael Palimaka

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox