kde-plasma/plasma-desktop: Mitigate KNS/Discover impact on KDE servers

See also:
https://mail.kde.org/pipermail/distributions/2022-February/001140.html

Upstream commits:
798027fd17ab86eea022e5d269aa86138b28b130
8e164050c594855ee3728678d6d0907a10b28db6
b85cf34298c274b5f16cb6c2aead7b87f0dabbb8
6e8626f2d65a03af3cd12fb5390040c56ca3258d

Also, move virtual/crypt dependency behind IUSE=policykit as it should be.

Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
This commit is contained in:
Andreas Sturmlechner
2022-02-09 22:05:38 +01:00
parent 978a35fb20
commit 6e2e1bbbd7
2 changed files with 247 additions and 0 deletions

View File

@@ -0,0 +1,57 @@
From 346dafd3a0e19805f77147a9515a7333a05ed584 Mon Sep 17 00:00:00 2001
From: Dan Leinir Turthra Jensen <admin@leinir.dk>
Date: Tue, 8 Feb 2022 11:16:16 +0000
Subject: [PATCH] Add a granular cache preference thing to attica-kde
Commit 798027fd17ab86eea022e5d269aa86138b28b130
This allows us to explicitly add cache preference to specific calls.
Usually attica calls want to be very current, but in some cases we can
assume things aren't going to change often (such as the categories
call), and we can just use the cached version for those calls.
Fix missing variable name
Commit 8e164050c594855ee3728678d6d0907a10b28db6
Only trust the expiration date if it's less than 24 hours
Commit b85cf34298c274b5f16cb6c2aead7b87f0dabbb8
Fix build
Commit 6e8626f2d65a03af3cd12fb5390040c56ca3258d
---
attica-kde/kdeplugin/kdeplatformdependent.cpp | 20 ++++++++++++++++++-
1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/attica-kde/kdeplugin/kdeplatformdependent.cpp b/attica-kde/kdeplugin/kdeplatformdependent.cpp
index c2c90107e..850c91284 100644
--- a/attica-kde/kdeplugin/kdeplatformdependent.cpp
+++ b/attica-kde/kdeplugin/kdeplatformdependent.cpp
@@ -125,6 +125,25 @@ QNetworkRequest KdePlatformDependent::addOAuthToRequest(const QNetworkRequest &r
const QString bearer = bearer_format.arg(token);
notConstReq.setRawHeader("Authorization", bearer.toUtf8());
}
+
+ // Add cache preference in a granular fashion (we will almost certainly want more of these, but...)
+ static const QStringList preferCacheEndpoints{QLatin1String{"/content/categories"}};
+ for (const QString &endpoint : preferCacheEndpoints) {
+ if (notConstReq.url().toString().endsWith(endpoint)) {
+ QNetworkCacheMetaData cacheMeta{m_accessManager->cache()->metaData(notConstReq.url())};
+ if (cacheMeta.isValid()) {
+ // If the expiration date is valid, but longer than 24 hours, don't trust that things
+ // haven't changed and check first, otherwise just use the cached version to relieve
+ // server strain and reduce network traffic.
+ const QDateTime tomorrow{QDateTime::currentDateTime().addDays(1)};
+ if (cacheMeta.expirationDate().isValid() && cacheMeta.expirationDate() < tomorrow) {
+ notConstReq.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
+ }
+ }
+ break;
+ }
+ }
+
return notConstReq;
}
--
2.34.1

View File

@@ -0,0 +1,190 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
ECM_HANDBOOK="forceoptional"
ECM_TEST="true"
KFMIN=5.86.0
PVCUT=$(ver_cut 1-3)
QTMIN=5.15.2
VIRTUALX_REQUIRED="test"
inherit ecm kde.org optfeature
DESCRIPTION="KDE Plasma desktop"
XORGHDRS="${PN}-override-include-dirs-1"
SRC_URI+=" https://dev.gentoo.org/~asturm/distfiles/${XORGHDRS}.tar.xz"
LICENSE="GPL-2" # TODO: CHECK
SLOT="5"
KEYWORDS="~amd64 ~arm ~arm64 ~ppc64 ~riscv ~x86"
IUSE="emoji ibus +kaccounts +policykit scim +semantic-desktop telemetry"
COMMON_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/qtprintsupport-${QTMIN}:5
>=dev-qt/qtsql-${QTMIN}:5
>=dev-qt/qtsvg-${QTMIN}:5
>=dev-qt/qtwidgets-${QTMIN}:5
>=dev-qt/qtx11extras-${QTMIN}:5
>=dev-qt/qtxml-${QTMIN}:5
>=kde-frameworks/attica-${KFMIN}:5
>=kde-frameworks/kactivities-${KFMIN}:5
>=kde-frameworks/kactivities-stats-${KFMIN}:5
>=kde-frameworks/karchive-${KFMIN}:5
>=kde-frameworks/kauth-${KFMIN}:5
>=kde-frameworks/kbookmarks-${KFMIN}:5
>=kde-frameworks/kcmutils-${KFMIN}:5
>=kde-frameworks/kcodecs-${KFMIN}:5
>=kde-frameworks/kcompletion-${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/kded-${KFMIN}:5
>=kde-frameworks/kdelibs4support-${KFMIN}:5
>=kde-frameworks/kglobalaccel-${KFMIN}:5
>=kde-frameworks/kguiaddons-${KFMIN}:5
>=kde-frameworks/ki18n-${KFMIN}:5
>=kde-frameworks/kiconthemes-${KFMIN}:5
>=kde-frameworks/kio-${KFMIN}:5
>=kde-frameworks/kitemmodels-${KFMIN}:5
>=kde-frameworks/kitemviews-${KFMIN}:5
>=kde-frameworks/kjobwidgets-${KFMIN}:5
>=kde-frameworks/knewstuff-${KFMIN}:5
>=kde-frameworks/knotifications-${KFMIN}:5
>=kde-frameworks/knotifyconfig-${KFMIN}:5
>=kde-frameworks/kparts-${KFMIN}:5
>=kde-frameworks/krunner-${KFMIN}:5
>=kde-frameworks/kservice-${KFMIN}:5
>=kde-frameworks/kwidgetsaddons-${KFMIN}:5
>=kde-frameworks/kwindowsystem-${KFMIN}:5
>=kde-frameworks/kxmlgui-${KFMIN}:5
>=kde-frameworks/plasma-${KFMIN}:5
>=kde-frameworks/solid-${KFMIN}:5
>=kde-frameworks/sonnet-${KFMIN}:5
>=kde-plasma/kwin-${PVCUT}:5
>=kde-plasma/libksysguard-${PVCUT}:5
>=kde-plasma/libkworkspace-${PVCUT}:5
>=kde-plasma/plasma-workspace-${PVCUT}:5
>=media-libs/phonon-4.11.0
x11-libs/libX11
x11-libs/libXfixes
x11-libs/libXi
x11-libs/libxcb[xkb]
x11-libs/libxkbfile
emoji? (
app-i18n/ibus[emoji]
dev-libs/glib:2
media-fonts/noto-emoji
)
ibus? (
app-i18n/ibus
dev-libs/glib:2
>=dev-qt/qtx11extras-${QTMIN}:5
x11-libs/libxcb
x11-libs/xcb-util-keysyms
)
kaccounts? (
kde-apps/kaccounts-integration:5
net-libs/accounts-qt
)
policykit? (
>=kde-frameworks/kwallet-${KFMIN}:5
virtual/libcrypt:=
)
scim? ( app-i18n/scim )
semantic-desktop? ( >=kde-frameworks/baloo-${KFMIN}:5 )
telemetry? ( dev-libs/kuserfeedback:5 )
"
DEPEND="${COMMON_DEPEND}
dev-libs/boost
x11-base/xorg-proto
"
RDEPEND="${COMMON_DEPEND}
!kde-plasma/user-manager
>=dev-qt/qtgraphicaleffects-${QTMIN}:5
>=dev-qt/qtquickcontrols2-${QTMIN}:5
>=kde-frameworks/kirigami-${KFMIN}:5
>=kde-frameworks/qqc2-desktop-style-${KFMIN}:5
>=kde-plasma/kde-cli-tools-${PVCUT}:5
>=kde-plasma/oxygen-${PVCUT}:5
sys-apps/util-linux
x11-apps/setxkbmap
x11-misc/xdg-user-dirs
kaccounts? ( net-libs/signon-oauth2 )
policykit? ( sys-apps/accountsservice )
"
BDEPEND="virtual/pkgconfig"
PATCHES=(
"${WORKDIR}/${XORGHDRS}/override-include-dirs.patch" # downstream patch
# https://mail.kde.org/pipermail/distributions/2022-February/001140.html
"${FILESDIR}/${P}-attica-add-granular-cache-pref.patch"
)
src_prepare() {
ecm_src_prepare
if ! use policykit; then
ecm_punt_kf_module Wallet
cmake_run_in kcms cmake_comment_add_subdirectory users
fi
if ! use ibus; then
sed -e "s/Qt5X11Extras_FOUND AND XCB_XCB_FOUND AND XCB_KEYSYMS_FOUND/false/" \
-i applets/kimpanel/backend/ibus/CMakeLists.txt || die
fi
use emoji || cmake_run_in applets/kimpanel/backend/ibus \
cmake_comment_add_subdirectory emojier
# TODO: try to get a build switch upstreamed
if ! use scim; then
sed -e "s/^pkg_check_modules.*SCIM/#&/" -i CMakeLists.txt || die
fi
}
src_configure() {
local mycmakeargs=(
-DCMAKE_DISABLE_FIND_PACKAGE_PackageKitQt5=ON # not packaged
-DEVDEV_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
-DXORGLIBINPUT_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
-DXORGSERVER_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
-DSYNAPTICS_INCLUDE_DIRS="${WORKDIR}/${XORGHDRS}"/include
$(cmake_use_find_package kaccounts AccountsQt5)
$(cmake_use_find_package kaccounts KAccounts)
$(cmake_use_find_package semantic-desktop KF5Baloo)
$(cmake_use_find_package telemetry KUserFeedback)
)
if ! use emoji && ! use ibus; then
mycmakeargs+=( -DCMAKE_DISABLE_FIND_PACKAGE_GLIB2=ON )
fi
ecm_src_configure
}
src_test() {
# parallel tests fail, foldermodeltest,positionertest hang, bug #646890
# test_kio_fonts needs D-Bus, bug #634166
# lookandfeel-kcmTest is unreliable for a long time, bug #607918
local myctestargs=(
-j1
-E "(foldermodeltest|positionertest|test_kio_fonts|lookandfeel-kcmTest)"
)
ecm_src_test
}
pkg_postinst() {
if [[ -z "${REPLACING_VERSIONS}" ]]; then
optfeature "screen reader support" app-accessibility/orca
fi
ecm_pkg_postinst
}