aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart Ribbers <bribbers@disroot.org>2024-02-28 13:37:17 +0100
committerBart Ribbers <bribbers@disroot.org>2024-03-03 13:12:46 +0100
commit4e7fa26ea26a81c59ae26d3327bbe13838f19208 (patch)
tree21ec17acd2fe298faa1b9bb1fe317cb35757bcaa
parent8c3ce904da669a0bdb9facaab3e7d5764c7256d1 (diff)
community/kde*: upgrade to KDE6
-rw-r--r--community/accounts-qml-module/APKBUILD25
-rw-r--r--community/akonadi-calendar-tools/APKBUILD17
-rw-r--r--community/akonadi-calendar/APKBUILD31
-rw-r--r--community/akonadi-contacts/APKBUILD40
-rw-r--r--community/akonadi-import-wizard/APKBUILD28
-rw-r--r--community/akonadi-mime/APKBUILD26
-rw-r--r--community/akonadi-notes/APKBUILD10
-rw-r--r--community/akonadi-search/APKBUILD40
-rw-r--r--community/akonadi/APKBUILD44
-rw-r--r--community/akonadiconsole/APKBUILD38
-rw-r--r--community/akregator/APKBUILD34
-rw-r--r--community/alligator/APKBUILD23
-rw-r--r--community/analitza/APKBUILD15
-rw-r--r--community/angelfish/APKBUILD32
-rw-r--r--community/arianna/APKBUILD42
-rw-r--r--community/ark/APKBUILD38
-rw-r--r--community/artikulate/APKBUILD8
-rw-r--r--community/attica/APKBUILD (renamed from community/attica5/APKBUILD)13
-rw-r--r--community/audiocd-kio/APKBUILD17
-rw-r--r--community/audiotube/APKBUILD25
-rw-r--r--community/aura-browser/APKBUILD52
-rw-r--r--community/baloo-widgets/APKBUILD22
-rw-r--r--community/baloo/APKBUILD (renamed from community/baloo5/APKBUILD)44
-rw-r--r--community/blinken/APKBUILD21
-rw-r--r--community/bluedevil/APKBUILD42
-rw-r--r--community/bluez-qt/APKBUILD (renamed from community/bluez-qt5/APKBUILD)22
-rw-r--r--community/bovo/APKBUILD20
-rw-r--r--community/breeze-grub/APKBUILD9
-rw-r--r--community/breeze-gtk/APKBUILD6
-rw-r--r--community/breeze-icons/APKBUILD (renamed from community/breeze-icons5/APKBUILD)15
-rw-r--r--community/breeze-plymouth/APKBUILD9
-rw-r--r--community/breeze/APKBUILD31
-rw-r--r--community/calendarsupport/APKBUILD24
-rw-r--r--community/calindori/APKBUILD37
-rw-r--r--community/cantor/APKBUILD8
-rw-r--r--community/cervisia/APKBUILD7
-rw-r--r--community/discover/APKBUILD97
-rw-r--r--community/discover/alpine-appstream-data.json7
-rw-r--r--community/discover/alpine-linux-logo-icon.pngbin896 -> 0 bytes
-rw-r--r--community/discover/discover-apk-support.patch8569
-rw-r--r--community/dolphin-plugins/APKBUILD18
-rw-r--r--community/dolphin/APKBUILD60
-rw-r--r--community/dragon/APKBUILD41
-rw-r--r--community/drkonqi/APKBUILD55
-rw-r--r--community/elisa/APKBUILD53
-rw-r--r--community/eventviews/APKBUILD26
-rw-r--r--community/extra-cmake-modules/APKBUILD17
-rw-r--r--community/falkon/APKBUILD35
-rw-r--r--community/ffmpegthumbs/APKBUILD14
-rw-r--r--community/filelight/APKBUILD29
-rw-r--r--community/flatpak-kcm/APKBUILD26
-rw-r--r--community/frameworkintegration/APKBUILD (renamed from community/kmediaplayer/APKBUILD)33
-rw-r--r--community/frameworkintegration5/APKBUILD4
-rw-r--r--community/futuresql/APKBUILD6
-rw-r--r--community/ghostwriter/APKBUILD36
-rw-r--r--community/granatier/APKBUILD32
-rw-r--r--community/grantlee-editor/APKBUILD30
-rw-r--r--community/grantleetheme/APKBUILD16
-rw-r--r--community/gwenview/APKBUILD44
-rw-r--r--community/incidenceeditor/APKBUILD30
-rw-r--r--community/isoimagewriter/APKBUILD31
-rw-r--r--community/itinerary/APKBUILD48
-rw-r--r--community/juk/APKBUILD43
-rw-r--r--community/k3b/APKBUILD43
-rw-r--r--community/kaccounts-integration/APKBUILD18
-rw-r--r--community/kaccounts-providers/APKBUILD24
-rw-r--r--community/kactivitymanagerd/APKBUILD30
-rw-r--r--community/kaddressbook/APKBUILD20
-rw-r--r--community/kajongg/APKBUILD16
-rw-r--r--community/kalarm/APKBUILD63
-rw-r--r--community/kalgebra/APKBUILD28
-rw-r--r--community/kalk/APKBUILD30
-rw-r--r--community/kalzium/APKBUILD34
-rw-r--r--community/kamera/APKBUILD21
-rw-r--r--community/kamoso/APKBUILD7
-rw-r--r--community/kanagram/APKBUILD31
-rw-r--r--community/kapidox/APKBUILD (renamed from community/kapidox5/APKBUILD)12
-rw-r--r--community/kapman/APKBUILD29
-rw-r--r--community/kapptemplate/APKBUILD22
-rw-r--r--community/karchive/APKBUILD (renamed from community/kxmlrpcclient5/APKBUILD)27
-rw-r--r--community/karchive5/APKBUILD4
-rw-r--r--community/kasts/APKBUILD37
-rw-r--r--community/kate/APKBUILD87
-rw-r--r--community/katomic/APKBUILD27
-rw-r--r--community/kauth/APKBUILD (renamed from community/kauth5/APKBUILD)18
-rw-r--r--community/kbackup/APKBUILD26
-rw-r--r--community/kblackbox/APKBUILD29
-rw-r--r--community/kblocks/APKBUILD28
-rw-r--r--community/kbookmarks/APKBUILD (renamed from community/kbookmarks5/APKBUILD)27
-rw-r--r--community/kbounce/APKBUILD32
-rw-r--r--community/kbreakout/APKBUILD28
-rw-r--r--community/kbruch/APKBUILD21
-rw-r--r--community/kcachegrind/APKBUILD29
-rw-r--r--community/kcalc/APKBUILD25
-rw-r--r--community/kcalendarcore/APKBUILD (renamed from community/kcalendarcore5/APKBUILD)21
-rw-r--r--community/kcalutils/APKBUILD26
-rw-r--r--community/kcharselect/APKBUILD21
-rw-r--r--community/kclock/APKBUILD34
-rw-r--r--community/kcmutils/APKBUILD57
-rw-r--r--community/kcmutils5/APKBUILD4
-rw-r--r--community/kcodecs/APKBUILD (renamed from community/kcodecs5/APKBUILD)13
-rw-r--r--community/kcolorchooser/APKBUILD13
-rw-r--r--community/kcolorscheme/APKBUILD47
-rw-r--r--community/kcompletion/APKBUILD (renamed from community/kcompletion5/APKBUILD)18
-rw-r--r--community/kconfig/APKBUILD51
-rw-r--r--community/kconfig5/APKBUILD4
-rw-r--r--community/kconfigwidgets/APKBUILD56
-rw-r--r--community/kconfigwidgets5/APKBUILD4
-rw-r--r--community/kcontacts/APKBUILD (renamed from community/kcontacts5/APKBUILD)23
-rw-r--r--community/kcoreaddons/APKBUILD62
-rw-r--r--community/kcoreaddons5/APKBUILD4
-rw-r--r--community/kcrash/APKBUILD48
-rw-r--r--community/kcrash5/APKBUILD4
-rw-r--r--community/kcron/APKBUILD20
-rw-r--r--community/kdav/APKBUILD (renamed from community/kdav5/APKBUILD)25
-rw-r--r--community/kdbusaddons/APKBUILD (renamed from community/kdbusaddons5/APKBUILD)13
-rw-r--r--community/kde-applications/APKBUILD36
-rw-r--r--community/kde-cli-tools/APKBUILD44
-rw-r--r--community/kde-dev-scripts/APKBUILD10
-rw-r--r--community/kde-dev-utils/APKBUILD17
-rw-r--r--community/kde-gtk-config/APKBUILD26
-rw-r--r--community/kde-inotify-survey/APKBUILD20
-rw-r--r--community/kdebugsettings/APKBUILD24
-rw-r--r--community/kdeclarative/APKBUILD58
-rw-r--r--community/kdeclarative5/APKBUILD4
-rw-r--r--community/kdeconnect/APKBUILD49
-rw-r--r--community/kdecoration/APKBUILD14
-rw-r--r--community/kded/APKBUILD (renamed from community/kded5/APKBUILD)25
-rw-r--r--community/kdeedu-data/APKBUILD9
-rw-r--r--community/kdegraphics-mobipocket/APKBUILD11
-rw-r--r--community/kdegraphics-thumbnailers/APKBUILD14
-rw-r--r--community/kdelibs4support/0001-fix-test-build.patch12
-rw-r--r--community/kdelibs4support/APKBUILD76
-rw-r--r--community/kdenetwork-filesharing/APKBUILD23
-rw-r--r--community/kdenlive/APKBUILD33
-rw-r--r--community/kdepim-addons/APKBUILD45
-rw-r--r--community/kdepim-runtime/APKBUILD74
-rw-r--r--community/kdeplasma-addons/APKBUILD58
-rw-r--r--community/kdesdk-kio/APKBUILD14
-rw-r--r--community/kdesdk-thumbnailers/APKBUILD16
-rw-r--r--community/kdesignerplugin5/APKBUILD60
-rw-r--r--community/kdesu/APKBUILD (renamed from community/kdesu5/APKBUILD)24
-rw-r--r--community/kdevelop/APKBUILD9
-rw-r--r--community/kdf/APKBUILD29
-rw-r--r--community/kdiagram/APKBUILD17
-rw-r--r--community/kdialog/APKBUILD22
-rw-r--r--community/kdiamond/APKBUILD33
-rw-r--r--community/kdnssd/APKBUILD (renamed from community/kdnssd5/APKBUILD)18
-rw-r--r--community/kdoctools/APKBUILD56
-rw-r--r--community/kdoctools5/APKBUILD4
-rw-r--r--community/kdsoap-ws-discovery-client/APKBUILD45
-rw-r--r--community/keditbookmarks/APKBUILD22
-rw-r--r--community/kemoticons5/APKBUILD53
-rw-r--r--community/keysmith/APKBUILD18
-rw-r--r--community/kfilemetadata/APKBUILD (renamed from community/kfilemetadata5/APKBUILD)23
-rw-r--r--community/kfind/APKBUILD23
-rw-r--r--community/kfourinline/APKBUILD31
-rw-r--r--community/kgeography/APKBUILD27
-rw-r--r--community/kget/APKBUILD55
-rw-r--r--community/kglobalaccel/APKBUILD (renamed from community/kglobalaccel5/APKBUILD)28
-rw-r--r--community/kglobalacceld/APKBUILD55
-rw-r--r--community/kgoldrunner/APKBUILD31
-rw-r--r--community/kgpg/APKBUILD44
-rw-r--r--community/kguiaddons/APKBUILD55
-rw-r--r--community/kguiaddons5/APKBUILD4
-rw-r--r--community/khangman/APKBUILD39
-rw-r--r--community/khelpcenter/APKBUILD31
-rw-r--r--community/kholidays/APKBUILD (renamed from community/kholidays5/APKBUILD)19
-rw-r--r--community/khotkeys/APKBUILD59
-rw-r--r--community/khtml/APKBUILD63
-rw-r--r--community/ki18n/APKBUILD (renamed from community/ki18n5/APKBUILD)23
-rw-r--r--community/kiconthemes/APKBUILD54
-rw-r--r--community/kiconthemes5/APKBUILD4
-rw-r--r--community/kidentitymanagement/APKBUILD32
-rw-r--r--community/kidletime/APKBUILD (renamed from community/kidletime5/APKBUILD)16
-rw-r--r--community/kig/APKBUILD7
-rw-r--r--community/kigo/APKBUILD35
-rw-r--r--community/killbots/APKBUILD31
-rw-r--r--community/kimageformats/APKBUILD (renamed from community/kimageformats5/APKBUILD)21
-rw-r--r--community/kimagemapeditor/APKBUILD39
-rw-r--r--community/kimap/APKBUILD14
-rw-r--r--community/kinfocenter/APKBUILD51
-rw-r--r--community/kinit5/APKBUILD52
-rw-r--r--community/kio-admin/APKBUILD11
-rw-r--r--community/kio-extras/APKBUILD53
-rw-r--r--community/kio-gdrive/APKBUILD21
-rw-r--r--community/kio-zeroconf/APKBUILD18
-rw-r--r--community/kio/APKBUILD77
-rw-r--r--community/kio5/APKBUILD4
-rw-r--r--community/kipi-plugins/APKBUILD6
-rw-r--r--community/kirigami-addons/APKBUILD24
-rw-r--r--community/kirigami-gallery/APKBUILD15
-rw-r--r--community/kirigami/APKBUILD49
-rw-r--r--community/kirigami2/APKBUILD6
-rw-r--r--community/kiriki/APKBUILD29
-rw-r--r--community/kitemmodels/APKBUILD48
-rw-r--r--community/kitemmodels5/APKBUILD4
-rw-r--r--community/kitemviews/APKBUILD45
-rw-r--r--community/kitemviews5/APKBUILD4
-rw-r--r--community/kiten/APKBUILD31
-rw-r--r--community/kitinerary/APKBUILD38
-rw-r--r--community/kjobwidgets/APKBUILD48
-rw-r--r--community/kjobwidgets5/APKBUILD4
-rw-r--r--community/kjs/APKBUILD46
-rw-r--r--community/kjumpingcube/APKBUILD33
-rw-r--r--community/kldap/APKBUILD16
-rw-r--r--community/kleopatra/APKBUILD45
-rw-r--r--community/klettres/APKBUILD27
-rw-r--r--community/klickety/APKBUILD31
-rw-r--r--community/klines/APKBUILD29
-rw-r--r--community/kmag/APKBUILD16
-rw-r--r--community/kmail-account-wizard/APKBUILD41
-rw-r--r--community/kmail/APKBUILD73
-rw-r--r--community/kmailtransport/APKBUILD25
-rw-r--r--community/kmbox/APKBUILD11
-rw-r--r--community/kmenuedit/APKBUILD31
-rw-r--r--community/kmime/APKBUILD17
-rw-r--r--community/kmix/APKBUILD8
-rw-r--r--community/kmousetool/APKBUILD23
-rw-r--r--community/kmouth/APKBUILD30
-rw-r--r--community/kmplot/APKBUILD26
-rw-r--r--community/knavalbattle/APKBUILD27
-rw-r--r--community/knetwalk/APKBUILD30
-rw-r--r--community/knewstuff/APKBUILD70
-rw-r--r--community/knewstuff5/APKBUILD4
-rw-r--r--community/knights/APKBUILD30
-rw-r--r--community/knotes/APKBUILD54
-rw-r--r--community/knotifications/APKBUILD51
-rw-r--r--community/knotifications5/APKBUILD4
-rw-r--r--community/knotifyconfig/APKBUILD (renamed from community/kross/APKBUILD)34
-rw-r--r--community/knotifyconfig5/APKBUILD4
-rw-r--r--community/koko/APKBUILD44
-rw-r--r--community/kolf/APKBUILD35
-rw-r--r--community/kollision/APKBUILD27
-rw-r--r--community/kolourpaint/APKBUILD28
-rw-r--r--community/kompare/APKBUILD28
-rw-r--r--community/kongress/APKBUILD36
-rw-r--r--community/konqueror/APKBUILD43
-rw-r--r--community/konsole/APKBUILD63
-rw-r--r--community/kontact/APKBUILD24
-rw-r--r--community/kontactinterface/APKBUILD21
-rw-r--r--community/kontrast/APKBUILD30
-rw-r--r--community/konversation/APKBUILD55
-rw-r--r--community/kopeninghours/APKBUILD17
-rw-r--r--community/kopete/APKBUILD63
-rw-r--r--community/korganizer/APKBUILD57
-rw-r--r--community/kosmindoormap/APKBUILD19
-rw-r--r--community/kpackage/APKBUILD (renamed from community/kpackage5/APKBUILD)26
-rw-r--r--community/kparts/APKBUILD57
-rw-r--r--community/kparts5/APKBUILD4
-rw-r--r--community/kpat/APKBUILD38
-rw-r--r--community/kpeople/APKBUILD (renamed from community/kpeople5/APKBUILD)30
-rw-r--r--community/kpimtextedit/APKBUILD46
-rw-r--r--community/kpipewire/APKBUILD25
-rw-r--r--community/kpkpass/APKBUILD10
-rw-r--r--community/kplotting/APKBUILD (renamed from community/kplotting5/APKBUILD)15
-rw-r--r--community/kpmcore/APKBUILD23
-rw-r--r--community/kpty/APKBUILD (renamed from community/kpty5/APKBUILD)22
-rw-r--r--community/kpublictransport/APKBUILD21
-rw-r--r--community/kquickcharts/APKBUILD (renamed from community/kquickcharts5/APKBUILD)23
-rw-r--r--community/kquickimageeditor/APKBUILD12
-rw-r--r--community/krdc/APKBUILD38
-rw-r--r--community/krecorder/APKBUILD20
-rw-r--r--community/krfb/APKBUILD4
-rw-r--r--community/kruler/APKBUILD21
-rw-r--r--community/krunner/APKBUILD (renamed from community/krunner5/APKBUILD)33
-rw-r--r--community/ksanecore/APKBUILD11
-rw-r--r--community/kscreen/APKBUILD43
-rw-r--r--community/kscreenlocker/APKBUILD58
-rw-r--r--community/kscreenlocker/kde-fingerprint.pam15
-rw-r--r--community/kscreenlocker/kde-smartcard.pam15
-rw-r--r--community/kscreenlocker/kde.pam14
-rw-r--r--community/kservice/APKBUILD66
-rw-r--r--community/kservice5/APKBUILD4
-rw-r--r--community/ksmtp/APKBUILD22
-rw-r--r--community/ksshaskpass/APKBUILD22
-rw-r--r--community/kstatusnotifieritem/APKBUILD (renamed from community/kjsembed/APKBUILD)32
-rw-r--r--community/ksvg/APKBUILD50
-rw-r--r--community/ksystemlog/APKBUILD28
-rw-r--r--community/ksystemstats/APKBUILD23
-rw-r--r--community/kteatime/APKBUILD31
-rw-r--r--community/ktextaddons/APKBUILD25
-rw-r--r--community/ktexteditor/APKBUILD76
-rw-r--r--community/ktexteditor5/APKBUILD4
-rw-r--r--community/ktexttemplate/APKBUILD44
-rw-r--r--community/ktextwidgets/APKBUILD (renamed from community/ktextwidgets5/APKBUILD)31
-rw-r--r--community/ktimer/APKBUILD24
-rw-r--r--community/ktnef/APKBUILD14
-rw-r--r--community/ktorrent/APKBUILD4
-rw-r--r--community/ktouch/APKBUILD8
-rw-r--r--community/ktrip/APKBUILD23
-rw-r--r--community/kturtle/APKBUILD25
-rw-r--r--community/kunitconversion/APKBUILD (renamed from community/kunitconversion5/APKBUILD)17
-rw-r--r--community/kuserfeedback/APKBUILD16
-rw-r--r--community/kwallet-pam/APKBUILD11
-rw-r--r--community/kwallet/APKBUILD (renamed from community/kwallet5/APKBUILD)44
-rw-r--r--community/kwalletmanager/APKBUILD47
-rw-r--r--community/kwave/APKBUILD8
-rw-r--r--community/kwayland-integration/APKBUILD4
-rw-r--r--community/kwayland/APKBUILD (renamed from community/kwayland5/APKBUILD)27
-rw-r--r--community/kweather/APKBUILD37
-rw-r--r--community/kweathercore/APKBUILD22
-rw-r--r--community/kwidgetsaddons/APKBUILD (renamed from community/kwidgetsaddons5/APKBUILD)15
-rw-r--r--community/kwin/APKBUILD93
-rw-r--r--community/kwindowsystem/APKBUILD70
-rw-r--r--community/kwindowsystem5/APKBUILD4
-rw-r--r--community/kwordquiz/APKBUILD39
-rw-r--r--community/kwrited/APKBUILD23
-rw-r--r--community/kxmlgui/APKBUILD61
-rw-r--r--community/kxmlgui5/APKBUILD4
-rw-r--r--community/layer-shell-qt/APKBUILD12
-rw-r--r--community/libaccounts-qt/APKBUILD22
-rw-r--r--community/libgravatar/APKBUILD20
-rw-r--r--community/libkcddb/APKBUILD25
-rw-r--r--community/libkcompactdisc/APKBUILD16
-rw-r--r--community/libkdcraw/APKBUILD8
-rw-r--r--community/libkdegames/APKBUILD58
-rw-r--r--community/libkdepim/APKBUILD38
-rw-r--r--community/libkeduvocdocument/APKBUILD13
-rw-r--r--community/libkexiv2/APKBUILD7
-rw-r--r--community/libkgapi/APKBUILD28
-rw-r--r--community/libkipi/APKBUILD6
-rw-r--r--community/libkleo/APKBUILD24
-rw-r--r--community/libkmahjongg/APKBUILD23
-rw-r--r--community/libkomparediff2/APKBUILD21
-rw-r--r--community/libkomparediff25/APKBUILD48
-rw-r--r--community/libksane/APKBUILD17
-rw-r--r--community/libkscreen/APKBUILD25
-rw-r--r--community/libksieve/APKBUILD28
-rw-r--r--community/libksysguard/APKBUILD42
-rw-r--r--community/libktorrent/APKBUILD21
-rw-r--r--community/libplasma/APKBUILD82
-rw-r--r--community/libqaccessibilityclient/APKBUILD13
-rw-r--r--community/lokalize/APKBUILD11
-rw-r--r--community/mailcommon/APKBUILD68
-rw-r--r--community/mailimporter/APKBUILD18
-rw-r--r--community/marble/APKBUILD12
-rw-r--r--community/merkuro/APKBUILD48
-rw-r--r--community/messagelib/APKBUILD96
-rw-r--r--community/milou/APKBUILD28
-rw-r--r--community/mimetreeparser/APKBUILD58
-rw-r--r--community/minuet/APKBUILD26
-rw-r--r--community/modemmanager-qt/APKBUILD (renamed from community/modemmanager-qt5/APKBUILD)13
-rw-r--r--community/neochat/APKBUILD59
-rw-r--r--community/networkmanager-qt/APKBUILD (renamed from community/networkmanager-qt5/APKBUILD)14
-rw-r--r--community/ocean-sound-theme/APKBUILD37
-rw-r--r--community/okular/APKBUILD59
-rw-r--r--community/oxygen-sounds/APKBUILD8
-rw-r--r--community/oxygen/APKBUILD33
-rw-r--r--community/parley/APKBUILD38
-rw-r--r--community/partitionmanager/APKBUILD32
-rw-r--r--community/phonon-backend-vlc/APKBUILD55
-rw-r--r--community/phonon/APKBUILD5
-rw-r--r--community/pimcommon/APKBUILD51
-rw-r--r--community/plank-player/APKBUILD51
-rw-r--r--community/plasma-activities-stats/APKBUILD (renamed from community/kactivities-stats5/APKBUILD)29
-rw-r--r--community/plasma-activities/APKBUILD (renamed from community/kactivities5/APKBUILD)37
-rw-r--r--community/plasma-bigscreen/APKBUILD70
-rw-r--r--community/plasma-browser-integration/APKBUILD31
-rw-r--r--community/plasma-desktop-meta/APKBUILD25
-rw-r--r--community/plasma-desktop/APKBUILD76
-rw-r--r--community/plasma-disks/APKBUILD33
-rw-r--r--community/plasma-firewall/APKBUILD30
-rw-r--r--community/plasma-framework5/APKBUILD78
-rw-r--r--community/plasma-integration/APKBUILD44
-rw-r--r--community/plasma-mobile/APKBUILD71
-rw-r--r--community/plasma-nano/APKBUILD20
-rw-r--r--community/plasma-nm/APKBUILD63
-rw-r--r--community/plasma-pa/APKBUILD37
-rw-r--r--community/plasma-remotecontrollers/APKBUILD68
-rw-r--r--community/plasma-remotecontrollers/uinput.conf1
-rw-r--r--community/plasma-sdk/APKBUILD56
-rw-r--r--community/plasma-systemmonitor/APKBUILD33
-rw-r--r--community/plasma-thunderbolt/APKBUILD34
-rw-r--r--community/plasma-vault/APKBUILD34
-rw-r--r--community/plasma-wayland-protocols/APKBUILD9
-rw-r--r--community/plasma-welcome/APKBUILD47
-rw-r--r--community/plasma-workspace-wallpapers/APKBUILD10
-rw-r--r--community/plasma-workspace/APKBUILD128
-rw-r--r--community/plasma-workspace/sddm.conf3
-rw-r--r--community/plasma5support/APKBUILD (renamed from community/kgamma5/APKBUILD)36
-rw-r--r--community/plasmatube/APKBUILD28
-rw-r--r--community/plymouth-kcm/APKBUILD27
-rw-r--r--community/polkit-kde-agent-1/APKBUILD27
-rw-r--r--community/polkit-qt/APKBUILD15
-rw-r--r--community/poppler-qt5/APKBUILD95
-rw-r--r--community/powerdevil/APKBUILD51
-rw-r--r--community/poxml/APKBUILD14
-rw-r--r--community/print-manager/APKBUILD42
-rw-r--r--community/prison/APKBUILD (renamed from community/prison5/APKBUILD)21
-rw-r--r--community/pulseaudio-qt/APKBUILD15
-rw-r--r--community/purpose/APKBUILD (renamed from community/purpose5/APKBUILD)29
-rw-r--r--community/qmlkonsole/APKBUILD23
-rw-r--r--community/qqc2-breeze-style/APKBUILD28
-rw-r--r--community/qqc2-desktop-style/APKBUILD (renamed from community/qqc2-desktop-style5/APKBUILD)31
-rw-r--r--community/rocs/APKBUILD6
-rw-r--r--community/sddm-kcm/APKBUILD37
-rw-r--r--community/sddm/APKBUILD25
-rw-r--r--community/signon-plugin-oauth2/APKBUILD20
-rw-r--r--community/signon-ui/APKBUILD18
-rw-r--r--community/signond/APKBUILD19
-rw-r--r--community/skanlite/APKBUILD18
-rw-r--r--community/solid/APKBUILD (renamed from community/solid5/APKBUILD)23
-rw-r--r--community/sonnet/APKBUILD (renamed from community/sonnet5/APKBUILD)19
-rw-r--r--community/spectacle/APKBUILD41
-rw-r--r--community/step/APKBUILD27
-rw-r--r--community/sweeper/APKBUILD30
-rw-r--r--community/syndication/APKBUILD (renamed from community/syndication5/APKBUILD)17
-rw-r--r--community/syntax-highlighting/APKBUILD (renamed from community/syntax-highlighting5/APKBUILD)22
-rw-r--r--community/systemsettings/APKBUILD52
-rw-r--r--community/telly-skout/APKBUILD27
-rw-r--r--community/threadweaver/APKBUILD (renamed from community/oxygen-icons5/APKBUILD)28
-rw-r--r--community/threadweaver5/APKBUILD4
-rw-r--r--community/tokodon/APKBUILD40
-rw-r--r--community/umbrello/APKBUILD8
-rw-r--r--community/wacomtablet/APKBUILD50
-rw-r--r--community/xdg-desktop-portal-kde/APKBUILD21
-rw-r--r--community/xdg-utils/APKBUILD10
-rw-r--r--community/yakuake/APKBUILD44
-rw-r--r--community/zanshin/APKBUILD18
-rw-r--r--testing/ksirk/APKBUILD34
421 files changed, 6733 insertions, 14418 deletions
diff --git a/community/accounts-qml-module/APKBUILD b/community/accounts-qml-module/APKBUILD
index 596b06f3ed8..d6c3d36cf07 100644
--- a/community/accounts-qml-module/APKBUILD
+++ b/community/accounts-qml-module/APKBUILD
@@ -1,21 +1,30 @@
# Contributor: Bart Ribbers <bribbers@disroot.org>
# Maintainer: Bart Ribbers <bribbers@disroot.org>
pkgname=accounts-qml-module
-pkgver=0.7_git20190605
-pkgrel=3
-_commit="69e17dec5add40655cd9334ec7ad4eef13fed8a4"
+pkgver=0.7_git20231028
+pkgrel=0
+_commit="05e79ebbbf3784a87f72b7be571070125c10dfe3"
arch="all"
url="https://gitlab.com/accounts-sso/accounts-qml-module"
pkgdesc="QML bindings for libaccounts-qt + libsignon-qt"
license="LGPL-2.1-only"
-makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qttools-dev libaccounts-qt-dev signond-dev"
-checkdepends="xvfb-run dbus-test-runner"
+makedepends="
+ libaccounts-qt-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qttools-dev
+ signond-dev
+ "
+checkdepends="
+ dbus-test-runner
+ xvfb-run
+ "
#source="https://gitlab.com/accounts-sso/accounts-qml-module/-/archive/VERSION_$pkgver/accounts-qml-module-VERSION_$pkgver.tar.gz"
-source="$pkgname-$_commit.tar.gz::https://gitlab.com/accounts-sso/accounts-qml-module/-/archive/$_commit.tar.gz"
+source="https://gitlab.com/accounts-sso/accounts-qml-module/-/archive/$_commit/accounts-qml-module-$_commit.tar.gz"
builddir="$srcdir/$pkgname-$_commit"
build() {
- qmake-qt5 \
+ /usr/lib/qt6/bin/qmake \
PREFIX=/usr \
LIBDIR=/usr/lib \
CONFIG+=no_docs
@@ -31,5 +40,5 @@ package() {
}
sha512sums="
-fd74f6e050d82586e04af1a29e6802c83559de0201f195c122b378051fcd86ecd02f057cbf1cfb1b9e42bcbbbb697e06d74df24ee32ef84cbff1b5d688db3802 accounts-qml-module-69e17dec5add40655cd9334ec7ad4eef13fed8a4.tar.gz
+439b596d130dee81d2f7e969962c75f51413ceb5ebb7807db229e593466c22d0c87e249515a233bd18c47bf1e58f5631ab30adf8849e71fa4f3d7bd29b6974de accounts-qml-module-05e79ebbbf3784a87f72b7be571070125c10dfe3.tar.gz
"
diff --git a/community/akonadi-calendar-tools/APKBUILD b/community/akonadi-calendar-tools/APKBUILD
index 616f0e178ac..3294c21e026 100644
--- a/community/akonadi-calendar-tools/APKBUILD
+++ b/community/akonadi-calendar-tools/APKBUILD
@@ -4,30 +4,29 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi-calendar-tools
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by akonadi-calendar -> kmailtransport -> libkgapi -> qt5-qtwebengine
+# ppc64le, s390x and riscv64 blocked by akonadi-calendar -> kmailtransport -> libkgapi -> qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kontact.kde.org/"
pkgdesc="CLI tools to manage akonadi calendars"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
akonadi-calendar-dev
- akonadi-dev>=$pkgver
+ akonadi-dev
calendarsupport-dev
extra-cmake-modules
- kcalendarcore5-dev
+ kcalendarcore-dev
kcalutils-dev
- kdoctools5-dev
+ kdoctools-dev
libkdepim-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi-calendar-tools.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-calendar-tools-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests available
build() {
cmake -B build -G Ninja \
@@ -46,5 +45,5 @@ package() {
}
sha512sums="
-9dccd51cf1004d639c0f02fc7e5ebed71093ca375a2895a301723762a073644b565930f9ee4cf663195db87370497b976ecf216dcf8c1d67bd00481f9e7a2082 akonadi-calendar-tools-23.08.5.tar.xz
+5dff1cdc929b59b2a7782d4fe0aae38e20de35b76c2622a68ef7280a5545db83afbd20c288eb966832710290d35f8bb5a94859bf3da76c8d7f9626008ab54d5e akonadi-calendar-tools-24.02.0.tar.xz
"
diff --git a/community/akonadi-calendar/APKBUILD b/community/akonadi-calendar/APKBUILD
index 52707cdcf62..054690a4bdb 100644
--- a/community/akonadi-calendar/APKBUILD
+++ b/community/akonadi-calendar/APKBUILD
@@ -4,28 +4,28 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi-calendar
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Akonadi calendar integration"
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by kmailtransport -> libkgapi -> qt5-qtwebengine
+# ppc64le, s390x and riscv64 blocked by kmailtransport -> libkgapi -> qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://community.kde.org/KDE_PIM"
license="LGPL-2.0-or-later"
depends_dev="
- akonadi-contacts-dev>=$pkgver
- akonadi-dev>=$pkgver
- kcalendarcore5-dev
+ akonadi-contacts-dev
+ akonadi-dev
+ kcalendarcore-dev
kcalutils-dev
- kcodecs5-dev
- kdbusaddons5-dev
- ki18n5-dev
- kiconthemes5-dev
+ kcodecs-dev
+ kdbusaddons-dev
+ ki18n-dev
+ kiconthemes-dev
kidentitymanagement-dev
- kio5-dev
+ kio-dev
kmailtransport-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
messagelib-dev
"
makedepends="$depends_dev
@@ -33,10 +33,9 @@ makedepends="$depends_dev
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi-calendar.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-calendar-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
-options="!check" # Broken
replaces="kalendar>1.0.0"
@@ -49,12 +48,12 @@ build() {
}
check() {
- xvfb-run ctest --test-dir build --output-on-failure
+ xvfb-run ctest --test-dir build --output-on-failure -E "kcalcoreserializertest"
}
package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-28b8bf932f800d2989863bdf169149ac1e5341ffb1255d836c2344968d22e16ecf44610696ccd00ce113293c77e594e96666056ec310d13d3e866b0e928d68fd akonadi-calendar-23.08.5.tar.xz
+0a2f205f2995ad61d5923abc2b245510824430209d18437f09b960374c66fc49fe5e185dfcef0f6fa72e3a6bee2b5b7c3dbf2403b26d260733e48cc3ee9c4a1a akonadi-calendar-24.02.0.tar.xz
"
diff --git a/community/akonadi-contacts/APKBUILD b/community/akonadi-contacts/APKBUILD
index 2c7d3cd759e..f5bc8fbf2b6 100644
--- a/community/akonadi-contacts/APKBUILD
+++ b/community/akonadi-contacts/APKBUILD
@@ -4,45 +4,47 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi-contacts
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Libraries and daemons to implement Contact Management in Akonadi"
# armhf blocked by extra-cmake-modules
# s390x and riscv64 blocked by akonadi
-# ppc64le blocked by qt5-qtwebengine -> akonadi
+# ppc64le blocked by qt6-qtwebengine -> akonadi
arch="all !armhf !s390x !riscv64 !ppc64le"
url="https://community.kde.org/KDE_PIM"
license="LGPL-2.0-or-later AND GPL-2.0-or-later AND BSD-3-Clause"
depends_dev="
- akonadi-dev>=$pkgver
+ akonadi-dev
gpgme-dev
grantlee-dev
grantleetheme-dev
- kcodecs5-dev
- kcompletion5-dev
- kconfig5-dev
- kcontacts5-dev
- kdbusaddons5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
+ kcodecs-dev
+ kcompletion-dev
+ kconfig-dev
+ kcontacts-dev
+ kdbusaddons-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
kmime-dev
- kservice5-dev
- ktextwidgets5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ kservice-dev
+ ktextaddons-dev
+ ktexttemplate-dev
+ ktextwidgets-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
libkleo-dev
- prison5-dev
- qt5-qtbase-dev
+ prison-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
extra-cmake-modules
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi-contacts.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-contacts-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -60,5 +62,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-d74eb885d8cfd748337fc7881c6e8bdb5dbd8dddd899fd7ca4e2dd88b3701ff2c0f1e29bd5dde0246b54fa40f6d719814087b898518bed73da264ee402cbb9ad akonadi-contacts-23.08.5.tar.xz
+ba4bcf6e3b47d21a01f25562b2f27d87ae82b289d2b4629cd5779b491da474f487b25b791bd8430c898c548dfed9752b9e05f9a80015cdc246845e03286f83b5 akonadi-contacts-24.02.0.tar.xz
"
diff --git a/community/akonadi-import-wizard/APKBUILD b/community/akonadi-import-wizard/APKBUILD
index 6855fac4bee..7d6d7f29d88 100644
--- a/community/akonadi-import-wizard/APKBUILD
+++ b/community/akonadi-import-wizard/APKBUILD
@@ -4,37 +4,37 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi-import-wizard
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by kmailtransport -> libkgapi -> qt5-qtwebengine
+# ppc64le, s390x and riscv64 blocked by kmailtransport -> libkgapi -> qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kontact.kde.org/"
pkgdesc="Import data from other mail clients to KMail"
license="GPL-2.0-or-later AND LGPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
- akonadi-dev>=$pkgver
+ akonadi-dev
extra-cmake-modules
- kauth5-dev
- kconfig5-dev
- kcontacts5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
+ kauth-dev
+ kconfig-dev
+ kcontacts-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
kidentitymanagement-dev
- kio5-dev
+ kio-dev
kmailtransport-dev
- kwallet5-dev
+ kwallet-dev
libkdepim-dev
mailcommon-dev
messagelib-dev
pimcommon-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi-import-wizard.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-import-wizard-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -53,5 +53,5 @@ package() {
}
sha512sums="
-6fcc714eae5093352a4476938fe7f08698dc712b07d5276a8c491ae367b9cb3dad3f0ba6823696c8902dd665dcebaf64e1754ec85f11a6475df9c6b77cea7eba akonadi-import-wizard-23.08.5.tar.xz
+86eefbd4766b9be56932880f54db25fe61f0133385e12c09c5904d6cce09ec2ea138f3fb547d58ed156ade40f6bad77db63eb1879afc04de6b0c74149c2b06ff akonadi-import-wizard-24.02.0.tar.xz
"
diff --git a/community/akonadi-mime/APKBUILD b/community/akonadi-mime/APKBUILD
index 8f53c07e2d3..aad490b5e0d 100644
--- a/community/akonadi-mime/APKBUILD
+++ b/community/akonadi-mime/APKBUILD
@@ -4,36 +4,36 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi-mime
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Libraries and daemons to implement basic email handling"
# armhf blocked by extra-cmake-modules
# s390x and riscv64 blocked by akonadi
-# ppc64le blocked by qt5-qtwebengine -> kaccounts-integration
+# ppc64le blocked by qt6-qtwebengine -> kaccounts-integration
arch="all !armhf !s390x !riscv64 !ppc64le"
url="https://community.kde.org/KDE_PIM"
license="LGPL-2.0-or-later"
depends_dev="
- akonadi-dev>=$pkgver
- kcodecs5-dev
- kconfigwidgets5-dev
- kdbusaddons5-dev
- ki18n5-dev
- kio5-dev
- kitemmodels5-dev
+ akonadi-dev
+ kcodecs-dev
+ kconfigwidgets-dev
+ kdbusaddons-dev
+ ki18n-dev
+ kio-dev
+ kitemmodels-dev
kmime-dev
- kxmlgui5-dev
+ kxmlgui-dev
libxslt-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
shared-mime-info
"
makedepends="$depends_dev
extra-cmake-modules
samurai
"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi-mime.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-mime-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -52,5 +52,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-d18d94e8359f734f9b3a1f5beb2c3bd5d23e956c283a3f06252a2c0080e097273c684fc1518611c624890b95afd4fa766843830e506d45c0b1ad1820bcd32619 akonadi-mime-23.08.5.tar.xz
+7e82a9a46ce3d7be248ce12fd554ca75462fe673ffeb396e3800ff30a44bd6e3f8e1b2ae87ad7bba883c7a7dedc2371c010471769452c1587fd02940ffeab0a5 akonadi-mime-24.02.0.tar.xz
"
diff --git a/community/akonadi-notes/APKBUILD b/community/akonadi-notes/APKBUILD
index c136248ea77..6134c2d2e69 100644
--- a/community/akonadi-notes/APKBUILD
+++ b/community/akonadi-notes/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi-notes
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Libraries and daemons to implement management of notes"
# armhf blocked by extra-cmake-modules
@@ -12,17 +12,17 @@ arch="all !armhf"
url="https://community.kde.org/KDE_PIM"
license="LGPL-2.0-or-later"
depends_dev="
- ki18n5-dev
+ ki18n-dev
kmime-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
extra-cmake-modules
samurai
"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi-notes.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-notes-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -41,5 +41,5 @@ package() {
}
sha512sums="
-d2019ec24e1e9e306e7c449898cc3bb07edf30dbd611efd1f8ed987e9bc44bfa0116e4974fb860d7212052f6b153513d2d4ce53492c078e7599c509ae05c6a50 akonadi-notes-23.08.5.tar.xz
+0bcf3bc02d8c8470d5390f5b0408f6721ba584a82bf367d93a44d93a731f3fb764e669906263b5f8d71c202d18e66bc55175c91d551c349740e94c3a76e879c5 akonadi-notes-24.02.0.tar.xz
"
diff --git a/community/akonadi-search/APKBUILD b/community/akonadi-search/APKBUILD
index dfba79d211f..4d0c6d82778 100644
--- a/community/akonadi-search/APKBUILD
+++ b/community/akonadi-search/APKBUILD
@@ -4,46 +4,52 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi-search
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Libraries and daemons to implement searching in Akonadi"
# armhf blocked by extra-cmake-modules
# riscv64 blocked by akonadi
# s390x blocked by multiple KDE Frameworks
-# ppc64le blocked by qt5-qtwebengine -> akonadi
+# ppc64le blocked by qt6-qtwebengine -> akonadi
arch="all !armhf !s390x !riscv64 !ppc64le"
url="https://community.kde.org/KDE_PIM"
license="( GPL-2.0-only OR GPL-3.0-only ) AND ( LGPL-2.1-only OR LGPL-3.0-only )"
depends_dev="
- akonadi-dev>=$pkgver
- akonadi-mime-dev>=$pkgver
- kcalendarcore5-dev
- kcmutils5-dev
- kconfig5-dev
- kcontacts5-dev
- kcrash5-dev
- kdbusaddons5-dev
- ki18n5-dev
- kio5-dev
+ akonadi-dev
+ akonadi-mime-dev
+ corrosion
+ kcalendarcore-dev
+ kcmutils-dev
+ kconfig-dev
+ kcontacts-dev
+ kcrash-dev
+ kdbusaddons-dev
+ ki18n-dev
+ kio-dev
kmime-dev
- krunner5-dev
- qt5-qtbase-dev
+ krunner-dev
+ ktextaddons-dev
+ qt6-qtbase-dev
xapian-core-dev
"
makedepends="$depends_dev
+ doxygen
extra-cmake-modules
+ graphviz
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi-search.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-search-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
+options="net" # Required to download Rust crates
build() {
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_QCH=ON
cmake --build build
}
@@ -72,5 +78,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-e2d6321401eaa1b017061ef90cac080ba06be62868cdbdf65d449eb3e568d2223d7a60ffbe7b7c48c04cfc5e5c8a0cb6d243e4fd0967e575f36e6ae52405f57e akonadi-search-23.08.5.tar.xz
+e677458c8351135000f779f9f7aa6378eec739d4966bd3527a0bd14fba1aeb7ebff666e597a33f13cc4cbe258a778c1a8adf6532e8d4fe7c63cadc06382df2b1 akonadi-search-24.02.0.tar.xz
"
diff --git a/community/akonadi/APKBUILD b/community/akonadi/APKBUILD
index 6932af7e2ac..5dc5ca3a657 100644
--- a/community/akonadi/APKBUILD
+++ b/community/akonadi/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadi
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="A cross-desktop storage service for PIM data and meta data providing concurrent read, write, and query access"
# armhf blocked by extra-cmake-modules
@@ -14,44 +14,42 @@ url="https://community.kde.org/KDE_PIM"
license="LGPL-2.0-or-later"
depends="
mariadb
- qt5-qtbase-mysql
- qt5-qtbase-sqlite
+ qt6-qtbase-mysql
+ qt6-qtbase-sqlite
"
depends_dev="
boost-dev
- kaccounts-integration-dev
- kcompletion5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
- kitemmodels5-dev
- kitemviews5-dev
- kwidgetsaddons5-dev
- kwindowsystem5-dev
- kxmlgui5-dev
- libaccounts-qt-dev
+ kcompletion-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ kitemmodels-dev
+ kitemviews-dev
+ kwidgetsaddons-dev
+ kwindowsystem-dev
+ kxmlgui-dev
libxml2-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
shared-mime-info
sqlite-dev
"
makedepends="$depends_dev
extra-cmake-modules
- qt5-qttools-dev
+ qt6-qttools-dev
samurai
"
checkdepends="
cmd:dbus-run-session
xvfb-run
"
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akonadi.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-$pkgver.tar.xz"
-subpackages="$pkgname-dbg $pkgname-dev $pkgname-lang"
build() {
# make -dbg smaller
@@ -98,5 +96,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-3c1e851b519d8808b7be95b980d362eb525ec61ed06122be3795ba6b6a831aa80c77d799608686a49716a98a8bb9300e70f1c82cfe1de061cdc0af5ad9f30247 akonadi-23.08.5.tar.xz
+89f4b9030fd1d87a3928eec43967b47508a0dbf8d14877d370f1b1d77a86297339b2b23530b8c29b0bbcc672a5dcfffbfe32671876ea9e843466ec3d79b2e408 akonadi-24.02.0.tar.xz
"
diff --git a/community/akonadiconsole/APKBUILD b/community/akonadiconsole/APKBUILD
index 82b84a8b467..ba290f150bc 100644
--- a/community/akonadiconsole/APKBUILD
+++ b/community/akonadiconsole/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akonadiconsole
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# s390x, ppc64le and riscv64 blocked by akonadi
@@ -19,26 +19,26 @@ makedepends="
akonadi-search-dev
calendarsupport-dev
extra-cmake-modules
- kcalendarcore5-dev
- kcompletion5-dev
- kcompletion5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcontacts5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- kitemmodels5-dev
- kitemviews5-dev
+ kcalendarcore-dev
+ kcompletion-dev
+ kcompletion-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcontacts-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ kitemmodels-dev
+ kitemviews-dev
kmime-dev
- ktextwidgets5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ ktextwidgets-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
libkdepim-dev
messagelib-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
xapian-bindings
"
@@ -63,5 +63,5 @@ package() {
}
sha512sums="
-79071e18b0aed574c67b96cdcdc1ce3914ad67fc1e7e87dc77f9cd6396b210034cdc917393fadb918b90ad89bb2326586002fcf711e0432991e59d05bfde8a06 akonadiconsole-23.08.5.tar.xz
+447074e9f2c9676dc2fcfa1c3feab3c80cd7270fd739aeebf8ea188274d89d9cd47c67c50e5079ce9657207d499681f99393dc8a8bcc4934586d2b6e5a7cc9eb akonadiconsole-24.02.0.tar.xz
"
diff --git a/community/akregator/APKBUILD b/community/akregator/APKBUILD
index 4e285c8a582..01e7cb8f506 100644
--- a/community/akregator/APKBUILD
+++ b/community/akregator/APKBUILD
@@ -4,10 +4,10 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=akregator
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://apps.kde.org/akregator/"
pkgdesc="RSS Feed Reader"
@@ -17,30 +17,32 @@ makedepends="
extra-cmake-modules
grantlee-dev
grantleetheme-dev
- kcmutils5-dev
- kcrash5-dev
- kdoctools5-dev
- kiconthemes5-dev
- knotifications5-dev
- knotifyconfig5-dev
+ kcmutils-dev
+ kcrash-dev
+ kdoctools-dev
+ kiconthemes-dev
+ knotifications-dev
+ knotifyconfig-dev
kontactinterface-dev
- kparts5-dev
+ kparts-dev
kpimtextedit-dev
- ktexteditor5-dev
- kxmlgui5-dev
+ kstatusnotifieritem-dev
+ ktextaddons-dev
+ ktexteditor-dev
+ kxmlgui-dev
libkdepim-dev
libkleo-dev
messagelib-dev
pimcommon-dev
- qt5-qtbase-dev
- qt5-qtwebengine-dev
+ qt6-qtbase-dev
+ qt6-qtwebengine-dev
samurai
- syndication5-dev
+ syndication-dev
"
checkdepends="xvfb-run"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/akregator.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/akregator-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -59,5 +61,5 @@ package() {
}
sha512sums="
-5ad1779827d5117d4ee167a02ce77044b9370dde40f2923e52eb85fa33e761f78665644a3a0f5f4cbdb733226127e4db7b2014220b0faee7ca5bd920adb567ed akregator-23.08.5.tar.xz
+35beee60177a943074a53505406588da720c3732f8a1875fcd3f8841208205ac8badb29f8420c38808f81a33a1dc22f3cafc5b2803c427419a77650c6724e47c akregator-24.02.0.tar.xz
"
diff --git a/community/alligator/APKBUILD b/community/alligator/APKBUILD
index 203633b8237..7684091d5c1 100644
--- a/community/alligator/APKBUILD
+++ b/community/alligator/APKBUILD
@@ -3,7 +3,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=alligator
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="A convergent RSS/Atom feed reader"
url="https://invent.kde.org/plasma-mobile/alligator/"
@@ -12,23 +12,24 @@ arch="all !armhf"
license="GPL-2.0-only OR GPL-3.0-only"
depends="
kirigami-addons
- kirigami2
- qt5-qtbase-sqlite
+ kirigami
+ qt6-qtbase-sqlite
"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kcoreaddons5-dev
- ki18n5-dev
+ kconfig-dev
+ kcoreaddons-dev
+ ki18n-dev
kirigami-addons-dev
- qt5-qtbase-dev
- qt5-qtquickcontrols2-dev
+ qt6-qtbase-dev
+
samurai
- syndication5-dev
+ syndication-dev
"
_repo_url="https://invent.kde.org/network/alligator.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/alligator-$pkgver.tar.xz"
-options="!check" # No tests
+# No tests
+
build() {
cmake -B build -G Ninja \
@@ -43,5 +44,5 @@ package() {
}
sha512sums="
-1daa2d9d0be0df379770011e3fc521235e1b7dfe7c68f20a8e573e813e2acd50b543c0d9cf5b4e608b1b3f6f06fce14fe3312fae9d054904af314db1953891ce alligator-23.08.5.tar.xz
+a9fa7ccaed793a82ce3c45020d14156da4cf636d936991d3915b6cfff39974f9769c0699faccf9d7b681f4a7553901165e190b0aec80ebe6175c4f5494044bb9 alligator-24.02.0.tar.xz
"
diff --git a/community/analitza/APKBUILD b/community/analitza/APKBUILD
index 2c909f1e79b..eb2dd67bb8a 100644
--- a/community/analitza/APKBUILD
+++ b/community/analitza/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=analitza
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,19 +13,20 @@ pkgdesc="A library to add mathematical features to your program"
license="GPL-2.0-or-later AND GFDL-1.2-only"
depends_dev="
eigen-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtsvg-dev
- qt5-qttools-dev
+ qt6-qt5compat-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtsvg-dev
+ qt6-qttools-dev
"
makedepends="$depends_dev
extra-cmake-modules
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/education/analitza.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/analitza-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -44,5 +45,5 @@ package() {
}
sha512sums="
-6b16a903e1a0579e16dc50b41ba64ea8da47ad7c09faf362c683e8f5b63881c407855c1cd02d8dca231be8387f23a780676315209faf63149b1d3c7c66cd2fcb analitza-23.08.5.tar.xz
+8071110418455a28529abe0eb72e92274e3193cef85d442fb947ce4d36b3c23b4d21e453a16e8c75b2df522b2b9bec0435c53d896d8ef0bed97769d4d0e31487 analitza-24.02.0.tar.xz
"
diff --git a/community/angelfish/APKBUILD b/community/angelfish/APKBUILD
index 67be858cbd0..c944e722f25 100644
--- a/community/angelfish/APKBUILD
+++ b/community/angelfish/APKBUILD
@@ -4,38 +4,34 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=angelfish
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Small Webbrowser for Plasma Mobile"
# armhf blocked by extra-cmake-modules
-# ppc64le and s390x blocked by qt5-qtwebengine
+# ppc64le and s390x blocked by qt6-qtwebengine
# riscv64 disabled due to missing rust in recursive dependency
arch="all !ppc64le !s390x !armhf !riscv64"
url="https://phabricator.kde.org/source/plasma-angelfish/"
license="GPL-3.0-or-later"
depends="
kirigami-addons
- kirigami2
- plasma-framework5
- purpose5
- qt5-qtbase-sqlite
- qt5-qtfeedback
- qt5-qtquickcontrols2
+ kirigami
+ purpose
+ qt6-qtbase-sqlite
"
makedepends="
corrosion
extra-cmake-modules
futuresql-dev
- kdeclarative5-dev
- ki18n5-dev
- kio5-dev
+ kdeclarative-dev
+ ki18n-dev
+ kio-dev
kirigami-addons-dev
- kirigami2-dev
- plasma-framework5-dev
- purpose5-dev
- qqc2-desktop-style5-dev
- qt5-qtfeedback-dev
- qt5-qtwebengine-dev
+ kirigami-dev
+ libplasma-dev
+ purpose-dev
+ qqc2-desktop-style-dev
+ qt6-qtwebengine-dev
samurai
"
subpackages="$pkgname-lang"
@@ -64,5 +60,5 @@ package() {
}
sha512sums="
-1bdcbc879c194a7d7a918fa4110a34f4d36c352a2c996637dc5912d1f91287fcd6b819f9a6387e729b10fed173431b80fd146974851b7039ecd86737121d2518 angelfish-23.08.5.tar.xz
+2106210548fef1fae1c4670c45bebeb8c6ea2c7a03eb20f63bc4e6f9977ad296da7967e6709dda454ca120726b6bae46045790415ee7d8a5b9913d2ccc514d23 angelfish-24.02.0.tar.xz
"
diff --git a/community/arianna/APKBUILD b/community/arianna/APKBUILD
index 11a32d0a1f3..a07e2fadb6d 100644
--- a/community/arianna/APKBUILD
+++ b/community/arianna/APKBUILD
@@ -4,43 +4,43 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=arianna
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="EPub Reader for mobile devices"
url="https://invent.kde.org/graphics/arianna/"
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
license="(BSD-2-Clause OR BSD-3-Clause) AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.0-or-later OR LGPL-2.1-or-later OR LGPL-3.0-or-later)"
depends="
kirigami-addons
- kirigami2
+ kirigami
"
makedepends="
+ baloo-dev
extra-cmake-modules
- baloo5-dev
- karchive5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kdbusaddons5-dev
- kfilemetadata5-dev
- ki18n5-dev
+ karchive-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kdbusaddons-dev
+ kfilemetadata-dev
+ ki18n-dev
kirigami-addons-dev
- kirigami2-dev
- kwindowsystem5-dev
- qqc2-desktop-style5-dev
- qt5-qtbase-dev
- qt5-qtquickcontrols2-dev
- qt5-qtsvg-dev
- qt5-qtwebengine-dev
- qt5-qtwebsockets-dev
- qt5-qtxmlpatterns-dev
+ kirigami-dev
+ kwindowsystem-dev
+ qqc2-desktop-style-dev
+ qt6-qtbase-dev
+ qt6-qthttpserver-dev
+ qt6-qtsvg-dev
+ qt6-qtwebengine-dev
+ qt6-qtwebsockets-dev
samurai
"
subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/graphics/arianna.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/arianna-$pkgver.tar.xz"
-options="!check" # No tests
+# No tests
+options="!check"
build() {
cmake -B build -G Ninja \
@@ -55,5 +55,5 @@ package() {
}
sha512sums="
-5291ee5c150e83a8dd7a569bf7377d4b15e642119d58668ccf03543b3b3dece7acf6e9dc9bd386f9047e880c0c4471184fcec090f71218ba8a7a3ed940bba4ac arianna-23.08.5.tar.xz
+28ccc666d869a3adee441f906382b42a40286616df8d1acf86fbbe367fbf195dd8056fea563eb891620398a68a1fbfb8cc9fc947d391d54616a8ed81338e7d6a arianna-24.02.0.tar.xz
"
diff --git a/community/ark/APKBUILD b/community/ark/APKBUILD
index db7ffd468ae..ab518bd7c22 100644
--- a/community/ark/APKBUILD
+++ b/community/ark/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=ark
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Graphical file compression/decompression utility with support for multiple formats"
# armhf blocked by extra-cmake-modules
@@ -20,30 +20,31 @@ depends="
"
makedepends="
extra-cmake-modules
- karchive5-dev
- kconfig5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
- kitemmodels5-dev
- kparts5-dev
- kpty5-dev
- kservice5-dev
- kwidgetsaddons5-dev
+ karchive-dev
+ kconfig-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ kfilemetadata-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ kitemmodels-dev
+ kparts-dev
+ kpty-dev
+ kservice-dev
+ kwidgetsaddons-dev
libarchive-dev
libzip-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
shared-mime-info
xz-dev
"
checkdepends="xvfb-run"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/utilities/ark.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/ark-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
# secfixes:
# 20.08.0-r1:
@@ -60,13 +61,12 @@ build() {
}
check() {
- cd build
- CTEST_OUTPUT_ON_FAILURE=TRUE xvfb-run -a ctest -E 'kerfuffle-mimetypetest'
+ xvfb-run ctest --test-dir build --output-on-failure -E "app-batchextracttest"
}
package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-8fab4281f5cfe34938f7a958e2889ad4dabff6613b1e3a8fed1efb2039dbf35a71d99494869037fd821515ecfba6e44304bb0907c27afd646fe7496783735336 ark-23.08.5.tar.xz
+9f1018b950078aa0c3d3017fb435e20ce413d077a9dca3fb801176eaf2b70441f708c1cee20d48d1347ad6d1be028df0f1506cb2f32f3dfe1a3c94659c2d1b54 ark-24.02.0.tar.xz
"
diff --git a/community/artikulate/APKBUILD b/community/artikulate/APKBUILD
index 731d6938110..e854213028f 100644
--- a/community/artikulate/APKBUILD
+++ b/community/artikulate/APKBUILD
@@ -4,9 +4,9 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=artikulate
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by extra-cmake-modules
arch="all !armhf"
url="https://edu.kde.org/artikulate"
pkgdesc="Improve your pronunciation by listening to native speakers"
@@ -28,9 +28,9 @@ makedepends="
qt5-qtxmlpatterns-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/education/artikulate.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/artikulate-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -49,5 +49,5 @@ package() {
}
sha512sums="
-513e9afa67f0a73aaea36a0d501bc7e1216ad6c697ca9438a615f5ac953758d4e69a8ade05a4a25544bfcadcde17b7f14194331663cd7aaf9a3648770833a8ca artikulate-23.08.5.tar.xz
+5b60ca05a09ea656fe1fddfb7ea5e036107c920ad361b1e29fff4c539e243a488d50a0f8f18ef7cc668d05d8c5e3acd916864f333ff88ca1a50fb4549f57f10e artikulate-24.02.0.tar.xz
"
diff --git a/community/attica5/APKBUILD b/community/attica/APKBUILD
index 55529cc5c87..3acd3210133 100644
--- a/community/attica5/APKBUILD
+++ b/community/attica/APKBUILD
@@ -3,8 +3,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=attica5
-pkgver=5.115.0
+pkgname=attica
+pkgver=6.0.0
pkgrel=0
pkgdesc="Freedesktop OCS binding for Qt"
url="https://www.kde.org/"
@@ -13,16 +13,13 @@ license="LGPL-2.0-or-later"
makedepends="
doxygen
extra-cmake-modules
- qt5-qtbase-dev
- qt5-qttools-dev
+ qt6-qtbase-dev
+ qt6-qttools-dev
samurai
"
subpackages="$pkgname-dev $pkgname-doc"
_repo_url="https://invent.kde.org/frameworks/attica.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/attica-$pkgver.tar.xz"
-builddir="$srcdir/attica-$pkgver"
-
-replaces="attica<=5.110.0-r0"
build() {
cmake -B build -G Ninja \
@@ -43,5 +40,5 @@ package() {
}
sha512sums="
-9d530ae6425b0edf7831fa9aa25573da66c8813fbf7776c6d300445c54ec175e91b6c4abbfc6f4985a0f003b41c5e3218ca560466a6b0fc3177d3951151e6cab attica-5.115.0.tar.xz
+4f164a3d3826cec2a85f949f9816e8e3422375c382c68fedbe060f136c2514a3b1bd328082cb44b35b3f1933e70635ba975a64d5a261e7c8fc7fbd5db5e88f93 attica-6.0.0.tar.xz
"
diff --git a/community/audiocd-kio/APKBUILD b/community/audiocd-kio/APKBUILD
index 7b99b2c72ee..bf3e1fd05d7 100644
--- a/community/audiocd-kio/APKBUILD
+++ b/community/audiocd-kio/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=audiocd-kio
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -15,21 +15,20 @@ makedepends="
cdparanoia-dev
extra-cmake-modules
flac-dev
- kcmutils5-dev
- kconfig5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
+ kcmutils-dev
+ kconfig-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
libkcddb-dev
libkcompactdisc-dev
libvorbis-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
"
_repo_url="https://invent.kde.org/multimedia/audiocd-kio.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/audiocd-kio-$pkgver.tar.xz"
subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -48,5 +47,5 @@ package() {
}
sha512sums="
-33f77983729251b208ed4e1cffd594781c3667d59ccbf07b272fd49bfa8049701965bb9e9b99089c981fcf4cc0bf47cd57ba758febf879592db5ed07636dc391 audiocd-kio-23.08.5.tar.xz
+d0de6eb3ac1708cb3548454c46e3a13460d9b0f19e87448efb40125302b84332b951fc56973879bcd5178730aece96761018b4bf3ee3da198e1ee31891a8a0f5 audiocd-kio-24.02.0.tar.xz
"
diff --git a/community/audiotube/APKBUILD b/community/audiotube/APKBUILD
index 5c1d4f5b6a2..da4859d4d8d 100644
--- a/community/audiotube/APKBUILD
+++ b/community/audiotube/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=audiotube
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Client for YouTube Music"
url="https://invent.kde.org/plasma-mobile/audiotube"
@@ -16,24 +16,26 @@ depends="
gst-plugins-bad
gst-plugins-good
kirigami-addons
- kirigami2
- purpose5
+ kirigami
+ purpose
py3-ytmusicapi
- qt5-qtbase-sqlite
- qt5-qtimageformats
- qt5-qtmultimedia
+ qt6-qtbase-sqlite
yt-dlp
"
makedepends="
extra-cmake-modules
futuresql-dev
- kcrash5-dev
- ki18n5-dev
+ kcrash-dev
+ ki18n-dev
kirigami-addons-dev
- kirigami2-dev
+ kirigami-dev
py3-pybind11-dev
python3-dev
- qt5-qtsvg-dev
+ qcoro-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtmultimedia-dev
+ qt6-qtsvg-dev
samurai
"
subpackages="$pkgname-lang"
@@ -43,6 +45,7 @@ options="!check" # No tests
build() {
cmake -B build -G Ninja \
+ -DBUILD_WITH_QT6=ON \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib
@@ -54,5 +57,5 @@ package() {
}
sha512sums="
-49f399ee6924e2c498e0e74cbb55587448899becd5afb84ff457413b2127427f466a0592960566b9771f60486ee5749ac5681bc7e3249a500e1bb4be594a6c7e audiotube-23.08.5.tar.xz
+aa2644498bb583b7985f1d279e2b9f1887fa029483d9736d1dcbd94eaf864a359d00f3bb9d74f00b0d4eb6f9fcbf7ddd55e03f372c3aa4e965ae96b2e43e4bcf audiotube-24.02.0.tar.xz
"
diff --git a/community/aura-browser/APKBUILD b/community/aura-browser/APKBUILD
deleted file mode 100644
index ec61bbd92ab..00000000000
--- a/community/aura-browser/APKBUILD
+++ /dev/null
@@ -1,52 +0,0 @@
-# Contributor: Bart Ribbers <bribbers@disroot.org>
-# Maintainer: team/kde <bribbers@disroot.org>
-
-# The group tag is just to easily find this APKBUILD by some scripts for automation
-# group=kde-plasma
-pkgname=aura-browser
-pkgver=5.27.10
-pkgrel=0
-pkgdesc="Browser for a fully immersed Big Screen experience allowing you to navigate the world wide web using just your remote control"
-url="https://invent.kde.org/plasma-bigscreen/aura-browser"
-# armhf blocked by extra-cmake-modules
-# s390x, ppc64le and riscv64 blocked by qt5-qtwebengine
-arch="all !armhf !s390x !ppc64le !riscv64"
-license="GPL-2.0-or-later"
-depends="
- kirigami2
- qt5-qtvirtualkeyboard
- "
-makedepends="
- extra-cmake-modules
- ki18n5-dev
- kirigami2-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtmultimedia-dev
- qt5-qtquickcontrols2-dev
- qt5-qtwebengine-dev
- samurai
- "
-case "$pkgver" in
- *.90*) _rel=unstable;;
- *) _rel=stable;;
-esac
-_repo_url="https://invent.kde.org/plasma/aura-browser.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/aura-browser-$pkgver.tar.xz"
-options="!check" # No tests
-
-build() {
- cmake -B build -G Ninja \
- -DCMAKE_BUILD_TYPE=MinSizeRel \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib
- cmake --build build
-}
-
-package() {
- DESTDIR="$pkgdir" cmake --install build
-}
-
-sha512sums="
-c1846fe126a8f753fc7ff29547d401ccdc8aeab304901a85d8233176fc02875e849f3c2050605eba9ba3dc8ca5ac75802b21748652571e119da68f19007f2531 aura-browser-5.27.10.tar.xz
-"
diff --git a/community/baloo-widgets/APKBUILD b/community/baloo-widgets/APKBUILD
index 038ef93f261..701c4904171 100644
--- a/community/baloo-widgets/APKBUILD
+++ b/community/baloo-widgets/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=baloo-widgets
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Widgets for Baloo"
# armhf blocked by extra-cmake-modules
@@ -12,24 +12,25 @@ arch="all !armhf"
url="https://community.kde.org/Baloo"
license="LGPL-2.0-only AND LGPL-2.1-or-later"
depends_dev="
- baloo5-dev
- kconfig5-dev
- kfilemetadata5-dev
- ki18n5-dev
- kio5-dev
- qt5-qtbase-dev
+ baloo-dev
+ kconfig-dev
+ kfilemetadata-dev
+ ki18n-dev
+ kio-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
extra-cmake-modules
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/libraries/baloo-widgets.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/baloo-widgets-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
+ -DBUILD_WITH_QT6=ON \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib
@@ -37,7 +38,6 @@ build() {
}
check() {
- cd build
# filemetadatadatedisplaytest, filemetadatawidgettest and filemetadataitemcounttest
# require running dbus server
local skipped_tests="("
@@ -49,12 +49,12 @@ check() {
skipped_tests="$skipped_tests|$test"
done
skipped_tests="$skipped_tests)|test"
- CTEST_OUTPUT_ON_FAILURE=TRUE xvfb-run ctest -E "$skipped_tests"
+ xvfb-run ctest --test-dir build --output-on-failure -E "$skipped_tests"
}
package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-8876c93dc119763bd6027cfcd0d122af5a308074743c75b1142a285882ce134f5c9ec9003f103fbd35b038865bba5ab14ab839e1b294834c027157c93e0476d5 baloo-widgets-23.08.5.tar.xz
+a0354bd7049a7ed00f524c604543b7b2096fea32b905f7ad577ff064d579a48b04485791b218a886f47e9ba92e4917032785188b1e2de893752ea74cf464e09c baloo-widgets-24.02.0.tar.xz
"
diff --git a/community/baloo5/APKBUILD b/community/baloo/APKBUILD
index c2228684fd5..0e51cfa0f73 100644
--- a/community/baloo5/APKBUILD
+++ b/community/baloo/APKBUILD
@@ -3,43 +3,41 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=baloo5
-pkgver=5.115.0
+pkgname=baloo
+pkgver=6.0.0
pkgrel=0
pkgdesc="A framework for searching and managing metadata"
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://community.kde.org/Frameworks"
license="LGPL-2.1-or-later AND ( LGPL-2.1-only OR LGPL-3.0-only )"
depends_dev="
- kbookmarks5-dev
- kcompletion5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kfilemetadata5-dev
- ki18n5-dev
- kidletime5-dev
- kio5-dev
- kjobwidgets5-dev
- kservice5-dev
+ kbookmarks-dev
+ kcompletion-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kfilemetadata-dev
+ ki18n-dev
+ kidletime-dev
+ kio-dev
+ kjobwidgets-dev
+ kservice-dev
lmdb-dev
- qt5-qtdeclarative-dev
- solid5-dev
+ qt6-qtdeclarative-dev
+ solid-dev
"
makedepends="$depends_dev
extra-cmake-modules
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/frameworks/baloo.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/baloo-$pkgver.tar.xz"
-subpackages="$pkgname-dbg $pkgname-dev $pkgname-lang"
-options="!check" # Tons of broken tests
-builddir="$srcdir/baloo-$pkgver"
-replaces="baloo<=5.110.0-r0"
+replaces="baloo5"
build() {
cmake -B build -G Ninja \
@@ -57,5 +55,5 @@ package() {
}
sha512sums="
-43130d873845a3d8f0a7a25b04a032e7cd834170b5f67b7b18396a800086801ce0910865dc7efc333dd0764121b65c8fddcec4e072af6503e0b1bc55c642f4d6 baloo-5.115.0.tar.xz
+a97af1302f55abf835e8d02b06a18bb767a7bcdeebeb528ff9368beee19e0f97d1ae177b5997e79547e2f9a64998f105b32038fada0c96e5c5a48517ad3c9774 baloo-6.0.0.tar.xz
"
diff --git a/community/blinken/APKBUILD b/community/blinken/APKBUILD
index 286ce5c5d29..cb6e18a38ba 100644
--- a/community/blinken/APKBUILD
+++ b/community/blinken/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=blinken
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# s390x blocked by kxmlgui
@@ -14,21 +14,20 @@ pkgdesc="Memory Enhancement Game"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- kguiaddons5-dev
- ki18n5-dev
- kxmlgui5-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ kguiaddons-dev
+ ki18n-dev
+ kxmlgui-dev
phonon-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
_repo_url="https://invent.kde.org/education/blinken.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/blinken-$pkgver.tar.xz"
subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -47,5 +46,5 @@ package() {
}
sha512sums="
-297f2116cf775a6d3bbf1cd4e8e515de5aa5be63a9e66a49fa43874d70ce3e09cb9e0062cf3a1450f14c47d018e65cb31e5f0c7d4a818204bb0d41eb7d8ea226 blinken-23.08.5.tar.xz
+05eaa9320b52e4a050df0e8a9de5cf87ce716c8b8e7bbf47bfcba3c5c9f1303f25c0c7e0725be8831814e8ce3d906c33ad1ff5d4cf9c3fb81921f84036cf758b blinken-24.02.0.tar.xz
"
diff --git a/community/bluedevil/APKBUILD b/community/bluedevil/APKBUILD
index 76505f7ac48..875f6bb65b9 100644
--- a/community/bluedevil/APKBUILD
+++ b/community/bluedevil/APKBUILD
@@ -4,35 +4,35 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=bluedevil
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
pkgdesc="Integrate the Bluetooth technology within KDE workspace and applications"
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://kde.org/plasma-desktop/"
license="GPL-2.0-or-later AND LGPL-2.0-or-later AND ( LGPL-2.1-only OR LGPL-3.0-only )"
depends="
bluez
- kded5
+ kded
obexd
"
makedepends="
- bluez-qt5-dev
+ bluez-qt-dev
extra-cmake-modules
- kcmutils5-dev
- kcoreaddons5-dev
- kdbusaddons5-dev
- kded5-dev
- kdoctools5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
- knotifications5-dev
- kwidgetsaddons5-dev
- kwindowsystem5-dev
- plasma-framework5-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
+ kcmutils-dev
+ kcoreaddons-dev
+ kdbusaddons-dev
+ kded-dev
+ kdoctools-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ knotifications-dev
+ kwidgetsaddons-dev
+ kwindowsystem-dev
+ libplasma-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
samurai
shared-mime-info
"
@@ -41,9 +41,9 @@ case "$pkgver" in
*.90*) _rel=unstable;;
*) _rel=stable;;
esac
-_repo_url="https://invent.kde.org/plasma/bluedevil.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/bluedevil-$pkgver.tar.xz"
subpackages="$pkgname-doc $pkgname-lang"
+_repo_url="https://invent.kde.org/plasma/bluedevil.git"
+source="https://download.kde.org/stable/plasma/$pkgver/bluedevil-$pkgver.tar.xz"
build() {
cmake -B build -G Ninja \
@@ -62,5 +62,5 @@ package() {
}
sha512sums="
-3ec9fc48b64da0bfe466169c4f53fe18ca70c614e5a3d47bdf06f77963c367a424557bb181a2c05c71a2edef6d62e9f5ab3cdec822a9f01cc828d07f7c0cd953 bluedevil-5.27.10.tar.xz
+997963bdb60faeebbd89142e6b70d7b7a4641c8929684f7e8c76d6878dd299a264f22d10755d8de4cf30f2b4709609f1f54f35f8ef52f301f21d1b51c72d5cdc bluedevil-6.0.0.tar.xz
"
diff --git a/community/bluez-qt5/APKBUILD b/community/bluez-qt/APKBUILD
index 93ac9e6bf2e..6cf697e2c8a 100644
--- a/community/bluez-qt5/APKBUILD
+++ b/community/bluez-qt/APKBUILD
@@ -3,31 +3,29 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=bluez-qt5
-pkgver=5.115.0
+pkgname=bluez-qt
+pkgver=6.0.0
pkgrel=0
-arch="all !armhf" # armhf blocked by qt5-qtdeclarative
+arch="all !armhf" # armhf blocked by qt6-qtdeclarative
pkgdesc="Qt wrapper for Bluez 5 DBus API"
url="https://community.kde.org/Frameworks"
license="LGPL-2.1-or-later"
depends_dev="
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
"
makedepends="$depends_dev
doxygen
extra-cmake-modules
graphviz
- qt5-qttools-dev
+ qt6-qttools-dev
samurai
"
+subpackages="$pkgname-dev $pkgname-doc"
_repo_url="https://invent.kde.org/frameworks/bluez-qt.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/bluez-qt-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc"
-options="!check" # Multiple tests either hang or fail completely
-builddir="$srcdir/bluez-qt-$pkgver"
-
-replaces="bluez-qt<=5.110.0-r0"
+# Multiple tests either hang or fail completely
+options="!check"
build() {
cmake -B build -G Ninja \
@@ -47,5 +45,5 @@ package() {
}
sha512sums="
-b56ffb59d1fdabfc5bc76ae888a591eb24b1b7d145d9a1efd7c0aafb51f47c49ba98f375ab461a141f321e7e4811b8c6928faeef07001a4ee46b49540441b985 bluez-qt-5.115.0.tar.xz
+58216c448a774dfd8e96b15746a1979f1c70c3d6c7bff1c82ef2486dd98a050d5e72bb46eb0309baf9decc5759e1d6aac7bb68dd650d84803b5f52c6c1e307c2 bluez-qt-6.0.0.tar.xz
"
diff --git a/community/bovo/APKBUILD b/community/bovo/APKBUILD
index 246fdb3f0ec..1ce60a55376 100644
--- a/community/bovo/APKBUILD
+++ b/community/bovo/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=bovo
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="A Gomoku like game for two players"
# armhf blocked by extra-cmake-modules
@@ -13,19 +13,19 @@ url="https://kde.org/applications/games/org.kde.bovo"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- kxmlgui5-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ kxmlgui-dev
libkdegames-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/bovo.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/bovo-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -44,5 +44,5 @@ package() {
}
sha512sums="
-cdfce78158ae60c94f2f9c98028e90d07e07cc3f0371126baae1f15aab9b64ef06e860c89786619259fab73bd709d3af0a6f5f0a1bfeecd45aa75ab01eecf770 bovo-23.08.5.tar.xz
+13334280524a61c5c2d660ef9941fb815a110eabe30d7d7e303c161a8870e33fc1c7afd34e97b6b4b77c8594c3b27d45787ef011715d0ee3ebaf75067698436c bovo-24.02.0.tar.xz
"
diff --git a/community/breeze-grub/APKBUILD b/community/breeze-grub/APKBUILD
index 15f5a061866..6d53688fb75 100644
--- a/community/breeze-grub/APKBUILD
+++ b/community/breeze-grub/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=breeze-grub
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
pkgdesc="Breeze theme for GRUB"
arch="noarch !s390x !armhf" # armhf blocked by extra-cmake-modules
@@ -22,8 +22,9 @@ case "$pkgver" in
*) _rel=stable;;
esac
_repo_url="https://invent.kde.org/plasma/breeze-grub.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/breeze-grub-$pkgver.tar.xz"
-options="!check" # No test suite available
+source="https://download.kde.org/stable/plasma/$pkgver/breeze-grub-$pkgver.tar.xz"
+# No test suite available
+options="!check"
build() {
./mkfont.sh
@@ -34,5 +35,5 @@ package() {
cp -r breeze "$pkgdir"/usr/share/grub/themes
}
sha512sums="
-73a9b6dc4a3eb0adf04dfe8f7b33ae1d587b2b25c8237992460d3d9133d8ac0e8eaec2b749aab9850b4b8373f5a6f22a062263a1026426184e27ef8aa1d4533e breeze-grub-5.27.10.tar.xz
+aa85b69a6a96a2946ee8fce812746a69c83559716ee3b24bf12c4ac92d37a735cd66f2e2f199251a9fb92d6b2bc987ca2c3b62f1e098bb9002143186eeda74ff breeze-grub-6.0.0.tar.xz
"
diff --git a/community/breeze-gtk/APKBUILD b/community/breeze-gtk/APKBUILD
index bfd9e5206d4..206f64aa090 100644
--- a/community/breeze-gtk/APKBUILD
+++ b/community/breeze-gtk/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=breeze-gtk
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
pkgdesc="A GTK Theme Built to Match KDE's Breeze"
# armhf blocked by extra-cmake-modules
@@ -26,7 +26,7 @@ case "$pkgver" in
*) _rel=stable;;
esac
_repo_url="https://invent.kde.org/plasma/breeze-gtk.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/breeze-gtk-$pkgver.tar.xz"
+source="https://download.kde.org/stable/plasma/$pkgver/breeze-gtk-$pkgver.tar.xz"
build() {
cmake -B build -G Ninja \
@@ -44,5 +44,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-430138ffd64819a8cd10c00180ff6164a54d664d50f59d071367789c2e480c3a62f87d94cfd83712b812862201e1ee799ad9faff80be9974dd9530a52152fa10 breeze-gtk-5.27.10.tar.xz
+abd92e33f753f27d821749ae3ab75c5397c193517af334dd549ed8d1b52c704f6167475618f72e8c17af4f36011d746e421f34c0b1cd6b582a40dce97e586dfe breeze-gtk-6.0.0.tar.xz
"
diff --git a/community/breeze-icons5/APKBUILD b/community/breeze-icons/APKBUILD
index 8ba8dfacdb6..17cf7176803 100644
--- a/community/breeze-icons5/APKBUILD
+++ b/community/breeze-icons/APKBUILD
@@ -3,8 +3,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=breeze-icons5
-pkgver=5.115.0
+pkgname=breeze-icons
+pkgver=6.0.0
pkgrel=0
pkgdesc="Breeze icon themes"
arch="noarch !armhf" # armhf blocked by extra-cmake-modules
@@ -12,18 +12,15 @@ url="https://community.kde.org/Frameworks"
license="LGPL-3.0-or-later"
makedepends="
extra-cmake-modules
+ findutils
py3-lxml
python3
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
"
-checkdepends="bash"
subpackages="$pkgname-dev"
_repo_url="https://invent.kde.org/frameworks/breeze-icons.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/breeze-icons-$pkgver.tar.xz"
-builddir="$srcdir/breeze-icons-$pkgver"
-
-replaces="breeze-icons<=5.110.0-r0"
# Several KDE applications use icons not yet present in most themes
# We want to keep the possibility for users to not use the KDE provided
@@ -33,6 +30,8 @@ replaces="breeze-icons<=5.110.0-r0"
provides="kde-icons"
provider_priority=100
+replaces="breeze-icons5"
+
build() {
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=MinSizeRel \
@@ -51,5 +50,5 @@ package() {
}
sha512sums="
-f4b5f54bb80dcd2bba6edd02a412eb675b02d438ba0ee82d6dc4eaac1ed2aceb11b46ce143bbe825c26f823d5b897619e02c26b23addf2de05830a320dd124f8 breeze-icons-5.115.0.tar.xz
+d0b224136f7021ae44e6a62e158a2c7b2f862701fa4008a10a9281701f3f8a588381501e42713ea76c66672fdb04801adfdcf01640d524d573e0ccd8cb44f101 breeze-icons-6.0.0.tar.xz
"
diff --git a/community/breeze-plymouth/APKBUILD b/community/breeze-plymouth/APKBUILD
index c2bfb3f71f9..e1431f81ed4 100644
--- a/community/breeze-plymouth/APKBUILD
+++ b/community/breeze-plymouth/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=breeze-plymouth
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
arch="all !armhf" # armhf blocked by extra-cmake-modules
url="https://kde.org/"
@@ -21,8 +21,9 @@ case "$pkgver" in
*) _rel=stable;;
esac
_repo_url="https://invent.kde.org/plasma/breeze-plymouth.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/breeze-plymouth-$pkgver.tar.xz"
-options="!check" # No tests
+source="https://download.kde.org/stable/plasma/$pkgver/breeze-plymouth-$pkgver.tar.xz"
+# No tests
+options="!check"
build() {
cmake -B build -G Ninja \
@@ -38,5 +39,5 @@ package() {
}
sha512sums="
-255772d19608ed07f9060cabe78c626fe05f5d736aa87135f82ae85557074a87082a1a7d3aa7b91027f941287f3de9c2992ad058964fcb322769239ffffc2eb2 breeze-plymouth-5.27.10.tar.xz
+21d3cb8c8fb2665a98c5dbdf8e7170558fe204b7ce609fb297fec11bbc920ac65daf2e7a05aca3018ff6054527a9a20ee6455c309ca6d3b7f71fd590d8c5a7f4 breeze-plymouth-6.0.0.tar.xz
"
diff --git a/community/breeze/APKBUILD b/community/breeze/APKBUILD
index 4f5503cb8f8..44e1a83ad4e 100644
--- a/community/breeze/APKBUILD
+++ b/community/breeze/APKBUILD
@@ -4,23 +4,38 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=breeze
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
pkgdesc="Artwork, styles and assets for the Breeze visual style for the Plasma Desktop"
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://kde.org/plasma-desktop/"
license="GPL-2.0-or-later"
depends_dev="
- kcmutils5-dev
+ frameworkintegration-dev
+ frameworkintegration5-dev
+ kcmutils-dev
+ kcolorscheme-dev
+ kconfig-dev
+ kconfig5-dev
kconfigwidgets5-dev
+ kcoreaddons-dev
+ kcoreaddons5-dev
kdecoration-dev
+ kguiaddons-dev
kguiaddons5-dev
- ki18n5-dev
+ ki18n-dev
+ kiconthemes-dev
kiconthemes5-dev
+ kirigami-dev
kirigami2-dev
- kpackage5-dev
+ kwindowsystem-dev
kwindowsystem5-dev
+ qt5-qtbase-dev
+ qt5-qtdeclarative-dev
+ qt5-qtx11extras-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
"
makedepends="$depends_dev
extra-cmake-modules
@@ -31,9 +46,9 @@ case "$pkgver" in
*.90*) _rel=unstable;;
*) _rel=stable;;
esac
-_repo_url="https://invent.kde.org/plasma/breeze.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/breeze-$pkgver.tar.xz"
subpackages="$pkgname-dev $pkgname-lang"
+_repo_url="https://invent.kde.org/plasma/breeze.git"
+source="https://download.kde.org/stable/plasma/$pkgver/breeze-$pkgver.tar.xz"
build() {
cmake -B build -G Ninja \
@@ -51,5 +66,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-6f498ca9e871853b181366f8d71a8074af68938b7ea93cb8d0761c26fb6ead288bc625fc64237270e62e5f9f98deac2b594f2dc4297ac54c7962d594d4b2ee4c breeze-5.27.10.tar.xz
+3d76db9c26a1f65044d02b1c603791ad93414b3ec129508959d9a14d46d5229d36dfcb6992861c1a2cdb6dafda2f8b85525e4f73ff0a60b71bd19e02a3e98a05 breeze-6.0.0.tar.xz
"
diff --git a/community/calendarsupport/APKBUILD b/community/calendarsupport/APKBUILD
index dc74ac6779b..18a799b2c5d 100644
--- a/community/calendarsupport/APKBUILD
+++ b/community/calendarsupport/APKBUILD
@@ -4,11 +4,11 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=calendarsupport
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Library providing calendar support"
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine -> akonadi
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine -> akonadi
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kontact.kde.org"
license="GPL-2.0-or-later AND Qt-GPL-exception-1.0 AND LGPL-2.0-or-later"
@@ -17,27 +17,27 @@ depends_dev="
akonadi-dev
akonadi-mime-dev
akonadi-notes-dev
- kcalendarcore5-dev
+ kcalendarcore-dev
kcalutils-dev
- kcodecs5-dev
- kguiaddons5-dev
- kholidays5-dev
- ki18n5-dev
+ kcodecs-dev
+ kguiaddons-dev
+ kholidays-dev
+ ki18n-dev
kidentitymanagement-dev
- kio5-dev
+ kio-dev
kmime-dev
pimcommon-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
extra-cmake-modules
- qt5-qttools-dev
+ qt6-qttools-dev
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/calendarsupport.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/calendarsupport-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -55,5 +55,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-b356489bad193bfa27f44403faaa0de7beaa4a3559e5f178b20c091274e607ee2c5fa7ef60f18a0c9e4bea5b825229a85bcbaa63204aae835555c367c5e8d1d1 calendarsupport-23.08.5.tar.xz
+796bd7f32386237d4c452c099ac659841f481724893cb1fc3362913823a9725e073ba001ec34aaa25f3a06d28573df57b267a21f343db243427d91ada69b0aa0 calendarsupport-24.02.0.tar.xz
"
diff --git a/community/calindori/APKBUILD b/community/calindori/APKBUILD
index 4694d16cc38..b2127045804 100644
--- a/community/calindori/APKBUILD
+++ b/community/calindori/APKBUILD
@@ -4,40 +4,37 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=calindori
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Calendar for Plasma Mobile"
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://invent.kde.org/plasma-mobile/calindori"
license="GPL-3.0-or-later AND LGPL-3.0-or-later AND BSD-2-Clause AND CC-BY-SA-4.0 AND CC0-1.0"
-depends="
- kirigami2
- qt5-qtquickcontrols
- qt5-qtquickcontrols2
- "
+depends="kirigami"
makedepends="
extra-cmake-modules
- kcalendarcore5-dev
- kconfig5-dev
- ki18n5-dev
- kirigami2-dev
- kpeople5-dev
- plasma-framework5-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtquickcontrols2-dev
- qt5-qtsvg-dev
- qt5-qttools-dev
+ kcalendarcore-dev
+ kconfig-dev
+ ki18n-dev
+ kirigami-dev
+ kpeople-dev
+ libplasma-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtsvg-dev
+ qt6-qttools-dev
samurai
"
_repo_url="https://invent.kde.org/plasma-mobile/calindori.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/calindori-$pkgver.tar.xz"
subpackages="$pkgname-lang"
-options="!check" # No tests
+# No tests
+options="!check"
build() {
cmake -B build -G Ninja \
+ -DBUILD_WITH_QT6=ON \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr
cmake --build build
@@ -48,5 +45,5 @@ package() {
}
sha512sums="
-83ca7cfb6a74cda044f0829d485c05533a910eb138c296960d1f09fa3e0658b15a117d8de2d8a99f6667176d6b317123b6a55d05a251ff0a90abd665a603fe46 calindori-23.08.5.tar.xz
+44640f210d359bdb7ccaba72b2e7bb0c9f166e41f0159802c0f954f295b5e9e654d1919bfa1209d4ed8a0db2a6499505ea176d87cf69359f2a16e84012aca6d3 calindori-24.02.0.tar.xz
"
diff --git a/community/cantor/APKBUILD b/community/cantor/APKBUILD
index 3fbdacee9a0..9f0e0a6b5c3 100644
--- a/community/cantor/APKBUILD
+++ b/community/cantor/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=cantor
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine
@@ -37,12 +37,12 @@ makedepends="
qt5-qtwebengine-dev
qt5-qtxmlpatterns-dev
samurai
- syntax-highlighting5-dev
+ syntax-highlighting-dev
"
checkdepends="xvfb-run"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/education/cantor.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/cantor-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -61,5 +61,5 @@ package() {
}
sha512sums="
-0eb3ba85120def88a7f85c0bb445d5ed580a969e02ff503d811916588aef5e015d7873c33dfacb58a8bd88a06a18ca5e321b2a5567e910afdd85054fa79ede09 cantor-23.08.5.tar.xz
+d309ac6de3caa1a73bebc9da4c3f22a04e423e6595060c889740ff4b9fe8646766c9c50eb1c6eaa7d31d7530660ebbd3abd85cd66763355f5f5902c078926799 cantor-24.02.0.tar.xz
"
diff --git a/community/cervisia/APKBUILD b/community/cervisia/APKBUILD
index 8462fc9b44c..43345026a6a 100644
--- a/community/cervisia/APKBUILD
+++ b/community/cervisia/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=cervisia
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -24,10 +24,9 @@ makedepends="
qt5-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/sdk/cervisia.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/cervisia-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -46,5 +45,5 @@ package() {
}
sha512sums="
-3ef48358ff8703905b72cb620e540afc1b76f10c6d2cc880b04cd9f58f341d688fa354649dc10ad0c2948a1e4ac0434533dad0446a174f95096b48533ff2e979 cervisia-23.08.5.tar.xz
+9325c2dfecd23cda7ec66dbf19a7d8bce0d341d4b3d34ef4130ce045abf70ac5cdada9ee830209e07e3ce0a887d641e552dbfa62f0c858849a195c4c29a93f97 cervisia-24.02.0.tar.xz
"
diff --git a/community/discover/APKBUILD b/community/discover/APKBUILD
index c0699d16077..db282ecc0b6 100644
--- a/community/discover/APKBUILD
+++ b/community/discover/APKBUILD
@@ -4,8 +4,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=discover
-pkgver=5.27.10.1
-pkgrel=1
+pkgver=6.0.0
+pkgrel=0
pkgdesc="KDE Plasma resources management GUI"
url="https://userbase.kde.org/Discover"
# armhf blocked by qt5-qtdeclarative
@@ -13,34 +13,36 @@ url="https://userbase.kde.org/Discover"
arch="all !armhf !ppc64le !riscv64 !s390x"
license="LGPL-2.0-or-later AND (GPL-2.0-only OR GPL-3.0-only) AND GFDL-1.2-only"
depends="
- kirigami2
- purpose5
+ kirigami
+ purpose
"
makedepends="
appstream-dev
- attica5-dev
+ attica-dev
extra-cmake-modules
flatpak-dev
- karchive5-dev
- kauth5-dev
- kcmutils5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdeclarative5-dev
- ki18n5-dev
- kidletime5-dev
- kio5-dev
- kitemmodels5-dev
- knewstuff5-dev
+ karchive-dev
+ kauth-dev
+ kcmutils-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdeclarative-dev
+ ki18n-dev
+ kidletime-dev
+ kio-dev
+ kirigami-addons-dev
+ kirigami-dev
+ kitemmodels-dev
+ knewstuff-dev
+ kstatusnotifieritem-dev
kuserfeedback-dev
- kxmlgui5-dev
- libapk-qt-dev
- plasma-framework5-dev
- purpose5-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
+ kxmlgui-dev
+ libplasma
+ purpose-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
samurai
"
checkdepends="xvfb-run"
@@ -54,17 +56,8 @@ case "$pkgver" in
*) _rel=stable;;
esac
_repo_url="https://invent.kde.org/plasma/discover.git"
-source="
- https://download.kde.org/$_rel/plasma/${pkgver%.*}/discover-$pkgver.tar.xz
- discover-apk-support.patch
- alpine-appstream-data.json
- alpine-linux-logo-icon.png
- "
-subpackages="
- $pkgname-backend-apk:backend_apk
- $pkgname-backend-flatpak:backend_flatpak
- $pkgname-lang
- "
+source="https://download.kde.org/$_rel/plasma/$pkgver/discover-$pkgver.tar.xz"
+subpackages="$pkgname-backend-flatpak:backend_flatpak $pkgname-lang"
case "$CARCH" in
x86|x86_64|armv7|aarch64)
@@ -85,9 +78,8 @@ build() {
}
check() {
- cd build
# knsbackendtest and flatpaktest fail to find their required executables
- CTEST_OUTPUT_ON_FAILURE=TRUE xvfb-run ctest -E "(knsbackend|flatpak)test"
+ xvfb-run ctest --test-dir build --output-on-failure -E "(knsbackend|flatpak)test"
}
package() {
@@ -99,45 +91,22 @@ backend_flatpak() {
depends=""
install_if="$pkgname=$pkgver-r$pkgrel flatpak"
- amove usr/lib/qt5/plugins/discover/flatpak-backend.so
+ amove usr/lib/qt6/plugins/discover/flatpak-backend.so
amove usr/share/libdiscover/categories/flatpak-backend-categories.xml
- amove usr/lib/qt5/plugins/discover-notifier/FlatpakNotifier.so
+ amove usr/lib/qt6/plugins/discover-notifier/FlatpakNotifier.so
amove usr/share/applications/org.kde.discover-flatpak.desktop
amove usr/share/metainfo/org.kde.discover.flatpak.appdata.xml
amove usr/share/icons/hicolor/scalable/apps/flatpak-discover.svg
}
-backend_apk() {
- pkgdesc="Apk backend for $pkgname"
- depends=""
- install_if="$pkgname=$pkgver-r$pkgrel apk-tools"
-
- amove usr/lib/qt5/plugins/discover/alpineapk-backend.so
- amove usr/lib/libexec/kauth/alpineapk_kauth_helper
- amove usr/share/polkit-1/actions/org.kde.discover.alpineapkbackend.policy
- amove usr/share/dbus-1/system.d/org.kde.discover.alpineapkbackend.conf
- amove usr/share/dbus-1/system-services/org.kde.discover.alpineapkbackend.service
-
- # JSON file contains placeholder for replacement - @CARCH@
- sed -i "s/@CARCH@/$CARCH/g" "$srcdir"/alpine-appstream-data.json
- install -Dm644 "$srcdir"/alpine-appstream-data.json \
- "$subpkgdir"/usr/share/libdiscover/external-appstream-urls/alpine-appstream-data.json
-
- install -Dm644 -t "$subpkgdir"/usr/share/icons/hicolor/32x32/apps/ \
- "$srcdir"/alpine-linux-logo-icon.png
-}
-
backend_fwupd() {
pkgdesc="fwupd backend for $pkgname"
depends=""
install_if="$pkgname=$pkgver-r$pkgrel fwupd"
- amove usr/lib/qt5/plugins/discover/fwupd-backend.so
+ amove usr/lib/qt6/plugins/discover/fwupd-backend.so
}
sha512sums="
-1425fe285b5307def18fa61ae9e0f8c37602dc9cf276f3a54700d644f46cb7ddfa55cfd8693625bb717dec32e52f9f84b5b919730aa0e78c95ba4c619270aced discover-5.27.10.1.tar.xz
-1ca9714ad202f4536decc99cf508f12bd1b287fba580faa2a800d5ed533649400abad544bcf1c1626b52c05d6989591d00fc02c591a76232d8c3a3ea9ee226fa discover-apk-support.patch
-d9cc12a5a92df820d6d133a3698a4fbb08a97f08f00554a11d87c73c6144b42d07cecd6682bf9576d83c8e2556e35ade2fb39e77895afbbe33e2f94630441bb7 alpine-appstream-data.json
-0766668630cb14f58c840ebdda8b76bd1dec98b4dd61469677d4ad6eb4966809a25dbec2a846502cad0391df5b6ca9d692bb857a6fa203b61a52e6ac044cfbf4 alpine-linux-logo-icon.png
+b7e56f3bb799ae00953cc3213acc832b3582b6b6c3ad1f93769396246187191ff4a42ad80fa87aaaef26cce14db2b165339265796ac2c3ae2a6cd1be6c4c1302 discover-6.0.0.tar.xz
"
diff --git a/community/discover/alpine-appstream-data.json b/community/discover/alpine-appstream-data.json
deleted file mode 100644
index 5f844ffc472..00000000000
--- a/community/discover/alpine-appstream-data.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "urls": [
- "https://appstream.alpinelinux.org/data/edge/main/Components-@CARCH@.xml.gz",
- "https://appstream.alpinelinux.org/data/edge/community/Components-@CARCH@.xml.gz",
- "https://appstream.alpinelinux.org/data/edge/testing/Components-@CARCH@.xml.gz"
- ]
-}
diff --git a/community/discover/alpine-linux-logo-icon.png b/community/discover/alpine-linux-logo-icon.png
deleted file mode 100644
index 470c4430d06..00000000000
--- a/community/discover/alpine-linux-logo-icon.png
+++ /dev/null
Binary files differ
diff --git a/community/discover/discover-apk-support.patch b/community/discover/discover-apk-support.patch
deleted file mode 100644
index 7374b6d9046..00000000000
--- a/community/discover/discover-apk-support.patch
+++ /dev/null
@@ -1,8569 +0,0 @@
-From 1814ac22bab7ac2949031b047dd20edf275000c9 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Sun, 12 Jan 2020 01:02:39 +0300
-Subject: [PATCH 01/61] Initial support for AlpineAPK backend
-
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 240 ++++++++++++++++++
- .../AlpineApkBackend/AlpineApkBackend.h | 73 ++++++
- .../AlpineApkBackend/AlpineApkResource.cpp | 208 +++++++++++++++
- .../AlpineApkBackend/AlpineApkResource.h | 81 ++++++
- .../AlpineApkSourcesBackend.cpp | 151 +++++++++++
- .../AlpineApkSourcesBackend.h | 50 ++++
- .../AlpineApkBackend/AlpineApkTransaction.cpp | 90 +++++++
- .../AlpineApkBackend/AlpineApkTransaction.h | 46 ++++
- .../backends/AlpineApkBackend/CMakeLists.txt | 52 ++++
- libdiscover/backends/CMakeLists.txt | 13 +
- 10 files changed, 1004 insertions(+)
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
- create mode 100644 libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-new file mode 100644
-index 000000000..f5aa5477d
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -0,0 +1,240 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include "AlpineApkBackend.h"
-+#include "AlpineApkResource.h"
-+//#include "DummyReviewsBackend.h"
-+#include "AlpineApkTransaction.h"
-+#include "AlpineApkSourcesBackend.h"
-+#include "alpineapk_backend_logging.h" // generated by ECM
-+
-+#include "resources/StandardBackendUpdater.h"
-+#include "resources/SourcesModel.h"
-+#include "Transaction/Transaction.h"
-+#include "Category/Category.h"
-+
-+#include <KAboutData>
-+#include <KLocalizedString>
-+#include <KPluginFactory>
-+#include <KConfigGroup>
-+#include <KSharedConfig>
-+#include <QDebug>
-+#include <QLoggingCategory>
-+#include <QThread>
-+#include <QTimer>
-+#include <QAction>
-+
-+DISCOVER_BACKEND_PLUGIN(AlpineApkBackend)
-+
-+AlpineApkBackend::AlpineApkBackend(QObject *parent)
-+ : AbstractResourcesBackend(parent)
-+ , m_updater(new StandardBackendUpdater(this))
-+ , m_startElements(120)
-+{
-+#ifndef QT_DEBUG
-+ const_cast<QLoggingCategory &>(LOG_ALPINEAPK()).setEnabled(QtDebugMsg, false);
-+#endif
-+
-+ qCDebug(LOG_ALPINEAPK) << "constructing backend!";
-+
-+ QTimer::singleShot(500, this, &AlpineApkBackend::toggleFetching);
-+ //connect(m_reviews, &DummyReviewsBackend::ratingsReady, this, &AbstractResourcesBackend::emitRatingsReady);
-+ connect(m_updater, &StandardBackendUpdater::updatesCountChanged, this, &AlpineApkBackend::updatesCountChanged);
-+
-+ populate();
-+ //if (!m_fetching)
-+ // m_reviews->initialize();
-+
-+ SourcesModel::global()->addSourcesBackend(new AlpineApkSourcesBackend(this));
-+}
-+
-+QVector<Category *> AlpineApkBackend::category() const
-+{
-+ static Category *cat = new Category(
-+ QStringLiteral("All applications"), // displayName
-+ QStringLiteral("applications-other"), // icon
-+ { }, // orFilters
-+ { displayName() }, // pluginName
-+ { }, // subCategories
-+ QUrl(), // decoration (what is it?)
-+ false // isAddons
-+ );
-+ return { cat };
-+}
-+
-+void AlpineApkBackend::populate()
-+{
-+ qCDebug(LOG_ALPINEAPK) << "populating resources...";
-+
-+ if (m_apkdb.open(QtApk::Database::QTAPK_OPENF_READONLY)) {
-+ m_availablePackages = m_apkdb.getAvailablePackages();
-+ m_installedPackages = m_apkdb.getInstalledPackages();
-+ m_apkdb.close();
-+ }
-+
-+ if (m_availablePackages.size() > 0) {
-+ for (const QtApk::Package &pkg: m_availablePackages) {
-+ AlpineApkResource *res = new AlpineApkResource(pkg, this);
-+ res->setCategoryName(QStringLiteral("all"));
-+ res->setOriginSource(QStringLiteral("apk"));
-+ res->setSection(QStringLiteral("dummy"));
-+ const QString key = pkg.name.toLower();
-+ m_resources.insert(key, res);
-+ connect(res, &AlpineApkResource::stateChanged, this, &AlpineApkBackend::updatesCountChanged);
-+ }
-+ qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
-+ << "packages";
-+ }
-+ if (m_installedPackages.size() > 0) {
-+ for (const QtApk::Package &pkg: m_installedPackages) {
-+ const QString key = pkg.name.toLower();
-+ if (m_resources.contains(key)) {
-+ m_resources.value(key)->setState(AbstractResource::Installed);
-+ }
-+ }
-+ qCDebug(LOG_ALPINEAPK) << " installed" << m_installedPackages.size()
-+ << "packages";
-+ }
-+}
-+
-+void AlpineApkBackend::toggleFetching()
-+{
-+ m_fetching = !m_fetching;
-+ qCDebug(LOG_ALPINEAPK) << "fetching..." << m_fetching;
-+ emit fetchingChanged();
-+ //if (!m_fetching)
-+ // m_reviews->initialize();
-+}
-+
-+int AlpineApkBackend::updatesCount() const
-+{
-+ qCDebug(LOG_ALPINEAPK) << "updatesCount(): " << m_updater->updatesCount();
-+ return m_updater->updatesCount();
-+}
-+
-+ResultsStream *AlpineApkBackend::search(const AbstractResourcesBackend::Filters &filter)
-+{
-+ QVector<AbstractResource*> ret;
-+ if (!filter.resourceUrl.isEmpty()) {
-+ return findResourceByPackageName(filter.resourceUrl);
-+ } else {
-+ for (AbstractResource *r: qAsConst(m_resources)) {
-+ if (r->type() == AbstractResource::Technical
-+ && filter.state != AbstractResource::Upgradeable) {
-+ continue;
-+ }
-+ if (r->state() < filter.state) {
-+ continue;
-+ }
-+ if(r->name().contains(filter.search, Qt::CaseInsensitive)
-+ || r->comment().contains(filter.search, Qt::CaseInsensitive)) {
-+ ret += r;
-+ }
-+ }
-+ }
-+ return new ResultsStream(QStringLiteral("AlpineApkStream"), ret);
-+}
-+
-+ResultsStream *AlpineApkBackend::findResourceByPackageName(const QUrl &searchUrl)
-+{
-+// if (search.isLocalFile()) {
-+// AlpineApkResource* res = new AlpineApkResource(
-+// search.fileName(), AbstractResource::Technical, this);
-+// res->setSize(666);
-+// res->setState(AbstractResource::None);
-+// m_resources.insert(res->packageName(), res);
-+// connect(res, &AlpineApkResource::stateChanged, this, &AlpineApkBackend::updatesCountChanged);
-+// return new ResultsStream(QStringLiteral("AlpineApkStream-local"), { res });
-+// }
-+
-+ AlpineApkResource *result = nullptr;
-+
-+ // QUrl("appstream://org.kde.krita.desktop")
-+ // smart workaround for appstream
-+ if (searchUrl.scheme() == QLatin1String("appstream")) {
-+ // remove leading "org.kde."
-+ QString pkgName = searchUrl.host();
-+ if (pkgName.startsWith(QLatin1String("org.kde."))) {
-+ pkgName = pkgName.mid(8);
-+ }
-+ // remove trailing ".desktop"
-+ if (pkgName.endsWith(QLatin1String(".desktop"))) {
-+ pkgName = pkgName.left(pkgName.length() - 8);
-+ }
-+ // now we can search for "krita" package
-+ result = m_resources.value(pkgName);
-+ }
-+
-+ if (!result) {
-+ return new ResultsStream(QStringLiteral("AlpineApkStream"), {});
-+ }
-+ return new ResultsStream(QStringLiteral("AlpineApkStream"), { result });
-+}
-+
-+AbstractBackendUpdater *AlpineApkBackend::backendUpdater() const
-+{
-+ return m_updater;
-+}
-+
-+AbstractReviewsBackend *AlpineApkBackend::reviewsBackend() const
-+{
-+ // qCDebug(LOG_ALPINEAPK) << "reviewsBbackend(): we don't support reviews (";
-+ // return m_reviews;
-+ return nullptr;
-+}
-+
-+Transaction* AlpineApkBackend::installApplication(AbstractResource *app, const AddonList &addons)
-+{
-+ return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app), addons, Transaction::InstallRole);
-+}
-+
-+Transaction* AlpineApkBackend::installApplication(AbstractResource *app)
-+{
-+ return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app), Transaction::InstallRole);
-+}
-+
-+Transaction* AlpineApkBackend::removeApplication(AbstractResource *app)
-+{
-+ return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app), Transaction::RemoveRole);
-+}
-+
-+void AlpineApkBackend::checkForUpdates()
-+{
-+ if(m_fetching) {
-+ qCDebug(LOG_ALPINEAPK) << "checkForUpdates(): already fetching";
-+ return;
-+ }
-+ qCDebug(LOG_ALPINEAPK) << "checkForUpdates()!";
-+ toggleFetching();
-+ // populate(QStringLiteral("Moar"));
-+ QTimer::singleShot(1000, this, &AlpineApkBackend::toggleFetching);
-+}
-+
-+QString AlpineApkBackend::displayName() const
-+{
-+ return QStringLiteral("Alpine APK backend");
-+}
-+
-+bool AlpineApkBackend::hasApplications() const
-+{
-+ return true;
-+}
-+
-+#include "AlpineApkBackend.moc"
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-new file mode 100644
-index 000000000..624df1c9f
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -0,0 +1,73 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef AlpineApkBackend_H
-+#define AlpineApkBackend_H
-+
-+#include <resources/AbstractResourcesBackend.h>
-+#include <QVariantList>
-+
-+#include <QtApk.h>
-+
-+// class DummyReviewsBackend;
-+class StandardBackendUpdater;
-+class AlpineApkResource;
-+class AlpineApkBackend : public AbstractResourcesBackend
-+{
-+ Q_OBJECT
-+ Q_PROPERTY(int startElements MEMBER m_startElements)
-+
-+public:
-+ explicit AlpineApkBackend(QObject *parent = nullptr);
-+
-+ QVector<Category *> category() const override;
-+ int updatesCount() const override;
-+ AbstractBackendUpdater *backendUpdater() const override;
-+ AbstractReviewsBackend *reviewsBackend() const override;
-+ ResultsStream *search(const AbstractResourcesBackend::Filters &filter) override;
-+ ResultsStream *findResourceByPackageName(const QUrl &search);
-+ QHash<QString, AlpineApkResource *> resources() const { return m_resources; }
-+ bool isValid() const override { return true; } // No external file dependencies that could cause runtime errors
-+
-+ Transaction *installApplication(AbstractResource *app) override;
-+ Transaction *installApplication(AbstractResource *app, const AddonList &addons) override;
-+ Transaction *removeApplication(AbstractResource *app) override;
-+ bool isFetching() const override { return m_fetching; }
-+ void checkForUpdates() override;
-+ QString displayName() const override;
-+ bool hasApplications() const override;
-+
-+public Q_SLOTS:
-+ void toggleFetching();
-+
-+private:
-+ void populate();
-+
-+ QHash<QString, AlpineApkResource *> m_resources;
-+ StandardBackendUpdater *m_updater;
-+ // DummyReviewsBackend* m_reviews;
-+ QtApk::Database m_apkdb;
-+ QVector<QtApk::Package> m_availablePackages;
-+ QVector<QtApk::Package> m_installedPackages;
-+ bool m_fetching = true;
-+ int m_startElements = 0;
-+};
-+
-+#endif // AlpineApkBackend_H
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-new file mode 100644
-index 000000000..d827e7b3b
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -0,0 +1,208 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include <KRandom>
-+#include "AlpineApkResource.h"
-+#include "alpineapk_backend_logging.h" // generated by ECM
-+#include "Transaction/AddonList.h"
-+
-+AlpineApkResource::AlpineApkResource(const QtApk::Package &apkPkg,
-+ AbstractResourcesBackend *parent)
-+ : AbstractResource(parent)
-+ , m_state(AbstractResource::State::None)
-+ , m_type(Application)
-+ , m_pkg(apkPkg)
-+{
-+}
-+
-+QList<PackageState> AlpineApkResource::addonsInformation()
-+{
-+ return m_addons;
-+}
-+
-+QString AlpineApkResource::availableVersion() const
-+{
-+ return m_pkg.version;
-+}
-+
-+QStringList AlpineApkResource::categories()
-+{
-+ return { m_category };
-+}
-+
-+QString AlpineApkResource::comment()
-+{
-+ return m_pkg.description;
-+}
-+
-+int AlpineApkResource::size()
-+{
-+ return static_cast<int>(m_pkg.size);
-+}
-+
-+QUrl AlpineApkResource::homepage()
-+{
-+ return QUrl::fromUserInput(m_pkg.url);
-+}
-+
-+QUrl AlpineApkResource::helpURL()
-+{
-+ return QUrl();
-+}
-+
-+QUrl AlpineApkResource::bugURL()
-+{
-+ return QUrl();
-+}
-+
-+QUrl AlpineApkResource::donationURL()
-+{
-+ return QUrl();
-+}
-+
-+QVariant AlpineApkResource::icon() const
-+{
-+ return QStringLiteral("package-x-generic");
-+}
-+
-+QString AlpineApkResource::installedVersion() const
-+{
-+ return m_pkg.version;
-+}
-+
-+QJsonArray AlpineApkResource::licenses()
-+{
-+ return {
-+ QJsonObject {
-+ { QStringLiteral("name"), m_pkg.license },
-+ { QStringLiteral("url"), QStringLiteral("https://spdx.org/license-list") },
-+ }
-+ };
-+}
-+
-+QString AlpineApkResource::longDescription()
-+{
-+ return m_pkg.description;
-+}
-+
-+QString AlpineApkResource::name() const
-+{
-+ return m_pkg.name;
-+}
-+
-+QString AlpineApkResource::origin() const
-+{
-+ return m_originSoruce;
-+}
-+
-+QString AlpineApkResource::packageName() const
-+{
-+ return m_pkg.name;
-+}
-+
-+QString AlpineApkResource::section()
-+{
-+ return m_sectionName;
-+}
-+
-+AbstractResource::State AlpineApkResource::state()
-+{
-+ return m_state;
-+}
-+
-+void AlpineApkResource::fetchChangelog()
-+{
-+ // QString log = longDescription();
-+ // Q_EMIT changelogFetched(log);
-+}
-+
-+void AlpineApkResource::fetchScreenshots()
-+{
-+ // Q_EMIT screenshotsFetched(m_screenshotThumbnails, m_screenshots);
-+}
-+
-+void AlpineApkResource::setState(AbstractResource::State state)
-+{
-+ m_state = state;
-+ emit stateChanged();
-+}
-+
-+void AlpineApkResource::setCategoryName(const QString &categoryName)
-+{
-+ m_category = categoryName;
-+}
-+
-+void AlpineApkResource::setOriginSource(const QString &originSource)
-+{
-+ m_originSoruce = originSource;
-+}
-+
-+void AlpineApkResource::setSection(const QString &sectionName)
-+{
-+ m_sectionName = sectionName;
-+}
-+
-+void AlpineApkResource::setAddons(const AddonList &addons)
-+{
-+ const QStringList addonsToInstall = addons.addonsToInstall();
-+ for (const QString &toInstall : addonsToInstall) {
-+ setAddonInstalled(toInstall, true);
-+ }
-+ const QStringList addonsToRemove = addons.addonsToRemove();
-+ for (const QString &toRemove : addonsToRemove) {
-+ setAddonInstalled(toRemove, false);
-+ }
-+}
-+
-+void AlpineApkResource::setAddonInstalled(const QString &addon, bool installed)
-+{
-+ for(PackageState &elem : m_addons) {
-+ if(elem.name() == addon) {
-+ elem.setInstalled(installed);
-+ }
-+ }
-+}
-+
-+
-+void AlpineApkResource::invokeApplication() const
-+{
-+ // QDesktopServices d;
-+ // d.openUrl(QUrl(QStringLiteral("https://projects.kde.org/projects/extragear/sysadmin/muon")));
-+}
-+
-+QUrl AlpineApkResource::url() const
-+{
-+ return QUrl(QLatin1String("apk://") + packageName());
-+}
-+
-+QString AlpineApkResource::author() const
-+{
-+ return m_pkg.maintainer;
-+}
-+
-+QString AlpineApkResource::sourceIcon() const
-+{
-+ return QStringLiteral("player-time");
-+}
-+
-+QDate AlpineApkResource::releaseDate() const
-+{
-+ return m_pkg.buildTime.date();
-+}
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-new file mode 100644
-index 000000000..79b100e10
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-@@ -0,0 +1,81 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef ALPINEAPKRESOURCE_H
-+#define ALPINEAPKRESOURCE_H
-+
-+#include <resources/AbstractResource.h>
-+#include <QtApkPackage.h>
-+
-+class AddonList;
-+
-+class AlpineApkResource : public AbstractResource
-+{
-+ Q_OBJECT
-+
-+public:
-+ explicit AlpineApkResource(const QtApk::Package &apkPkg, AbstractResourcesBackend *parent);
-+
-+ QList<PackageState> addonsInformation() override;
-+ QString section() override;
-+ QString origin() const override;
-+ QString longDescription() override;
-+ QString availableVersion() const override;
-+ QString installedVersion() const override;
-+ QJsonArray licenses() override;
-+ int size() override;
-+ QUrl homepage() override;
-+ QUrl helpURL() override;
-+ QUrl bugURL() override;
-+ QUrl donationURL() override;
-+ QStringList categories() override;
-+ AbstractResource::State state() override;
-+ QVariant icon() const override;
-+ QString comment() override;
-+ QString name() const override;
-+ QString packageName() const override;
-+ AbstractResource::Type type() const override { return m_type; }
-+ bool canExecute() const override { return true; }
-+ void invokeApplication() const override;
-+ void fetchChangelog() override;
-+ void fetchScreenshots() override;
-+ QUrl url() const override;
-+ QString author() const override;
-+ QString sourceIcon() const override;
-+ QDate releaseDate() const override;
-+
-+ void setState(State state);
-+ void setCategoryName(const QString &categoryName);
-+ void setOriginSource(const QString &originSource);
-+ void setSection(const QString &sectionName);
-+ void setAddons(const AddonList &addons);
-+ void setAddonInstalled(const QString &addon, bool installed);
-+
-+public:
-+ AbstractResource::State m_state;
-+ const AbstractResource::Type m_type;
-+ QtApk::Package m_pkg;
-+ QString m_category;
-+ QString m_originSoruce;
-+ QString m_sectionName;
-+ QList<PackageState> m_addons;
-+};
-+
-+#endif // ALPINEAPKRESOURCE_H
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-new file mode 100644
-index 000000000..b964b40d1
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-@@ -0,0 +1,151 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include "AlpineApkSourcesBackend.h"
-+#include "alpineapk_backend_logging.h" // generated by ECM
-+
-+#include <QDebug>
-+#include <QAction>
-+#include <QVector>
-+
-+// KF5
-+#include <KLocalizedString>
-+
-+// libapk-qt
-+#include <QtApk.h>
-+
-+AlpineApkSourcesBackend::AlpineApkSourcesBackend(AbstractResourcesBackend *parent)
-+ : AbstractSourcesBackend(parent)
-+ , m_sourcesModel(new QStandardItemModel(this))
-+ , m_refreshAction(new QAction(QIcon::fromTheme(QStringLiteral("view-refresh")),
-+ QStringLiteral("Refresh"), this))
-+{
-+ loadSources();
-+ QObject::connect(m_refreshAction, &QAction::triggered,
-+ this, &AlpineApkSourcesBackend::loadSources);
-+
-+ // can be used to track enabling/disabling repo source
-+ // QObject::connect(m_sourcesModel, &QStandardItemModel::itemChanged, this, [](QStandardItem* item) {
-+ // qCDebug(LOG_ALPINEAPK) << "source backend: DummySource changed" << item << item->checkState();
-+ // });
-+}
-+
-+QAbstractItemModel *AlpineApkSourcesBackend::sources()
-+{
-+ return m_sourcesModel;
-+}
-+
-+bool AlpineApkSourcesBackend::addSource(const QString &id)
-+{
-+ return addSourceFull(id, QString(), true);
-+}
-+
-+QStandardItem *AlpineApkSourcesBackend::sourceForId(const QString& id) const
-+{
-+ for (int i = 0, c = m_sourcesModel->rowCount(); i < c; ++i) {
-+ QStandardItem *it = m_sourcesModel->item(i, 0);
-+ if (it->text() == id) {
-+ return it;
-+ }
-+ }
-+ return nullptr;
-+}
-+
-+bool AlpineApkSourcesBackend::addSourceFull(const QString &id, const QString &comment, bool enabled)
-+{
-+ if (id.isEmpty()) {
-+ return false;
-+ }
-+
-+ qCDebug(LOG_ALPINEAPK) << "source backend: Adding source:" << id;
-+
-+ QStandardItem *it = new QStandardItem(id);
-+ it->setData(id, AbstractSourcesBackend::IdRole);
-+ it->setData(comment, Qt::ToolTipRole);
-+ it->setCheckable(true);
-+ it->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
-+ // for now, disable editing sources
-+ it->setFlags(it->flags() & ~Qt::ItemIsEnabled);
-+ m_sourcesModel->appendRow(it);
-+ return true;
-+}
-+
-+void AlpineApkSourcesBackend::loadSources()
-+{
-+ QVector<QtApk::Repository> repos = QtApk::Database::getRepositories();
-+ m_sourcesModel->clear();
-+ for (const QtApk::Repository &repo: repos) {
-+ addSourceFull(repo.url, repo.comment, repo.enabled);
-+ }
-+}
-+
-+bool AlpineApkSourcesBackend::removeSource(const QString &id)
-+{
-+ const QStandardItem *it = sourceForId(id);
-+ if (!it) {
-+ qCWarning(LOG_ALPINEAPK) << "source backend: couldn't find " << id;
-+ return false;
-+ }
-+ return m_sourcesModel->removeRow(it->row());
-+}
-+
-+QString AlpineApkSourcesBackend::idDescription()
-+{
-+ return i18nc("Adding repo", "Enter apk repository URL, for example: "
-+ "http://dl-cdn.alpinelinux.org/alpine/edge/testing/");
-+}
-+
-+QVariantList AlpineApkSourcesBackend::actions() const
-+{
-+ static const QVariantList s_actions {
-+ QVariant::fromValue<QObject *>(m_refreshAction),
-+ };
-+ return s_actions;
-+}
-+
-+bool AlpineApkSourcesBackend::supportsAdding() const
-+{
-+ return false; // for now, disable editing sources
-+}
-+
-+bool AlpineApkSourcesBackend::canMoveSources() const
-+{
-+ return false; // for now, disable editing sources
-+}
-+
-+bool AlpineApkSourcesBackend::moveSource(const QString& sourceId, int delta)
-+{
-+ int row = sourceForId(sourceId)->row();
-+ QList<QStandardItem *> prevRow = m_sourcesModel->takeRow(row);
-+ if (prevRow.isEmpty()) {
-+ return false;
-+ }
-+
-+ const int destRow = row + delta;
-+ m_sourcesModel->insertRow(destRow, prevRow);
-+ if (destRow == 0 || row == 0) {
-+ Q_EMIT firstSourceIdChanged();
-+ }
-+ if (destRow == (m_sourcesModel->rowCount() - 1)
-+ || row == (m_sourcesModel->rowCount() - 1)) {
-+ Q_EMIT lastSourceIdChanged();
-+ }
-+ return true;
-+}
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-new file mode 100644
-index 000000000..578945917
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-@@ -0,0 +1,50 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef ALPINEAPKSOURCESBACKEND_H
-+#define ALPINEAPKSOURCESBACKEND_H
-+
-+#include <resources/AbstractSourcesBackend.h>
-+#include <QStandardItemModel>
-+
-+class AlpineApkSourcesBackend : public AbstractSourcesBackend
-+{
-+public:
-+ explicit AlpineApkSourcesBackend(AbstractResourcesBackend *parent);
-+
-+ QAbstractItemModel *sources() override;
-+ bool addSource(const QString &id) override;
-+ bool removeSource(const QString &id) override;
-+ QString idDescription() override;
-+ QVariantList actions() const override;
-+ bool supportsAdding() const override;
-+ bool canMoveSources() const override;
-+ bool moveSource(const QString &sourceId, int delta) override;
-+
-+private:
-+ QStandardItem *sourceForId(const QString &id) const;
-+ bool addSourceFull(const QString &id, const QString &comment, bool enabled);
-+ void loadSources();
-+
-+ QStandardItemModel *m_sourcesModel = nullptr;
-+ QAction *m_refreshAction = nullptr;
-+};
-+
-+#endif // ALPINEAPKSOURCESBACKEND_H
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-new file mode 100644
-index 000000000..b4f90df56
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-@@ -0,0 +1,90 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include "AlpineApkTransaction.h"
-+#include "AlpineApkBackend.h"
-+#include "AlpineApkResource.h"
-+#include "alpineapk_backend_logging.h" // generated by ECM
-+#include <QTimer>
-+#include <QDebug>
-+#include <KRandom>
-+
-+// #define TEST_PROCEED
-+
-+AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *app, Role role)
-+ : AlpineApkTransaction(app, {}, role)
-+{
-+}
-+
-+AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *app, const AddonList &addons, Transaction::Role role)
-+ : Transaction(app->backend(), app, role, addons)
-+ , m_app(app)
-+{
-+ setCancellable(true);
-+ setStatus(DownloadingStatus);
-+ iterateTransaction();
-+}
-+
-+void AlpineApkTransaction::iterateTransaction()
-+{
-+ if (!m_iterate) {
-+ return;
-+ }
-+
-+ if(progress() < 100) {
-+ setProgress(qBound(0, progress() + (KRandom::random() % 30), 100));
-+ QTimer::singleShot(/*KRandom::random()%*/100, this, &AlpineApkTransaction::iterateTransaction);
-+ } else if (status() == DownloadingStatus) {
-+ setStatus(CommittingStatus);
-+ QTimer::singleShot(/*KRandom::random()%*/100, this, &AlpineApkTransaction::iterateTransaction);
-+ } else {
-+ finishTransaction();
-+ }
-+}
-+
-+void AlpineApkTransaction::proceed()
-+{
-+ finishTransaction();
-+}
-+
-+void AlpineApkTransaction::cancel()
-+{
-+ m_iterate = false;
-+
-+ setStatus(CancelledStatus);
-+}
-+
-+void AlpineApkTransaction::finishTransaction()
-+{
-+ AbstractResource::State newState;
-+ switch(role()) {
-+ case InstallRole:
-+ case ChangeAddonsRole:
-+ newState = AbstractResource::Installed;
-+ break;
-+ case RemoveRole:
-+ newState = AbstractResource::None;
-+ break;
-+ }
-+ m_app->setAddons(addons());
-+ m_app->setState(newState);
-+ setStatus(DoneStatus);
-+ deleteLater();
-+}
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-new file mode 100644
-index 000000000..63aeef8d7
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-@@ -0,0 +1,46 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef ALPINEAPKTRANSACTION_H
-+#define ALPINEAPKTRANSACTION_H
-+
-+#include <Transaction/Transaction.h>
-+
-+class AlpineApkResource;
-+class AlpineApkTransaction : public Transaction
-+{
-+ Q_OBJECT
-+ public:
-+ AlpineApkTransaction(AlpineApkResource *app, Role role);
-+ AlpineApkTransaction(AlpineApkResource *app, const AddonList &list, Role role);
-+
-+ void cancel() override;
-+ void proceed() override;
-+
-+ private Q_SLOTS:
-+ void iterateTransaction();
-+ void finishTransaction();
-+
-+ private:
-+ bool m_iterate = true;
-+ AlpineApkResource *m_app;
-+};
-+
-+#endif // ALPINEAPKTRANSACTION_H
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-new file mode 100644
-index 000000000..45a56eb63
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -0,0 +1,52 @@
-+# add_subdirectory(tests) # no tests yet
-+
-+set(alpineapkbackend_SRCS
-+ AlpineApkBackend.cpp
-+ AlpineApkBackend.h
-+ AlpineApkResource.cpp
-+ AlpineApkResource.h
-+ AlpineApkSourcesBackend.cpp
-+ AlpineApkSourcesBackend.h
-+ AlpineApkTransaction.cpp
-+ AlpineApkTransaction.h
-+)
-+
-+ecm_qt_declare_logging_category(
-+ alpineapkbackend_SRCS # sources_var
-+ HEADER alpineapk_backend_logging.h
-+ IDENTIFIER LOG_ALPINEAPK
-+ CATEGORY_NAME org.kde.plasma.discover.alpineapk
-+ DEFAULT_SEVERITY Debug
-+)
-+
-+add_library(
-+ alpineapk-backend
-+ MODULE
-+ ${alpineapkbackend_SRCS}
-+)
-+
-+target_link_libraries(
-+ alpineapk-backend
-+ PRIVATE
-+ Qt5::Core
-+ Qt5::Widgets
-+ KF5::CoreAddons
-+ KF5::ConfigCore
-+ Discover::Common
-+ apk-qt
-+)
-+
-+install(
-+ TARGETS alpineapk-backend
-+ DESTINATION ${PLUGIN_INSTALL_DIR}/discover
-+)
-+
-+# install(FILES alpineapk-backend-categories.xml DESTINATION ${DATA_INSTALL_DIR}/libdiscover/categories)
-+
-+# add_library(AlpineApkNotifier MODULE AlpineApkNotifier.cpp)
-+
-+# target_link_libraries(AlpineApkNotifier Discover::Notifiers)
-+
-+# set_target_properties(AlpineApkNotifier PROPERTIES INSTALL_RPATH ${CMAKE_INSTALL_FULL_LIBDIR}/plasma-discover)
-+
-+# install(TARGETS AlpineApkNotifier DESTINATION ${PLUGIN_INSTALL_DIR}/discover-notifier)
-diff --git a/libdiscover/backends/CMakeLists.txt b/libdiscover/backends/CMakeLists.txt
-index bd3a03256..0807e7b75 100644
---- a/libdiscover/backends/CMakeLists.txt
-+++ b/libdiscover/backends/CMakeLists.txt
-@@ -54,3 +54,16 @@ option(BUILD_RpmOstreeBackend "Build rpm-ostree support." "ON")
- if(BUILD_RpmOstreeBackend AND Ostree_FOUND AND RpmOstree_FOUND)
- add_subdirectory(RpmOstreeBackend)
- endif()
-+
-+# Optional library
-+find_package(ApkQt CONFIG)
-+set_package_properties(ApkQt PROPERTIES
-+ DESCRIPTION "C++/Qt interface library for Alpine package keeper"
-+ URL "https://gitlab.com/postmarketOS/libapk-qt"
-+ PURPOSE "Required to build the Alpine APK backend"
-+ TYPE OPTIONAL)
-+
-+option(BUILD_AlpineApkBackend "Build Alpine APK support." "ON")
-+if(BUILD_AlpineApkBackend AND ApkQt_FOUND)
-+ add_subdirectory(AlpineApkBackend)
-+endif()
---
-GitLab
-
-
-From a19a743a93156e9036652bb902d33f5bcd09475c Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jan 2020 17:35:17 +0300
-Subject: [PATCH 02/61] CMake: Add AlpineApkReviewsBackend + its files
-
----
- .../AlpineApkReviewsBackend.cpp | 35 +++++++++++++
- .../AlpineApkReviewsBackend.h | 52 +++++++++++++++++++
- .../backends/AlpineApkBackend/CMakeLists.txt | 2 +
- 3 files changed, 89 insertions(+)
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.cpp
-new file mode 100644
-index 000000000..fd7ad47f2
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.cpp
-@@ -0,0 +1,35 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include "AlpineApkReviewsBackend.h"
-+#include "AlpineApkBackend.h"
-+#include "resources/AbstractResource.h"
-+
-+AlpineApkReviewsBackend::AlpineApkReviewsBackend(AlpineApkBackend *parent)
-+ : AbstractReviewsBackend(parent)
-+{
-+}
-+
-+void AlpineApkReviewsBackend::fetchReviews(AbstractResource *app, int page)
-+{
-+ Q_UNUSED(page)
-+ static const QVector<ReviewPtr> reviews;
-+ Q_EMIT reviewsReady(app, reviews, false);
-+}
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h
-new file mode 100644
-index 000000000..435f845ba
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h
-@@ -0,0 +1,52 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef ALPINEAPKREVIEWSBACKEND_H
-+#define ALPINEAPKREVIEWSBACKEND_H
-+
-+#include "ReviewsBackend/AbstractReviewsBackend.h"
-+
-+class AlpineApkBackend;
-+
-+class AlpineApkReviewsBackend : public AbstractReviewsBackend
-+{
-+ Q_OBJECT
-+
-+public:
-+ explicit AlpineApkReviewsBackend(AlpineApkBackend *parent = nullptr);
-+
-+ QString userName() const override { return QStringLiteral("dummy"); }
-+ void login() override {}
-+ void logout() override {}
-+ void registerAndLogin() override {}
-+
-+ Rating *ratingForApplication(AbstractResource *) const override { return nullptr; }
-+ bool hasCredentials() const override { return false; }
-+ void deleteReview(Review *) override {}
-+ void fetchReviews(AbstractResource *app, int page = 1) override;
-+ bool isFetching() const override { return false; }
-+ bool isReviewable() const override { return false; }
-+ void submitReview(AbstractResource *, const QString &, const QString &, const QString &) override {}
-+ void flagReview(Review *, const QString&, const QString&) override {}
-+ void submitUsefulness(Review *, bool) override {}
-+ bool isResourceSupported(AbstractResource *) const override { return false; }
-+};
-+
-+#endif // ALPINEAPKREVIEWSBACKEND_H
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 45a56eb63..7d2b86e82 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -5,6 +5,8 @@ set(alpineapkbackend_SRCS
- AlpineApkBackend.h
- AlpineApkResource.cpp
- AlpineApkResource.h
-+ AlpineApkReviewsBackend.cpp
-+ AlpineApkReviewsBackend.h
- AlpineApkSourcesBackend.cpp
- AlpineApkSourcesBackend.h
- AlpineApkTransaction.cpp
---
-GitLab
-
-
-From b964655d508438d3ec7669f45cbf5189e1cbd9ca Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jan 2020 17:35:43 +0300
-Subject: [PATCH 03/61] AlpineApkBackend: use own reviews backend
-
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 15 +++++----------
- .../backends/AlpineApkBackend/AlpineApkBackend.h | 4 ++--
- 2 files changed, 7 insertions(+), 12 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index f5aa5477d..de93609ac 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -20,7 +20,7 @@
-
- #include "AlpineApkBackend.h"
- #include "AlpineApkResource.h"
--//#include "DummyReviewsBackend.h"
-+#include "AlpineApkReviewsBackend.h"
- #include "AlpineApkTransaction.h"
- #include "AlpineApkSourcesBackend.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
-@@ -46,6 +46,7 @@ DISCOVER_BACKEND_PLUGIN(AlpineApkBackend)
- AlpineApkBackend::AlpineApkBackend(QObject *parent)
- : AbstractResourcesBackend(parent)
- , m_updater(new StandardBackendUpdater(this))
-+ , m_reviews(new AlpineApkReviewsBackend(this))
- , m_startElements(120)
- {
- #ifndef QT_DEBUG
-@@ -55,12 +56,9 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- qCDebug(LOG_ALPINEAPK) << "constructing backend!";
-
- QTimer::singleShot(500, this, &AlpineApkBackend::toggleFetching);
-- //connect(m_reviews, &DummyReviewsBackend::ratingsReady, this, &AbstractResourcesBackend::emitRatingsReady);
- connect(m_updater, &StandardBackendUpdater::updatesCountChanged, this, &AlpineApkBackend::updatesCountChanged);
-
- populate();
-- //if (!m_fetching)
-- // m_reviews->initialize();
-
- SourcesModel::global()->addSourcesBackend(new AlpineApkSourcesBackend(this));
- }
-@@ -117,10 +115,9 @@ void AlpineApkBackend::populate()
- void AlpineApkBackend::toggleFetching()
- {
- m_fetching = !m_fetching;
-+
- qCDebug(LOG_ALPINEAPK) << "fetching..." << m_fetching;
- emit fetchingChanged();
-- //if (!m_fetching)
-- // m_reviews->initialize();
- }
-
- int AlpineApkBackend::updatesCount() const
-@@ -195,9 +192,7 @@ AbstractBackendUpdater *AlpineApkBackend::backendUpdater() const
-
- AbstractReviewsBackend *AlpineApkBackend::reviewsBackend() const
- {
-- // qCDebug(LOG_ALPINEAPK) << "reviewsBbackend(): we don't support reviews (";
-- // return m_reviews;
-- return nullptr;
-+ return m_reviews;
- }
-
- Transaction* AlpineApkBackend::installApplication(AbstractResource *app, const AddonList &addons)
-@@ -221,7 +216,7 @@ void AlpineApkBackend::checkForUpdates()
- qCDebug(LOG_ALPINEAPK) << "checkForUpdates(): already fetching";
- return;
- }
-- qCDebug(LOG_ALPINEAPK) << "checkForUpdates()!";
-+ qCDebug(LOG_ALPINEAPK) << "checkForUpdates() start!";
- toggleFetching();
- // populate(QStringLiteral("Moar"));
- QTimer::singleShot(1000, this, &AlpineApkBackend::toggleFetching);
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index 624df1c9f..f8d3aa69f 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -26,7 +26,7 @@
-
- #include <QtApk.h>
-
--// class DummyReviewsBackend;
-+class AlpineApkReviewsBackend;
- class StandardBackendUpdater;
- class AlpineApkResource;
- class AlpineApkBackend : public AbstractResourcesBackend
-@@ -62,7 +62,7 @@ private:
-
- QHash<QString, AlpineApkResource *> m_resources;
- StandardBackendUpdater *m_updater;
-- // DummyReviewsBackend* m_reviews;
-+ AlpineApkReviewsBackend *m_reviews;
- QtApk::Database m_apkdb;
- QVector<QtApk::Package> m_availablePackages;
- QVector<QtApk::Package> m_installedPackages;
---
-GitLab
-
-
-From 6dc717adda44574fff7e4f6409cc7372d15c657c Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jan 2020 19:53:39 +0300
-Subject: [PATCH 04/61] AlpineApkBackend: some cleanup on updates checking
- functions
-
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 41 ++++++++++++-------
- .../AlpineApkBackend/AlpineApkBackend.h | 5 ++-
- 2 files changed, 30 insertions(+), 16 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index de93609ac..41b2e0532 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -55,8 +55,10 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
-
- qCDebug(LOG_ALPINEAPK) << "constructing backend!";
-
-- QTimer::singleShot(500, this, &AlpineApkBackend::toggleFetching);
-- connect(m_updater, &StandardBackendUpdater::updatesCountChanged, this, &AlpineApkBackend::updatesCountChanged);
-+ QTimer::singleShot(1000, this, &AlpineApkBackend::startCheckForUpdates);
-+
-+ QObject::connect(m_updater, &StandardBackendUpdater::updatesCountChanged,
-+ this, &AlpineApkBackend::updatesCountChanged);
-
- populate();
-
-@@ -65,12 +67,14 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
-
- QVector<Category *> AlpineApkBackend::category() const
- {
-+ // single root category
-+ // we could add more, but Alpine apk does not have this concept
- static Category *cat = new Category(
-- QStringLiteral("All applications"), // displayName
-- QStringLiteral("applications-other"), // icon
-- { }, // orFilters
-+ QStringLiteral("All packages"), // displayName
-+ QStringLiteral("package-x-generic"), // icon
-+ {}, // orFilters
- { displayName() }, // pluginName
-- { }, // subCategories
-+ {}, // subCategories
- QUrl(), // decoration (what is it?)
- false // isAddons
- );
-@@ -112,11 +116,23 @@ void AlpineApkBackend::populate()
- }
- }
-
--void AlpineApkBackend::toggleFetching()
-+void AlpineApkBackend::startCheckForUpdates()
- {
-- m_fetching = !m_fetching;
-+ if (m_fetching) {
-+ return;
-+ }
-+ qCDebug(LOG_ALPINEAPK) << "startCheckForUpdates()";
-+
-+ m_fetching = true;
-+ emit fetchingChanged();
-+
-+ // temporary hack - finish updates check in 5 seconds
-+ QTimer::singleShot(5000, this, &AlpineApkBackend::finishCheckForUpdates);
-+}
-
-- qCDebug(LOG_ALPINEAPK) << "fetching..." << m_fetching;
-+void AlpineApkBackend::finishCheckForUpdates()
-+{
-+ m_fetching = false;
- emit fetchingChanged();
- }
-
-@@ -212,14 +228,11 @@ Transaction* AlpineApkBackend::removeApplication(AbstractResource *app)
-
- void AlpineApkBackend::checkForUpdates()
- {
-- if(m_fetching) {
-+ if (m_fetching) {
- qCDebug(LOG_ALPINEAPK) << "checkForUpdates(): already fetching";
- return;
- }
-- qCDebug(LOG_ALPINEAPK) << "checkForUpdates() start!";
-- toggleFetching();
-- // populate(QStringLiteral("Moar"));
-- QTimer::singleShot(1000, this, &AlpineApkBackend::toggleFetching);
-+ startCheckForUpdates();
- }
-
- QString AlpineApkBackend::displayName() const
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index f8d3aa69f..68a47bc92 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -55,7 +55,8 @@ public:
- bool hasApplications() const override;
-
- public Q_SLOTS:
-- void toggleFetching();
-+ void startCheckForUpdates();
-+ void finishCheckForUpdates();
-
- private:
- void populate();
-@@ -66,7 +67,7 @@ private:
- QtApk::Database m_apkdb;
- QVector<QtApk::Package> m_availablePackages;
- QVector<QtApk::Package> m_installedPackages;
-- bool m_fetching = true;
-+ bool m_fetching = false;
- int m_startElements = 0;
- };
-
---
-GitLab
-
-
-From 4680d6b7e04f35fb6ef50f883b6c994f26f9f537 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jan 2020 19:54:04 +0300
-Subject: [PATCH 05/61] Add KAuth helper process for privileged operations
-
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 56 +++++++++++++++++++
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 35 ++++++++++++
- .../backends/AlpineApkBackend/CMakeLists.txt | 26 ++++++++-
- .../org.kde.discover.alpineapkbackend.actions | 5 ++
- 4 files changed, 120 insertions(+), 2 deletions(-)
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
- create mode 100644 libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-new file mode 100644
-index 000000000..6783f35cc
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -0,0 +1,56 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include <QProcess>
-+#include <QDebug>
-+#include <QJsonDocument>
-+#include <QJsonObject>
-+#include <QJsonArray>
-+#include <QFile>
-+#include <KAuthHelperSupport>
-+
-+#include "AlpineApkAuthHelper.h"
-+
-+using namespace KAuth;
-+
-+AlpineApkAuthHelper::AlpineApkAuthHelper() {}
-+
-+ActionReply AlpineApkAuthHelper::test_action(const QVariantMap &args)
-+{
-+ const QString txt = args[QStringLiteral("txt")].toString();
-+
-+ ActionReply reply = ActionReply::HelperErrorReply();
-+ QByteArray replyData(QByteArrayLiteral("ok"));
-+
-+ QFile f(QStringLiteral("/lol.txt"));
-+ if (f.open(QIODevice::ReadWrite | QIODevice::Text)) {
-+ f.write(txt.toUtf8());
-+ f.close();
-+
-+ reply = ActionReply::SuccessReply();
-+ reply.setData({
-+ { QStringLiteral("reply"), replyData },
-+ });
-+ }
-+
-+ return reply;
-+}
-+
-+KAUTH_HELPER_MAIN("org.kde.discover.alpineapkbackend", AlpineApkAuthHelper)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-new file mode 100644
-index 000000000..86f7d3dcf
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -0,0 +1,35 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include <QObject>
-+#include <QVariant>
-+#include <KAuthActionReply>
-+
-+using namespace KAuth;
-+
-+class AlpineApkAuthHelper : public QObject
-+{
-+ Q_OBJECT
-+public:
-+ AlpineApkAuthHelper();
-+
-+public Q_SLOTS:
-+ ActionReply test_action(const QVariantMap &args);
-+};
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 7d2b86e82..f67cf84f9 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -1,4 +1,4 @@
--# add_subdirectory(tests) # no tests yet
-+find_package(KF5Auth CONFIG REQUIRED) # Probably should be moved to top CMakeLists
-
- set(alpineapkbackend_SRCS
- AlpineApkBackend.cpp
-@@ -38,12 +38,34 @@ target_link_libraries(
- apk-qt
- )
-
-+# KAuth helper exe
-+add_executable(alpineapk_kauth_helper
-+ AlpineApkAuthHelper.cpp
-+ AlpineApkAuthHelper.h
-+ org.kde.discover.alpineapkbackend.actions
-+)
-+set_source_files_properties(
-+ org.kde.discover.alpineapkbackend.actions
-+ PROPERTIES HEADER_FILE_ONLY ON
-+)
-+target_link_libraries(alpineapk_kauth_helper
-+ Qt5::Core
-+ KF5::AuthCore
-+ apk-qt
-+)
-+
-+kauth_install_actions(org.kde.discover.alpineapkbackend org.kde.discover.alpineapkbackend.actions)
-+kauth_install_helper_files(alpineapk_kauth_helper org.kde.discover.alpineapkbackend root)
-+
- install(
- TARGETS alpineapk-backend
- DESTINATION ${PLUGIN_INSTALL_DIR}/discover
- )
-
--# install(FILES alpineapk-backend-categories.xml DESTINATION ${DATA_INSTALL_DIR}/libdiscover/categories)
-+install(
-+ TARGETS alpineapk_kauth_helper
-+ DESTINATION ${KAUTH_HELPER_INSTALL_DIR}
-+)
-
- # add_library(AlpineApkNotifier MODULE AlpineApkNotifier.cpp)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-new file mode 100644
-index 000000000..ba9ede912
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -0,0 +1,5 @@
-+[org.kde.discover.alpineapkbackend.test_action]
-+Name=Test Action
-+Description=Just test
-+Policy=auth_admin
-+Persistence=session
---
-GitLab
-
-
-From 73cac685b90592ac1b8d87102bd55f7d31e5d9c0 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jan 2020 20:41:07 +0300
-Subject: [PATCH 06/61] AlpineApkBackend: WIP on using KAuth helper
-
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 2 +-
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 2 +-
- .../AlpineApkBackend/AlpineApkBackend.cpp | 34 +++++++++++++++++--
- .../AlpineApkBackend/AlpineApkBackend.h | 3 ++
- .../backends/AlpineApkBackend/CMakeLists.txt | 1 +
- .../org.kde.discover.alpineapkbackend.actions | 2 +-
- 6 files changed, 39 insertions(+), 5 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 6783f35cc..19236dcb3 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -32,7 +32,7 @@ using namespace KAuth;
-
- AlpineApkAuthHelper::AlpineApkAuthHelper() {}
-
--ActionReply AlpineApkAuthHelper::test_action(const QVariantMap &args)
-+ActionReply AlpineApkAuthHelper::test(const QVariantMap &args)
- {
- const QString txt = args[QStringLiteral("txt")].toString();
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index 86f7d3dcf..947dcb7ac 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -31,5 +31,5 @@ public:
- AlpineApkAuthHelper();
-
- public Q_SLOTS:
-- ActionReply test_action(const QVariantMap &args);
-+ ActionReply test(const QVariantMap &args);
- };
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index 41b2e0532..ed016aef3 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -35,6 +35,8 @@
- #include <KPluginFactory>
- #include <KConfigGroup>
- #include <KSharedConfig>
-+#include <KAuthExecuteJob>
-+
- #include <QDebug>
- #include <QLoggingCategory>
- #include <QThread>
-@@ -116,6 +118,19 @@ void AlpineApkBackend::populate()
- }
- }
-
-+void AlpineApkBackend::handleKauthHelperReply(KJob *job)
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ KAuth::ExecuteJob* reply = static_cast<KAuth::ExecuteJob *>(job);
-+ const QVariantMap replyData = reply->data();
-+ if (reply->error() == 0) {
-+ qCDebug(LOG_ALPINEAPK) << replyData[QLatin1String("reply")].toString();
-+ } else {
-+ const QString message = replyData.value(QLatin1String("errorString"), reply->errorString()).toString();
-+ qCDebug(LOG_ALPINEAPK) << message;
-+ }
-+}
-+
- void AlpineApkBackend::startCheckForUpdates()
- {
- if (m_fetching) {
-@@ -123,11 +138,26 @@ void AlpineApkBackend::startCheckForUpdates()
- }
- qCDebug(LOG_ALPINEAPK) << "startCheckForUpdates()";
-
-+ // temporary hack - finish updates check in 5 seconds
-+ QTimer::singleShot(5000, this, &AlpineApkBackend::finishCheckForUpdates);
-+
- m_fetching = true;
- emit fetchingChanged();
-
-- // temporary hack - finish updates check in 5 seconds
-- QTimer::singleShot(5000, this, &AlpineApkBackend::finishCheckForUpdates);
-+ KAuth::Action testAction(QStringLiteral("org.kde.discover.alpineapkbackend.test"));
-+ testAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-+ testAction.setArguments({
-+ { QStringLiteral("txt"), QLatin1String("Wooo!") },
-+ });
-+ if (!testAction.isValid()) {
-+ qCWarning(LOG_ALPINEAPK) << "kauth action is not valid!";
-+ return;
-+ }
-+
-+ KAuth::ExecuteJob *reply = testAction.execute();
-+ QObject::connect(reply, &KAuth::ExecuteJob::result,
-+ this, &AlpineApkBackend::handleKauthHelperReply);
-+ reply->start();
- }
-
- void AlpineApkBackend::finishCheckForUpdates()
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index 68a47bc92..a533cee39 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -29,6 +29,8 @@
- class AlpineApkReviewsBackend;
- class StandardBackendUpdater;
- class AlpineApkResource;
-+class KJob;
-+
- class AlpineApkBackend : public AbstractResourcesBackend
- {
- Q_OBJECT
-@@ -55,6 +57,7 @@ public:
- bool hasApplications() const override;
-
- public Q_SLOTS:
-+ void handleKauthHelperReply(KJob *job);
- void startCheckForUpdates();
- void finishCheckForUpdates();
-
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index f67cf84f9..ede3157f0 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -34,6 +34,7 @@ target_link_libraries(
- Qt5::Widgets
- KF5::CoreAddons
- KF5::ConfigCore
-+ KF5::AuthCore
- Discover::Common
- apk-qt
- )
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-index ba9ede912..3b9a3116e 100644
---- a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -1,4 +1,4 @@
--[org.kde.discover.alpineapkbackend.test_action]
-+[org.kde.discover.alpineapkbackend.test]
- Name=Test Action
- Description=Just test
- Policy=auth_admin
---
-GitLab
-
-
-From 9f19dc5398a67ac64e28a9ccc16f378ff42a6862 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 3 Feb 2020 03:49:52 +0300
-Subject: [PATCH 07/61] kath helper: add and implement update() and upgrade()
- actions
-
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 97 +++++++++++++++++++
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 9 ++
- .../org.kde.discover.alpineapkbackend.actions | 24 +++++
- 3 files changed, 130 insertions(+)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 19236dcb3..4ff5c880a 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -20,14 +20,22 @@
-
- #include <QProcess>
- #include <QDebug>
-+#include <QLoggingCategory>
- #include <QJsonDocument>
- #include <QJsonObject>
- #include <QJsonArray>
- #include <QFile>
-+
- #include <KAuthHelperSupport>
-
- #include "AlpineApkAuthHelper.h"
-
-+#ifdef QT_DEBUG
-+Q_LOGGING_CATEGORY(LOG_AUTHHELPER, "org.kde.discover.alpineapkbackend.authhelper", QtDebugMsg)
-+#else
-+Q_LOGGING_CATEGORY(LOG_AUTHHELPER, "org.kde.discover.alpineapkbackend.authhelper", QtWarningMsg)
-+#endif
-+
- using namespace KAuth;
-
- AlpineApkAuthHelper::AlpineApkAuthHelper() {}
-@@ -39,6 +47,7 @@ ActionReply AlpineApkAuthHelper::test(const QVariantMap &args)
- ActionReply reply = ActionReply::HelperErrorReply();
- QByteArray replyData(QByteArrayLiteral("ok"));
-
-+ // write some text file at the root directory as root, why not
- QFile f(QStringLiteral("/lol.txt"));
- if (f.open(QIODevice::ReadWrite | QIODevice::Text)) {
- f.write(txt.toUtf8());
-@@ -53,4 +62,92 @@ ActionReply AlpineApkAuthHelper::test(const QVariantMap &args)
- return reply;
- }
-
-+ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
-+{
-+ Q_UNUSED(args)
-+ ActionReply reply = ActionReply::HelperErrorReply();
-+
-+ HelperSupport::progressStep(10);
-+
-+ if (!m_apkdb.open(QtApk::Database::QTAPK_OPENF_READWRITE)) {
-+ reply.setErrorDescription(QStringLiteral("Failed to open database!"));
-+ return reply;
-+ }
-+
-+ bool update_ok = m_apkdb.updatePackageIndex();
-+
-+ if (update_ok) {
-+ int updatesCount = m_apkdb.upgradeablePackagesCount();
-+ reply = ActionReply::SuccessReply();
-+ reply.setData({
-+ { QLatin1String("updatesCount"), updatesCount }
-+ });
-+ } else {
-+ reply.setErrorDescription(QStringLiteral("Repo update failed!"));
-+ reply.setData({
-+ { QLatin1String("errorString"), QStringLiteral("Repo update failed!") }
-+ });
-+ }
-+
-+ m_apkdb.close();
-+ HelperSupport::progressStep(100);
-+
-+ return reply;
-+}
-+
-+ActionReply AlpineApkAuthHelper::add(const QVariantMap &args)
-+{
-+ ActionReply reply = ActionReply::HelperErrorReply();
-+ return reply;
-+}
-+
-+ActionReply AlpineApkAuthHelper::del(const QVariantMap &args)
-+{
-+ ActionReply reply = ActionReply::HelperErrorReply();
-+ return reply;
-+}
-+
-+ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
-+{
-+ ActionReply reply = ActionReply::HelperErrorReply();
-+
-+ HelperSupport::progressStep(10);
-+
-+ if (!m_apkdb.open(QtApk::Database::QTAPK_OPENF_READWRITE)) {
-+ reply.setErrorDescription(QStringLiteral("Failed to open database!"));
-+ return reply;
-+ }
-+
-+ bool onlySimulate = args.value(QLatin1String("onlySimulate"), false).toBool();
-+ QtApk::Database::DbUpgradeFlags flags = QtApk::Database::QTAPK_UPGRADE_DEFAULT;
-+ if (onlySimulate) {
-+ flags = QtApk::Database::QTAPK_UPGRADE_SIMULATE;
-+ qCDebug(LOG_AUTHHELPER) << "Simulating upgrade run.";
-+ }
-+
-+ QtApk::Changeset changes;
-+ bool upgrade_ok = m_apkdb.upgrade(flags, &changes);
-+
-+ if (upgrade_ok) {
-+ reply = ActionReply::SuccessReply();
-+ QVariantMap replyData;
-+ const QVector<QtApk::ChangesetItem> ch = changes.changes();
-+ QVector<QVariant> chVector;
-+ QVector<QtApk::Package> pkgVector;
-+ for (const QtApk::ChangesetItem &it: ch) {
-+ pkgVector << it.newPackage;
-+ }
-+ replyData.insert(QLatin1String("changes"), QVariant::fromValue(pkgVector));
-+ replyData.insert(QLatin1String("onlySimulate"), onlySimulate);
-+ reply.setData(replyData);
-+ } else {
-+ reply.setErrorDescription(QStringLiteral("Repo upgrade failed!"));
-+ }
-+
-+ m_apkdb.close();
-+ HelperSupport::progressStep(100);
-+
-+ return reply;
-+}
-+
- KAUTH_HELPER_MAIN("org.kde.discover.alpineapkbackend", AlpineApkAuthHelper)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index 947dcb7ac..5c06e5570 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -22,6 +22,8 @@
- #include <QVariant>
- #include <KAuthActionReply>
-
-+#include <QtApk.h>
-+
- using namespace KAuth;
-
- class AlpineApkAuthHelper : public QObject
-@@ -32,4 +34,11 @@ public:
-
- public Q_SLOTS:
- ActionReply test(const QVariantMap &args);
-+ ActionReply update(const QVariantMap &args);
-+ ActionReply add(const QVariantMap &args);
-+ ActionReply del(const QVariantMap &args);
-+ ActionReply upgrade(const QVariantMap &args);
-+
-+private:
-+ QtApk::Database m_apkdb;
- };
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-index 3b9a3116e..10305a1af 100644
---- a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -3,3 +3,27 @@ Name=Test Action
- Description=Just test
- Policy=auth_admin
- Persistence=session
-+
-+[org.kde.discover.alpineapkbackend.update]
-+Name=Update repository index
-+Description=Updates available packages list from repositories
-+Policy=auth_admin
-+Persistence=session
-+
-+[org.kde.discover.alpineapkbackend.upgrade]
-+Name=Upgrade all upgradable packages
-+Description=Upgrade installed packages to latest versions
-+Policy=auth_admin
-+Persistence=session
-+
-+[org.kde.discover.alpineapkbackend.add]
-+Name=Install/upgrade package
-+Description=Installs/upgrades one package
-+Policy=auth_admin
-+Persistence=session
-+
-+[org.kde.discover.alpineapkbackend.del]
-+Name=Remove package
-+Description=Uninstall one package
-+Policy=auth_admin
-+Persistence=session
---
-GitLab
-
-
-From ccce553f6c33c6209dcfaeb702362731f98edb8b Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 3 Feb 2020 03:51:02 +0300
-Subject: [PATCH 08/61] AlpineApkResource: add availableVersion field
-
-for updates
----
- .../backends/AlpineApkBackend/AlpineApkResource.cpp | 8 ++++++--
- libdiscover/backends/AlpineApkBackend/AlpineApkResource.h | 2 ++
- 2 files changed, 8 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index d827e7b3b..af480b6c6 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -18,7 +18,6 @@
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
--#include <KRandom>
- #include "AlpineApkResource.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
- #include "Transaction/AddonList.h"
-@@ -39,7 +38,7 @@ QList<PackageState> AlpineApkResource::addonsInformation()
-
- QString AlpineApkResource::availableVersion() const
- {
-- return m_pkg.version;
-+ return m_availableVersion;
- }
-
- QStringList AlpineApkResource::categories()
-@@ -180,6 +179,11 @@ void AlpineApkResource::setAddonInstalled(const QString &addon, bool installed)
- }
- }
-
-+void AlpineApkResource::setAvailableVersion(const QString &av)
-+{
-+ m_availableVersion = av;
-+}
-+
-
- void AlpineApkResource::invokeApplication() const
- {
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-index 79b100e10..7140786c5 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-@@ -67,11 +67,13 @@ public:
- void setSection(const QString &sectionName);
- void setAddons(const AddonList &addons);
- void setAddonInstalled(const QString &addon, bool installed);
-+ void setAvailableVersion(const QString &av);
-
- public:
- AbstractResource::State m_state;
- const AbstractResource::Type m_type;
- QtApk::Package m_pkg;
-+ QString m_availableVersion;
- QString m_category;
- QString m_originSoruce;
- QString m_sectionName;
---
-GitLab
-
-
-From 2bf11351bda1f2c1f28a937b704594221ca4f4cd Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 3 Feb 2020 03:51:58 +0300
-Subject: [PATCH 09/61] Add AlpineApkUpdater class
-
----
- .../AlpineApkBackend/AlpineApkUpdater.cpp | 286 ++++++++++++++++++
- .../AlpineApkBackend/AlpineApkUpdater.h | 190 ++++++++++++
- .../backends/AlpineApkBackend/CMakeLists.txt | 2 +
- 3 files changed, 478 insertions(+)
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-new file mode 100644
-index 000000000..1dd6cdacd
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -0,0 +1,286 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include "AlpineApkUpdater.h"
-+#include "AlpineApkResource.h"
-+#include "AlpineApkBackend.h"
-+#include "alpineapk_backend_logging.h"
-+#include "utils.h"
-+
-+#include <KAuthExecuteJob>
-+#include <KLocalizedString>
-+
-+#include <QtApk.h>
-+
-+
-+AlpineApkUpdater::AlpineApkUpdater(AbstractResourcesBackend *parent)
-+ : AbstractBackendUpdater(parent)
-+ , m_backend(static_cast<AlpineApkBackend *>(parent))
-+{
-+ //
-+}
-+
-+void AlpineApkUpdater::prepare()
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+
-+ QtApk::Database *db = m_backend->apkdb();
-+
-+ if (db->isOpen()) {
-+ return;
-+ }
-+
-+ if (!db->open(QtApk::Database::QTAPK_OPENF_READONLY)) {
-+ emit passiveMessage(i18n("Failed to open APK database!"));
-+ return;
-+ }
-+
-+ if (!db->upgrade(QtApk::Database::QTAPK_UPGRADE_SIMULATE, &m_upgradeable)) {
-+ emit passiveMessage(i18n("Failed to get a list of packages to upgrade!"));
-+ db->close();
-+ return;
-+ }
-+ // clsoe DB ASAP
-+ db->close();
-+
-+ m_updatesCount = m_upgradeable.changes().size();
-+ qCDebug(LOG_ALPINEAPK) << "updater: prepare: updates count" << m_updatesCount;
-+
-+ m_allUpdateable.clear();
-+ m_markedToUpdate.clear();
-+ QHash<QString, AlpineApkResource *> *resources = m_backend->resourcesPtr();
-+ for (const QtApk::ChangesetItem &it : qAsConst(m_upgradeable.changes())) {
-+ const QtApk::Package &oldPkg = it.oldPackage;
-+ const QString newVersion = it.newPackage.version;
-+ AlpineApkResource *res = resources->value(oldPkg.name);
-+ if (res) {
-+ res->setAvailableVersion(newVersion);
-+ m_allUpdateable.insert(res);
-+ m_markedToUpdate.insert(res);
-+ }
-+ }
-+
-+ // emitting this signal here leads to infinite recursion
-+ // emit updatesCountChanged(m_updatesCount);
-+}
-+
-+bool AlpineApkUpdater::hasUpdates() const
-+{
-+ // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
-+ return (m_updatesCount > 0);
-+}
-+
-+qreal AlpineApkUpdater::progress() const
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return 0.0;
-+}
-+
-+void AlpineApkUpdater::removeResources(const QList<AbstractResource *> &apps)
-+{
-+ // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ const QSet<AbstractResource *> checkSet = kToSet(apps);
-+ m_markedToUpdate -= checkSet;
-+}
-+
-+void AlpineApkUpdater::addResources(const QList<AbstractResource *> &apps)
-+{
-+ //Q_UNUSED(apps)
-+ //qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ const QSet<AbstractResource *> checkSet = kToSet(apps);
-+ m_markedToUpdate += checkSet;
-+}
-+
-+QList<AbstractResource *> AlpineApkUpdater::toUpdate() const
-+{
-+ // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return m_allUpdateable.values();
-+}
-+
-+QDateTime AlpineApkUpdater::lastUpdate() const
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return QDateTime();
-+}
-+
-+bool AlpineApkUpdater::isCancelable() const
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return true;
-+}
-+
-+bool AlpineApkUpdater::isProgressing() const
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return false;
-+}
-+
-+bool AlpineApkUpdater::isMarked(AbstractResource *res) const
-+{
-+ // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return m_markedToUpdate.contains(res);
-+ // return true;
-+}
-+
-+void AlpineApkUpdater::fetchChangelog() const
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+}
-+
-+double AlpineApkUpdater::updateSize() const
-+{
-+ // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ double sum = 0.0;
-+ for (AbstractResource *res : m_markedToUpdate) {
-+ sum += res->size();
-+ }
-+ return sum;
-+}
-+
-+quint64 AlpineApkUpdater::downloadSpeed() const
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return 0;
-+}
-+
-+void AlpineApkUpdater::cancel()
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+}
-+
-+void AlpineApkUpdater::start()
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+ return;
-+#if 0
-+ KAuth::Action upgradeAction(QStringLiteral("org.kde.discover.alpineapkbackend.upgrade"));
-+ upgradeAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-+ if (!upgradeAction.isValid()) {
-+ qCWarning(LOG_ALPINEAPK) << "kauth upgradeAction is not valid!";
-+ return;
-+ }
-+ upgradeAction.setTimeout(60 * 1000); // 1 minute
-+ upgradeAction.setDetails(i18n("Get the list of packages to upgrade"));
-+ upgradeAction.addArgument(QLatin1String("onlySimulate"), true);
-+
-+ // run upgrade check with elevated privileges
-+ KAuth::ExecuteJob *reply = upgradeAction.execute();
-+ QObject::connect(reply, &KAuth::ExecuteJob::result,
-+ this, &AlpineApkUpdater::handleKAuthUpgradeHelperReply);
-+
-+ reply->start();
-+#endif
-+}
-+
-+void AlpineApkUpdater::proceed()
-+{
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-+}
-+
-+int AlpineApkUpdater::updatesCount()
-+{
-+ // qDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
-+ return m_updatesCount;
-+}
-+
-+void AlpineApkUpdater::startCheckForUpdates()
-+{
-+ KAuth::Action updateAction(QStringLiteral("org.kde.discover.alpineapkbackend.update"));
-+ updateAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-+ if (!updateAction.isValid()) {
-+ qCWarning(LOG_ALPINEAPK) << "kauth updateAction is not valid!";
-+ return;
-+ }
-+ updateAction.setTimeout(60 * 1000); // 1 minute
-+ updateAction.setDetails(i18n("Update repositories index"));
-+
-+ // run updates check with elevated privileges to access
-+ // system package manager files
-+ KAuth::ExecuteJob *reply = updateAction.execute();
-+ QObject::connect(reply, &KAuth::ExecuteJob::result,
-+ this, &AlpineApkUpdater::handleKAuthUpdateHelperReply);
-+ //QObject::connect(reply, &KAuth::ExecuteJob::newData,
-+ // this, &AlpineApkUpdater::handleKAuthUpdateHelperProgressStep);
-+ QObject::connect(reply, QOverload<KJob *, unsigned long>::of(&KAuth::ExecuteJob::percent),
-+ this, &AlpineApkUpdater::handleKAuthUpdateHelperProgress);
-+
-+ reply->start();
-+}
-+
-+void AlpineApkUpdater::handleKAuthUpdateHelperReply(KJob *job)
-+{
-+ KAuth::ExecuteJob *reply = static_cast<KAuth::ExecuteJob *>(job);
-+ const QVariantMap &replyData = reply->data();
-+ if (reply->error() == 0) {
-+ m_updatesCount = replyData.value(QLatin1String("updatesCount")).toInt();
-+ qCDebug(LOG_ALPINEAPK) << "KAuth helper update reply received, updatesCount:" << m_updatesCount;
-+ Q_EMIT updatesCountChanged(m_updatesCount);
-+ } else {
-+ const QString message = replyData.value(QLatin1String("errorString"),
-+ reply->errorString()).toString();
-+ qCDebug(LOG_ALPINEAPK) << "KAuth helper returned error:" << message << reply->error();
-+ if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-+ Q_EMIT passiveMessage(i18n("Authorization denied"));
-+ } else {
-+ Q_EMIT passiveMessage(i18n("Error") + QStringLiteral(":\n") + message);
-+ }
-+ }
-+
-+ // we are not in the state "Fetching updates" now, update UI
-+ Q_EMIT checkForUpdatesFinished();
-+}
-+
-+void AlpineApkUpdater::handleKAuthUpdateHelperProgress(KJob *job, unsigned long percent)
-+{
-+ Q_UNUSED(job)
-+ qCDebug(LOG_ALPINEAPK) << " fetch updates progress: " << percent;
-+ Q_EMIT fetchingUpdatesProgressChanged(percent);
-+}
-+
-+void AlpineApkUpdater::handleKAuthUpgradeHelperReply(KJob *job)
-+{
-+ KAuth::ExecuteJob *reply = static_cast<KAuth::ExecuteJob *>(job);
-+ const QVariantMap &replyData = reply->data();
-+ if (reply->error() == 0) {
-+ QVariant pkgsV = replyData.value(QLatin1String("changes"));
-+ bool onlySimulate = replyData.value(QLatin1String("onlySimulate"), false).toBool();
-+ qCDebug(LOG_ALPINEAPK) << "KAuth helper upgrade reply received:" << onlySimulate;
-+ if (onlySimulate) {
-+ QVector<QtApk::Package> pkgVector = pkgsV.value<QVector<QtApk::Package>>();
-+ qCDebug(LOG_ALPINEAPK) << " num changes:" << pkgVector.size();
-+ for (const QtApk::Package &pkg : pkgVector) {
-+ qCDebug(LOG_ALPINEAPK) << " " << pkg.name << pkg.version;
-+ }
-+ }
-+ } else {
-+ const QString message = replyData.value(QLatin1String("errorString"),
-+ reply->errorString()).toString();
-+ qCDebug(LOG_ALPINEAPK) << "KAuth helper returned error:" << message << reply->error();
-+ if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-+ Q_EMIT passiveMessage(i18n("Authorization denied"));
-+ } else {
-+ Q_EMIT passiveMessage(i18n("Error") + QStringLiteral(":\n") + message);
-+ }
-+ }
-+
-+ // we are not in the state "Fetching updates" now, update UI
-+ Q_EMIT checkForUpdatesFinished();
-+}
-+
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-new file mode 100644
-index 000000000..504e8c591
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-@@ -0,0 +1,190 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef ALPINEAPKUPDATER_H
-+#define ALPINEAPKUPDATER_H
-+
-+#include "resources/AbstractBackendUpdater.h"
-+#include "resources/AbstractResourcesBackend.h"
-+
-+#include <QSet>
-+#include <QDateTime>
-+#include <QTimer>
-+#include <QVariant>
-+#include <QMap>
-+#include <QVector>
-+
-+#include <QtApkChangeset.h>
-+
-+class AbstractResourcesBackend;
-+class AlpineApkBackend;
-+class KJob;
-+
-+class AlpineApkUpdater : public AbstractBackendUpdater
-+{
-+ Q_OBJECT
-+ Q_PROPERTY(int updatesCount READ updatesCount NOTIFY updatesCountChanged)
-+
-+public:
-+ explicit AlpineApkUpdater(AbstractResourcesBackend *parent = nullptr);
-+
-+ /**
-+ * This method is called, when Muon switches to the updates view.
-+ * Here the backend should mark all upgradeable packages as to be upgraded.
-+ */
-+ void prepare() override;
-+
-+ /**
-+ * @returns true if the backend contains packages which can be updated
-+ */
-+ bool hasUpdates() const override;
-+ /**
-+ * @returns the progress of the update in percent
-+ */
-+ qreal progress() const override;
-+
-+ /**
-+ * This method is used to remove resources from the list of packages
-+ * marked to be upgraded. It will potentially be called before \start.
-+ */
-+ void removeResources(const QList<AbstractResource*> &apps) override;
-+
-+ /**
-+ * This method is used to add resource to the list of packages marked to be upgraded.
-+ * It will potentially be called before \start.
-+ */
-+ void addResources(const QList<AbstractResource*> &apps) override;
-+
-+ /**
-+ * @returns the list of updateable resources in the system
-+ */
-+ QList<AbstractResource *> toUpdate() const override;
-+
-+ /**
-+ * @returns the QDateTime when the last update happened
-+ */
-+ QDateTime lastUpdate() const override;
-+
-+ /**
-+ * @returns whether the updater can currently be canceled or not
-+ * @see cancelableChanged
-+ */
-+ bool isCancelable() const override;
-+
-+ /**
-+ * @returns whether the updater is currently running or not
-+ * this property decides, if there will be progress reporting in the GUI.
-+ * This has to stay true during the whole transaction!
-+ * @see progressingChanged
-+ */
-+ bool isProgressing() const override;
-+
-+ /**
-+ * @returns whether @p res is marked for update
-+ */
-+ bool isMarked(AbstractResource* res) const override;
-+
-+ void fetchChangelog() const override;
-+
-+ /**
-+ * @returns the size of all the packages set to update combined
-+ */
-+ double updateSize() const override;
-+
-+ /**
-+ * @returns the speed at which we are downloading
-+ */
-+ quint64 downloadSpeed() const override;
-+
-+public Q_SLOTS:
-+ /**
-+ * If \isCancelable is true during the transaction, this method has
-+ * to be implemented and will potentially be called when the user
-+ * wants to cancel the update.
-+ */
-+ void cancel() override;
-+
-+ /**
-+ * This method starts the update. All packages which are in \toUpdate
-+ * are going to be updated.
-+ *
-+ * From this moment on the AbstractBackendUpdater should continuously update
-+ * the other methods to show its progress.
-+ *
-+ * @see progress
-+ * @see progressChanged
-+ * @see isProgressing
-+ * @see progressingChanged
-+ */
-+ void start() override;
-+
-+ /**
-+ * Answers a proceed request
-+ */
-+ void proceed() override;
-+
-+Q_SIGNALS:
-+ void checkForUpdatesFinished();
-+ void updatesCountChanged(int updatesCount);
-+ void fetchingUpdatesProgressChanged(int progress);
-+ //void cancelTransaction();
-+
-+public Q_SLOTS:
-+ int updatesCount();
-+ void startCheckForUpdates();
-+
-+ // KAuth handler slots
-+ // update
-+ void handleKAuthUpdateHelperReply(KJob *job);
-+ void handleKAuthUpdateHelperProgress(KJob *job, unsigned long percent);
-+ // upgrade
-+ void handleKAuthUpgradeHelperReply(KJob *job);
-+
-+ //void transactionRemoved(Transaction* t);
-+ //void cleanup();
-+
-+public:
-+ QVector<QtApk::ChangesetItem> &changes() { return m_upgradeable.changes(); }
-+ const QVector<QtApk::ChangesetItem> &changes() const { return m_upgradeable.changes(); }
-+
-+private:
-+ AlpineApkBackend *const m_backend;
-+ int m_updatesCount = 0;
-+ QtApk::Changeset m_upgradeable;
-+ QSet<AbstractResource *> m_allUpdateable;
-+ QSet<AbstractResource *> m_markedToUpdate;
-+// void resourcesChanged(AbstractResource* res, const QVector<QByteArray>& props);
-+// void refreshUpdateable();
-+// void transactionAdded(Transaction* newTransaction);
-+// void transactionProgressChanged();
-+// void refreshProgress();
-+// QVector<Transaction*> transactions() const;
-+
-+// QSet<AbstractResource*> m_upgradeable;
-+// QSet<AbstractResource*> m_pendingResources;
-+// bool m_settingUp;
-+// qreal m_progress;
-+// QDateTime m_lastUpdate;
-+// QTimer m_timer;
-+// bool m_canCancel = false;
-+};
-+
-+
-+#endif // ALPINEAPKUPDATER_H
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index ede3157f0..381849453 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -9,6 +9,8 @@ set(alpineapkbackend_SRCS
- AlpineApkReviewsBackend.h
- AlpineApkSourcesBackend.cpp
- AlpineApkSourcesBackend.h
-+ AlpineApkUpdater.cpp
-+ AlpineApkUpdater.h
- AlpineApkTransaction.cpp
- AlpineApkTransaction.h
- )
---
-GitLab
-
-
-From 15e57246c9602919660ee09ebdbd6e30631d1361 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 3 Feb 2020 03:52:41 +0300
-Subject: [PATCH 10/61] AlpineApkBackend: use our new updater
-
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 158 ++++++++----------
- .../AlpineApkBackend/AlpineApkBackend.h | 21 ++-
- 2 files changed, 85 insertions(+), 94 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index ed016aef3..757380186 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -23,19 +23,14 @@
- #include "AlpineApkReviewsBackend.h"
- #include "AlpineApkTransaction.h"
- #include "AlpineApkSourcesBackend.h"
-+#include "AlpineApkUpdater.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
-
--#include "resources/StandardBackendUpdater.h"
- #include "resources/SourcesModel.h"
- #include "Transaction/Transaction.h"
- #include "Category/Category.h"
-
--#include <KAboutData>
- #include <KLocalizedString>
--#include <KPluginFactory>
--#include <KConfigGroup>
--#include <KSharedConfig>
--#include <KAuthExecuteJob>
-
- #include <QDebug>
- #include <QLoggingCategory>
-@@ -47,45 +42,33 @@ DISCOVER_BACKEND_PLUGIN(AlpineApkBackend)
-
- AlpineApkBackend::AlpineApkBackend(QObject *parent)
- : AbstractResourcesBackend(parent)
-- , m_updater(new StandardBackendUpdater(this))
-+ , m_updater(new AlpineApkUpdater(this))
- , m_reviews(new AlpineApkReviewsBackend(this))
-- , m_startElements(120)
-+ , m_updatesTimeoutTimer(new QTimer(this))
- {
- #ifndef QT_DEBUG
- const_cast<QLoggingCategory &>(LOG_ALPINEAPK()).setEnabled(QtDebugMsg, false);
- #endif
-
-- qCDebug(LOG_ALPINEAPK) << "constructing backend!";
-+ // schedule checking for updates
-+ QTimer::singleShot(1000, this, &AlpineApkBackend::checkForUpdates);
-
-- QTimer::singleShot(1000, this, &AlpineApkBackend::startCheckForUpdates);
--
-- QObject::connect(m_updater, &StandardBackendUpdater::updatesCountChanged,
-+ // connections with our updater
-+ QObject::connect(m_updater, &AlpineApkUpdater::updatesCountChanged,
- this, &AlpineApkBackend::updatesCountChanged);
-+ QObject::connect(m_updater, &AlpineApkUpdater::checkForUpdatesFinished,
-+ this, &AlpineApkBackend::finishCheckForUpdates);
-+ QObject::connect(m_updater, &AlpineApkUpdater::fetchingUpdatesProgressChanged,
-+ this, &AlpineApkBackend::setFetchingUpdatesProgress);
-
-- populate();
--
-- SourcesModel::global()->addSourcesBackend(new AlpineApkSourcesBackend(this));
--}
--
--QVector<Category *> AlpineApkBackend::category() const
--{
-- // single root category
-- // we could add more, but Alpine apk does not have this concept
-- static Category *cat = new Category(
-- QStringLiteral("All packages"), // displayName
-- QStringLiteral("package-x-generic"), // icon
-- {}, // orFilters
-- { displayName() }, // pluginName
-- {}, // subCategories
-- QUrl(), // decoration (what is it?)
-- false // isAddons
-- );
-- return { cat };
--}
-+ // safety measure: make sure update check process can finish in some finite time
-+ QObject::connect(m_updatesTimeoutTimer, &QTimer::timeout,
-+ this, &AlpineApkBackend::finishCheckForUpdates);
-+ m_updatesTimeoutTimer->setTimerType(Qt::CoarseTimer);
-+ m_updatesTimeoutTimer->setSingleShot(true);
-+ m_updatesTimeoutTimer->setInterval(2 * 60 * 1000); // 2minutes
-
--void AlpineApkBackend::populate()
--{
-- qCDebug(LOG_ALPINEAPK) << "populating resources...";
-+ qCDebug(LOG_ALPINEAPK) << "backend: populating resources...";
-
- if (m_apkdb.open(QtApk::Database::QTAPK_OPENF_READONLY)) {
- m_availablePackages = m_apkdb.getAvailablePackages();
-@@ -103,7 +86,7 @@ void AlpineApkBackend::populate()
- m_resources.insert(key, res);
- connect(res, &AlpineApkResource::stateChanged, this, &AlpineApkBackend::updatesCountChanged);
- }
-- qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
-+ qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
- << "packages";
- }
- if (m_installedPackages.size() > 0) {
-@@ -113,62 +96,31 @@ void AlpineApkBackend::populate()
- m_resources.value(key)->setState(AbstractResource::Installed);
- }
- }
-- qCDebug(LOG_ALPINEAPK) << " installed" << m_installedPackages.size()
-+ qCDebug(LOG_ALPINEAPK) << " installed" << m_installedPackages.size()
- << "packages";
- }
--}
--
--void AlpineApkBackend::handleKauthHelperReply(KJob *job)
--{
-- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-- KAuth::ExecuteJob* reply = static_cast<KAuth::ExecuteJob *>(job);
-- const QVariantMap replyData = reply->data();
-- if (reply->error() == 0) {
-- qCDebug(LOG_ALPINEAPK) << replyData[QLatin1String("reply")].toString();
-- } else {
-- const QString message = replyData.value(QLatin1String("errorString"), reply->errorString()).toString();
-- qCDebug(LOG_ALPINEAPK) << message;
-- }
--}
--
--void AlpineApkBackend::startCheckForUpdates()
--{
-- if (m_fetching) {
-- return;
-- }
-- qCDebug(LOG_ALPINEAPK) << "startCheckForUpdates()";
--
-- // temporary hack - finish updates check in 5 seconds
-- QTimer::singleShot(5000, this, &AlpineApkBackend::finishCheckForUpdates);
--
-- m_fetching = true;
-- emit fetchingChanged();
--
-- KAuth::Action testAction(QStringLiteral("org.kde.discover.alpineapkbackend.test"));
-- testAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-- testAction.setArguments({
-- { QStringLiteral("txt"), QLatin1String("Wooo!") },
-- });
-- if (!testAction.isValid()) {
-- qCWarning(LOG_ALPINEAPK) << "kauth action is not valid!";
-- return;
-- }
-
-- KAuth::ExecuteJob *reply = testAction.execute();
-- QObject::connect(reply, &KAuth::ExecuteJob::result,
-- this, &AlpineApkBackend::handleKauthHelperReply);
-- reply->start();
-+ SourcesModel::global()->addSourcesBackend(new AlpineApkSourcesBackend(this));
- }
-
--void AlpineApkBackend::finishCheckForUpdates()
-+QVector<Category *> AlpineApkBackend::category() const
- {
-- m_fetching = false;
-- emit fetchingChanged();
-+ // single root category
-+ // we could add more, but Alpine apk does not have this concept
-+ static Category *cat = new Category(
-+ i18nc("Root category name", "Alpine packages"),
-+ QStringLiteral("package-x-generic"), // icon
-+ {}, // orFilters
-+ { displayName() }, // pluginName
-+ {}, // subCategories
-+ QUrl(), // decoration (what is it?)
-+ false // isAddons
-+ );
-+ return { cat };
- }
-
- int AlpineApkBackend::updatesCount() const
- {
-- qCDebug(LOG_ALPINEAPK) << "updatesCount(): " << m_updater->updatesCount();
- return m_updater->updatesCount();
- }
-
-@@ -210,7 +162,7 @@ ResultsStream *AlpineApkBackend::findResourceByPackageName(const QUrl &searchUrl
- AlpineApkResource *result = nullptr;
-
- // QUrl("appstream://org.kde.krita.desktop")
-- // smart workaround for appstream
-+ // smart workaround for appstream URLs
- if (searchUrl.scheme() == QLatin1String("appstream")) {
- // remove leading "org.kde."
- QString pkgName = searchUrl.host();
-@@ -256,18 +208,46 @@ Transaction* AlpineApkBackend::removeApplication(AbstractResource *app)
- return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app), Transaction::RemoveRole);
- }
-
-+int AlpineApkBackend::fetchingUpdatesProgress() const
-+{
-+ if (!m_fetching) return 100;
-+ return m_fetchProgress;
-+}
-+
- void AlpineApkBackend::checkForUpdates()
- {
- if (m_fetching) {
-- qCDebug(LOG_ALPINEAPK) << "checkForUpdates(): already fetching";
-+ qCDebug(LOG_ALPINEAPK) << "backend: checkForUpdates(): already fetching";
- return;
- }
-- startCheckForUpdates();
-+
-+ qCDebug(LOG_ALPINEAPK) << "backend: start checkForUpdates()";
-+
-+ // safety measure - finish updates check in some time
-+ m_updatesTimeoutTimer->start();
-+
-+ // let our updater do the job
-+ m_updater->startCheckForUpdates();
-+
-+ // update UI
-+ m_fetching = true;
-+ m_fetchProgress = 0;
-+ emit fetchingChanged();
-+ emit fetchingUpdatesProgressChanged();
-+}
-+
-+void AlpineApkBackend::finishCheckForUpdates()
-+{
-+ m_updatesTimeoutTimer->stop(); // stop safety timer
-+ // update UI
-+ m_fetching = false;
-+ emit fetchingChanged();
-+ emit fetchingUpdatesProgressChanged();
- }
-
- QString AlpineApkBackend::displayName() const
- {
-- return QStringLiteral("Alpine APK backend");
-+ return i18nc("Backend plugin display name", "Alpine APK backend");
- }
-
- bool AlpineApkBackend::hasApplications() const
-@@ -275,4 +255,10 @@ bool AlpineApkBackend::hasApplications() const
- return true;
- }
-
-+void AlpineApkBackend::setFetchingUpdatesProgress(int percent)
-+{
-+ m_fetchProgress = percent;
-+ emit fetchingUpdatesProgressChanged();
-+}
-+
- #include "AlpineApkBackend.moc"
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index a533cee39..d69352575 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -27,14 +27,14 @@
- #include <QtApk.h>
-
- class AlpineApkReviewsBackend;
--class StandardBackendUpdater;
-+class AlpineApkUpdater;
- class AlpineApkResource;
- class KJob;
-+class QTimer;
-
- class AlpineApkBackend : public AbstractResourcesBackend
- {
- Q_OBJECT
-- Q_PROPERTY(int startElements MEMBER m_startElements)
-
- public:
- explicit AlpineApkBackend(QObject *parent = nullptr);
-@@ -46,32 +46,37 @@ public:
- ResultsStream *search(const AbstractResourcesBackend::Filters &filter) override;
- ResultsStream *findResourceByPackageName(const QUrl &search);
- QHash<QString, AlpineApkResource *> resources() const { return m_resources; }
-+ QHash<QString, AlpineApkResource *> *resourcesPtr() { return &m_resources; }
- bool isValid() const override { return true; } // No external file dependencies that could cause runtime errors
-
- Transaction *installApplication(AbstractResource *app) override;
- Transaction *installApplication(AbstractResource *app, const AddonList &addons) override;
- Transaction *removeApplication(AbstractResource *app) override;
- bool isFetching() const override { return m_fetching; }
-+ int fetchingUpdatesProgress() const override;
- void checkForUpdates() override;
- QString displayName() const override;
- bool hasApplications() const override;
-
- public Q_SLOTS:
-- void handleKauthHelperReply(KJob *job);
-- void startCheckForUpdates();
-+ void setFetchingUpdatesProgress(int percent);
-+
-+private Q_SLOTS:
- void finishCheckForUpdates();
-
--private:
-- void populate();
-+public:
-+ QtApk::Database *apkdb() { return &m_apkdb; }
-
-+private:
- QHash<QString, AlpineApkResource *> m_resources;
-- StandardBackendUpdater *m_updater;
-+ AlpineApkUpdater *m_updater;
- AlpineApkReviewsBackend *m_reviews;
- QtApk::Database m_apkdb;
- QVector<QtApk::Package> m_availablePackages;
- QVector<QtApk::Package> m_installedPackages;
- bool m_fetching = false;
-- int m_startElements = 0;
-+ int m_fetchProgress = 0;
-+ QTimer *m_updatesTimeoutTimer;
- };
-
- #endif // AlpineApkBackend_H
---
-GitLab
-
-
-From 82f6d00e2c2530b02a51e0f8377a07801c5b25eb Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 3 Feb 2020 18:21:04 +0300
-Subject: [PATCH 11/61] AlpineApk{Updater,AuthHelper}: pass fakeRoot to helper
-
-Env vars are not inherited by elevated helper
----
- .../backends/AlpineApkBackend/AlpineApkAuthHelper.cpp | 11 ++++++++++-
- .../backends/AlpineApkBackend/AlpineApkUpdater.cpp | 5 ++++-
- 2 files changed, 14 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 4ff5c880a..aa3dbdae1 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -64,9 +64,13 @@ ActionReply AlpineApkAuthHelper::test(const QVariantMap &args)
-
- ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
- {
-- Q_UNUSED(args)
- ActionReply reply = ActionReply::HelperErrorReply();
-
-+ const QString fakeRoot = args.value(QLatin1String("fakeRoot"), QString()).toString();
-+ if (!fakeRoot.isEmpty()) {
-+ m_apkdb.setFakeRoot(fakeRoot);
-+ }
-+
- HelperSupport::progressStep(10);
-
- if (!m_apkdb.open(QtApk::Database::QTAPK_OPENF_READWRITE)) {
-@@ -125,6 +129,11 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- qCDebug(LOG_AUTHHELPER) << "Simulating upgrade run.";
- }
-
-+ const QString fakeRoot = args.value(QLatin1String("fakeRoot"), QString()).toString();
-+ if (!fakeRoot.isEmpty()) {
-+ m_apkdb.setFakeRoot(fakeRoot);
-+ }
-+
- QtApk::Changeset changes;
- bool upgrade_ok = m_apkdb.upgrade(flags, &changes);
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 1dd6cdacd..d0c0482ef 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -47,6 +47,7 @@ void AlpineApkUpdater::prepare()
- return;
- }
-
-+ // readonly is fine for a simulation of upgrade
- if (!db->open(QtApk::Database::QTAPK_OPENF_READONLY)) {
- emit passiveMessage(i18n("Failed to open APK database!"));
- return;
-@@ -57,7 +58,7 @@ void AlpineApkUpdater::prepare()
- db->close();
- return;
- }
-- // clsoe DB ASAP
-+ // close DB ASAP
- db->close();
-
- m_updatesCount = m_upgradeable.changes().size();
-@@ -202,6 +203,7 @@ int AlpineApkUpdater::updatesCount()
-
- void AlpineApkUpdater::startCheckForUpdates()
- {
-+ QtApk::Database *db = m_backend->apkdb();
- KAuth::Action updateAction(QStringLiteral("org.kde.discover.alpineapkbackend.update"));
- updateAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
- if (!updateAction.isValid()) {
-@@ -210,6 +212,7 @@ void AlpineApkUpdater::startCheckForUpdates()
- }
- updateAction.setTimeout(60 * 1000); // 1 minute
- updateAction.setDetails(i18n("Update repositories index"));
-+ updateAction.addArgument(QLatin1String("fakeRoot"), db->fakeRoot());
-
- // run updates check with elevated privileges to access
- // system package manager files
---
-GitLab
-
-
-From 620045720ccb98d358833c9bdf3c9429ef5b27f7 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 3 Feb 2020 20:14:13 +0300
-Subject: [PATCH 12/61] Auth helper: WIP on using progress_fd
-
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index aa3dbdae1..4c3bf5458 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -21,9 +21,8 @@
- #include <QProcess>
- #include <QDebug>
- #include <QLoggingCategory>
--#include <QJsonDocument>
--#include <QJsonObject>
--#include <QJsonArray>
-+#include <QSocketNotifier>
-+#include <QScopedPointer>
- #include <QFile>
-
- #include <KAuthHelperSupport>
-@@ -134,6 +133,14 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- m_apkdb.setFakeRoot(fakeRoot);
- }
-
-+ int progress_fd = m_apkdb.progressFd();
-+ qCDebug(LOG_AUTHHELPER) << " progress_fd: " << progress_fd;
-+
-+ QScopedPointer<QSocketNotifier> notifier(new QSocketNotifier(progress_fd, QSocketNotifier::Read));
-+ QObject::connect(notifier.data(), &QSocketNotifier::activated, notifier.data(), [](int sock) {
-+ qCDebug(LOG_AUTHHELPER) << " read trigger from progress_fd!";
-+ });
-+
- QtApk::Changeset changes;
- bool upgrade_ok = m_apkdb.upgrade(flags, &changes);
-
---
-GitLab
-
-
-From 46ebea78b0c2f193b8f3df02afc731343901e80c Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 20 Mar 2020 17:53:01 +0300
-Subject: [PATCH 13/61] auth helper: fix usused vars
-
----
- libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 4c3bf5458..bc9c1ec67 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -100,12 +100,14 @@ ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
-
- ActionReply AlpineApkAuthHelper::add(const QVariantMap &args)
- {
-+ Q_UNUSED(args)
- ActionReply reply = ActionReply::HelperErrorReply();
- return reply;
- }
-
- ActionReply AlpineApkAuthHelper::del(const QVariantMap &args)
- {
-+ Q_UNUSED(args)
- ActionReply reply = ActionReply::HelperErrorReply();
- return reply;
- }
-@@ -138,6 +140,7 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
-
- QScopedPointer<QSocketNotifier> notifier(new QSocketNotifier(progress_fd, QSocketNotifier::Read));
- QObject::connect(notifier.data(), &QSocketNotifier::activated, notifier.data(), [](int sock) {
-+ Q_UNUSED(sock)
- qCDebug(LOG_AUTHHELPER) << " read trigger from progress_fd!";
- });
-
---
-GitLab
-
-
-From 5eda2a8bfde96267dbbbf69db237093a8c3801b9 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 8 Apr 2020 05:55:33 +0300
-Subject: [PATCH 14/61] AlpineApkBackend: cmake: use namespaced ApkQt
-
----
- libdiscover/backends/AlpineApkBackend/CMakeLists.txt | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 381849453..42e09c5b6 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -38,7 +38,7 @@ target_link_libraries(
- KF5::ConfigCore
- KF5::AuthCore
- Discover::Common
-- apk-qt
-+ ApkQt::apk-qt
- )
-
- # KAuth helper exe
-@@ -54,7 +54,7 @@ set_source_files_properties(
- target_link_libraries(alpineapk_kauth_helper
- Qt5::Core
- KF5::AuthCore
-- apk-qt
-+ ApkQt::apk-qt
- )
-
- kauth_install_actions(org.kde.discover.alpineapkbackend org.kde.discover.alpineapkbackend.actions)
---
-GitLab
-
-
-From 40c0d3b188b576fba86d7e96946ec4a31b1bdf28 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Thu, 9 Apr 2020 21:18:33 +0300
-Subject: [PATCH 15/61] AlpineApkBackend: mark pkgs as Technical type and fix
- searhes
-
-This makes updates appear as "System updates" in updates view
-and also makes them correctly categorized in top level
-categories when other backend is installed (Flatpak, KNewStuff)
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 62 ++++++++++++-------
- .../AlpineApkBackend/AlpineApkResource.cpp | 2 +-
- 2 files changed, 42 insertions(+), 22 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index 757380186..750d2820c 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -79,9 +79,12 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- if (m_availablePackages.size() > 0) {
- for (const QtApk::Package &pkg: m_availablePackages) {
- AlpineApkResource *res = new AlpineApkResource(pkg, this);
-- res->setCategoryName(QStringLiteral("all"));
-+ res->setCategoryName(QStringLiteral("alpine_packages"));
- res->setOriginSource(QStringLiteral("apk"));
- res->setSection(QStringLiteral("dummy"));
-+ // here is the place to set a proper type of package
-+ // AlpineApkResource defaults to AbstractResource::Technical,
-+ // which places it into "System updates" section
- const QString key = pkg.name.toLower();
- m_resources.insert(key, res);
- connect(res, &AlpineApkResource::stateChanged, this, &AlpineApkBackend::updatesCountChanged);
-@@ -105,18 +108,22 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
-
- QVector<Category *> AlpineApkBackend::category() const
- {
-- // single root category
-+ static QPair<FilterType, QString> s_apkFlt(
-+ FilterType::CategoryFilter, QLatin1String("alpine_packages"));
-+
-+ // Display a single root category
- // we could add more, but Alpine apk does not have this concept
-- static Category *cat = new Category(
-- i18nc("Root category name", "Alpine packages"),
-- QStringLiteral("package-x-generic"), // icon
-- {}, // orFilters
-- { displayName() }, // pluginName
-- {}, // subCategories
-- QUrl(), // decoration (what is it?)
-- false // isAddons
-+ static Category *s_rootCat = new Category(
-+ i18nc("Root category name", "Alpine packages"),
-+ QStringLiteral("package-x-generic"), // icon
-+ { s_apkFlt }, // orFilters - include packages that match filter
-+ { displayName() }, // pluginName
-+ {}, // subCategories - none
-+ QUrl(), // decoration (what is it?)
-+ false // isAddons
- );
-- return { cat };
-+
-+ return { s_rootCat };
- }
-
- int AlpineApkBackend::updatesCount() const
-@@ -130,17 +137,23 @@ ResultsStream *AlpineApkBackend::search(const AbstractResourcesBackend::Filters
- if (!filter.resourceUrl.isEmpty()) {
- return findResourceByPackageName(filter.resourceUrl);
- } else {
-- for (AbstractResource *r: qAsConst(m_resources)) {
-- if (r->type() == AbstractResource::Technical
-- && filter.state != AbstractResource::Upgradeable) {
-- continue;
-- }
-- if (r->state() < filter.state) {
-+ for (AbstractResource *resource: qAsConst(m_resources)) {
-+ // skip technical package types (not apps/addons)
-+ // that are not upgradeable
-+ // (does not work because for now all Alpine packages are "technical"
-+ // if (resource->type() == AbstractResource::Technical
-+ // && filter.state != AbstractResource::Upgradeable) {
-+ // continue;
-+ // }
-+
-+ // skip not-requested states
-+ if (resource->state() < filter.state) {
- continue;
- }
-- if(r->name().contains(filter.search, Qt::CaseInsensitive)
-- || r->comment().contains(filter.search, Qt::CaseInsensitive)) {
-- ret += r;
-+
-+ if(resource->name().contains(filter.search, Qt::CaseInsensitive)
-+ || resource->comment().contains(filter.search, Qt::CaseInsensitive)) {
-+ ret += resource;
- }
- }
- }
-@@ -162,7 +175,7 @@ ResultsStream *AlpineApkBackend::findResourceByPackageName(const QUrl &searchUrl
- AlpineApkResource *result = nullptr;
-
- // QUrl("appstream://org.kde.krita.desktop")
-- // smart workaround for appstream URLs
-+ // smart workaround for appstream URLs - handle "featured" apps
- if (searchUrl.scheme() == QLatin1String("appstream")) {
- // remove leading "org.kde."
- QString pkgName = searchUrl.host();
-@@ -177,6 +190,13 @@ ResultsStream *AlpineApkBackend::findResourceByPackageName(const QUrl &searchUrl
- result = m_resources.value(pkgName);
- }
-
-+ // QUrl("apk://krita")
-+ // handle packages from Alpine repos
-+ if (searchUrl.scheme() == QLatin1String("apk")) {
-+ const QString pkgName = searchUrl.host();
-+ result = m_resources.value(pkgName);
-+ }
-+
- if (!result) {
- return new ResultsStream(QStringLiteral("AlpineApkStream"), {});
- }
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index af480b6c6..346a28b28 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -26,7 +26,7 @@ AlpineApkResource::AlpineApkResource(const QtApk::Package &apkPkg,
- AbstractResourcesBackend *parent)
- : AbstractResource(parent)
- , m_state(AbstractResource::State::None)
-- , m_type(Application)
-+ , m_type(AbstractResource::Type::Technical)
- , m_pkg(apkPkg)
- {
- }
---
-GitLab
-
-
-From 3d7f28c6cafa50edf98213275029e2fb85a7c5cc Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 10 Apr 2020 09:00:29 +0300
-Subject: [PATCH 16/61] KAuth helper: disable progress_fd for now
-
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 16 +++++++++-------
- 1 file changed, 9 insertions(+), 7 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index bc9c1ec67..11e267866 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -26,6 +26,7 @@
- #include <QFile>
-
- #include <KAuthHelperSupport>
-+#include <kauth_version.h>
-
- #include "AlpineApkAuthHelper.h"
-
-@@ -135,14 +136,15 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- m_apkdb.setFakeRoot(fakeRoot);
- }
-
-- int progress_fd = m_apkdb.progressFd();
-- qCDebug(LOG_AUTHHELPER) << " progress_fd: " << progress_fd;
-+ // no progress notifications for now
-+ //int progress_fd = m_apkdb.progressFd();
-+ //qCDebug(LOG_AUTHHELPER) << " progress_fd: " << progress_fd;
-
-- QScopedPointer<QSocketNotifier> notifier(new QSocketNotifier(progress_fd, QSocketNotifier::Read));
-- QObject::connect(notifier.data(), &QSocketNotifier::activated, notifier.data(), [](int sock) {
-- Q_UNUSED(sock)
-- qCDebug(LOG_AUTHHELPER) << " read trigger from progress_fd!";
-- });
-+ //QScopedPointer<QSocketNotifier> notifier(new QSocketNotifier(progress_fd, QSocketNotifier::Read));
-+ //QObject::connect(notifier.data(), &QSocketNotifier::activated, notifier.data(), [](int sock) {
-+ // Q_UNUSED(sock)
-+ // qCDebug(LOG_AUTHHELPER) << " read trigger from progress_fd!";
-+ //});
-
- QtApk::Changeset changes;
- bool upgrade_ok = m_apkdb.upgrade(flags, &changes);
---
-GitLab
-
-
-From 075c2ed48177f6a6449ef5a3564724bc89eab092 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 10 Apr 2020 09:06:17 +0300
-Subject: [PATCH 17/61] AlpineApkUpdater: refactor out helper error handler
- func
-
----
- .../AlpineApkBackend/AlpineApkUpdater.cpp | 37 +++++++++----------
- .../AlpineApkBackend/AlpineApkUpdater.h | 6 +++
- 2 files changed, 24 insertions(+), 19 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index d0c0482ef..173b7e48c 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -215,12 +215,11 @@ void AlpineApkUpdater::startCheckForUpdates()
- updateAction.addArgument(QLatin1String("fakeRoot"), db->fakeRoot());
-
- // run updates check with elevated privileges to access
-- // system package manager files
-+ // system package manager files
- KAuth::ExecuteJob *reply = updateAction.execute();
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpdateHelperReply);
-- //QObject::connect(reply, &KAuth::ExecuteJob::newData,
-- // this, &AlpineApkUpdater::handleKAuthUpdateHelperProgressStep);
-+ // qOverload is needed because of conflict with getter named percent()
- QObject::connect(reply, QOverload<KJob *, unsigned long>::of(&KAuth::ExecuteJob::percent),
- this, &AlpineApkUpdater::handleKAuthUpdateHelperProgress);
-
-@@ -236,14 +235,7 @@ void AlpineApkUpdater::handleKAuthUpdateHelperReply(KJob *job)
- qCDebug(LOG_ALPINEAPK) << "KAuth helper update reply received, updatesCount:" << m_updatesCount;
- Q_EMIT updatesCountChanged(m_updatesCount);
- } else {
-- const QString message = replyData.value(QLatin1String("errorString"),
-- reply->errorString()).toString();
-- qCDebug(LOG_ALPINEAPK) << "KAuth helper returned error:" << message << reply->error();
-- if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-- Q_EMIT passiveMessage(i18n("Authorization denied"));
-- } else {
-- Q_EMIT passiveMessage(i18n("Error") + QStringLiteral(":\n") + message);
-- }
-+ handleKAuthHelperError(reply, replyData);
- }
-
- // we are not in the state "Fetching updates" now, update UI
-@@ -273,17 +265,24 @@ void AlpineApkUpdater::handleKAuthUpgradeHelperReply(KJob *job)
- }
- }
- } else {
-- const QString message = replyData.value(QLatin1String("errorString"),
-- reply->errorString()).toString();
-- qCDebug(LOG_ALPINEAPK) << "KAuth helper returned error:" << message << reply->error();
-- if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-- Q_EMIT passiveMessage(i18n("Authorization denied"));
-- } else {
-- Q_EMIT passiveMessage(i18n("Error") + QStringLiteral(":\n") + message);
-- }
-+ handleKAuthHelperError(reply, replyData);
- }
-
- // we are not in the state "Fetching updates" now, update UI
- Q_EMIT checkForUpdatesFinished();
- }
-
-+void AlpineApkUpdater::handleKAuthHelperError(
-+ KAuth::ExecuteJob *reply,
-+ const QVariantMap &replyData)
-+{
-+ const QString message = replyData.value(QLatin1String("errorString"),
-+ reply->errorString()).toString();
-+ qCDebug(LOG_ALPINEAPK) << "KAuth helper returned error:" << message << reply->error();
-+ if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-+ Q_EMIT passiveMessage(i18n("Authorization denied"));
-+ } else {
-+ Q_EMIT passiveMessage(i18n("Error") + QStringLiteral(":\n") + message);
-+ }
-+}
-+
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-index 504e8c591..77140ca25 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-@@ -36,6 +36,9 @@
- class AbstractResourcesBackend;
- class AlpineApkBackend;
- class KJob;
-+namespace KAuth {
-+ class ExecuteJob;
-+}
-
- class AlpineApkUpdater : public AbstractBackendUpdater
- {
-@@ -164,6 +167,9 @@ public:
- QVector<QtApk::ChangesetItem> &changes() { return m_upgradeable.changes(); }
- const QVector<QtApk::ChangesetItem> &changes() const { return m_upgradeable.changes(); }
-
-+protected:
-+ void handleKAuthHelperError(KAuth::ExecuteJob *reply, const QVariantMap &replyData);
-+
- private:
- AlpineApkBackend *const m_backend;
- int m_updatesCount = 0;
---
-GitLab
-
-
-From 669b64558b7ac5c72b8ea20bc507f89194c2edc1 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 10 Apr 2020 09:07:38 +0300
-Subject: [PATCH 18/61] AlpineApkUpdater: use non-deprecated version of
- setDetails(V2)
-
-since KF 5.68
----
- .../AlpineApkBackend/AlpineApkUpdater.cpp | 20 +++++++++++++++++--
- 1 file changed, 18 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 173b7e48c..dae6c2a31 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -25,6 +25,7 @@
- #include "utils.h"
-
- #include <KAuthExecuteJob>
-+#include <kauth_version.h>
- #include <KLocalizedString>
-
- #include <QtApk.h>
-@@ -178,8 +179,15 @@ void AlpineApkUpdater::start()
- return;
- }
- upgradeAction.setTimeout(60 * 1000); // 1 minute
-- upgradeAction.setDetails(i18n("Get the list of packages to upgrade"));
-- upgradeAction.addArgument(QLatin1String("onlySimulate"), true);
-+#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-+ upgradeAction.setDetails(i18n("Upgrade currently installed packages"));
-+#else
-+ static const KAuth::Action::DetailsMap details{
-+ { KAuth::Action::AuthDetail::DetailMessage, i18n("Upgrade currently installed packages") }
-+ };
-+ upgradeAction.setDetailsV2(details);
-+#endif
-+ // upgradeAction.addArgument(QLatin1String("onlySimulate"), true);
-
- // run upgrade check with elevated privileges
- KAuth::ExecuteJob *reply = upgradeAction.execute();
-@@ -211,7 +219,15 @@ void AlpineApkUpdater::startCheckForUpdates()
- return;
- }
- updateAction.setTimeout(60 * 1000); // 1 minute
-+ // setDetails deprecated since KF 5.68, use setDetailsV2() with DetailsMap.
-+#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
- updateAction.setDetails(i18n("Update repositories index"));
-+#else
-+ static const KAuth::Action::DetailsMap details{
-+ { KAuth::Action::AuthDetail::DetailMessage, i18n("Update repositories index") }
-+ };
-+ updateAction.setDetailsV2(details);
-+#endif
- updateAction.addArgument(QLatin1String("fakeRoot"), db->fakeRoot());
-
- // run updates check with elevated privileges to access
---
-GitLab
-
-
-From 919af82f2b582c70039b90f7ffc6c744b03d3ac6 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 10 Apr 2020 09:09:13 +0300
-Subject: [PATCH 19/61] WIP: AlpineApkUpdater: enable upgrade action again
-
----
- .../backends/AlpineApkBackend/AlpineApkUpdater.cpp | 14 ++++++++------
- 1 file changed, 8 insertions(+), 6 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index dae6c2a31..89a816c44 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -170,15 +170,17 @@ void AlpineApkUpdater::cancel()
- void AlpineApkUpdater::start()
- {
- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-- return;
--#if 0
-+ //return;
-+//#if 0
- KAuth::Action upgradeAction(QStringLiteral("org.kde.discover.alpineapkbackend.upgrade"));
- upgradeAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-+
- if (!upgradeAction.isValid()) {
- qCWarning(LOG_ALPINEAPK) << "kauth upgradeAction is not valid!";
- return;
- }
-- upgradeAction.setTimeout(60 * 1000); // 1 minute
-+
-+ upgradeAction.setTimeout(30 * 60 * 1000); // 30 min
- #if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
- upgradeAction.setDetails(i18n("Upgrade currently installed packages"));
- #else
-@@ -189,13 +191,13 @@ void AlpineApkUpdater::start()
- #endif
- // upgradeAction.addArgument(QLatin1String("onlySimulate"), true);
-
-- // run upgrade check with elevated privileges
-+ // run upgrade with elevated privileges
- KAuth::ExecuteJob *reply = upgradeAction.execute();
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpgradeHelperReply);
-
- reply->start();
--#endif
-+//#endif
- }
-
- void AlpineApkUpdater::proceed()
-@@ -272,7 +274,7 @@ void AlpineApkUpdater::handleKAuthUpgradeHelperReply(KJob *job)
- if (reply->error() == 0) {
- QVariant pkgsV = replyData.value(QLatin1String("changes"));
- bool onlySimulate = replyData.value(QLatin1String("onlySimulate"), false).toBool();
-- qCDebug(LOG_ALPINEAPK) << "KAuth helper upgrade reply received:" << onlySimulate;
-+ qCDebug(LOG_ALPINEAPK) << "KAuth helper upgrade reply received, onlySimulate:" << onlySimulate;
- if (onlySimulate) {
- QVector<QtApk::Package> pkgVector = pkgsV.value<QVector<QtApk::Package>>();
- qCDebug(LOG_ALPINEAPK) << " num changes:" << pkgVector.size();
---
-GitLab
-
-
-From 293fe5e14ad3e4812dd764bb834c207297f4b31f Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Thu, 11 Jun 2020 22:39:09 +0300
-Subject: [PATCH 20/61] Adapt to changes in libapk-qt 0.3
-
-* Rename link target to ApkQt::ApkQt
-* rename header include <QtApk.h> => <QtApk>
----
- .../backends/AlpineApkBackend/AlpineApkAuthHelper.cpp | 8 ++++----
- .../backends/AlpineApkBackend/AlpineApkAuthHelper.h | 2 +-
- .../backends/AlpineApkBackend/AlpineApkBackend.cpp | 2 +-
- libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h | 2 +-
- .../backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp | 2 +-
- .../backends/AlpineApkBackend/AlpineApkUpdater.cpp | 6 +++---
- libdiscover/backends/AlpineApkBackend/CMakeLists.txt | 4 ++--
- 7 files changed, 13 insertions(+), 13 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 11e267866..0496c8f28 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -73,7 +73,7 @@ ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
-
- HelperSupport::progressStep(10);
-
-- if (!m_apkdb.open(QtApk::Database::QTAPK_OPENF_READWRITE)) {
-+ if (!m_apkdb.open(QtApk::QTAPK_OPENF_READWRITE)) {
- reply.setErrorDescription(QStringLiteral("Failed to open database!"));
- return reply;
- }
-@@ -119,15 +119,15 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
-
- HelperSupport::progressStep(10);
-
-- if (!m_apkdb.open(QtApk::Database::QTAPK_OPENF_READWRITE)) {
-+ if (!m_apkdb.open(QtApk::QTAPK_OPENF_READWRITE)) {
- reply.setErrorDescription(QStringLiteral("Failed to open database!"));
- return reply;
- }
-
- bool onlySimulate = args.value(QLatin1String("onlySimulate"), false).toBool();
-- QtApk::Database::DbUpgradeFlags flags = QtApk::Database::QTAPK_UPGRADE_DEFAULT;
-+ QtApk::DbUpgradeFlags flags = QtApk::QTAPK_UPGRADE_DEFAULT;
- if (onlySimulate) {
-- flags = QtApk::Database::QTAPK_UPGRADE_SIMULATE;
-+ flags = QtApk::QTAPK_UPGRADE_SIMULATE;
- qCDebug(LOG_AUTHHELPER) << "Simulating upgrade run.";
- }
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index 5c06e5570..a634ce233 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -22,7 +22,7 @@
- #include <QVariant>
- #include <KAuthActionReply>
-
--#include <QtApk.h>
-+#include <QtApk>
-
- using namespace KAuth;
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index 750d2820c..a089afea4 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -70,7 +70,7 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
-
- qCDebug(LOG_ALPINEAPK) << "backend: populating resources...";
-
-- if (m_apkdb.open(QtApk::Database::QTAPK_OPENF_READONLY)) {
-+ if (m_apkdb.open(QtApk::QTAPK_OPENF_READONLY)) {
- m_availablePackages = m_apkdb.getAvailablePackages();
- m_installedPackages = m_apkdb.getInstalledPackages();
- m_apkdb.close();
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index d69352575..755cf6a5a 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -24,7 +24,7 @@
- #include <resources/AbstractResourcesBackend.h>
- #include <QVariantList>
-
--#include <QtApk.h>
-+#include <QtApk>
-
- class AlpineApkReviewsBackend;
- class AlpineApkUpdater;
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-index b964b40d1..225fb4436 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-@@ -29,7 +29,7 @@
- #include <KLocalizedString>
-
- // libapk-qt
--#include <QtApk.h>
-+#include <QtApk>
-
- AlpineApkSourcesBackend::AlpineApkSourcesBackend(AbstractResourcesBackend *parent)
- : AbstractSourcesBackend(parent)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 89a816c44..0083f340d 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -28,7 +28,7 @@
- #include <kauth_version.h>
- #include <KLocalizedString>
-
--#include <QtApk.h>
-+#include <QtApk>
-
-
- AlpineApkUpdater::AlpineApkUpdater(AbstractResourcesBackend *parent)
-@@ -49,12 +49,12 @@ void AlpineApkUpdater::prepare()
- }
-
- // readonly is fine for a simulation of upgrade
-- if (!db->open(QtApk::Database::QTAPK_OPENF_READONLY)) {
-+ if (!db->open(QtApk::QTAPK_OPENF_READONLY)) {
- emit passiveMessage(i18n("Failed to open APK database!"));
- return;
- }
-
-- if (!db->upgrade(QtApk::Database::QTAPK_UPGRADE_SIMULATE, &m_upgradeable)) {
-+ if (!db->upgrade(QtApk::QTAPK_UPGRADE_SIMULATE, &m_upgradeable)) {
- emit passiveMessage(i18n("Failed to get a list of packages to upgrade!"));
- db->close();
- return;
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 42e09c5b6..319c7ad2f 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -38,7 +38,7 @@ target_link_libraries(
- KF5::ConfigCore
- KF5::AuthCore
- Discover::Common
-- ApkQt::apk-qt
-+ ApkQt::ApkQt
- )
-
- # KAuth helper exe
-@@ -54,7 +54,7 @@ set_source_files_properties(
- target_link_libraries(alpineapk_kauth_helper
- Qt5::Core
- KF5::AuthCore
-- ApkQt::apk-qt
-+ ApkQt::ApkQt
- )
-
- kauth_install_actions(org.kde.discover.alpineapkbackend org.kde.discover.alpineapkbackend.actions)
---
-GitLab
-
-
-From 0266f6289bbfc6946244316b69775a32a361a011 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Sun, 28 Jun 2020 03:38:15 +0300
-Subject: [PATCH 21/61] AlpineApkAuthHelper: implement all operations in async
- mode
-
-also delete useless test() action
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 234 ++++++++++++------
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 19 +-
- .../org.kde.discover.alpineapkbackend.actions | 6 -
- 3 files changed, 181 insertions(+), 78 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 0496c8f28..a3236011f 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -40,88 +40,194 @@ using namespace KAuth;
-
- AlpineApkAuthHelper::AlpineApkAuthHelper() {}
-
--ActionReply AlpineApkAuthHelper::test(const QVariantMap &args)
-+bool AlpineApkAuthHelper::openDatabase(const QVariantMap &args, bool readwrite)
- {
-- const QString txt = args[QStringLiteral("txt")].toString();
--
-- ActionReply reply = ActionReply::HelperErrorReply();
-- QByteArray replyData(QByteArrayLiteral("ok"));
-+ // maybe set fakeRoot (needs to be done before Database::open()
-+ const QString fakeRoot = args.value(QLatin1String("fakeRoot"), QString()).toString();
-+ if (!fakeRoot.isEmpty()) {
-+ m_apkdb.setFakeRoot(fakeRoot);
-+ }
-
-- // write some text file at the root directory as root, why not
-- QFile f(QStringLiteral("/lol.txt"));
-- if (f.open(QIODevice::ReadWrite | QIODevice::Text)) {
-- f.write(txt.toUtf8());
-- f.close();
-+ // calculate flags to use during open
-+ QtApk::DbOpenFlags fl = QtApk::QTAPK_OPENF_ENABLE_PROGRESSFD;
-+ if (readwrite) {
-+ fl |= QtApk::QTAPK_OPENF_READWRITE;
-+ }
-
-- reply = ActionReply::SuccessReply();
-- reply.setData({
-- { QStringLiteral("reply"), replyData },
-- });
-+ if (!m_apkdb.open(fl)) {
-+ return false;
- }
-+ return true;
-+}
-
-- return reply;
-+void AlpineApkAuthHelper::closeDatabase()
-+{
-+ m_apkdb.close();
- }
-
--ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
-+void AlpineApkAuthHelper::setupTransactionPostCreate(QtApk::Transaction *trans)
- {
-- ActionReply reply = ActionReply::HelperErrorReply();
-+ // receive progress notifications
-+ QObject::connect(trans, &QtApk::Transaction::progressChanged,
-+ this, &AlpineApkAuthHelper::reportProgress);
-
-- const QString fakeRoot = args.value(QLatin1String("fakeRoot"), QString()).toString();
-- if (!fakeRoot.isEmpty()) {
-- m_apkdb.setFakeRoot(fakeRoot);
-- }
-+ // receive error messages
-+ QObject::connect(trans, &QtApk::Transaction::errorOccured,
-+ this, &AlpineApkAuthHelper::onTransactionError);
-
-- HelperSupport::progressStep(10);
-+ // what to do when transaction is complete
-+ QObject::connect(trans, &QtApk::Transaction::finished,
-+ this, &AlpineApkAuthHelper::onTransactionFinished);
-+}
-
-- if (!m_apkdb.open(QtApk::QTAPK_OPENF_READWRITE)) {
-- reply.setErrorDescription(QStringLiteral("Failed to open database!"));
-- return reply;
-+void AlpineApkAuthHelper::reportProgress(float percent)
-+{
-+ int p = static_cast<int>(percent);
-+ if (p < 0) p = 0;
-+ if (p > 100) p = 100;
-+ HelperSupport::progressStep(p);
-+}
-+
-+void AlpineApkAuthHelper::onTransactionError(const QString &msg)
-+{
-+ qCWarning(LOG_AUTHHELPER).nospace() << "ERROR occured in transaction \""
-+ << m_currentTransaction->desc()
-+ << "\": " << msg;
-+ const QString errMsg = m_currentTransaction->desc() + QLatin1String(" failed: ") + msg;
-+ m_actionReply.setErrorDescription(errMsg);
-+ m_actionReply.setData({
-+ { QLatin1String("errorString"), errMsg }
-+ });
-+ m_trans_ok = false;
-+}
-+
-+void AlpineApkAuthHelper::onTransactionFinished()
-+{
-+ m_lastChangeset = m_currentTransaction->changeset();
-+ m_currentTransaction->deleteLater();
-+ m_currentTransaction = nullptr;
-+ m_loop.quit();
-+}
-+
-+ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
-+{
-+ // return error by default
-+ m_actionReply = ActionReply::HelperErrorReply();
-+
-+ HelperSupport::progressStep(0);
-+
-+ if (!openDatabase(args)) {
-+ m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-+ return m_actionReply;
- }
-
-- bool update_ok = m_apkdb.updatePackageIndex();
-+ m_trans_ok = true;
-+ QtApk::Transaction *trans = m_apkdb.updatePackageIndex();
-+ setupTransactionPostCreate(trans);
-
-- if (update_ok) {
-+ trans->start();
-+ m_loop.exec();
-+
-+ if (m_trans_ok) {
- int updatesCount = m_apkdb.upgradeablePackagesCount();
-- reply = ActionReply::SuccessReply();
-- reply.setData({
-+ m_actionReply = ActionReply::SuccessReply();
-+ m_actionReply.setData({
- { QLatin1String("updatesCount"), updatesCount }
- });
-- } else {
-- reply.setErrorDescription(QStringLiteral("Repo update failed!"));
-- reply.setData({
-- { QLatin1String("errorString"), QStringLiteral("Repo update failed!") }
-- });
- }
-
-- m_apkdb.close();
-+ closeDatabase();
- HelperSupport::progressStep(100);
-
-- return reply;
-+ return m_actionReply;
- }
-
- ActionReply AlpineApkAuthHelper::add(const QVariantMap &args)
- {
-- Q_UNUSED(args)
-- ActionReply reply = ActionReply::HelperErrorReply();
-- return reply;
-+ // return error by default
-+ m_actionReply = ActionReply::HelperErrorReply();
-+
-+ HelperSupport::progressStep(0);
-+
-+ if (!openDatabase(args)) {
-+ m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-+ return m_actionReply;
-+ }
-+
-+ const QString pkgName = args.value(QLatin1String("pkgName"), QString()).toString();
-+ if (pkgName.isEmpty()) {
-+ m_actionReply.setErrorDescription(QStringLiteral("Specify pkgName for adding!"));
-+ return m_actionReply;
-+ }
-+
-+ m_trans_ok = true;
-+ QtApk::Transaction *trans = m_apkdb.add(pkgName);
-+ setupTransactionPostCreate(trans);
-+
-+ trans->start();
-+ m_loop.exec();
-+
-+ if (m_trans_ok) {
-+ m_actionReply = ActionReply::SuccessReply();
-+ }
-+
-+ closeDatabase();
-+ HelperSupport::progressStep(100);
-+
-+ return m_actionReply;
- }
-
- ActionReply AlpineApkAuthHelper::del(const QVariantMap &args)
- {
-- Q_UNUSED(args)
-- ActionReply reply = ActionReply::HelperErrorReply();
-- return reply;
-+ // return error by default
-+ m_actionReply = ActionReply::HelperErrorReply();
-+
-+ HelperSupport::progressStep(0);
-+
-+ if (!openDatabase(args)) {
-+ m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-+ return m_actionReply;
-+ }
-+
-+ const QString pkgName = args.value(QLatin1String("pkgName"), QString()).toString();
-+ if (pkgName.isEmpty()) {
-+ m_actionReply.setErrorDescription(QStringLiteral("Specify pkgName for removing!"));
-+ return m_actionReply;
-+ }
-+
-+ const bool delRdepends = args.value(QLatin1String("delRdepends"), false).toBool();
-+
-+ QtApk::DbDelFlags delFlags = QtApk::QTAPK_DEL_DEFAULT;
-+ if (delRdepends) {
-+ delFlags = QtApk::QTAPK_DEL_RDEPENDS;
-+ }
-+
-+ m_trans_ok = true;
-+ QtApk::Transaction *trans = m_apkdb.del(pkgName, delFlags);
-+ setupTransactionPostCreate(trans);
-+
-+ trans->start();
-+ m_loop.exec();
-+
-+ if (m_trans_ok) {
-+ m_actionReply = ActionReply::SuccessReply();
-+ }
-+
-+ closeDatabase();
-+ HelperSupport::progressStep(100);
-+
-+ return m_actionReply;
- }
-
- ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- {
-- ActionReply reply = ActionReply::HelperErrorReply();
-+ m_actionReply = ActionReply::HelperErrorReply();
-
-- HelperSupport::progressStep(10);
-+ HelperSupport::progressStep(0);
-
-- if (!m_apkdb.open(QtApk::QTAPK_OPENF_READWRITE)) {
-- reply.setErrorDescription(QStringLiteral("Failed to open database!"));
-- return reply;
-+ if (!openDatabase(args)) {
-+ m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-+ return m_actionReply;
- }
-
- bool onlySimulate = args.value(QLatin1String("onlySimulate"), false).toBool();
-@@ -131,28 +237,18 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- qCDebug(LOG_AUTHHELPER) << "Simulating upgrade run.";
- }
-
-- const QString fakeRoot = args.value(QLatin1String("fakeRoot"), QString()).toString();
-- if (!fakeRoot.isEmpty()) {
-- m_apkdb.setFakeRoot(fakeRoot);
-- }
--
-- // no progress notifications for now
-- //int progress_fd = m_apkdb.progressFd();
-- //qCDebug(LOG_AUTHHELPER) << " progress_fd: " << progress_fd;
-+ m_trans_ok = true;
-
-- //QScopedPointer<QSocketNotifier> notifier(new QSocketNotifier(progress_fd, QSocketNotifier::Read));
-- //QObject::connect(notifier.data(), &QSocketNotifier::activated, notifier.data(), [](int sock) {
-- // Q_UNUSED(sock)
-- // qCDebug(LOG_AUTHHELPER) << " read trigger from progress_fd!";
-- //});
-+ QtApk::Transaction *trans = m_apkdb.upgrade(flags);
-+ setupTransactionPostCreate(trans);
-
-- QtApk::Changeset changes;
-- bool upgrade_ok = m_apkdb.upgrade(flags, &changes);
-+ trans->start();
-+ m_loop.exec();
-
-- if (upgrade_ok) {
-- reply = ActionReply::SuccessReply();
-+ if (m_trans_ok) {
-+ m_actionReply = ActionReply::SuccessReply();
- QVariantMap replyData;
-- const QVector<QtApk::ChangesetItem> ch = changes.changes();
-+ const QVector<QtApk::ChangesetItem> ch = m_lastChangeset.changes();
- QVector<QVariant> chVector;
- QVector<QtApk::Package> pkgVector;
- for (const QtApk::ChangesetItem &it: ch) {
-@@ -160,15 +256,13 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- }
- replyData.insert(QLatin1String("changes"), QVariant::fromValue(pkgVector));
- replyData.insert(QLatin1String("onlySimulate"), onlySimulate);
-- reply.setData(replyData);
-- } else {
-- reply.setErrorDescription(QStringLiteral("Repo upgrade failed!"));
-+ m_actionReply.setData(replyData);
- }
-
-- m_apkdb.close();
-+ closeDatabase();
- HelperSupport::progressStep(100);
-
-- return reply;
-+ return m_actionReply;
- }
-
- KAUTH_HELPER_MAIN("org.kde.discover.alpineapkbackend", AlpineApkAuthHelper)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index a634ce233..a670a2aa1 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -18,6 +18,7 @@
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-+#include <QEventLoop>
- #include <QObject>
- #include <QVariant>
- #include <KAuthActionReply>
-@@ -33,12 +34,26 @@ public:
- AlpineApkAuthHelper();
-
- public Q_SLOTS:
-- ActionReply test(const QVariantMap &args);
- ActionReply update(const QVariantMap &args);
- ActionReply add(const QVariantMap &args);
- ActionReply del(const QVariantMap &args);
- ActionReply upgrade(const QVariantMap &args);
-
-+protected:
-+ bool openDatabase(const QVariantMap &args, bool readwrite = true);
-+ void closeDatabase();
-+ void setupTransactionPostCreate(QtApk::Transaction *trans);
-+
-+protected Q_SLOTS:
-+ void reportProgress(float percent);
-+ void onTransactionError(const QString &msg);
-+ void onTransactionFinished();
-+
- private:
-- QtApk::Database m_apkdb;
-+ QtApk::DatabaseAsync m_apkdb; // runs transactions in bg thread
-+ QtApk::Transaction *m_currentTransaction = nullptr;
-+ QEventLoop m_loop; // event loop that will run and wait while bg transaction is in progress
-+ ActionReply m_actionReply; // return value for main action slots
-+ bool m_trans_ok = true; // flag to indicate if bg transaction was successful
-+ QtApk::Changeset m_lastChangeset; // changeset from last completed transaction
- };
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-index 10305a1af..0755c4157 100644
---- a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -1,9 +1,3 @@
--[org.kde.discover.alpineapkbackend.test]
--Name=Test Action
--Description=Just test
--Policy=auth_admin
--Persistence=session
--
- [org.kde.discover.alpineapkbackend.update]
- Name=Update repository index
- Description=Updates available packages list from repositories
---
-GitLab
-
-
-From de82618fb4cf7a1e135baea349ffd6bcb84b3cde Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 29 Jun 2020 03:22:42 +0300
-Subject: [PATCH 22/61] AlpineApkAuthHelper: add method to write repositories
- config
-
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 21 +++++++++++++++++++
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 1 +
- .../org.kde.discover.alpineapkbackend.actions | 6 ++++++
- 3 files changed, 28 insertions(+)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index a3236011f..81c18255c 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -265,4 +265,25 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- return m_actionReply;
- }
-
-+ActionReply AlpineApkAuthHelper::repoconfig(const QVariantMap &args)
-+{
-+ m_actionReply = ActionReply::HelperErrorReply();
-+ HelperSupport::progressStep(10);
-+
-+ if (args.contains(QLatin1String("repoList"))) {
-+ const QVariant v = args.value(QLatin1String("repoList"));
-+ const QVector<QtApk::Repository> repoVec = v.value<QVector<QtApk::Repository>>();
-+ if (QtApk::Database::saveRepositories(repoVec)) {
-+ m_actionReply = ActionReply::SuccessReply(); // OK
-+ } else {
-+ m_actionReply.setErrorDescription(QStringLiteral("Failed to write repositories config!"));
-+ }
-+ } else {
-+ m_actionReply.setErrorDescription(QStringLiteral("repoList parameter is missing in request!"));
-+ }
-+
-+ HelperSupport::progressStep(100);
-+ return m_actionReply;
-+}
-+
- KAUTH_HELPER_MAIN("org.kde.discover.alpineapkbackend", AlpineApkAuthHelper)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index a670a2aa1..acce56488 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -38,6 +38,7 @@ public Q_SLOTS:
- ActionReply add(const QVariantMap &args);
- ActionReply del(const QVariantMap &args);
- ActionReply upgrade(const QVariantMap &args);
-+ ActionReply repoconfig(const QVariantMap &args);
-
- protected:
- bool openDatabase(const QVariantMap &args, bool readwrite = true);
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-index 0755c4157..f1bffe654 100644
---- a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -21,3 +21,9 @@ Name=Remove package
- Description=Uninstall one package
- Policy=auth_admin
- Persistence=session
-+
-+[org.kde.discover.alpineapkbackend.repoconfig]
-+Name=Remove package
-+Description=Configure repositories URLs
-+Policy=auth_admin
-+Persistence=session
---
-GitLab
-
-
-From 0cbe2f3f96dfd72cf451187da4b8b95261912908 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 29 Jun 2020 06:52:42 +0300
-Subject: [PATCH 23/61] AlpineApkAuthHelper: create event loop only when needed
-
-It fixes error "QEventLoop: requires QApplication",
-this makes it creation delayed to moment *after*
-QCoreApplication object is created by KAuthCore
-internals.
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 14 +++++++++-----
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 2 +-
- 2 files changed, 10 insertions(+), 6 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 81c18255c..b436aa73b 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -78,6 +78,10 @@ void AlpineApkAuthHelper::setupTransactionPostCreate(QtApk::Transaction *trans)
- // what to do when transaction is complete
- QObject::connect(trans, &QtApk::Transaction::finished,
- this, &AlpineApkAuthHelper::onTransactionFinished);
-+
-+ if (!m_loop) {
-+ m_loop = new QEventLoop(this);
-+ }
- }
-
- void AlpineApkAuthHelper::reportProgress(float percent)
-@@ -106,7 +110,7 @@ void AlpineApkAuthHelper::onTransactionFinished()
- m_lastChangeset = m_currentTransaction->changeset();
- m_currentTransaction->deleteLater();
- m_currentTransaction = nullptr;
-- m_loop.quit();
-+ m_loop->quit();
- }
-
- ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
-@@ -126,7 +130,7 @@ ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
- setupTransactionPostCreate(trans);
-
- trans->start();
-- m_loop.exec();
-+ m_loop->exec();
-
- if (m_trans_ok) {
- int updatesCount = m_apkdb.upgradeablePackagesCount();
-@@ -165,7 +169,7 @@ ActionReply AlpineApkAuthHelper::add(const QVariantMap &args)
- setupTransactionPostCreate(trans);
-
- trans->start();
-- m_loop.exec();
-+ m_loop->exec();
-
- if (m_trans_ok) {
- m_actionReply = ActionReply::SuccessReply();
-@@ -207,7 +211,7 @@ ActionReply AlpineApkAuthHelper::del(const QVariantMap &args)
- setupTransactionPostCreate(trans);
-
- trans->start();
-- m_loop.exec();
-+ m_loop->exec();
-
- if (m_trans_ok) {
- m_actionReply = ActionReply::SuccessReply();
-@@ -243,7 +247,7 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- setupTransactionPostCreate(trans);
-
- trans->start();
-- m_loop.exec();
-+ m_loop->exec();
-
- if (m_trans_ok) {
- m_actionReply = ActionReply::SuccessReply();
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index acce56488..eed39f283 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -53,7 +53,7 @@ protected Q_SLOTS:
- private:
- QtApk::DatabaseAsync m_apkdb; // runs transactions in bg thread
- QtApk::Transaction *m_currentTransaction = nullptr;
-- QEventLoop m_loop; // event loop that will run and wait while bg transaction is in progress
-+ QEventLoop *m_loop = nullptr; // event loop that will run and wait while bg transaction is in progress
- ActionReply m_actionReply; // return value for main action slots
- bool m_trans_ok = true; // flag to indicate if bg transaction was successful
- QtApk::Changeset m_lastChangeset; // changeset from last completed transaction
---
-GitLab
-
-
-From ed22afd4b4880b213e7f78cb7e9a014604c2e782 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 29 Jun 2020 06:55:59 +0300
-Subject: [PATCH 24/61] AlpineApkAuthHelper: fix nullptr deref in
- onTransactionFinished
-
-m_currentTransaction was never assigned
----
- libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index b436aa73b..f5d8e17e5 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -67,6 +67,8 @@ void AlpineApkAuthHelper::closeDatabase()
-
- void AlpineApkAuthHelper::setupTransactionPostCreate(QtApk::Transaction *trans)
- {
-+ m_currentTransaction = trans; // remember current transaction here
-+
- // receive progress notifications
- QObject::connect(trans, &QtApk::Transaction::progressChanged,
- this, &AlpineApkAuthHelper::reportProgress);
---
-GitLab
-
-
-From 752de647cf2fd54361abed43288f0200e9e4c028 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Tue, 30 Jun 2020 05:39:42 +0300
-Subject: [PATCH 25/61] AlpineApkSourcesBackend: fully functional sources
- editor
-
-* allows enable/disable repo
-* allows to add/remove repo
-* allows to change sources order
-* allows to reload/save changes
----
- .../AlpineApkSourcesBackend.cpp | 130 +++++++++++++-----
- .../AlpineApkSourcesBackend.h | 7 +
- 2 files changed, 102 insertions(+), 35 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-index 225fb4436..28f08ef86 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-@@ -26,6 +26,8 @@
- #include <QVector>
-
- // KF5
-+#include <KAuthExecuteJob>
-+#include <kauth_version.h>
- #include <KLocalizedString>
-
- // libapk-qt
-@@ -35,16 +37,19 @@ AlpineApkSourcesBackend::AlpineApkSourcesBackend(AbstractResourcesBackend *paren
- : AbstractSourcesBackend(parent)
- , m_sourcesModel(new QStandardItemModel(this))
- , m_refreshAction(new QAction(QIcon::fromTheme(QStringLiteral("view-refresh")),
-- QStringLiteral("Refresh"), this))
-+ QStringLiteral("Reload"), this))
-+ , m_saveAction(new QAction(QIcon::fromTheme(QStringLiteral("document-save")),
-+ QStringLiteral("Save"), this))
-+ // ^^ unfortunately QML side ignores icons for custom actions
- {
- loadSources();
- QObject::connect(m_refreshAction, &QAction::triggered,
- this, &AlpineApkSourcesBackend::loadSources);
--
-- // can be used to track enabling/disabling repo source
-- // QObject::connect(m_sourcesModel, &QStandardItemModel::itemChanged, this, [](QStandardItem* item) {
-- // qCDebug(LOG_ALPINEAPK) << "source backend: DummySource changed" << item << item->checkState();
-- // });
-+ QObject::connect(m_saveAction, &QAction::triggered,
-+ this, &AlpineApkSourcesBackend::saveSources);
-+ // track enabling/disabling repo source
-+ QObject::connect(m_sourcesModel, &QStandardItemModel::itemChanged,
-+ this, &AlpineApkSourcesBackend::onItemChanged);
- }
-
- QAbstractItemModel *AlpineApkSourcesBackend::sources()
-@@ -52,48 +57,97 @@ QAbstractItemModel *AlpineApkSourcesBackend::sources()
- return m_sourcesModel;
- }
-
-+QStandardItem *AlpineApkSourcesBackend::sourceForId(const QString& id) const
-+{
-+ for (int i = 0; i < m_sourcesModel->rowCount(); ++i) {
-+ QStandardItem *item = m_sourcesModel->item(i, 0);
-+ if (item->data(AbstractSourcesBackend::IdRole) == id) {
-+ return item;
-+ }
-+ }
-+ return nullptr;
-+}
-+
- bool AlpineApkSourcesBackend::addSource(const QString &id)
- {
-- return addSourceFull(id, QString(), true);
-+ m_repos.append(QtApk::Repository(id, QString(), true));
-+ fillModelFromRepos();
-+ return true;
- }
-
--QStandardItem *AlpineApkSourcesBackend::sourceForId(const QString& id) const
-+void AlpineApkSourcesBackend::loadSources()
-+{
-+ m_repos = QtApk::Database::getRepositories();
-+ fillModelFromRepos();
-+}
-+
-+void AlpineApkSourcesBackend::fillModelFromRepos()
- {
-- for (int i = 0, c = m_sourcesModel->rowCount(); i < c; ++i) {
-- QStandardItem *it = m_sourcesModel->item(i, 0);
-- if (it->text() == id) {
-- return it;
-+ m_sourcesModel->clear();
-+ for (const QtApk::Repository &repo: m_repos) {
-+ if (repo.url.isEmpty()) {
-+ continue;
- }
-+ qCDebug(LOG_ALPINEAPK) << "source backend: Adding source:" << repo.url << repo.enabled;
-+ QStandardItem *it = new QStandardItem(repo.url);
-+ it->setData(repo.url, AbstractSourcesBackend::IdRole);
-+ it->setData(repo.comment, Qt::ToolTipRole);
-+ it->setCheckable(true);
-+ it->setCheckState(repo.enabled ? Qt::Checked : Qt::Unchecked);
-+ m_sourcesModel->appendRow(it);
- }
-- return nullptr;
- }
-
--bool AlpineApkSourcesBackend::addSourceFull(const QString &id, const QString &comment, bool enabled)
-+void AlpineApkSourcesBackend::saveSources()
- {
-- if (id.isEmpty()) {
-- return false;
-+ KAuth::Action repoConfigAction(QStringLiteral("org.kde.discover.alpineapkbackend.repoconfig"));
-+ repoConfigAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-+ if (!repoConfigAction.isValid()) {
-+ qCWarning(LOG_ALPINEAPK) << "repoConfigAction is not valid!";
-+ return;
- }
-
-- qCDebug(LOG_ALPINEAPK) << "source backend: Adding source:" << id;
-+ repoConfigAction.setTimeout(1 * 60 * 1000); // 1 min
-+#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-+ upgradeAction.setDetails(i18n("Configure repositories URLs"));
-+#else
-+ static const KAuth::Action::DetailsMap details{
-+ { KAuth::Action::AuthDetail::DetailMessage, i18n("Configure repositories URLs") }
-+ };
-+ repoConfigAction.setDetailsV2(details);
-+#endif
-+ // pass in new repositories list
-+ repoConfigAction.addArgument(QLatin1String("repoList"),
-+ QVariant::fromValue<QVector<QtApk::Repository>>(m_repos));
-+
-+ // run with elevated privileges
-+ KAuth::ExecuteJob *reply = repoConfigAction.execute();
-+ QObject::connect(reply, &KAuth::ExecuteJob::result, this, [this] (KJob *job) {
-+ KAuth::ExecuteJob *reply = static_cast<KAuth::ExecuteJob *>(job);
-+ if (reply->error() != 0) {
-+ const QString errMessage = reply->errorString();
-+ qCWarning(LOG_ALPINEAPK) << "KAuth helper returned error:"
-+ << reply->error() << errMessage;
-+ if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-+ Q_EMIT passiveMessage(i18n("Authorization denied"));
-+ } else {
-+ Q_EMIT passiveMessage(i18n("Error: ") + errMessage);
-+ }
-+ }
-+ this->loadSources();
-+ });
-
-- QStandardItem *it = new QStandardItem(id);
-- it->setData(id, AbstractSourcesBackend::IdRole);
-- it->setData(comment, Qt::ToolTipRole);
-- it->setCheckable(true);
-- it->setCheckState(enabled ? Qt::Checked : Qt::Unchecked);
-- // for now, disable editing sources
-- it->setFlags(it->flags() & ~Qt::ItemIsEnabled);
-- m_sourcesModel->appendRow(it);
-- return true;
-+ reply->start();
- }
-
--void AlpineApkSourcesBackend::loadSources()
-+void AlpineApkSourcesBackend::onItemChanged(QStandardItem *item)
- {
-- QVector<QtApk::Repository> repos = QtApk::Database::getRepositories();
-- m_sourcesModel->clear();
-- for (const QtApk::Repository &repo: repos) {
-- addSourceFull(repo.url, repo.comment, repo.enabled);
-- }
-+ // update internal storage vector and relaod model from it
-+ // otherwise checks state are not updated in UI
-+ const Qt::CheckState cs = item->checkState();
-+ const QModelIndex idx = m_sourcesModel->indexFromItem(item);
-+ m_repos[idx.row()].enabled = (cs == Qt::Checked);
-+ fillModelFromRepos();
- }
-
- bool AlpineApkSourcesBackend::removeSource(const QString &id)
-@@ -103,18 +157,20 @@ bool AlpineApkSourcesBackend::removeSource(const QString &id)
- qCWarning(LOG_ALPINEAPK) << "source backend: couldn't find " << id;
- return false;
- }
-+ m_repos.remove(it->row());
- return m_sourcesModel->removeRow(it->row());
- }
-
- QString AlpineApkSourcesBackend::idDescription()
- {
-- return i18nc("Adding repo", "Enter apk repository URL, for example: "
-+ return i18nc("Adding repo", "Enter Alpine repository URL, for example: "
- "http://dl-cdn.alpinelinux.org/alpine/edge/testing/");
- }
-
- QVariantList AlpineApkSourcesBackend::actions() const
- {
- static const QVariantList s_actions {
-+ QVariant::fromValue<QObject *>(m_saveAction),
- QVariant::fromValue<QObject *>(m_refreshAction),
- };
- return s_actions;
-@@ -122,12 +178,12 @@ QVariantList AlpineApkSourcesBackend::actions() const
-
- bool AlpineApkSourcesBackend::supportsAdding() const
- {
-- return false; // for now, disable editing sources
-+ return true;
- }
-
- bool AlpineApkSourcesBackend::canMoveSources() const
- {
-- return false; // for now, disable editing sources
-+ return true;
- }
-
- bool AlpineApkSourcesBackend::moveSource(const QString& sourceId, int delta)
-@@ -147,5 +203,9 @@ bool AlpineApkSourcesBackend::moveSource(const QString& sourceId, int delta)
- || row == (m_sourcesModel->rowCount() - 1)) {
- Q_EMIT lastSourceIdChanged();
- }
-+
-+ // swap also items in internal storage vector
-+ m_repos.swapItemsAt(row, destRow);
-+
- return true;
- }
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-index 578945917..eacda22dc 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-@@ -24,6 +24,8 @@
- #include <resources/AbstractSourcesBackend.h>
- #include <QStandardItemModel>
-
-+#include <QtApkRepository.h>
-+
- class AlpineApkSourcesBackend : public AbstractSourcesBackend
- {
- public:
-@@ -42,9 +44,14 @@ private:
- QStandardItem *sourceForId(const QString &id) const;
- bool addSourceFull(const QString &id, const QString &comment, bool enabled);
- void loadSources();
-+ void saveSources();
-+ void fillModelFromRepos();
-+ void onItemChanged(QStandardItem* item);
-
- QStandardItemModel *m_sourcesModel = nullptr;
- QAction *m_refreshAction = nullptr;
-+ QAction *m_saveAction = nullptr;
-+ QVector<QtApk::Repository> m_repos;
- };
-
- #endif // ALPINEAPKSOURCESBACKEND_H
---
-GitLab
-
-
-From 8197270ee138ad47c98d9bf5723d09b2c9d9ea01 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 1 Jul 2020 08:34:10 +0300
-Subject: [PATCH 26/61] AlpineApkUpdater: update progressing status
-
----
- .../AlpineApkBackend/AlpineApkUpdater.cpp | 25 +++++++++++--------
- .../AlpineApkBackend/AlpineApkUpdater.h | 2 +-
- 2 files changed, 16 insertions(+), 11 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 0083f340d..2f3d184fb 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -125,20 +125,18 @@ QDateTime AlpineApkUpdater::lastUpdate() const
- bool AlpineApkUpdater::isCancelable() const
- {
- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-- return true;
-+ return false;
- }
-
- bool AlpineApkUpdater::isProgressing() const
- {
-- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-- return false;
-+ qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_progressing;
-+ return m_progressing;
- }
-
- bool AlpineApkUpdater::isMarked(AbstractResource *res) const
- {
-- // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
- return m_markedToUpdate.contains(res);
-- // return true;
- }
-
- void AlpineApkUpdater::fetchChangelog() const
-@@ -148,7 +146,6 @@ void AlpineApkUpdater::fetchChangelog() const
-
- double AlpineApkUpdater::updateSize() const
- {
-- // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
- double sum = 0.0;
- for (AbstractResource *res : m_markedToUpdate) {
- sum += res->size();
-@@ -170,8 +167,6 @@ void AlpineApkUpdater::cancel()
- void AlpineApkUpdater::start()
- {
- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-- //return;
--//#if 0
- KAuth::Action upgradeAction(QStringLiteral("org.kde.discover.alpineapkbackend.upgrade"));
- upgradeAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-
-@@ -196,8 +191,10 @@ void AlpineApkUpdater::start()
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpgradeHelperReply);
-
-+ m_progressing = true;
-+ Q_EMIT progressingChanged(m_progressing);
-+
- reply->start();
--//#endif
- }
-
- void AlpineApkUpdater::proceed()
-@@ -207,7 +204,7 @@ void AlpineApkUpdater::proceed()
-
- int AlpineApkUpdater::updatesCount()
- {
-- // qDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
-+ qDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
- return m_updatesCount;
- }
-
-@@ -241,6 +238,10 @@ void AlpineApkUpdater::startCheckForUpdates()
- QObject::connect(reply, QOverload<KJob *, unsigned long>::of(&KAuth::ExecuteJob::percent),
- this, &AlpineApkUpdater::handleKAuthUpdateHelperProgress);
-
-+ m_progressing = true;
-+ Q_EMIT progressingChanged(m_progressing);
-+ Q_EMIT progressChanged(0);
-+
- reply->start();
- }
-
-@@ -256,6 +257,9 @@ void AlpineApkUpdater::handleKAuthUpdateHelperReply(KJob *job)
- handleKAuthHelperError(reply, replyData);
- }
-
-+ m_progressing = false;
-+ Q_EMIT progressingChanged(m_progressing);
-+
- // we are not in the state "Fetching updates" now, update UI
- Q_EMIT checkForUpdatesFinished();
- }
-@@ -265,6 +269,7 @@ void AlpineApkUpdater::handleKAuthUpdateHelperProgress(KJob *job, unsigned long
- Q_UNUSED(job)
- qCDebug(LOG_ALPINEAPK) << " fetch updates progress: " << percent;
- Q_EMIT fetchingUpdatesProgressChanged(percent);
-+ Q_EMIT progressChanged(static_cast<qreal>(percent));
- }
-
- void AlpineApkUpdater::handleKAuthUpgradeHelperReply(KJob *job)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-index 77140ca25..0ee2fcb47 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-@@ -185,7 +185,7 @@ private:
-
- // QSet<AbstractResource*> m_upgradeable;
- // QSet<AbstractResource*> m_pendingResources;
--// bool m_settingUp;
-+ bool m_progressing = false;
- // qreal m_progress;
- // QDateTime m_lastUpdate;
- // QTimer m_timer;
---
-GitLab
-
-
-From adddff43ebd74d8a22ae7953e02fd55ab500eed2 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 1 Jul 2020 10:06:03 +0300
-Subject: [PATCH 27/61] AlpineApkTransaction: transaction should know its
- backend
-
----
- .../AlpineApkBackend/AlpineApkTransaction.cpp | 28 +++++++++----------
- .../AlpineApkBackend/AlpineApkTransaction.h | 27 ++++++++++--------
- 2 files changed, 29 insertions(+), 26 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-index b4f90df56..fdc1d0534 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-@@ -26,7 +26,6 @@
- #include <QDebug>
- #include <KRandom>
-
--// #define TEST_PROCEED
-
- AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *app, Role role)
- : AlpineApkTransaction(app, {}, role)
-@@ -36,12 +35,25 @@ AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *app, Role role)
- AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *app, const AddonList &addons, Transaction::Role role)
- : Transaction(app->backend(), app, role, addons)
- , m_app(app)
-+ , m_backend(static_cast<AlpineApkBackend *>(app->backend()))
- {
-- setCancellable(true);
-+ setCancellable(false);
- setStatus(DownloadingStatus);
- iterateTransaction();
- }
-
-+void AlpineApkTransaction::proceed()
-+{
-+ finishTransaction();
-+}
-+
-+void AlpineApkTransaction::cancel()
-+{
-+ m_iterate = false;
-+
-+ setStatus(CancelledStatus);
-+}
-+
- void AlpineApkTransaction::iterateTransaction()
- {
- if (!m_iterate) {
-@@ -59,18 +71,6 @@ void AlpineApkTransaction::iterateTransaction()
- }
- }
-
--void AlpineApkTransaction::proceed()
--{
-- finishTransaction();
--}
--
--void AlpineApkTransaction::cancel()
--{
-- m_iterate = false;
--
-- setStatus(CancelledStatus);
--}
--
- void AlpineApkTransaction::finishTransaction()
- {
- AbstractResource::State newState;
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-index 63aeef8d7..ba0a77502 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-@@ -23,24 +23,27 @@
-
- #include <Transaction/Transaction.h>
-
-+class AlpineApkBackend;
- class AlpineApkResource;
-+
- class AlpineApkTransaction : public Transaction
- {
-- Q_OBJECT
-- public:
-- AlpineApkTransaction(AlpineApkResource *app, Role role);
-- AlpineApkTransaction(AlpineApkResource *app, const AddonList &list, Role role);
-+Q_OBJECT
-+public:
-+ AlpineApkTransaction(AlpineApkResource *app, Role role);
-+ AlpineApkTransaction(AlpineApkResource *app, const AddonList &list, Role role);
-
-- void cancel() override;
-- void proceed() override;
-+ void cancel() override;
-+ void proceed() override;
-
-- private Q_SLOTS:
-- void iterateTransaction();
-- void finishTransaction();
-+private Q_SLOTS:
-+ void iterateTransaction();
-+ void finishTransaction();
-
-- private:
-- bool m_iterate = true;
-- AlpineApkResource *m_app;
-+private:
-+ bool m_iterate = true;
-+ AlpineApkResource *m_app;
-+ AlpineApkBackend *m_backend;
- };
-
- #endif // ALPINEAPKTRANSACTION_H
---
-GitLab
-
-
-From 6601841be4d72448e1d407da455f6b63d42e6f4a Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Tue, 28 Jul 2020 21:05:11 +0300
-Subject: [PATCH 28/61] AlpineApkBackend: style fixes
-
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 15 ++++++++++-----
- 1 file changed, 10 insertions(+), 5 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index a089afea4..b695e5e6b 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -66,7 +66,7 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- this, &AlpineApkBackend::finishCheckForUpdates);
- m_updatesTimeoutTimer->setTimerType(Qt::CoarseTimer);
- m_updatesTimeoutTimer->setSingleShot(true);
-- m_updatesTimeoutTimer->setInterval(2 * 60 * 1000); // 2minutes
-+ m_updatesTimeoutTimer->setInterval(5 * 60 * 1000); // 5 minutes
-
- qCDebug(LOG_ALPINEAPK) << "backend: populating resources...";
-
-@@ -87,7 +87,8 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- // which places it into "System updates" section
- const QString key = pkg.name.toLower();
- m_resources.insert(key, res);
-- connect(res, &AlpineApkResource::stateChanged, this, &AlpineApkBackend::updatesCountChanged);
-+ connect(res, &AlpineApkResource::stateChanged,
-+ this, &AlpineApkBackend::updatesCountChanged);
- }
- qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
- << "packages";
-@@ -215,17 +216,20 @@ AbstractReviewsBackend *AlpineApkBackend::reviewsBackend() const
-
- Transaction* AlpineApkBackend::installApplication(AbstractResource *app, const AddonList &addons)
- {
-- return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app), addons, Transaction::InstallRole);
-+ return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app),
-+ addons, Transaction::InstallRole);
- }
-
- Transaction* AlpineApkBackend::installApplication(AbstractResource *app)
- {
-- return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app), Transaction::InstallRole);
-+ return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app),
-+ Transaction::InstallRole);
- }
-
- Transaction* AlpineApkBackend::removeApplication(AbstractResource *app)
- {
-- return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app), Transaction::RemoveRole);
-+ return new AlpineApkTransaction(qobject_cast<AlpineApkResource *>(app),
-+ Transaction::RemoveRole);
- }
-
- int AlpineApkBackend::fetchingUpdatesProgress() const
-@@ -281,4 +285,5 @@ void AlpineApkBackend::setFetchingUpdatesProgress(int percent)
- emit fetchingUpdatesProgressChanged();
- }
-
-+// needed because DISCOVER_BACKEND_PLUGIN(AlpineApkBackend) contains Q_OBJECT
- #include "AlpineApkBackend.moc"
---
-GitLab
-
-
-From 3f085e209657cff475812f4bbe8c64248a8aa0ce Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jul 2020 03:48:50 +0300
-Subject: [PATCH 29/61] AlpineApk KAuth backend: fix repoconfig action name
-
----
- .../AlpineApkBackend/org.kde.discover.alpineapkbackend.actions | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-index f1bffe654..5f7f76771 100644
---- a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -23,7 +23,7 @@ Policy=auth_admin
- Persistence=session
-
- [org.kde.discover.alpineapkbackend.repoconfig]
--Name=Remove package
-+Name=Configure repositories
- Description=Configure repositories URLs
- Policy=auth_admin
- Persistence=session
---
-GitLab
-
-
-From 53f84db288e1daea6f40815a750ae2d4b5122ddd Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jul 2020 03:50:27 +0300
-Subject: [PATCH 30/61] AlpineApkAuthHelper: clsoe database only on helper exit
-
-Don't be so quick to close database after each operation, close it in
-Helper class destructor, on helper exit.
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 24 ++++++++++++-------
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 1 +
- 2 files changed, 16 insertions(+), 9 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index f5d8e17e5..e6e6cb7a1 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -40,8 +40,18 @@ using namespace KAuth;
-
- AlpineApkAuthHelper::AlpineApkAuthHelper() {}
-
-+AlpineApkAuthHelper::~AlpineApkAuthHelper()
-+{
-+ closeDatabase();
-+}
-+
- bool AlpineApkAuthHelper::openDatabase(const QVariantMap &args, bool readwrite)
- {
-+ // is already opened?
-+ if (m_apkdb.isOpen()) {
-+ return true;
-+ }
-+
- // maybe set fakeRoot (needs to be done before Database::open()
- const QString fakeRoot = args.value(QLatin1String("fakeRoot"), QString()).toString();
- if (!fakeRoot.isEmpty()) {
-@@ -62,7 +72,11 @@ bool AlpineApkAuthHelper::openDatabase(const QVariantMap &args, bool readwrite)
-
- void AlpineApkAuthHelper::closeDatabase()
- {
-- m_apkdb.close();
-+ // close database only if opened
-+ if (m_apkdb.isOpen()) {
-+ // this also stops bg thread
-+ m_apkdb.close();
-+ }
- }
-
- void AlpineApkAuthHelper::setupTransactionPostCreate(QtApk::Transaction *trans)
-@@ -142,9 +156,7 @@ ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
- });
- }
-
-- closeDatabase();
- HelperSupport::progressStep(100);
--
- return m_actionReply;
- }
-
-@@ -177,9 +189,7 @@ ActionReply AlpineApkAuthHelper::add(const QVariantMap &args)
- m_actionReply = ActionReply::SuccessReply();
- }
-
-- closeDatabase();
- HelperSupport::progressStep(100);
--
- return m_actionReply;
- }
-
-@@ -219,9 +229,7 @@ ActionReply AlpineApkAuthHelper::del(const QVariantMap &args)
- m_actionReply = ActionReply::SuccessReply();
- }
-
-- closeDatabase();
- HelperSupport::progressStep(100);
--
- return m_actionReply;
- }
-
-@@ -265,9 +273,7 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- m_actionReply.setData(replyData);
- }
-
-- closeDatabase();
- HelperSupport::progressStep(100);
--
- return m_actionReply;
- }
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index eed39f283..7fd69a8f3 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -32,6 +32,7 @@ class AlpineApkAuthHelper : public QObject
- Q_OBJECT
- public:
- AlpineApkAuthHelper();
-+ ~AlpineApkAuthHelper() override;
-
- public Q_SLOTS:
- ActionReply update(const QVariantMap &args);
---
-GitLab
-
-
-From de003cb72d794fe2941bd7e912cc5ab8a014c181 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 29 Jul 2020 03:59:10 +0300
-Subject: [PATCH 31/61] AlpineApkTransaction: implement add/del packages.
-
----
- .../AlpineApkBackend/AlpineApkTransaction.cpp | 120 ++++++++++++++----
- .../AlpineApkBackend/AlpineApkTransaction.h | 12 +-
- 2 files changed, 101 insertions(+), 31 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-index fdc1d0534..ffd442927 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-@@ -22,56 +22,118 @@
- #include "AlpineApkBackend.h"
- #include "AlpineApkResource.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
--#include <QTimer>
-+
-+// Qt
- #include <QDebug>
--#include <KRandom>
-+#include <QTimer>
-
-+// KF5
-+#include <KAuthExecuteJob>
-+#include <kauth_version.h>
-+#include <KLocalizedString>
-
--AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *app, Role role)
-- : AlpineApkTransaction(app, {}, role)
-+AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *res, Role role)
-+ : AlpineApkTransaction(res, {}, role)
- {
- }
-
--AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *app, const AddonList &addons, Transaction::Role role)
-- : Transaction(app->backend(), app, role, addons)
-- , m_app(app)
-- , m_backend(static_cast<AlpineApkBackend *>(app->backend()))
-+AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *res, const AddonList &addons, Transaction::Role role)
-+ : Transaction(res->backend(), res, role, addons)
-+ , m_resource(res)
-+ , m_backend(static_cast<AlpineApkBackend *>(res->backend()))
- {
- setCancellable(false);
-- setStatus(DownloadingStatus);
-- iterateTransaction();
-+ setStatus(QueuedStatus);
-+ // seems like Discover's transactions are supposed to start
-+ // automatically; no dedicated method to start transaction?
-+ startTransaction();
- }
-
- void AlpineApkTransaction::proceed()
- {
-- finishTransaction();
-+ startTransaction();
- }
-
- void AlpineApkTransaction::cancel()
- {
-- m_iterate = false;
--
- setStatus(CancelledStatus);
- }
-
--void AlpineApkTransaction::iterateTransaction()
-+void AlpineApkTransaction::startTransaction()
- {
-- if (!m_iterate) {
-+ KAuth::Action authAction;
-+ QString actionDescription(i18n("Install package"));
-+ switch(role()) {
-+ case InstallRole:
-+ authAction.setName(QStringLiteral("org.kde.discover.alpineapkbackend.add"));
-+ break;
-+ case RemoveRole:
-+ authAction.setName(QStringLiteral("org.kde.discover.alpineapkbackend.del"));
-+ actionDescription = i18n("Remove package");
-+ break;
-+ case ChangeAddonsRole:
-+ qCWarning(LOG_ALPINEAPK) << "Addons are not supported by Alpine APK Backend!";
- return;
-+ break;
- }
-+ authAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-
-- if(progress() < 100) {
-- setProgress(qBound(0, progress() + (KRandom::random() % 30), 100));
-- QTimer::singleShot(/*KRandom::random()%*/100, this, &AlpineApkTransaction::iterateTransaction);
-- } else if (status() == DownloadingStatus) {
-- setStatus(CommittingStatus);
-- QTimer::singleShot(/*KRandom::random()%*/100, this, &AlpineApkTransaction::iterateTransaction);
-+ if (!authAction.isValid()) {
-+ qCWarning(LOG_ALPINEAPK) << "kauth addAction is not valid!";
-+ return;
-+ }
-+
-+ authAction.setTimeout(60 * 60 * 1000); // 60 min
-+#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-+ addAction.setDetails(actionDescription);
-+#else
-+ const KAuth::Action::DetailsMap details{
-+ { KAuth::Action::AuthDetail::DetailMessage, actionDescription }
-+ };
-+ authAction.setDetailsV2(details);
-+#endif
-+ authAction.addArgument(QLatin1String("pkgName"), m_resource->m_pkg.name);
-+
-+ // run action with elevated privileges
-+ KAuth::ExecuteJob *reply = authAction.execute();
-+
-+ // get result of this job
-+ QObject::connect(reply, &KAuth::ExecuteJob::result, this, [this](KJob *job) {
-+ KAuth::ExecuteJob *reply = static_cast<KAuth::ExecuteJob *>(job);
-+ const QVariantMap &replyData = reply->data();
-+ if (reply->error() == 0) {
-+ finishTransactionOK();
-+ } else {
-+ QString message = replyData.value(QLatin1String("errorString"),
-+ reply->errorString()).toString();
-+ if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-+ message = i18n("Error: Authorization denied");
-+ }
-+ finishTransactionWithError(message);
-+ }
-+ });
-+
-+ // get progress reports for this job
-+ QObject::connect(reply, QOverload<KJob*, unsigned long>::of(&KAuth::ExecuteJob::percent), this,
-+ [this](KJob *job, unsigned long percent) {
-+ Q_UNUSED(job)
-+ if (percent >= 40 && role() == InstallRole) {
-+ setStatus(CommittingStatus);
-+ }
-+ setProgress(static_cast<int>(percent));
-+ });
-+
-+ setProgress(0);
-+ if (role() == InstallRole) {
-+ setStatus(DownloadingStatus);
- } else {
-- finishTransaction();
-+ setStatus(CommittingStatus);
- }
-+
-+ reply->start();
- }
-
--void AlpineApkTransaction::finishTransaction()
-+void AlpineApkTransaction::finishTransactionOK()
- {
- AbstractResource::State newState;
- switch(role()) {
-@@ -83,8 +145,16 @@ void AlpineApkTransaction::finishTransaction()
- newState = AbstractResource::None;
- break;
- }
-- m_app->setAddons(addons());
-- m_app->setState(newState);
-+ m_resource->setAddons(addons());
-+ m_resource->setState(newState);
- setStatus(DoneStatus);
- deleteLater();
- }
-+
-+void AlpineApkTransaction::finishTransactionWithError(const QString &errMsg)
-+{
-+ qCWarning(LOG_ALPINEAPK) << "Transaction finished with error:" << errMsg;
-+ Q_EMIT passiveMessage(i18n("Error") + QStringLiteral(":\n") + errMsg);
-+ setStatus(DoneWithErrorStatus);
-+ deleteLater();
-+}
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-index ba0a77502..cab1f6b99 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.h
-@@ -30,19 +30,19 @@ class AlpineApkTransaction : public Transaction
- {
- Q_OBJECT
- public:
-- AlpineApkTransaction(AlpineApkResource *app, Role role);
-- AlpineApkTransaction(AlpineApkResource *app, const AddonList &list, Role role);
-+ AlpineApkTransaction(AlpineApkResource *res, Role role);
-+ AlpineApkTransaction(AlpineApkResource *res, const AddonList &list, Role role);
-
- void cancel() override;
- void proceed() override;
-
- private Q_SLOTS:
-- void iterateTransaction();
-- void finishTransaction();
-+ void startTransaction();
-+ void finishTransactionOK();
-+ void finishTransactionWithError(const QString &errMsg);
-
- private:
-- bool m_iterate = true;
-- AlpineApkResource *m_app;
-+ AlpineApkResource *m_resource;
- AlpineApkBackend *m_backend;
- };
-
---
-GitLab
-
-
-From caf82306b91473a61ae016d9968f82f61a5bc955 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Thu, 30 Jul 2020 03:41:57 +0300
-Subject: [PATCH 32/61] AlpineApkBackend: build with AppStreamQt support
-
-provide list of AppStreamQt components, load them once at startup
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 88 +++++++++++++++++--
- .../AlpineApkBackend/AlpineApkBackend.h | 4 +
- .../backends/AlpineApkBackend/CMakeLists.txt | 1 +
- 3 files changed, 88 insertions(+), 5 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index b695e5e6b..ac91a6efa 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -32,11 +32,14 @@
-
- #include <KLocalizedString>
-
-+#include <AppStreamQt/pool.h>
-+
-+#include <QAction>
- #include <QDebug>
- #include <QLoggingCategory>
-+#include <QSet>
- #include <QThread>
- #include <QTimer>
--#include <QAction>
-
- DISCOVER_BACKEND_PLUGIN(AlpineApkBackend)
-
-@@ -68,6 +71,36 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- m_updatesTimeoutTimer->setSingleShot(true);
- m_updatesTimeoutTimer->setInterval(5 * 60 * 1000); // 5 minutes
-
-+ qCDebug(LOG_ALPINEAPK) << "backend: loading AppStream metadata...";
-+ AppStream::Pool *appStreamPool = new AppStream::Pool(this);
-+ appStreamPool->setFlags(AppStream::Pool::FlagReadCollection |
-+ AppStream::Pool::FlagReadMetainfo |
-+ AppStream::Pool::FlagReadDesktopFiles);
-+ appStreamPool->setCacheFlags(AppStream::Pool::CacheFlagUseUser |
-+ AppStream::Pool::CacheFlagUseSystem);
-+ if (!appStreamPool->load()) {
-+ qCWarning(LOG_ALPINEAPK) << "backend: Failed to load appstream data:"
-+ << appStreamPool->lastError();
-+ } else {
-+ m_appStreamComponents = appStreamPool->components();
-+ qCDebug(LOG_ALPINEAPK) << "backend: loaded AppStream metadata OK:"
-+ << m_appStreamComponents.size() << "components.";
-+ // collect all categories present in appstream metadata
-+// QSet<QString> collectedCategories;
-+// for (const AppStream::Component &component : m_appStreamComponents) {
-+// const QStringList cats = component.categories();
-+// for (const QString &cat : cats) {
-+// collectedCategories.insert(cat);
-+// }
-+// }
-+// for (const QString &cat : collectedCategories) {
-+// qCDebug(LOG_ALPINEAPK) << " collected category: " << cat;
-+// m_collectedCategories << cat;
-+// }
-+ }
-+ delete appStreamPool;
-+ appStreamPool = nullptr;
-+
- qCDebug(LOG_ALPINEAPK) << "backend: populating resources...";
-
- if (m_apkdb.open(QtApk::QTAPK_OPENF_READONLY)) {
-@@ -78,13 +111,38 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
-
- if (m_availablePackages.size() > 0) {
- for (const QtApk::Package &pkg: m_availablePackages) {
-- AlpineApkResource *res = new AlpineApkResource(pkg, this);
-+
-+ // try to find appstream data for this package
-+ AppStream::Component appstreamComponent;
-+ AbstractResource::Type resType = AbstractResource::Type::Technical; // default
-+ for (const auto& appsC : m_appStreamComponents) {
-+ // find result which package name is exactly the one we want
-+ if (appsC.packageNames().contains(pkg.name)) {
-+ // found!
-+ appstreamComponent = appsC;
-+ // determine resource type here
-+ switch (appsC.kind()) {
-+ case AppStream::Component::KindDesktopApp:
-+ case AppStream::Component::KindConsoleApp:
-+ case AppStream::Component::KindWebApp:
-+ resType = AbstractResource::Type::Application;
-+ break;
-+ case AppStream::Component::KindAddon:
-+ resType = AbstractResource::Type::Addon;
-+ break;
-+ default:
-+ resType = AbstractResource::Type::Technical;
-+ break;
-+ }
-+ break; // exit for() loop
-+ }
-+ }
-+
-+ AlpineApkResource *res = new AlpineApkResource(pkg, appstreamComponent, resType, this);
- res->setCategoryName(QStringLiteral("alpine_packages"));
- res->setOriginSource(QStringLiteral("apk"));
- res->setSection(QStringLiteral("dummy"));
-- // here is the place to set a proper type of package
-- // AlpineApkResource defaults to AbstractResource::Technical,
-- // which places it into "System updates" section
-+
- const QString key = pkg.name.toLower();
- m_resources.insert(key, res);
- connect(res, &AlpineApkResource::stateChanged,
-@@ -125,6 +183,26 @@ QVector<Category *> AlpineApkBackend::category() const
- );
-
- return { s_rootCat };
-+
-+// static QVector<Category *> s_cats;
-+// if (s_cats.isEmpty()) {
-+// // fill only once
-+// s_cats << s_rootCat;
-+// for (const QString &scat : m_collectedCategories) {
-+// Category *cat = new Category(
-+// scat, // name
-+// QStringLiteral("package-x-generic"), // icon
-+// {}, // orFilters
-+// { displayName() }, // pluginName
-+// {}, // subcategories
-+// QUrl(), // decoration
-+// false // isAddons
-+// );
-+// s_cats << cat;
-+// }
-+// }
-+// return s_cats;
-+ // ^^ causes deep hang in discover in recalculating QML bindings
- }
-
- int AlpineApkBackend::updatesCount() const
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index 755cf6a5a..efcaf2ea8 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -26,6 +26,8 @@
-
- #include <QtApk>
-
-+#include <AppStreamQt/component.h>
-+
- class AlpineApkReviewsBackend;
- class AlpineApkUpdater;
- class AlpineApkResource;
-@@ -77,6 +79,8 @@ private:
- bool m_fetching = false;
- int m_fetchProgress = 0;
- QTimer *m_updatesTimeoutTimer;
-+ QList<AppStream::Component> m_appStreamComponents;
-+ // QVector<QString> m_collectedCategories;
- };
-
- #endif // AlpineApkBackend_H
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 319c7ad2f..536525381 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -39,6 +39,7 @@ target_link_libraries(
- KF5::AuthCore
- Discover::Common
- ApkQt::ApkQt
-+ AppStreamQt
- )
-
- # KAuth helper exe
---
-GitLab
-
-
-From d86644a30ae2a9ffe22b8712c2b91ca572e8ab8d Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Thu, 30 Jul 2020 03:44:55 +0300
-Subject: [PATCH 33/61] AlpineApkResource: AppStream integration
-
-return some data from appstream metadata, if available
----
- .../AlpineApkBackend/AlpineApkResource.cpp | 136 +++++++++++++++++-
- .../AlpineApkBackend/AlpineApkResource.h | 13 +-
- 2 files changed, 141 insertions(+), 8 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index 346a28b28..a6f4bc0fa 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -20,14 +20,29 @@
-
- #include "AlpineApkResource.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
-+
-+#include <AppStreamQt/icon.h>
-+#include <AppStreamQt/pool.h>
-+#include <AppStreamQt/release.h>
-+
-+#include <QFileInfo>
-+#include <QIcon>
-+#include <QProcess>
-+
-+// libdiscover
-+#include "appstream/AppStreamUtils.h"
-+#include "config-paths.h"
- #include "Transaction/AddonList.h"
-
- AlpineApkResource::AlpineApkResource(const QtApk::Package &apkPkg,
-+ AppStream::Component &component,
-+ AbstractResource::Type typ,
- AbstractResourcesBackend *parent)
- : AbstractResource(parent)
- , m_state(AbstractResource::State::None)
-- , m_type(AbstractResource::Type::Technical)
-+ , m_type(typ)
- , m_pkg(apkPkg)
-+ , m_appsC(component)
- {
- }
-
-@@ -43,11 +58,17 @@ QString AlpineApkResource::availableVersion() const
-
- QStringList AlpineApkResource::categories()
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.categories();
-+ }
- return { m_category };
- }
-
- QString AlpineApkResource::comment()
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.summary();
-+ }
- return m_pkg.description;
- }
-
-@@ -58,26 +79,83 @@ int AlpineApkResource::size()
-
- QUrl AlpineApkResource::homepage()
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.url(AppStream::Component::UrlKindHomepage);
-+ }
- return QUrl::fromUserInput(m_pkg.url);
- }
-
- QUrl AlpineApkResource::helpURL()
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.url(AppStream::Component::UrlKindHelp);
-+ }
- return QUrl();
- }
-
- QUrl AlpineApkResource::bugURL()
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.url(AppStream::Component::UrlKindBugtracker);
-+ }
- return QUrl();
- }
-
- QUrl AlpineApkResource::donationURL()
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.url(AppStream::Component::UrlKindDonation);
-+ }
- return QUrl();
- }
-
-+///xdg-compatible icon name to represent the resource, url or QIcon
- QVariant AlpineApkResource::icon() const
- {
-+ if (hasAppStreamData()) {
-+ const QList<AppStream::Icon> icns = m_appsC.icons();
-+ if (icns.size() == 0) {
-+ return QStringLiteral("package-x-generic");
-+ }
-+ QIcon ico;
-+ const AppStream::Icon &appIco = icns.first();
-+
-+ switch (appIco.kind()) {
-+ case AppStream::Icon::KindStock:
-+ // we can create icons of this type directly from theme
-+ ico = QIcon::fromTheme(appIco.name());
-+ break;
-+ case AppStream::Icon::KindLocal:
-+ case AppStream::Icon::KindCached: {
-+ // try from predefined standard Alpine path
-+ const QString appstreamIconsPath = QLatin1String("/usr/share/app-info/icons/");
-+ const QString path = appstreamIconsPath + appIco.url().path();
-+ if (QFileInfo::exists(path)) {
-+ ico.addFile(path, appIco.size());
-+ } else {
-+ const QString altPath = appstreamIconsPath +
-+ QStringLiteral("%1x%2/").arg(appIco.size().width()).arg(appIco.size().height()) +
-+ appIco.url().path();
-+ if (QFileInfo::exists(altPath)) {
-+ ico.addFile(altPath, appIco.size());
-+ }
-+ }
-+ } break;
-+ default: break;
-+ }
-+
-+ // return icon only if we successfully loaded it
-+ if (!ico.isNull()) {
-+ return QVariant::fromValue<QIcon>(ico);
-+ }
-+
-+ // try to load from icon theme by package name, this is better
-+ // than nothing and works surprisingly well for many packages
-+ ico = QIcon::fromTheme(m_pkg.name);
-+ if (!ico.isNull()) {
-+ return QVariant::fromValue<QIcon>(ico);
-+ }
-+ }
- return QStringLiteral("package-x-generic");
- }
-
-@@ -98,11 +176,17 @@ QJsonArray AlpineApkResource::licenses()
-
- QString AlpineApkResource::longDescription()
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.description();
-+ }
- return m_pkg.description;
- }
-
- QString AlpineApkResource::name() const
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.name();
-+ }
- return m_pkg.name;
- }
-
-@@ -128,13 +212,25 @@ AbstractResource::State AlpineApkResource::state()
-
- void AlpineApkResource::fetchChangelog()
- {
-- // QString log = longDescription();
-- // Q_EMIT changelogFetched(log);
-+ if (hasAppStreamData()) {
-+ emit changelogFetched(AppStreamUtils::changelogToHtml(m_appsC));
-+ }
- }
-
- void AlpineApkResource::fetchScreenshots()
- {
-- // Q_EMIT screenshotsFetched(m_screenshotThumbnails, m_screenshots);
-+ if (hasAppStreamData()) {
-+ const QPair<QList<QUrl>, QList<QUrl> > sc = AppStreamUtils::fetchScreenshots(m_appsC);
-+ Q_EMIT screenshotsFetched(sc.first, sc.second);
-+ }
-+}
-+
-+QString AlpineApkResource::appstreamId() const
-+{
-+ if (hasAppStreamData()) {
-+ return m_appsC.id();
-+ }
-+ return QString();
- }
-
- void AlpineApkResource::setState(AbstractResource::State state)
-@@ -184,20 +280,41 @@ void AlpineApkResource::setAvailableVersion(const QString &av)
- m_availableVersion = av;
- }
-
-+bool AlpineApkResource::hasAppStreamData() const
-+{
-+ return !m_appsC.id().isEmpty();
-+}
-+
-+bool AlpineApkResource::canExecute() const
-+{
-+ if (hasAppStreamData()) {
-+ return (m_appsC.kind() == AppStream::Component::KindDesktopApp &&
-+ (m_state == AbstractResource::Installed || m_state == AbstractResource::Upgradeable));
-+ }
-+ return false;
-+}
-
- void AlpineApkResource::invokeApplication() const
- {
-- // QDesktopServices d;
-- // d.openUrl(QUrl(QStringLiteral("https://projects.kde.org/projects/extragear/sysadmin/muon")));
-+ const QString desktopFile = QLatin1String("/usr/share/applications/") + appstreamId();
-+ if (QFile::exists(desktopFile)) {
-+ QProcess::startDetached(QStringLiteral("kstart5"), {QStringLiteral("--service"), desktopFile});
-+ }
- }
-
- QUrl AlpineApkResource::url() const
- {
-+ if (hasAppStreamData()) {
-+ return QUrl(QStringLiteral("appstream://") + appstreamId());
-+ }
- return QUrl(QLatin1String("apk://") + packageName());
- }
-
- QString AlpineApkResource::author() const
- {
-+ if (hasAppStreamData()) {
-+ return m_appsC.developerName();
-+ }
- return m_pkg.maintainer;
- }
-
-@@ -208,5 +325,12 @@ QString AlpineApkResource::sourceIcon() const
-
- QDate AlpineApkResource::releaseDate() const
- {
-+ if (hasAppStreamData()) {
-+ if (!m_appsC.releases().isEmpty()) {
-+ auto release = m_appsC.releases().constFirst();
-+ return release.timestamp().date();
-+ }
-+ }
-+ // just build date is fine, too
- return m_pkg.buildTime.date();
- }
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-index 7140786c5..e8948c467 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-@@ -23,6 +23,7 @@
-
- #include <resources/AbstractResource.h>
- #include <QtApkPackage.h>
-+#include <AppStreamQt/component.h>
-
- class AddonList;
-
-@@ -31,7 +32,10 @@ class AlpineApkResource : public AbstractResource
- Q_OBJECT
-
- public:
-- explicit AlpineApkResource(const QtApk::Package &apkPkg, AbstractResourcesBackend *parent);
-+ explicit AlpineApkResource(const QtApk::Package &apkPkg,
-+ AppStream::Component &component,
-+ AbstractResource::Type typ,
-+ AbstractResourcesBackend *parent);
-
- QList<PackageState> addonsInformation() override;
- QString section() override;
-@@ -52,10 +56,11 @@ public:
- QString name() const override;
- QString packageName() const override;
- AbstractResource::Type type() const override { return m_type; }
-- bool canExecute() const override { return true; }
-+ bool canExecute() const override;
- void invokeApplication() const override;
- void fetchChangelog() override;
- void fetchScreenshots() override;
-+ QString appstreamId() const override;
- QUrl url() const override;
- QString author() const override;
- QString sourceIcon() const override;
-@@ -69,6 +74,9 @@ public:
- void setAddonInstalled(const QString &addon, bool installed);
- void setAvailableVersion(const QString &av);
-
-+private:
-+ bool hasAppStreamData() const;
-+
- public:
- AbstractResource::State m_state;
- const AbstractResource::Type m_type;
-@@ -78,6 +86,7 @@ public:
- QString m_originSoruce;
- QString m_sectionName;
- QList<PackageState> m_addons;
-+ AppStream::Component m_appsC;
- };
-
- #endif // ALPINEAPKRESOURCE_H
---
-GitLab
-
-
-From 5a006c4820734be25aa108c69b6b4acc93f2b5ef Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 28 Sep 2020 08:38:25 +0300
-Subject: [PATCH 34/61] AlpineApkBackend: cmake: depend on Qt5::Concurrent
-
----
- libdiscover/backends/AlpineApkBackend/CMakeLists.txt | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 536525381..9e3bd82c2 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -34,6 +34,7 @@ target_link_libraries(
- PRIVATE
- Qt5::Core
- Qt5::Widgets
-+ Qt5::Concurrent
- KF5::CoreAddons
- KF5::ConfigCore
- KF5::AuthCore
---
-GitLab
-
-
-From 4a0974c9d48be4c29f9e24b93d606cb2cdca3f1f Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 28 Sep 2020 09:51:12 +0300
-Subject: [PATCH 35/61] AlpineApkBackend: load packages data in backgroud
-
-Load packages data and appstream metadata in background thread to
-unblock UI and increase discover startup time.
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 114 +++++++++++++-----
- .../AlpineApkBackend/AlpineApkBackend.h | 5 +
- 2 files changed, 91 insertions(+), 28 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index ac91a6efa..e441c4b36 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -35,10 +35,14 @@
- #include <AppStreamQt/pool.h>
-
- #include <QAction>
-+#include <QtConcurrentRun>
- #include <QDebug>
-+#include <QFuture>
-+#include <QFutureWatcher>
- #include <QLoggingCategory>
- #include <QSet>
- #include <QThread>
-+#include <QThreadPool>
- #include <QTimer>
-
- DISCOVER_BACKEND_PLUGIN(AlpineApkBackend)
-@@ -53,9 +57,6 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- const_cast<QLoggingCategory &>(LOG_ALPINEAPK()).setEnabled(QtDebugMsg, false);
- #endif
-
-- // schedule checking for updates
-- QTimer::singleShot(1000, this, &AlpineApkBackend::checkForUpdates);
--
- // connections with our updater
- QObject::connect(m_updater, &AlpineApkUpdater::updatesCountChanged,
- this, &AlpineApkBackend::updatesCountChanged);
-@@ -71,8 +72,24 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- m_updatesTimeoutTimer->setSingleShot(true);
- m_updatesTimeoutTimer->setInterval(5 * 60 * 1000); // 5 minutes
-
-+ // load packages data in a separate thread; it takes a noticeable amount of time
-+ // and this way UI is not blocked here
-+ m_fetching = true; // we are busy!
-+ QFuture<void> loadResFuture = QtConcurrent::run(QThreadPool::globalInstance(), this,
-+ &AlpineApkBackend::loadResources);
-+
-+ QObject::connect(&m_voidFutureWatcher, &QFutureWatcher<void>::finished,
-+ this, &AlpineApkBackend::onLoadResourcesFinished);
-+ m_voidFutureWatcher.setFuture(loadResFuture);
-+
-+ SourcesModel::global()->addSourcesBackend(new AlpineApkSourcesBackend(this));
-+}
-+
-+void AlpineApkBackend::loadResources()
-+{
- qCDebug(LOG_ALPINEAPK) << "backend: loading AppStream metadata...";
-- AppStream::Pool *appStreamPool = new AppStream::Pool(this);
-+
-+ AppStream::Pool *appStreamPool = new AppStream::Pool();
- appStreamPool->setFlags(AppStream::Pool::FlagReadCollection |
- AppStream::Pool::FlagReadMetainfo |
- AppStream::Pool::FlagReadDesktopFiles);
-@@ -102,6 +119,7 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- appStreamPool = nullptr;
-
- qCDebug(LOG_ALPINEAPK) << "backend: populating resources...";
-+ emit this->passiveMessage(i18n("Loading, please wait..."));
-
- if (m_apkdb.open(QtApk::QTAPK_OPENF_READONLY)) {
- m_availablePackages = m_apkdb.getAvailablePackages();
-@@ -114,43 +132,77 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
-
- // try to find appstream data for this package
- AppStream::Component appstreamComponent;
-- AbstractResource::Type resType = AbstractResource::Type::Technical; // default
- for (const auto& appsC : m_appStreamComponents) {
- // find result which package name is exactly the one we want
- if (appsC.packageNames().contains(pkg.name)) {
-- // found!
-- appstreamComponent = appsC;
-- // determine resource type here
-- switch (appsC.kind()) {
-- case AppStream::Component::KindDesktopApp:
-- case AppStream::Component::KindConsoleApp:
-- case AppStream::Component::KindWebApp:
-- resType = AbstractResource::Type::Application;
-- break;
-- case AppStream::Component::KindAddon:
-- resType = AbstractResource::Type::Addon;
-- break;
-- default:
-- resType = AbstractResource::Type::Technical;
-- break;
-+ // workaround for kate (Kate Sessions is found first, but
-+ // package name = "kate" too, bugged metadata?)
-+ if (pkg.name == QStringLiteral("kate")) {
-+ // qCDebug(LOG_ALPINEAPK) << appsC.packageNames() << appsC.id();
-+ // ^^ ("kate") "org.kde.plasma.katesessions"
-+ if (appsC.id() != QStringLiteral("org.kde.kate")) {
-+ continue;
-+ }
- }
-+ appstreamComponent = appsC;
- break; // exit for() loop
- }
- }
-
-+ const QString key = pkg.name.toLower();
-+ m_resourcesAppstreamData.insert(key, appstreamComponent);
-+ }
-+ }
-+
-+ qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
-+ << "packages";
-+ qCDebug(LOG_ALPINEAPK) << " installed" << m_installedPackages.size()
-+ << "packages";
-+}
-+
-+static AbstractResource::Type toDiscoverResourceType(const AppStream::Component &component)
-+{
-+ AbstractResource::Type resType = AbstractResource::Type::Technical; // default
-+ // determine resource type here
-+ switch (component.kind()) {
-+ case AppStream::Component::KindDesktopApp:
-+ case AppStream::Component::KindConsoleApp:
-+ case AppStream::Component::KindWebApp:
-+ resType = AbstractResource::Type::Application;
-+ break;
-+ case AppStream::Component::KindAddon:
-+ resType = AbstractResource::Type::Addon;
-+ break;
-+ default:
-+ resType = AbstractResource::Type::Technical;
-+ break;
-+ }
-+ return resType;
-+}
-+
-+void AlpineApkBackend::onLoadResourcesFinished()
-+{
-+ qCDebug(LOG_ALPINEAPK) << "backend: appstream data loaded and sorted; fill in resources";
-+
-+ if (m_availablePackages.size() > 0) {
-+ for (const QtApk::Package &pkg: m_availablePackages) {
-+ const QString key = pkg.name.toLower();
-+
-+ AppStream::Component &appstreamComponent = m_resourcesAppstreamData[key];
-+ const AbstractResource::Type resType = toDiscoverResourceType(appstreamComponent);
-+
- AlpineApkResource *res = new AlpineApkResource(pkg, appstreamComponent, resType, this);
- res->setCategoryName(QStringLiteral("alpine_packages"));
- res->setOriginSource(QStringLiteral("apk"));
- res->setSection(QStringLiteral("dummy"));
-
-- const QString key = pkg.name.toLower();
- m_resources.insert(key, res);
-- connect(res, &AlpineApkResource::stateChanged,
-- this, &AlpineApkBackend::updatesCountChanged);
-+ QObject::connect(res, &AlpineApkResource::stateChanged,
-+ this, &AlpineApkBackend::updatesCountChanged);
- }
-- qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
-- << "packages";
- }
-+
-+ // update "installed/not installed" state
- if (m_installedPackages.size() > 0) {
- for (const QtApk::Package &pkg: m_installedPackages) {
- const QString key = pkg.name.toLower();
-@@ -158,11 +210,17 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- m_resources.value(key)->setState(AbstractResource::Installed);
- }
- }
-- qCDebug(LOG_ALPINEAPK) << " installed" << m_installedPackages.size()
-- << "packages";
- }
-
-- SourcesModel::global()->addSourcesBackend(new AlpineApkSourcesBackend(this));
-+ qCDebug(LOG_ALPINEAPK) << "backend: resources loaded.";
-+
-+ m_fetching = false;
-+ emit fetchingChanged();
-+ // ^^ this causes the UI to update "Featured" page and show
-+ // to user that we actually have loaded packages data
-+
-+ // schedule check for updates 1 sec after we've loaded all resources
-+ QTimer::singleShot(1000, this, &AlpineApkBackend::checkForUpdates);
- }
-
- QVector<Category *> AlpineApkBackend::category() const
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index efcaf2ea8..2ec8b00b6 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -23,6 +23,7 @@
-
- #include <resources/AbstractResourcesBackend.h>
- #include <QVariantList>
-+#include <QFutureWatcher>
-
- #include <QtApk>
-
-@@ -65,12 +66,15 @@ public Q_SLOTS:
-
- private Q_SLOTS:
- void finishCheckForUpdates();
-+ void loadResources();
-+ void onLoadResourcesFinished();
-
- public:
- QtApk::Database *apkdb() { return &m_apkdb; }
-
- private:
- QHash<QString, AlpineApkResource *> m_resources;
-+ QHash<QString, AppStream::Component> m_resourcesAppstreamData;
- AlpineApkUpdater *m_updater;
- AlpineApkReviewsBackend *m_reviews;
- QtApk::Database m_apkdb;
-@@ -81,6 +85,7 @@ private:
- QTimer *m_updatesTimeoutTimer;
- QList<AppStream::Component> m_appStreamComponents;
- // QVector<QString> m_collectedCategories;
-+ QFutureWatcher<void> m_voidFutureWatcher;
- };
-
- #endif // AlpineApkBackend_H
---
-GitLab
-
-
-From 7767cf429ee83c548718dfd8077b3aff7cc1239f Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 28 Sep 2020 09:51:35 +0300
-Subject: [PATCH 36/61] AlpineApkUpdater: disable too spammy logging
-
----
- libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 2f3d184fb..c03fd5c5c 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -204,7 +204,7 @@ void AlpineApkUpdater::proceed()
-
- int AlpineApkUpdater::updatesCount()
- {
-- qDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
-+ // qDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
- return m_updatesCount;
- }
-
---
-GitLab
-
-
-From b5026f83108a66c5e9f9464bab19ee9a704242fa Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 13 Jan 2021 22:08:44 +0300
-Subject: [PATCH 37/61] AlpineApkUpdater: try harder to get error string from
- helper
-
----
- .../backends/AlpineApkBackend/AlpineApkUpdater.cpp | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index c03fd5c5c..677a784f8 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -299,12 +299,22 @@ void AlpineApkUpdater::handleKAuthHelperError(
- KAuth::ExecuteJob *reply,
- const QVariantMap &replyData)
- {
-- const QString message = replyData.value(QLatin1String("errorString"),
-+ // error message should be received as part of JSON reply from helper
-+ QString message = replyData.value(QLatin1String("errorString"),
- reply->errorString()).toString();
-- qCDebug(LOG_ALPINEAPK) << "KAuth helper returned error:" << message << reply->error();
- if (reply->error() == KAuth::ActionReply::Error::AuthorizationDeniedError) {
-+ qCWarning(LOG_ALPINEAPK) << "updater: KAuth helper returned AuthorizationDeniedError";
- Q_EMIT passiveMessage(i18n("Authorization denied"));
- } else {
-+ // if received error message is empty, try other ways to get error text for user
-+ // there are multiple ways to get error messages in kauth/kjob
-+ if (message.isEmpty()) {
-+ message = reply->errorString();
-+ if (message.isEmpty()) {
-+ message = reply->errorText();
-+ }
-+ }
-+ qCDebug(LOG_ALPINEAPK) << "updater: KAuth helper returned error:" << message << reply->error();
- Q_EMIT passiveMessage(i18n("Error") + QStringLiteral(":\n") + message);
- }
- }
---
-GitLab
-
-
-From 484cfb033d0598f898af106c4c3f42b39f6d67f0 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Sun, 24 Jan 2021 08:16:20 +0300
-Subject: [PATCH 38/61] AlpineApkBackend: rename root category name
-
----
- libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index e441c4b36..8ddcc8e9f 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -231,7 +231,7 @@ QVector<Category *> AlpineApkBackend::category() const
- // Display a single root category
- // we could add more, but Alpine apk does not have this concept
- static Category *s_rootCat = new Category(
-- i18nc("Root category name", "Alpine packages"),
-+ i18nc("Root category name", "Alpine Linux packages"),
- QStringLiteral("package-x-generic"), // icon
- { s_apkFlt }, // orFilters - include packages that match filter
- { displayName() }, // pluginName
---
-GitLab
-
-
-From 69a593d8e7758c185e1a6fdcc5272893a9c6cf5c Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Sun, 24 Jan 2021 08:28:04 +0300
-Subject: [PATCH 39/61] KAuth helper: use single KAuth action for all
- operations
-
-Use single entry point for all package management operations.
-Using single KAuth action allows user to enter his password only once
-for all privileged operations during Discover session.
----
- .../AlpineApkBackend/AlpineApkAuthHelper.cpp | 91 ++++++++++---------
- .../AlpineApkBackend/AlpineApkAuthHelper.h | 15 ++-
- .../org.kde.discover.alpineapkbackend.actions | 30 +-----
- 3 files changed, 59 insertions(+), 77 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index e6e6cb7a1..97affc013 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -113,6 +113,7 @@ void AlpineApkAuthHelper::onTransactionError(const QString &msg)
- qCWarning(LOG_AUTHHELPER).nospace() << "ERROR occured in transaction \""
- << m_currentTransaction->desc()
- << "\": " << msg;
-+ // construct error message to use in helper reply
- const QString errMsg = m_currentTransaction->desc() + QLatin1String(" failed: ") + msg;
- m_actionReply.setErrorDescription(errMsg);
- m_actionReply.setData({
-@@ -129,16 +130,48 @@ void AlpineApkAuthHelper::onTransactionFinished()
- m_loop->quit();
- }
-
--ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
-+// single entry point for all package management actions
-+ActionReply AlpineApkAuthHelper::pkgmgmt(const QVariantMap &args)
- {
-- // return error by default
- m_actionReply = ActionReply::HelperErrorReply();
--
- HelperSupport::progressStep(0);
-
-+ // actual package management action to perform is passed in "pkgAction" argument
-+ if (!args.contains(QLatin1String("pkgAction"))) {
-+ m_actionReply.setError(ActionReply::InvalidActionError);
-+ m_actionReply.setErrorDescription(QLatin1String("Please pass \'pkgAction\' argument."));
-+ HelperSupport::progressStep(100);
-+ return m_actionReply;
-+ }
-+
-+ const QString pkgAction = args.value(QLatin1String("pkgAction")).toString();
-+
-+ if (pkgAction == QStringLiteral("update")) {
-+ update(args);
-+ } else if (pkgAction == QStringLiteral("add")) {
-+ add(args);
-+ } else if (pkgAction == QStringLiteral("del")) {
-+ del(args);
-+ } else if (pkgAction == QStringLiteral("upgrade")) {
-+ upgrade(args);
-+ } else if (pkgAction == QStringLiteral("repoconfig")) {
-+ repoconfig(args);
-+ } else {
-+ // error: unknown pkgAction
-+ m_actionReply.setError(ActionReply::NoSuchActionError);
-+ m_actionReply.setErrorDescription(QLatin1String("Please pass a valid \'pkgAction\' argument. "
-+ "Action \"%1\" is not recognized.").arg(pkgAction));
-+ }
-+
-+ HelperSupport::progressStep(100);
-+ return m_actionReply;
-+}
-+
-+void AlpineApkAuthHelper::update(const QVariantMap &args)
-+{
- if (!openDatabase(args)) {
- m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-- return m_actionReply;
-+ return;
- }
-
- m_trans_ok = true;
-@@ -155,27 +188,19 @@ ActionReply AlpineApkAuthHelper::update(const QVariantMap &args)
- { QLatin1String("updatesCount"), updatesCount }
- });
- }
--
-- HelperSupport::progressStep(100);
-- return m_actionReply;
- }
-
--ActionReply AlpineApkAuthHelper::add(const QVariantMap &args)
-+void AlpineApkAuthHelper::add(const QVariantMap &args)
- {
-- // return error by default
-- m_actionReply = ActionReply::HelperErrorReply();
--
-- HelperSupport::progressStep(0);
--
- if (!openDatabase(args)) {
- m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-- return m_actionReply;
-+ return;
- }
-
- const QString pkgName = args.value(QLatin1String("pkgName"), QString()).toString();
- if (pkgName.isEmpty()) {
- m_actionReply.setErrorDescription(QStringLiteral("Specify pkgName for adding!"));
-- return m_actionReply;
-+ return;
- }
-
- m_trans_ok = true;
-@@ -188,27 +213,19 @@ ActionReply AlpineApkAuthHelper::add(const QVariantMap &args)
- if (m_trans_ok) {
- m_actionReply = ActionReply::SuccessReply();
- }
--
-- HelperSupport::progressStep(100);
-- return m_actionReply;
- }
-
--ActionReply AlpineApkAuthHelper::del(const QVariantMap &args)
-+void AlpineApkAuthHelper::del(const QVariantMap &args)
- {
-- // return error by default
-- m_actionReply = ActionReply::HelperErrorReply();
--
-- HelperSupport::progressStep(0);
--
- if (!openDatabase(args)) {
- m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-- return m_actionReply;
-+ return;
- }
-
- const QString pkgName = args.value(QLatin1String("pkgName"), QString()).toString();
- if (pkgName.isEmpty()) {
- m_actionReply.setErrorDescription(QStringLiteral("Specify pkgName for removing!"));
-- return m_actionReply;
-+ return;
- }
-
- const bool delRdepends = args.value(QLatin1String("delRdepends"), false).toBool();
-@@ -228,20 +245,13 @@ ActionReply AlpineApkAuthHelper::del(const QVariantMap &args)
- if (m_trans_ok) {
- m_actionReply = ActionReply::SuccessReply();
- }
--
-- HelperSupport::progressStep(100);
-- return m_actionReply;
- }
-
--ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
-+void AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- {
-- m_actionReply = ActionReply::HelperErrorReply();
--
-- HelperSupport::progressStep(0);
--
- if (!openDatabase(args)) {
- m_actionReply.setErrorDescription(QStringLiteral("Failed to open database!"));
-- return m_actionReply;
-+ return;
- }
-
- bool onlySimulate = args.value(QLatin1String("onlySimulate"), false).toBool();
-@@ -272,16 +282,10 @@ ActionReply AlpineApkAuthHelper::upgrade(const QVariantMap &args)
- replyData.insert(QLatin1String("onlySimulate"), onlySimulate);
- m_actionReply.setData(replyData);
- }
--
-- HelperSupport::progressStep(100);
-- return m_actionReply;
- }
-
--ActionReply AlpineApkAuthHelper::repoconfig(const QVariantMap &args)
-+void AlpineApkAuthHelper::repoconfig(const QVariantMap &args)
- {
-- m_actionReply = ActionReply::HelperErrorReply();
-- HelperSupport::progressStep(10);
--
- if (args.contains(QLatin1String("repoList"))) {
- const QVariant v = args.value(QLatin1String("repoList"));
- const QVector<QtApk::Repository> repoVec = v.value<QVector<QtApk::Repository>>();
-@@ -293,9 +297,6 @@ ActionReply AlpineApkAuthHelper::repoconfig(const QVariantMap &args)
- } else {
- m_actionReply.setErrorDescription(QStringLiteral("repoList parameter is missing in request!"));
- }
--
-- HelperSupport::progressStep(100);
-- return m_actionReply;
- }
-
- KAUTH_HELPER_MAIN("org.kde.discover.alpineapkbackend", AlpineApkAuthHelper)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index 7fd69a8f3..240e6ed35 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -35,17 +35,22 @@ public:
- ~AlpineApkAuthHelper() override;
-
- public Q_SLOTS:
-- ActionReply update(const QVariantMap &args);
-- ActionReply add(const QVariantMap &args);
-- ActionReply del(const QVariantMap &args);
-- ActionReply upgrade(const QVariantMap &args);
-- ActionReply repoconfig(const QVariantMap &args);
-+ // single entry point for all package management operations
-+ ActionReply pkgmgmt(const QVariantMap &args);
-
- protected:
-+ // helpers
- bool openDatabase(const QVariantMap &args, bool readwrite = true);
- void closeDatabase();
- void setupTransactionPostCreate(QtApk::Transaction *trans);
-
-+ // individual pakckage management actions
-+ void update(const QVariantMap &args);
-+ void add(const QVariantMap &args);
-+ void del(const QVariantMap &args);
-+ void upgrade(const QVariantMap &args);
-+ void repoconfig(const QVariantMap &args);
-+
- protected Q_SLOTS:
- void reportProgress(float percent);
- void onTransactionError(const QString &msg);
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-index 5f7f76771..c9bb5f9f2 100644
---- a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -1,29 +1,5 @@
--[org.kde.discover.alpineapkbackend.update]
--Name=Update repository index
--Description=Updates available packages list from repositories
--Policy=auth_admin
--Persistence=session
--
--[org.kde.discover.alpineapkbackend.upgrade]
--Name=Upgrade all upgradable packages
--Description=Upgrade installed packages to latest versions
--Policy=auth_admin
--Persistence=session
--
--[org.kde.discover.alpineapkbackend.add]
--Name=Install/upgrade package
--Description=Installs/upgrades one package
--Policy=auth_admin
--Persistence=session
--
--[org.kde.discover.alpineapkbackend.del]
--Name=Remove package
--Description=Uninstall one package
--Policy=auth_admin
--Persistence=session
--
--[org.kde.discover.alpineapkbackend.repoconfig]
--Name=Configure repositories
--Description=Configure repositories URLs
-+[org.kde.discover.alpineapkbackend.pkgmgmt]
-+Name=Package management
-+Description=Install or remove packages, upgrade system
- Policy=auth_admin
- Persistence=session
---
-GitLab
-
-
-From 7de19c2db5842cbe35c5f3ba2c6421c3e52c5ecb Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Sun, 24 Jan 2021 08:32:59 +0300
-Subject: [PATCH 40/61] AlpineApk: refactor code to use single entry for all
- KAuth stuff
-
- * Add AlpineApkAuthActionFactory to contain all KAuth
- action creation stuff in one place.
- * ActionFactory: Use new single entry point for all KAuth
- helper operations.
- * Switch all places in code that used KAuth actions to
- using ActionFactory:create*() methods.
----
- .../AlpineApkAuthActionFactory.cpp | 118 ++++++++++++++++++
- .../AlpineApkAuthActionFactory.h | 41 ++++++
- .../AlpineApkSourcesBackend.cpp | 28 +----
- .../AlpineApkBackend/AlpineApkTransaction.cpp | 29 +----
- .../AlpineApkBackend/AlpineApkUpdater.cpp | 45 +------
- .../backends/AlpineApkBackend/CMakeLists.txt | 2 +
- 6 files changed, 178 insertions(+), 85 deletions(-)
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.cpp
-new file mode 100644
-index 000000000..972f8ec50
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.cpp
-@@ -0,0 +1,118 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include <KLocalizedString>
-+#include <kauth_version.h>
-+
-+#include "AlpineApkAuthActionFactory.h"
-+#include "alpineapk_backend_logging.h"
-+
-+namespace ActionFactory {
-+
-+static KAuth::Action createAlpineApkKAuthAction()
-+{
-+ KAuth::Action action(QStringLiteral("org.kde.discover.alpineapkbackend.pkgmgmt"));
-+ action.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-+ if (!action.isValid()) {
-+ qCWarning(LOG_ALPINEAPK) << "Created KAuth action is not valid!";
-+ return action;
-+ }
-+
-+ // set action description
-+ // setDetails deprecated since KF 5.68, use setDetailsV2() with DetailsMap.
-+#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-+ action.setDetails(i18n("Package management"));
-+#else
-+ static const KAuth::Action::DetailsMap details{
-+ { KAuth::Action::AuthDetail::DetailMessage, i18n("Package management") }
-+ };
-+ action.setDetailsV2(details);
-+#endif
-+
-+ // change default timeout to 1 minute, bcause default DBus timeout
-+ // of 25 seconds is not enough
-+ action.setTimeout(1 * 60 * 1000);
-+
-+ return action;
-+}
-+
-+KAuth::ExecuteJob *createUpdateAction(const QString &fakeRoot)
-+{
-+ KAuth::Action action = createAlpineApkKAuthAction();
-+ if (!action.isValid()) {
-+ return nullptr;
-+ }
-+ // update-action specific details
-+ action.setTimeout(2 * 60 * 1000); // 2 minutes
-+ action.addArgument(QLatin1String("pkgAction"), QLatin1String("update"));
-+ action.addArgument(QLatin1String("fakeRoot"), fakeRoot);
-+ return action.execute();
-+}
-+
-+KAuth::ExecuteJob *createUpgradeAction(bool onlySimulate)
-+{
-+ KAuth::Action action = createAlpineApkKAuthAction();
-+ if (!action.isValid()) {
-+ return nullptr;
-+ }
-+ action.setTimeout(3 * 60 * 60 * 1000); // 3 hours, system upgrade can take really long
-+ action.addArgument(QLatin1String("pkgAction"), QLatin1String("upgrade"));
-+ action.addArgument(QLatin1String("onlySimulate"), onlySimulate);
-+ return action.execute();
-+}
-+
-+KAuth::ExecuteJob *createAddAction(const QString &pkgName)
-+{
-+ KAuth::Action action = createAlpineApkKAuthAction();
-+ if (!action.isValid()) {
-+ return nullptr;
-+ }
-+ action.setTimeout(1 * 60 * 60 * 1000); // 1 hour, in case package is really big?
-+ action.addArgument(QLatin1String("pkgAction"), QLatin1String("add"));
-+ action.addArgument(QLatin1String("pkgName"), pkgName);
-+ return action.execute();
-+}
-+
-+KAuth::ExecuteJob *createDelAction(const QString &pkgName)
-+{
-+ KAuth::Action action = createAlpineApkKAuthAction();
-+ if (!action.isValid()) {
-+ return nullptr;
-+ }
-+ action.setTimeout(1 * 60 * 60 * 1000); // although deletion is almost instant
-+ action.addArgument(QLatin1String("pkgAction"), QLatin1String("del"));
-+ action.addArgument(QLatin1String("pkgName"), pkgName);
-+ return action.execute();
-+}
-+
-+KAuth::ExecuteJob *createRepoconfigAction(const QVariant &repoUrls)
-+{
-+ KAuth::Action action = createAlpineApkKAuthAction();
-+ if (!action.isValid()) {
-+ return nullptr;
-+ }
-+ // should be instant, writes few lines to /etc/apk/repositories
-+ action.setTimeout(1 * 60 * 1000); // 1 minute
-+ action.addArgument(QLatin1String("pkgAction"), QLatin1String("repoconfig"));
-+ action.addArgument(QLatin1String("repoList"), repoUrls);
-+ return action.execute();
-+}
-+
-+} // namespace ActionFactory
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h
-new file mode 100644
-index 000000000..ff5667f85
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h
-@@ -0,0 +1,41 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef AlpineApkAuthActionFactory_H
-+#define AlpineApkAuthActionFactory_H
-+
-+#include <QString>
-+#include <QVariant>
-+
-+#include <KAuthAction>
-+#include <KAuthActionReply>
-+#include <KAuthExecuteJob>
-+
-+namespace ActionFactory {
-+
-+KAuth::ExecuteJob *createUpdateAction(const QString &fakeRoot);
-+KAuth::ExecuteJob *createUpgradeAction(bool onlySimulate = false);
-+KAuth::ExecuteJob *createAddAction(const QString &pkgName);
-+KAuth::ExecuteJob *createDelAction(const QString &pkgName);
-+KAuth::ExecuteJob *createRepoconfigAction(const QVariant &repoUrls);
-+
-+} // namespace ActionFactory
-+
-+#endif
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-index 28f08ef86..a126483a9 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-@@ -19,6 +19,7 @@
- ***************************************************************************/
-
- #include "AlpineApkSourcesBackend.h"
-+#include "AlpineApkAuthActionFactory.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
-
- #include <QDebug>
-@@ -27,7 +28,6 @@
-
- // KF5
- #include <KAuthExecuteJob>
--#include <kauth_version.h>
- #include <KLocalizedString>
-
- // libapk-qt
-@@ -100,28 +100,12 @@ void AlpineApkSourcesBackend::fillModelFromRepos()
-
- void AlpineApkSourcesBackend::saveSources()
- {
-- KAuth::Action repoConfigAction(QStringLiteral("org.kde.discover.alpineapkbackend.repoconfig"));
-- repoConfigAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-- if (!repoConfigAction.isValid()) {
-- qCWarning(LOG_ALPINEAPK) << "repoConfigAction is not valid!";
-- return;
-- }
--
-- repoConfigAction.setTimeout(1 * 60 * 1000); // 1 min
--#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-- upgradeAction.setDetails(i18n("Configure repositories URLs"));
--#else
-- static const KAuth::Action::DetailsMap details{
-- { KAuth::Action::AuthDetail::DetailMessage, i18n("Configure repositories URLs") }
-- };
-- repoConfigAction.setDetailsV2(details);
--#endif
-- // pass in new repositories list
-- repoConfigAction.addArgument(QLatin1String("repoList"),
-- QVariant::fromValue<QVector<QtApk::Repository>>(m_repos));
-+ const QVariant repoUrls = QVariant::fromValue<QVector<QtApk::Repository>>(m_repos);
-
- // run with elevated privileges
-- KAuth::ExecuteJob *reply = repoConfigAction.execute();
-+ KAuth::ExecuteJob *reply = ActionFactory::createRepoconfigAction(repoUrls);
-+ if (!reply) return;
-+
- QObject::connect(reply, &KAuth::ExecuteJob::result, this, [this] (KJob *job) {
- KAuth::ExecuteJob *reply = static_cast<KAuth::ExecuteJob *>(job);
- if (reply->error() != 0) {
-@@ -142,7 +126,7 @@ void AlpineApkSourcesBackend::saveSources()
-
- void AlpineApkSourcesBackend::onItemChanged(QStandardItem *item)
- {
-- // update internal storage vector and relaod model from it
-+ // update internal storage vector and reload model from it
- // otherwise checks state are not updated in UI
- const Qt::CheckState cs = item->checkState();
- const QModelIndex idx = m_sourcesModel->indexFromItem(item);
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-index ffd442927..26bf1bd0d 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-@@ -21,6 +21,7 @@
- #include "AlpineApkTransaction.h"
- #include "AlpineApkBackend.h"
- #include "AlpineApkResource.h"
-+#include "AlpineApkAuthActionFactory.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
-
- // Qt
-@@ -29,7 +30,6 @@
-
- // KF5
- #include <KAuthExecuteJob>
--#include <kauth_version.h>
- #include <KLocalizedString>
-
- AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *res, Role role)
-@@ -61,42 +61,23 @@ void AlpineApkTransaction::cancel()
-
- void AlpineApkTransaction::startTransaction()
- {
-- KAuth::Action authAction;
-- QString actionDescription(i18n("Install package"));
-+ KAuth::ExecuteJob *reply = nullptr;
- switch(role()) {
- case InstallRole:
-- authAction.setName(QStringLiteral("org.kde.discover.alpineapkbackend.add"));
-+ reply = ActionFactory::createAddAction(m_resource->m_pkg.name);
- break;
- case RemoveRole:
-- authAction.setName(QStringLiteral("org.kde.discover.alpineapkbackend.del"));
-- actionDescription = i18n("Remove package");
-+ reply = ActionFactory::createDelAction(m_resource->m_pkg.name);
- break;
- case ChangeAddonsRole:
- qCWarning(LOG_ALPINEAPK) << "Addons are not supported by Alpine APK Backend!";
-- return;
- break;
- }
-- authAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-
-- if (!authAction.isValid()) {
-- qCWarning(LOG_ALPINEAPK) << "kauth addAction is not valid!";
-+ if (!reply) {
- return;
- }
-
-- authAction.setTimeout(60 * 60 * 1000); // 60 min
--#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-- addAction.setDetails(actionDescription);
--#else
-- const KAuth::Action::DetailsMap details{
-- { KAuth::Action::AuthDetail::DetailMessage, actionDescription }
-- };
-- authAction.setDetailsV2(details);
--#endif
-- authAction.addArgument(QLatin1String("pkgName"), m_resource->m_pkg.name);
--
-- // run action with elevated privileges
-- KAuth::ExecuteJob *reply = authAction.execute();
--
- // get result of this job
- QObject::connect(reply, &KAuth::ExecuteJob::result, this, [this](KJob *job) {
- KAuth::ExecuteJob *reply = static_cast<KAuth::ExecuteJob *>(job);
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 677a784f8..0bbbce1c0 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -21,11 +21,11 @@
- #include "AlpineApkUpdater.h"
- #include "AlpineApkResource.h"
- #include "AlpineApkBackend.h"
-+#include "AlpineApkAuthActionFactory.h"
- #include "alpineapk_backend_logging.h"
- #include "utils.h"
-
- #include <KAuthExecuteJob>
--#include <kauth_version.h>
- #include <KLocalizedString>
-
- #include <QtApk>
-@@ -167,27 +167,10 @@ void AlpineApkUpdater::cancel()
- void AlpineApkUpdater::start()
- {
- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-- KAuth::Action upgradeAction(QStringLiteral("org.kde.discover.alpineapkbackend.upgrade"));
-- upgradeAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
--
-- if (!upgradeAction.isValid()) {
-- qCWarning(LOG_ALPINEAPK) << "kauth upgradeAction is not valid!";
-- return;
-- }
--
-- upgradeAction.setTimeout(30 * 60 * 1000); // 30 min
--#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-- upgradeAction.setDetails(i18n("Upgrade currently installed packages"));
--#else
-- static const KAuth::Action::DetailsMap details{
-- { KAuth::Action::AuthDetail::DetailMessage, i18n("Upgrade currently installed packages") }
-- };
-- upgradeAction.setDetailsV2(details);
--#endif
-- // upgradeAction.addArgument(QLatin1String("onlySimulate"), true);
-
- // run upgrade with elevated privileges
-- KAuth::ExecuteJob *reply = upgradeAction.execute();
-+ KAuth::ExecuteJob *reply = ActionFactory::createUpgradeAction();
-+ if (!reply) return;
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpgradeHelperReply);
-
-@@ -211,27 +194,11 @@ int AlpineApkUpdater::updatesCount()
- void AlpineApkUpdater::startCheckForUpdates()
- {
- QtApk::Database *db = m_backend->apkdb();
-- KAuth::Action updateAction(QStringLiteral("org.kde.discover.alpineapkbackend.update"));
-- updateAction.setHelperId(QStringLiteral("org.kde.discover.alpineapkbackend"));
-- if (!updateAction.isValid()) {
-- qCWarning(LOG_ALPINEAPK) << "kauth updateAction is not valid!";
-- return;
-- }
-- updateAction.setTimeout(60 * 1000); // 1 minute
-- // setDetails deprecated since KF 5.68, use setDetailsV2() with DetailsMap.
--#if KAUTH_VERSION < QT_VERSION_CHECK(5, 68, 0)
-- updateAction.setDetails(i18n("Update repositories index"));
--#else
-- static const KAuth::Action::DetailsMap details{
-- { KAuth::Action::AuthDetail::DetailMessage, i18n("Update repositories index") }
-- };
-- updateAction.setDetailsV2(details);
--#endif
-- updateAction.addArgument(QLatin1String("fakeRoot"), db->fakeRoot());
-
- // run updates check with elevated privileges to access
- // system package manager files
-- KAuth::ExecuteJob *reply = updateAction.execute();
-+ KAuth::ExecuteJob *reply = ActionFactory::createUpdateAction(db->fakeRoot());
-+ if (!reply) return;
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpdateHelperReply);
- // qOverload is needed because of conflict with getter named percent()
-@@ -279,8 +246,8 @@ void AlpineApkUpdater::handleKAuthUpgradeHelperReply(KJob *job)
- if (reply->error() == 0) {
- QVariant pkgsV = replyData.value(QLatin1String("changes"));
- bool onlySimulate = replyData.value(QLatin1String("onlySimulate"), false).toBool();
-- qCDebug(LOG_ALPINEAPK) << "KAuth helper upgrade reply received, onlySimulate:" << onlySimulate;
- if (onlySimulate) {
-+ qCDebug(LOG_ALPINEAPK) << "KAuth helper upgrade reply received, simulation mode";
- QVector<QtApk::Package> pkgVector = pkgsV.value<QVector<QtApk::Package>>();
- qCDebug(LOG_ALPINEAPK) << " num changes:" << pkgVector.size();
- for (const QtApk::Package &pkg : pkgVector) {
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 9e3bd82c2..7e54cfd9b 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -1,6 +1,8 @@
- find_package(KF5Auth CONFIG REQUIRED) # Probably should be moved to top CMakeLists
-
- set(alpineapkbackend_SRCS
-+ AlpineApkAuthActionFactory.h
-+ AlpineApkAuthActionFactory.cpp
- AlpineApkBackend.cpp
- AlpineApkBackend.h
- AlpineApkResource.cpp
---
-GitLab
-
-
-From 96abd18d848ed67a6c16f4625b42c38327383a4a Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 29 Jan 2021 12:00:56 +0300
-Subject: [PATCH 41/61] AlpineApkResource: add AppStream data setter
-
----
- libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp | 5 +++++
- libdiscover/backends/AlpineApkBackend/AlpineApkResource.h | 1 +
- 2 files changed, 6 insertions(+)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index a6f4bc0fa..8f493a490 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -285,6 +285,11 @@ bool AlpineApkResource::hasAppStreamData() const
- return !m_appsC.id().isEmpty();
- }
-
-+void AlpineApkResource::setAppStreamData(const AppStream::Component &component)
-+{
-+ m_appsC = component;
-+}
-+
- bool AlpineApkResource::canExecute() const
- {
- if (hasAppStreamData()) {
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-index e8948c467..5304a8773 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-@@ -73,6 +73,7 @@ public:
- void setAddons(const AddonList &addons);
- void setAddonInstalled(const QString &addon, bool installed);
- void setAvailableVersion(const QString &av);
-+ void setAppStreamData(const AppStream::Component &component);
-
- private:
- bool hasAppStreamData() const;
---
-GitLab
-
-
-From c87972c9249fda6a97636c702d500622b4bc7a5a Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Sat, 17 Jul 2021 21:10:57 +0300
-Subject: [PATCH 42/61] CMake: AlpineApkBackend: depend on KIOCore, KJobWidgets
-
-Needed for AppStreamDataDownloader
----
- libdiscover/backends/AlpineApkBackend/CMakeLists.txt | 7 +++++--
- 1 file changed, 5 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 7e54cfd9b..0d657c6ab 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -1,4 +1,5 @@
- find_package(KF5Auth CONFIG REQUIRED) # Probably should be moved to top CMakeLists
-+find_package(KF5JobWidgets CONFIG REQUIRED)
-
- set(alpineapkbackend_SRCS
- AlpineApkAuthActionFactory.h
-@@ -37,9 +38,11 @@ target_link_libraries(
- Qt5::Core
- Qt5::Widgets
- Qt5::Concurrent
-- KF5::CoreAddons
-- KF5::ConfigCore
- KF5::AuthCore
-+ KF5::ConfigCore
-+ KF5::CoreAddons
-+ KF5::JobWidgets
-+ KF5::KIOCore
- Discover::Common
- ApkQt::ApkQt
- AppStreamQt
---
-GitLab
-
-
-From 39f58cb92b20a4f4334c0a0d67865d4ff8fd15f8 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 29 Jan 2021 12:11:51 +0300
-Subject: [PATCH 43/61] Add AppstreamDataDownloader class
-
-* Use KIO::get - Simpler and more readable code
- than the one using QNetworkAccessManager.
-* use temp files for downloading
-* review comments from apol
-* use KUiServerJobTracker to show some indication
----
- .../AppstreamDataDownloader.cpp | 237 ++++++++++++++++++
- .../AppstreamDataDownloader.h | 156 ++++++++++++
- .../backends/AlpineApkBackend/CMakeLists.txt | 2 +
- 3 files changed, 395 insertions(+)
- create mode 100644 libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp
- create mode 100644 libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp
-new file mode 100644
-index 000000000..e791b2e02
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp
-@@ -0,0 +1,237 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#include <QDateTime>
-+#include <QDir>
-+#include <QFile>
-+#include <QFileInfo>
-+#include <QJsonArray>
-+#include <QJsonDocument>
-+#include <QJsonParseError>
-+#include <QJsonObject>
-+#include <QStandardPaths>
-+#include <QUrl>
-+
-+// KF5
-+#include <KIO/TransferJob>
-+#include <KUiServerJobTracker>
-+
-+#include "AppstreamDataDownloader.h"
-+#include "alpineapk_backend_logging.h"
-+
-+namespace DiscoverVersion {
-+// contains static QLatin1String version("5.20.5"); definition
-+// autogenerated from top CMakeLists.txt
-+#include "../../../DiscoverVersion.h"
-+}
-+
-+QString AppstreamDataDownloader::appStreamCacheDir()
-+{
-+ const QString cachePath = QStandardPaths::writableLocation(QStandardPaths::CacheLocation) + QLatin1String("/external_appstream_data");
-+ // ^^ "~/.cache/discover/external_appstream_data"
-+ QDir(cachePath).mkpath(QStringLiteral("."));
-+ return cachePath;
-+}
-+
-+AppstreamDataDownloader::AppstreamDataDownloader(QObject *parent)
-+ : QObject(parent)
-+{
-+ m_jobTracker = new KUiServerJobTracker(this);
-+}
-+
-+void AppstreamDataDownloader::setCacheExpirePeriodSecs(qint64 secs)
-+{
-+ m_cacheExpireSeconds = secs;
-+}
-+
-+void AppstreamDataDownloader::loadUrlsJson(const QString &jsonPath)
-+{
-+ const QString jsonBaseName = QFileInfo(jsonPath).baseName();
-+ QFile jsonFile(jsonPath);
-+ if (!jsonFile.open(QIODevice::ReadOnly)) {
-+ qCWarning(LOG_ALPINEAPK) << "Failed to open JSON:" << jsonPath << "for reading!";
-+ Q_EMIT downloadFinished();
-+ return;
-+ }
-+ const QByteArray jsonBa = jsonFile.readAll();
-+ jsonFile.close();
-+
-+ QJsonParseError jsonError;
-+ const QJsonDocument jDoc = QJsonDocument::fromJson(jsonBa, &jsonError);
-+ if (jDoc.isNull()) {
-+ qCWarning(LOG_ALPINEAPK) << "Failed to parse JSON:" << jsonPath << "!";
-+ qCWarning(LOG_ALPINEAPK) << jsonError.errorString();
-+ Q_EMIT downloadFinished();
-+ return;
-+ }
-+ // JSON structure:
-+ // {
-+ // "urls": [
-+ // "https://...", "https://...", "https://..."
-+ // ]
-+ // }
-+ const QJsonObject rootObj = jDoc.object();
-+ const QJsonArray urls = rootObj.value(QLatin1String("urls")).toArray();
-+ for (const QJsonValue &urlValue : urls) {
-+ const QString url = urlValue.toString();
-+ m_urls.append(url);
-+ // prefixes are used to avoid name clashes with potential similar
-+ // URL paths from other JSON files. Json file basename is used
-+ // as prefix
-+ m_urlPrefixes.insert(url, jsonBaseName);
-+ }
-+}
-+
-+QString AppstreamDataDownloader::calcLocalFileSavePath(const QUrl &urlToDownload)
-+{
-+ // we are adding a prefix here to local file name to avoid possible
-+ // file name clashes with files from other JSONs
-+ const QString urlPrefix = m_urlPrefixes.value(urlToDownload.toString(), QString());
-+ const QFileInfo urlInfo(urlToDownload.path());
-+ const QString localCacheFile = AppstreamDataDownloader::appStreamCacheDir() + QDir::separator() + urlPrefix + QLatin1Char('_') + urlInfo.fileName();
-+ // aka "~/.cache/discover/external_appstream_data/urlPrefix_fileName.xml.gz"
-+ return localCacheFile;
-+}
-+
-+void AppstreamDataDownloader::start()
-+{
-+ m_urls.clear();
-+ // load json files with appdata URLs configuration
-+ const QString path = QStandardPaths::locate(
-+ QStandardPaths::GenericDataLocation,
-+ QLatin1String("libdiscover/external-appstream-urls"),
-+ QStandardPaths::LocateDirectory);
-+ if (path.isEmpty()) {
-+ qCWarning(LOG_ALPINEAPK) << "external-appstream-urls directory does not exist.";
-+ return;
-+ }
-+
-+ QDir jsonsDir(path);
-+ // search for all JSON files in that directory and load each one
-+ QFileInfoList fileList = jsonsDir.entryInfoList({QStringLiteral("*.json")}, QDir::Files);
-+ for (const QFileInfo &fi : fileList) {
-+ qCDebug(LOG_ALPINEAPK) << " reading URLs JSON: " << fi.absoluteFilePath();
-+ loadUrlsJson(fi.absoluteFilePath());
-+ }
-+
-+ qCDebug(LOG_ALPINEAPK) << "appstream_downloader: urls:" << m_urls;
-+
-+ // check if download is needed at all, maybe all files are already up to date?
-+
-+ appStreamCacheDir(); // can create a cache dir if not exists
-+
-+ const QDateTime dtNow = QDateTime::currentDateTime();
-+ m_urlsToDownload.clear();
-+ for (const QString &url : m_urls) {
-+ const QUrl urlToDownload(url, QUrl::TolerantMode);
-+ const QString localCacheFile = calcLocalFileSavePath(urlToDownload);
-+ const QFileInfo localFi(localCacheFile);
-+ if (localFi.exists()) {
-+ int modifiedSecsAgo = localFi.lastModified().secsTo(dtNow);
-+ if (modifiedSecsAgo >= m_cacheExpireSeconds) {
-+ qCDebug(LOG_ALPINEAPK) << " appstream metadata file: " << localFi.fileName() << " was last modified " << modifiedSecsAgo
-+ << " seconds ago, need to download";
-+ m_urlsToDownload.append(url);
-+ }
-+ } else {
-+ // locally downloaded file does not even exist, we need to download it
-+ m_urlsToDownload.append(url);
-+ qCDebug(LOG_ALPINEAPK) << " appstream metadata file: " << localFi.fileName()
-+ << " does not exist, queued for downloading";
-+ }
-+ }
-+
-+ if (!m_urlsToDownload.isEmpty()) {
-+ // some files are outdated; download is needed
-+ qCDebug(LOG_ALPINEAPK) << "appstream_downloader: We will need to download "
-+ << m_urlsToDownload.size() << " file(s)";
-+
-+ const QString discoverVersion(QStringLiteral("plasma-discover %1").arg(DiscoverVersion::version));
-+
-+ m_jobs.clear();
-+ for (const QString &sUrl : qAsConst(m_urlsToDownload)) {
-+ const QUrl url(sUrl, QUrl::TolerantMode);
-+ KIO::TransferJob *job = KIO::get(url, KIO::LoadType::Reload, KIO::JobFlag::HideProgressInfo);
-+ job->addMetaData(QLatin1String("UserAgent"), discoverVersion);
-+
-+ m_jobTracker->registerJob(job);
-+
-+ QObject::connect(job, &KJob::result, this, &AppstreamDataDownloader::onJobResult);
-+ QObject::connect(job, &KIO::TransferJob::data, this, &AppstreamDataDownloader::onJobData);
-+
-+ m_jobs.push_back(job);
-+ }
-+ } else {
-+ // no need to download anything
-+ qCDebug(LOG_ALPINEAPK) << "appstream_downloader: All appstream data files "
-+ "are up to date, not downloading anything";
-+ Q_EMIT downloadFinished();
-+ return;
-+ }
-+}
-+
-+void AppstreamDataDownloader::onJobData(KIO::Job *job, const QByteArray &data)
-+{
-+ KIO::TransferJob *tjob = qobject_cast<KIO::TransferJob *>(job);
-+ if (data.size() < 1) {
-+ return;
-+ }
-+ // while downloading, save data to temporary file
-+ const QString filePath = calcLocalFileSavePath(tjob->url()) + QLatin1String(".tmp");
-+ QFile fout(filePath);
-+ if (!fout.open(QIODevice::WriteOnly | QIODevice::Append)) {
-+ qCWarning(LOG_ALPINEAPK) << "appstream_downloader: failed to write: " << filePath;
-+ return;
-+ }
-+ fout.write(data);
-+ fout.close();
-+}
-+
-+void AppstreamDataDownloader::onJobResult(KJob *job)
-+{
-+ KIO::TransferJob *tjob = qobject_cast<KIO::TransferJob *>(job);
-+ m_jobs.removeOne(tjob);
-+ m_jobTracker->unregisterJob(tjob);
-+
-+ const QString localCacheFile = calcLocalFileSavePath(tjob->url());
-+ const QString localCacheFileTmp = localCacheFile + QLatin1String(".tmp");
-+
-+ if (tjob->error()) {
-+ qCWarning(LOG_ALPINEAPK) << "appstream_downloader: failed to download: " << tjob->url();
-+ qCWarning(LOG_ALPINEAPK) << tjob->errorString();
-+ // error cleanup - remove temp file
-+ QFile::remove(localCacheFileTmp);
-+ } else {
-+ // success - rename tmp file to real
-+ QFile::remove(localCacheFile); // just in case, or QFile::rename() will fail
-+ QFile::rename(localCacheFileTmp, localCacheFile);
-+ m_cacheWasUpdated = true;
-+ qCDebug(LOG_ALPINEAPK) << "appstream_downloader: saved: " << localCacheFile;
-+ }
-+
-+ tjob->deleteLater();
-+
-+ qCDebug(LOG_ALPINEAPK).nospace() << "appstream_downloader: " << localCacheFile << " request finished (" << m_jobs.size() << " left)";
-+
-+ if (m_jobs.isEmpty()) {
-+ qCDebug(LOG_ALPINEAPK) << "appstream_downloader: all downloads have finished!";
-+ Q_EMIT downloadFinished();
-+ }
-+}
-diff --git a/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h
-new file mode 100644
-index 000000000..1b3cc6e28
---- /dev/null
-+++ b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h
-@@ -0,0 +1,156 @@
-+/***************************************************************************
-+ * Copyright © 2020 Alexey Min <alexey.min@gmail.com> *
-+ * *
-+ * This program is free software; you can redistribute it and/or *
-+ * modify it under the terms of the GNU General Public License as *
-+ * published by the Free Software Foundation; either version 2 of *
-+ * the License or (at your option) version 3 or any later version *
-+ * accepted by the membership of KDE e.V. (or its successor approved *
-+ * by the membership of KDE e.V.), which shall act as a proxy *
-+ * defined in Section 14 of version 3 of the license. *
-+ * *
-+ * This program is distributed in the hope that it will be useful, *
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
-+ * GNU General Public License for more details. *
-+ * *
-+ * You should have received a copy of the GNU General Public License *
-+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
-+ ***************************************************************************/
-+
-+#ifndef AlpineAppstreamDataDownloader_H
-+#define AlpineAppstreamDataDownloader_H
-+
-+#include <QByteArray>
-+#include <QHash>
-+#include <QList>
-+#include <QObject>
-+#include <QString>
-+#include <QUrl>
-+
-+class KJob;
-+class KUiServerJobTracker;
-+namespace KIO
-+{
-+class Job;
-+class TransferJob;
-+}
-+
-+/**
-+ * @class AppstreamDataDownloader
-+ *
-+ * @details The job of this class is to download appstream data
-+ * gzipped XMLs from some web server.
-+ *
-+ * Some distros (for example, Alpine Linux) do not provide
-+ * appstream data as installable package, instead they host it
-+ * on the internet (at https://appstream.alpinelinux.org) and
-+ * software center app has to download them on its own.
-+ *
-+ * Those files are not very large (from few kilobytes to couple
-+ * of megabytes) but we still need them.
-+ *
-+ * URLs to download archives from are stored in JSON files in
-+ * /usr/share/libdiscover/external-appstream-urls/ directory
-+ * (QStandardPaths::GenericDataLocation/libdiscover/external-appstream-urls
-+ * from C++/Qt code, ${DATA_INSTALL_DIR}/libdiscover/external-appstream-urls
-+ * from cmake).
-+ *
-+ * JSON file format:
-+ * ---------------------
-+ * {
-+ * "urls": [
-+ * "https://url1",
-+ * "https://url2",
-+ * ...
-+ * ]
-+ * }
-+ * ---------------------
-+ * These JSON files, if needed, should be provided by the linux
-+ * distribution.
-+ *
-+ * This class can load any amount of those JSON files,
-+ * fetch URLs from them and download all files pointed by
-+ * those URLs to discover's cache directory:
-+ * "~/.cache/discover/external_appstream_data" (aka
-+ * QStandardPaths::CacheLocation). Use
-+ * getAppStreamCacheDir() to get this path.
-+ * If files are already present in cache and not outdated,
-+ * they are not downloaded again. Default cache expiration
-+ * time is 7 days and can be tweaked using
-+ * setCacheExpirePeriodSecs().
-+ */
-+class AppstreamDataDownloader: public QObject
-+{
-+ Q_OBJECT
-+public:
-+ explicit AppstreamDataDownloader(QObject *parent = nullptr);
-+
-+ /**
-+ * Use return value of this function to add extra metadata
-+ * directories to AppStream loader, in case of AppStreamQt:
-+ * AppStream::Pool::addMetadataLocation().
-+ * This method creates a cache dir if it does not exist.
-+ * @return directory where downloaded files are stored.
-+ */
-+ static QString appStreamCacheDir();
-+
-+ /**
-+ * Call this after receiving downloadFinished() signal to
-+ * test if there actually was something new downloaded.
-+ * @return true, if new files were actually downloaded, or
-+ * false if files already present in cache are up to date.
-+ */
-+ bool cacheWasUpdated() const { return m_cacheWasUpdated; }
-+
-+ /**
-+ * @return cache expire timeout in seconds
-+ */
-+ qint64 cacheExpirePeriodSecs() const
-+ {
-+ return m_cacheExpireSeconds;
-+ }
-+
-+ /**
-+ * Set cache expiration timeout.
-+ * @param secs - new cache expiration timeout, in seconds.
-+ */
-+ void setCacheExpirePeriodSecs(qint64 secs);
-+
-+public Q_SLOTS:
-+ /**
-+ * Start the asynchronous download job.
-+ * downloadFinished() signal will be emitted when everything is done.
-+ * start() may finish immediately if all cached files are
-+ * up to date and no downloads are needed.
-+ */
-+ void start();
-+
-+Q_SIGNALS:
-+ /**
-+ * This signal is emitted when download job is finished.
-+ * To check if there were actual downloads performed, call
-+ * cacheWasUpdated().
-+ */
-+ void downloadFinished();
-+
-+private:
-+ QString calcLocalFileSavePath(const QUrl &urlTodownload);
-+ void loadUrlsJson(const QString &path);
-+
-+private Q_SLOTS:
-+ void onJobData(KIO::Job *job, const QByteArray &data);
-+ void onJobResult(KJob *job);
-+
-+protected:
-+ qint64 m_cacheExpireSeconds = 7 * 24 * 3600;
-+ QStringList m_urls;
-+ QStringList m_urlsToDownload;
-+ QHash<QString, QString> m_urlPrefixes;
-+ bool m_cacheWasUpdated = false;
-+
-+ QList<KIO::TransferJob *> m_jobs;
-+ KUiServerJobTracker *m_jobTracker;
-+};
-+
-+#endif
-diff --git a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-index 0d657c6ab..08c679a01 100644
---- a/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-+++ b/libdiscover/backends/AlpineApkBackend/CMakeLists.txt
-@@ -16,6 +16,8 @@ set(alpineapkbackend_SRCS
- AlpineApkUpdater.h
- AlpineApkTransaction.cpp
- AlpineApkTransaction.h
-+ AppstreamDataDownloader.h
-+ AppstreamDataDownloader.cpp
- )
-
- ecm_qt_declare_logging_category(
---
-GitLab
-
-
-From d8a3d8dd7fea654421f9120e13e242d03e73240a Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Fri, 29 Jan 2021 12:17:48 +0300
-Subject: [PATCH 44/61] AlpineApkBackend: use AppstreamDataDownloader
-
-Download AppStream data from external URLs after
-loading resources initially. Reload AppStream
-metadata after download has finished.
-
-Refactor resource loading process into several
-subroutines for easier understanding and code sharing.
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 166 +++++++++++++-----
- .../AlpineApkBackend/AlpineApkBackend.h | 10 +-
- 2 files changed, 131 insertions(+), 45 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index 8ddcc8e9f..3641142eb 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -24,6 +24,7 @@
- #include "AlpineApkTransaction.h"
- #include "AlpineApkSourcesBackend.h"
- #include "AlpineApkUpdater.h"
-+#include "AppstreamDataDownloader.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
-
- #include "resources/SourcesModel.h"
-@@ -85,16 +86,19 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- SourcesModel::global()->addSourcesBackend(new AlpineApkSourcesBackend(this));
- }
-
--void AlpineApkBackend::loadResources()
-+// this fills in m_appStreamComponents
-+void AlpineApkBackend::loadAppStreamComponents()
- {
-- qCDebug(LOG_ALPINEAPK) << "backend: loading AppStream metadata...";
--
- AppStream::Pool *appStreamPool = new AppStream::Pool();
- appStreamPool->setFlags(AppStream::Pool::FlagReadCollection |
- AppStream::Pool::FlagReadMetainfo |
- AppStream::Pool::FlagReadDesktopFiles);
- appStreamPool->setCacheFlags(AppStream::Pool::CacheFlagUseUser |
- AppStream::Pool::CacheFlagUseSystem);
-+
-+ // hey hey! cool stuff
-+ appStreamPool->addMetadataLocation(AppstreamDataDownloader::appStreamCacheDir());
-+
- if (!appStreamPool->load()) {
- qCWarning(LOG_ALPINEAPK) << "backend: Failed to load appstream data:"
- << appStreamPool->lastError();
-@@ -103,36 +107,32 @@ void AlpineApkBackend::loadResources()
- qCDebug(LOG_ALPINEAPK) << "backend: loaded AppStream metadata OK:"
- << m_appStreamComponents.size() << "components.";
- // collect all categories present in appstream metadata
--// QSet<QString> collectedCategories;
--// for (const AppStream::Component &component : m_appStreamComponents) {
--// const QStringList cats = component.categories();
--// for (const QString &cat : cats) {
--// collectedCategories.insert(cat);
--// }
--// }
--// for (const QString &cat : collectedCategories) {
--// qCDebug(LOG_ALPINEAPK) << " collected category: " << cat;
--// m_collectedCategories << cat;
--// }
-+ // QSet<QString> collectedCategories;
-+ // for (const AppStream::Component &component : m_appStreamComponents) {
-+ // const QStringList cats = component.categories();
-+ // for (const QString &cat : cats) {
-+ // collectedCategories.insert(cat);
-+ // }
-+ // }
-+ // for (const QString &cat : collectedCategories) {
-+ // qCDebug(LOG_ALPINEAPK) << " collected category: " << cat;
-+ // m_collectedCategories << cat;
-+ // }
- }
- delete appStreamPool;
-- appStreamPool = nullptr;
--
-- qCDebug(LOG_ALPINEAPK) << "backend: populating resources...";
-- emit this->passiveMessage(i18n("Loading, please wait..."));
--
-- if (m_apkdb.open(QtApk::QTAPK_OPENF_READONLY)) {
-- m_availablePackages = m_apkdb.getAvailablePackages();
-- m_installedPackages = m_apkdb.getInstalledPackages();
-- m_apkdb.close();
-- }
-+}
-
-+// this uses m_appStreamComponents and m_availablePackages
-+// to fill in m_resourcesAppstreamData
-+void AlpineApkBackend::parseAppStreamMetadata()
-+{
- if (m_availablePackages.size() > 0) {
-- for (const QtApk::Package &pkg: m_availablePackages) {
-+
-+ for (const QtApk::Package &pkg: qAsConst(m_availablePackages)) {
-
- // try to find appstream data for this package
- AppStream::Component appstreamComponent;
-- for (const auto& appsC : m_appStreamComponents) {
-+ for (const auto& appsC : qAsConst(m_appStreamComponents)) {
- // find result which package name is exactly the one we want
- if (appsC.packageNames().contains(pkg.name)) {
- // workaround for kate (Kate Sessions is found first, but
-@@ -153,11 +153,6 @@ void AlpineApkBackend::loadResources()
- m_resourcesAppstreamData.insert(key, appstreamComponent);
- }
- }
--
-- qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
-- << "packages";
-- qCDebug(LOG_ALPINEAPK) << " installed" << m_installedPackages.size()
-- << "packages";
- }
-
- static AbstractResource::Type toDiscoverResourceType(const AppStream::Component &component)
-@@ -180,28 +175,81 @@ static AbstractResource::Type toDiscoverResourceType(const AppStream::Component
- return resType;
- }
-
--void AlpineApkBackend::onLoadResourcesFinished()
-+void AlpineApkBackend::fillResourcesAndApplyAppStreamData()
- {
-- qCDebug(LOG_ALPINEAPK) << "backend: appstream data loaded and sorted; fill in resources";
--
-+ // now the tricky part - we need to reapply appstream component metadata to each resource
- if (m_availablePackages.size() > 0) {
- for (const QtApk::Package &pkg: m_availablePackages) {
- const QString key = pkg.name.toLower();
-
-- AppStream::Component &appstreamComponent = m_resourcesAppstreamData[key];
-- const AbstractResource::Type resType = toDiscoverResourceType(appstreamComponent);
-+ AppStream::Component &appsComponent = m_resourcesAppstreamData[key];
-+ const AbstractResource::Type resType = toDiscoverResourceType(appsComponent);
-+
-+ AlpineApkResource *res = m_resources.value(key, nullptr);
-+ if (res == nullptr) {
-+ // during first run of this function during initial load
-+ // m_resources hash is empty, so we need to insert new items
-+ res = new AlpineApkResource(pkg, appsComponent, resType, this);
-+ res->setCategoryName(QStringLiteral("alpine_packages"));
-+ res->setOriginSource(QStringLiteral("apk"));
-+ res->setSection(QStringLiteral("dummy"));
-+ m_resources.insert(key, res);
-+ QObject::connect(res, &AlpineApkResource::stateChanged,
-+ this, &AlpineApkBackend::updatesCountChanged);
-+ } else {
-+ // this is not an initial run, just update existing resource
-+ res->setAppStreamData(appsComponent);
-+ }
-+ }
-+ }
-+}
-
-- AlpineApkResource *res = new AlpineApkResource(pkg, appstreamComponent, resType, this);
-- res->setCategoryName(QStringLiteral("alpine_packages"));
-- res->setOriginSource(QStringLiteral("apk"));
-- res->setSection(QStringLiteral("dummy"));
-+void AlpineApkBackend::reloadAppStreamMetadata()
-+{
-+ // mark us as "Loading..."
-+ m_fetching = true;
-+ emit fetchingChanged();
-
-- m_resources.insert(key, res);
-- QObject::connect(res, &AlpineApkResource::stateChanged,
-- this, &AlpineApkBackend::updatesCountChanged);
-- }
-+ loadAppStreamComponents();
-+ parseAppStreamMetadata();
-+ fillResourcesAndApplyAppStreamData();
-+
-+ // mark us as "done loading"
-+ m_fetching = false;
-+ emit fetchingChanged();
-+}
-+
-+// this function is executed in the background thread
-+void AlpineApkBackend::loadResources()
-+{
-+ Q_EMIT this->passiveMessage(i18n("Loading, please wait..."));
-+
-+ qCDebug(LOG_ALPINEAPK) << "backend: loading AppStream metadata...";
-+
-+ loadAppStreamComponents();
-+
-+ qCDebug(LOG_ALPINEAPK) << "backend: populating resources...";
-+
-+ if (m_apkdb.open(QtApk::QTAPK_OPENF_READONLY)) {
-+ m_availablePackages = m_apkdb.getAvailablePackages();
-+ m_installedPackages = m_apkdb.getInstalledPackages();
-+ m_apkdb.close();
- }
-
-+ parseAppStreamMetadata();
-+
-+ qCDebug(LOG_ALPINEAPK) << " available" << m_availablePackages.size()
-+ << "packages";
-+ qCDebug(LOG_ALPINEAPK) << " installed" << m_installedPackages.size()
-+ << "packages";
-+}
-+
-+void AlpineApkBackend::onLoadResourcesFinished()
-+{
-+ qCDebug(LOG_ALPINEAPK) << "backend: appstream data loaded and sorted; fill in resources";
-+
-+ fillResourcesAndApplyAppStreamData();
-+
- // update "installed/not installed" state
- if (m_installedPackages.size() > 0) {
- for (const QtApk::Package &pkg: m_installedPackages) {
-@@ -221,6 +269,36 @@ void AlpineApkBackend::onLoadResourcesFinished()
-
- // schedule check for updates 1 sec after we've loaded all resources
- QTimer::singleShot(1000, this, &AlpineApkBackend::checkForUpdates);
-+
-+ // AppStream appdata downloader can download updated metadata files
-+ // in a background thread. When potential download is finished,
-+ // appstream data will be reloaded.
-+ m_appstreamDownloader = new AppstreamDataDownloader(nullptr);
-+ QObject::connect(m_appstreamDownloader, &AppstreamDataDownloader::downloadFinished,
-+ this, &AlpineApkBackend::onAppstreamDataDownloaded, Qt::QueuedConnection);
-+ m_appstreamDownloader->start();
-+}
-+
-+void AlpineApkBackend::onAppstreamDataDownloaded()
-+{
-+ if (m_appstreamDownloader) {
-+ if (m_appstreamDownloader->cacheWasUpdated()) {
-+ // it means we need to reload previously loaded appstream metadata
-+ // m_fetching is true if loadResources() is still executing
-+ // in a background thread
-+ if (!m_fetching) {
-+ qCDebug(LOG_ALPINEAPK) << "AppStream metadata was updated; re-applying it to all resources";
-+ reloadAppStreamMetadata();
-+ } else {
-+ qCWarning(LOG_ALPINEAPK) << "AppStream metadata was updated, but cannot apply it: still fetching";
-+ // it should not really happen, but if it happens,
-+ // then downloaded metadata will be used on the next
-+ // discover launch anyway.
-+ }
-+ }
-+ delete m_appstreamDownloader;
-+ m_appstreamDownloader = nullptr;
-+ }
- }
-
- QVector<Category *> AlpineApkBackend::category() const
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-index 2ec8b00b6..07b6b7be8 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.h
-@@ -22,8 +22,9 @@
- #define AlpineApkBackend_H
-
- #include <resources/AbstractResourcesBackend.h>
--#include <QVariantList>
-+
- #include <QFutureWatcher>
-+#include <QVariantList>
-
- #include <QtApk>
-
-@@ -32,6 +33,7 @@
- class AlpineApkReviewsBackend;
- class AlpineApkUpdater;
- class AlpineApkResource;
-+class AppstreamDataDownloader;
- class KJob;
- class QTimer;
-
-@@ -66,8 +68,13 @@ public Q_SLOTS:
-
- private Q_SLOTS:
- void finishCheckForUpdates();
-+ void loadAppStreamComponents();
-+ void parseAppStreamMetadata();
-+ void reloadAppStreamMetadata();
-+ void fillResourcesAndApplyAppStreamData();
- void loadResources();
- void onLoadResourcesFinished();
-+ void onAppstreamDataDownloaded();
-
- public:
- QtApk::Database *apkdb() { return &m_apkdb; }
-@@ -86,6 +93,7 @@ private:
- QList<AppStream::Component> m_appStreamComponents;
- // QVector<QString> m_collectedCategories;
- QFutureWatcher<void> m_voidFutureWatcher;
-+ AppstreamDataDownloader *m_appstreamDownloader;
- };
-
- #endif // AlpineApkBackend_H
---
-GitLab
-
-
-From 2bbdf1dfdd2af36287afb228d5acf6947ef8c3e2 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 1 Feb 2021 14:24:25 +0300
-Subject: [PATCH 45/61] AlpineApkUpdater: fix progress reporting for system
- upgrade
-
-Connect to progress updates from helper and implement
-AlpineApkUpdater::progress() getter function.
----
- .../AlpineApkBackend/AlpineApkUpdater.cpp | 23 +++++++++++++++----
- .../AlpineApkBackend/AlpineApkUpdater.h | 3 ++-
- 2 files changed, 21 insertions(+), 5 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 0bbbce1c0..30399369b 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -91,8 +91,7 @@ bool AlpineApkUpdater::hasUpdates() const
-
- qreal AlpineApkUpdater::progress() const
- {
-- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
-- return 0.0;
-+ return m_upgradeProgress;
- }
-
- void AlpineApkUpdater::removeResources(const QList<AbstractResource *> &apps)
-@@ -171,10 +170,15 @@ void AlpineApkUpdater::start()
- // run upgrade with elevated privileges
- KAuth::ExecuteJob *reply = ActionFactory::createUpgradeAction();
- if (!reply) return;
-+
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpgradeHelperReply);
-+ // qOverload is needed because of conflict with getter named percent()
-+ QObject::connect(reply, QOverload<KJob *, unsigned long>::of(&KAuth::ExecuteJob::percent),
-+ this, &AlpineApkUpdater::handleKAuthUpgradeHelperProgress);
-
- m_progressing = true;
-+ m_upgradeProgress = 0.0;
- Q_EMIT progressingChanged(m_progressing);
-
- reply->start();
-@@ -239,6 +243,17 @@ void AlpineApkUpdater::handleKAuthUpdateHelperProgress(KJob *job, unsigned long
- Q_EMIT progressChanged(static_cast<qreal>(percent));
- }
-
-+void AlpineApkUpdater::handleKAuthUpgradeHelperProgress(KJob *job, unsigned long percent)
-+{
-+ Q_UNUSED(job)
-+ qCDebug(LOG_ALPINEAPK) << " upgrade progress: " << percent;
-+ qreal newProgress = static_cast<qreal>(percent);
-+ if (newProgress != m_upgradeProgress) {
-+ m_upgradeProgress = newProgress;
-+ Q_EMIT progressChanged(m_upgradeProgress);
-+ }
-+}
-+
- void AlpineApkUpdater::handleKAuthUpgradeHelperReply(KJob *job)
- {
- KAuth::ExecuteJob *reply = static_cast<KAuth::ExecuteJob *>(job);
-@@ -258,8 +273,8 @@ void AlpineApkUpdater::handleKAuthUpgradeHelperReply(KJob *job)
- handleKAuthHelperError(reply, replyData);
- }
-
-- // we are not in the state "Fetching updates" now, update UI
-- Q_EMIT checkForUpdatesFinished();
-+ m_progressing = false;
-+ Q_EMIT progressingChanged(m_progressing);
- }
-
- void AlpineApkUpdater::handleKAuthHelperError(
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-index 0ee2fcb47..6ca3ce073 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.h
-@@ -159,6 +159,7 @@ public Q_SLOTS:
- void handleKAuthUpdateHelperProgress(KJob *job, unsigned long percent);
- // upgrade
- void handleKAuthUpgradeHelperReply(KJob *job);
-+ void handleKAuthUpgradeHelperProgress(KJob *job, unsigned long percent);
-
- //void transactionRemoved(Transaction* t);
- //void cleanup();
-@@ -186,7 +187,7 @@ private:
- // QSet<AbstractResource*> m_upgradeable;
- // QSet<AbstractResource*> m_pendingResources;
- bool m_progressing = false;
--// qreal m_progress;
-+ qreal m_upgradeProgress = 0.0;
- // QDateTime m_lastUpdate;
- // QTimer m_timer;
- // bool m_canCancel = false;
---
-GitLab
-
-
-From deb2782619a7359a03c606409070a4f571f07514 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Mon, 1 Feb 2021 14:26:29 +0300
-Subject: [PATCH 46/61] AlpineApkUpdater: remove useless debug prints and
- comments
-
----
- .../backends/AlpineApkBackend/AlpineApkUpdater.cpp | 8 --------
- 1 file changed, 8 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 30399369b..14df959cd 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -40,8 +40,6 @@ AlpineApkUpdater::AlpineApkUpdater(AbstractResourcesBackend *parent)
-
- void AlpineApkUpdater::prepare()
- {
-- qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
--
- QtApk::Database *db = m_backend->apkdb();
-
- if (db->isOpen()) {
-@@ -85,7 +83,6 @@ void AlpineApkUpdater::prepare()
-
- bool AlpineApkUpdater::hasUpdates() const
- {
-- // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
- return (m_updatesCount > 0);
- }
-
-@@ -96,22 +93,18 @@ qreal AlpineApkUpdater::progress() const
-
- void AlpineApkUpdater::removeResources(const QList<AbstractResource *> &apps)
- {
-- // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
- const QSet<AbstractResource *> checkSet = kToSet(apps);
- m_markedToUpdate -= checkSet;
- }
-
- void AlpineApkUpdater::addResources(const QList<AbstractResource *> &apps)
- {
-- //Q_UNUSED(apps)
-- //qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
- const QSet<AbstractResource *> checkSet = kToSet(apps);
- m_markedToUpdate += checkSet;
- }
-
- QList<AbstractResource *> AlpineApkUpdater::toUpdate() const
- {
-- // qCDebug(LOG_ALPINEAPK) << Q_FUNC_INFO;
- return m_allUpdateable.values();
- }
-
-@@ -191,7 +184,6 @@ void AlpineApkUpdater::proceed()
-
- int AlpineApkUpdater::updatesCount()
- {
-- // qDebug(LOG_ALPINEAPK) << Q_FUNC_INFO << m_updatesCount;
- return m_updatesCount;
- }
-
---
-GitLab
-
-
-From 68ccfb5f1f9eaa67a9164e0dbcee8920de7369a0 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Wed, 24 Feb 2021 14:51:27 +0300
-Subject: [PATCH 47/61] AlpineApkSourcesBackend: port away from QAction
-
-follow-up to 4bf3f59adb82e2ef38df98073ee39e6d20e56921
-fixed after b5e913d2231a3d899b902a015bfa6be04524d8a3
----
- .../AlpineApkBackend/AlpineApkSourcesBackend.cpp | 13 ++++++-------
- .../AlpineApkBackend/AlpineApkSourcesBackend.h | 9 ++++++---
- 2 files changed, 12 insertions(+), 10 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-index a126483a9..c10ebdcb5 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-@@ -18,6 +18,8 @@
- * along with this program. If not, see <http://www.gnu.org/licenses/>. *
- ***************************************************************************/
-
-+#include "resources/DiscoverAction.h"
-+
- #include "AlpineApkSourcesBackend.h"
- #include "AlpineApkAuthActionFactory.h"
- #include "alpineapk_backend_logging.h" // generated by ECM
-@@ -36,16 +38,13 @@
- AlpineApkSourcesBackend::AlpineApkSourcesBackend(AbstractResourcesBackend *parent)
- : AbstractSourcesBackend(parent)
- , m_sourcesModel(new QStandardItemModel(this))
-- , m_refreshAction(new QAction(QIcon::fromTheme(QStringLiteral("view-refresh")),
-- QStringLiteral("Reload"), this))
-- , m_saveAction(new QAction(QIcon::fromTheme(QStringLiteral("document-save")),
-- QStringLiteral("Save"), this))
-- // ^^ unfortunately QML side ignores icons for custom actions
-+ , m_refreshAction(new DiscoverAction(QStringLiteral("view-refresh"), QStringLiteral("Reload"), this))
-+ , m_saveAction(new DiscoverAction(QStringLiteral("document-save"), QStringLiteral("Save"), this))
- {
- loadSources();
-- QObject::connect(m_refreshAction, &QAction::triggered,
-+ QObject::connect(m_refreshAction, &DiscoverAction::triggered,
- this, &AlpineApkSourcesBackend::loadSources);
-- QObject::connect(m_saveAction, &QAction::triggered,
-+ QObject::connect(m_saveAction, &DiscoverAction::triggered,
- this, &AlpineApkSourcesBackend::saveSources);
- // track enabling/disabling repo source
- QObject::connect(m_sourcesModel, &QStandardItemModel::itemChanged,
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-index eacda22dc..c655d3d16 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.h
-@@ -21,11 +21,14 @@
- #ifndef ALPINEAPKSOURCESBACKEND_H
- #define ALPINEAPKSOURCESBACKEND_H
-
--#include <resources/AbstractSourcesBackend.h>
-+#include "resources/AbstractSourcesBackend.h"
-+
- #include <QStandardItemModel>
-
- #include <QtApkRepository.h>
-
-+class DiscoverAction;
-+
- class AlpineApkSourcesBackend : public AbstractSourcesBackend
- {
- public:
-@@ -49,8 +52,8 @@ private:
- void onItemChanged(QStandardItem* item);
-
- QStandardItemModel *m_sourcesModel = nullptr;
-- QAction *m_refreshAction = nullptr;
-- QAction *m_saveAction = nullptr;
-+ DiscoverAction *m_refreshAction = nullptr;
-+ DiscoverAction *m_saveAction = nullptr;
- QVector<QtApk::Repository> m_repos;
- };
-
---
-GitLab
-
-
-From e8d189eb9f88edbc809aa92101b4f3824e7e467d Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Thu, 25 Feb 2021 07:39:50 +0300
-Subject: [PATCH 48/61] AlpineApkBackend: Use shorter backend name: it's shown
- in Install button
-
-See https://invent.kde.org/plasma/discover/-/commit/
-ce89d530de3414f25bb4b48a1933a52bf37be922
----
- libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index 3641142eb..88b37cf0e 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -485,7 +485,7 @@ void AlpineApkBackend::finishCheckForUpdates()
-
- QString AlpineApkBackend::displayName() const
- {
-- return i18nc("Backend plugin display name", "Alpine APK backend");
-+ return i18nc("Backend plugin display name", "Alpine APK");
- }
-
- bool AlpineApkBackend::hasApplications() const
---
-GitLab
-
-
-From 851df77c083a4d129439a849fb553f1297748133 Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Thu, 25 Feb 2021 07:40:41 +0300
-Subject: [PATCH 49/61] AlpineApkResource: use Alpine Linux logo as backend
- icon
-
----
- libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index 8f493a490..459347061 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -325,7 +325,7 @@ QString AlpineApkResource::author() const
-
- QString AlpineApkResource::sourceIcon() const
- {
-- return QStringLiteral("player-time");
-+ return QStringLiteral("alpine-linux-logo-icon");
- }
-
- QDate AlpineApkResource::releaseDate() const
---
-GitLab
-
-
-From 1d00eac0bc5c1f13b797cd85518d356625570ae3 Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Sat, 15 May 2021 05:52:54 +0300
-Subject: [PATCH 50/61] KAuth helper: don't ask for password
-
-Allow everyone to install/remove/upgrade packages without asking
-for password. Polkit-kde auth dialog is not mobile friendly.
-
-Fixes https://gitlab.com/postmarketOS/pmaports/-/issues/1036
----
- .../org.kde.discover.alpineapkbackend.actions | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-index c9bb5f9f2..f9db78dbb 100644
---- a/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-+++ b/libdiscover/backends/AlpineApkBackend/org.kde.discover.alpineapkbackend.actions
-@@ -1,5 +1,5 @@
- [org.kde.discover.alpineapkbackend.pkgmgmt]
- Name=Package management
--Description=Install or remove packages, upgrade system
--Policy=auth_admin
-+Description=Install/remove/upgrade packages
-+Policy=yes
- Persistence=session
---
-GitLab
-
-
-From 0247a5d113569286a7796fd799e6a253e283330b Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Sun, 20 Jun 2021 22:58:29 +0300
-Subject: [PATCH 51/61] HACK: AlpineApkResource: Workaround broken Alpine
- metadata
-
-thumbnails from Alpine metadata are unusable
----
- .../AlpineApkBackend/AlpineApkResource.cpp | 16 +++++++++++++++-
- 1 file changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index 459347061..d7ac49012 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -220,7 +220,21 @@ void AlpineApkResource::fetchChangelog()
- void AlpineApkResource::fetchScreenshots()
- {
- if (hasAppStreamData()) {
-- const QPair<QList<QUrl>, QList<QUrl> > sc = AppStreamUtils::fetchScreenshots(m_appsC);
-+ /*const*/ QPair<QList<QUrl>, QList<QUrl>> sc = AppStreamUtils::fetchScreenshots(m_appsC);
-+ if (sc.first.size() > 0) {
-+ const QUrl &url = sc.first.first();
-+ if (url.isRelative()) {
-+ // This is a hack to fix broken Alpine Linux appstream
-+ // metadata: somehow generated thumbnails URLs are relative
-+ // and always fail to load (not present in metadata at all)
-+ // We work around this by using full url, which is veyr not
-+ // good - they're fetched by http://...
-+ // It would be great if thumbnails were hosted locally.
-+ if (sc.second.size() > 0) {
-+ sc.first = sc.second;
-+ }
-+ }
-+ }
- Q_EMIT screenshotsFetched(sc.first, sc.second);
- }
- }
---
-GitLab
-
-
-From 907dc0559d362c9948a31a27acfd4f35328a9c7a Mon Sep 17 00:00:00 2001
-From: Alexey Min <alexey.min@gmail.com>
-Date: Sat, 17 Jul 2021 14:10:08 +0300
-Subject: [PATCH 52/61] AlpineApk{Updater,Transaction}: Fix deprecation warn
- with KF5>=5.80
-
-Use percentChanged() signal instead of ambiguous overloaded percent()
-signal.
----
- .../AlpineApkBackend/AlpineApkTransaction.cpp | 5 +++++
- .../backends/AlpineApkBackend/AlpineApkUpdater.cpp | 11 +++++++++++
- 2 files changed, 16 insertions(+)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-index 26bf1bd0d..0f346e843 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-@@ -29,6 +29,7 @@
- #include <QTimer>
-
- // KF5
-+#include <kcoreaddons_version.h>
- #include <KAuthExecuteJob>
- #include <KLocalizedString>
-
-@@ -95,7 +96,11 @@ void AlpineApkTransaction::startTransaction()
- });
-
- // get progress reports for this job
-+#if KCOREADDONS_VERSION < QT_VERSION_CHECK(5,80,0)
- QObject::connect(reply, QOverload<KJob*, unsigned long>::of(&KAuth::ExecuteJob::percent), this,
-+#else
-+ QObject::connect(reply, &KAuth::ExecuteJob::percentChanged, this,
-+#endif
- [this](KJob *job, unsigned long percent) {
- Q_UNUSED(job)
- if (percent >= 40 && role() == InstallRole) {
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 14df959cd..4b09c7d05 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -25,6 +25,7 @@
- #include "alpineapk_backend_logging.h"
- #include "utils.h"
-
-+#include <kcoreaddons_version.h>
- #include <KAuthExecuteJob>
- #include <KLocalizedString>
-
-@@ -166,9 +167,14 @@ void AlpineApkUpdater::start()
-
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpgradeHelperReply);
-+#if KCOREADDONS_VERSION < QT_VERSION_CHECK(5,80,0)
- // qOverload is needed because of conflict with getter named percent()
- QObject::connect(reply, QOverload<KJob *, unsigned long>::of(&KAuth::ExecuteJob::percent),
- this, &AlpineApkUpdater::handleKAuthUpgradeHelperProgress);
-+#else
-+ QObject::connect(reply, &KAuth::ExecuteJob::percentChanged,
-+ this, &AlpineApkUpdater::handleKAuthUpgradeHelperProgress);
-+#endif
-
- m_progressing = true;
- m_upgradeProgress = 0.0;
-@@ -197,9 +203,14 @@ void AlpineApkUpdater::startCheckForUpdates()
- if (!reply) return;
- QObject::connect(reply, &KAuth::ExecuteJob::result,
- this, &AlpineApkUpdater::handleKAuthUpdateHelperReply);
-+#if KCOREADDONS_VERSION < QT_VERSION_CHECK(5,80,0)
- // qOverload is needed because of conflict with getter named percent()
- QObject::connect(reply, QOverload<KJob *, unsigned long>::of(&KAuth::ExecuteJob::percent),
- this, &AlpineApkUpdater::handleKAuthUpdateHelperProgress);
-+#else
-+ QObject::connect(reply, &KAuth::ExecuteJob::percentChanged,
-+ this, &AlpineApkUpdater::handleKAuthUpdateHelperProgress);
-+#endif
-
- m_progressing = true;
- Q_EMIT progressingChanged(m_progressing);
---
-GitLab
-
-
-From 9200c2c8c7eedfedd02fee5ad550a7a23a70cec3 Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Fri, 21 Jan 2022 07:33:33 +0300
-Subject: [PATCH 53/61] AppstreamDataDownloader: support new Alpine metadata
- file names
-
-This is needed to avoid name clash caused by new file names.
-
-Also remove old-format metadata files, to avoid conflicts
-between metadata in new files and metadata in possibly
-existing old files.
----
- .../AppstreamDataDownloader.cpp | 91 ++++++++++++++-----
- .../AppstreamDataDownloader.h | 6 +-
- 2 files changed, 72 insertions(+), 25 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp
-index e791b2e02..27c2ad679 100644
---- a/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.cpp
-@@ -103,13 +103,48 @@ QString AppstreamDataDownloader::calcLocalFileSavePath(const QUrl &urlToDownload
- {
- // we are adding a prefix here to local file name to avoid possible
- // file name clashes with files from other JSONs
-+ // urlToDownload looks like:
-+ // "https://appstream.alpinelinux.org/data/edge/main/Components-main-aarch64.xml.gz"
-+ // "https://appstream.alpinelinux.org/data/edge/community/Components-community-aarch64.xml.gz"
-+ // future update will change them to this form:
-+ // "https://appstream.alpinelinux.org/data/edge/main/Components-aarch64.xml.gz"
-+ // "https://appstream.alpinelinux.org/data/edge/community/Components-aarch64.xml.gz"
-+ // so, file names will clash. We also need to have full URL to affect local file name
-+ // to avoid name clashes.
- const QString urlPrefix = m_urlPrefixes.value(urlToDownload.toString(), QString());
-- const QFileInfo urlInfo(urlToDownload.path());
-- const QString localCacheFile = AppstreamDataDownloader::appStreamCacheDir() + QDir::separator() + urlPrefix + QLatin1Char('_') + urlInfo.fileName();
-- // aka "~/.cache/discover/external_appstream_data/urlPrefix_fileName.xml.gz"
-+ const QString urlPathHash = urlToDownload.path().replace(QLatin1Char('/'), QLatin1Char('_'));
-+ const QString localCacheFile = AppstreamDataDownloader::appStreamCacheDir() + QDir::separator() + urlPrefix + QLatin1Char('_') + urlPathHash;
-+
-+ // new "~/.cache/discover/external_appstream_data/alpine-appstream-data__data_edge_main_Components-aarch64.xml.gz"
-+
- return localCacheFile;
- }
-
-+QString AppstreamDataDownloader::calcLocalFileSavePathOld(const QUrl &urlToDownload)
-+{
-+ // Calculate what file name was there for old format.
-+ // We keep a list of "old" file names so we can delete them.
-+ // "~/.cache/discover/external_appstream_data/alpine-appstream-data_Components-main-aarch64.xml.gz"
-+ // ^ ^/| ^ ^
-+ // | appstream cache dir -------------------|/|--- urlPrefix -----|_|-- file name
-+ const QString urlPrefix = m_urlPrefixes.value(urlToDownload.toString(), QString());
-+ const QString urlFileName = QFileInfo(urlToDownload.path()).fileName();
-+ const QString oldFormatFileName = AppstreamDataDownloader::appStreamCacheDir() + QDir::separator() + urlPrefix + QLatin1Char('_') + urlFileName;
-+ return oldFormatFileName;
-+}
-+
-+void AppstreamDataDownloader::cleanupOldCachedFiles()
-+{
-+ if (m_oldFormatFileNames.isEmpty()) {
-+ return;
-+ }
-+ qCDebug(LOG_ALPINEAPK) << "appstream_downloader: removing old files:";
-+ for (const QString &oldFn : m_oldFormatFileNames) {
-+ bool ok = QFile::remove(oldFn);
-+ qCDebug(LOG_ALPINEAPK) << " " << oldFn << (ok ? "OK" : "Fail");
-+ }
-+}
-+
- void AppstreamDataDownloader::start()
- {
- m_urls.clear();
-@@ -138,7 +173,10 @@ void AppstreamDataDownloader::start()
- appStreamCacheDir(); // can create a cache dir if not exists
-
- const QDateTime dtNow = QDateTime::currentDateTime();
-+
- m_urlsToDownload.clear();
-+ m_oldFormatFileNames.clear();
-+
- for (const QString &url : m_urls) {
- const QUrl urlToDownload(url, QUrl::TolerantMode);
- const QString localCacheFile = calcLocalFileSavePath(urlToDownload);
-@@ -156,35 +194,39 @@ void AppstreamDataDownloader::start()
- qCDebug(LOG_ALPINEAPK) << " appstream metadata file: " << localFi.fileName()
- << " does not exist, queued for downloading";
- }
-- }
-
-- if (!m_urlsToDownload.isEmpty()) {
-- // some files are outdated; download is needed
-- qCDebug(LOG_ALPINEAPK) << "appstream_downloader: We will need to download "
-- << m_urlsToDownload.size() << " file(s)";
--
-- const QString discoverVersion(QStringLiteral("plasma-discover %1").arg(DiscoverVersion::version));
--
-- m_jobs.clear();
-- for (const QString &sUrl : qAsConst(m_urlsToDownload)) {
-- const QUrl url(sUrl, QUrl::TolerantMode);
-- KIO::TransferJob *job = KIO::get(url, KIO::LoadType::Reload, KIO::JobFlag::HideProgressInfo);
-- job->addMetaData(QLatin1String("UserAgent"), discoverVersion);
--
-- m_jobTracker->registerJob(job);
--
-- QObject::connect(job, &KJob::result, this, &AppstreamDataDownloader::onJobResult);
-- QObject::connect(job, &KIO::TransferJob::data, this, &AppstreamDataDownloader::onJobData);
-+ // create a set of possible cached files with old name format
-+ const QString localCacheFileOld = calcLocalFileSavePathOld(urlToDownload);
-+ m_oldFormatFileNames.insert(localCacheFileOld);
-+ }
-
-- m_jobs.push_back(job);
-- }
-- } else {
-+ if (m_urlsToDownload.isEmpty()) {
- // no need to download anything
- qCDebug(LOG_ALPINEAPK) << "appstream_downloader: All appstream data files "
- "are up to date, not downloading anything";
-+ cleanupOldCachedFiles();
- Q_EMIT downloadFinished();
- return;
- }
-+
-+ // If we're here, some files are outdated; download is needed
-+ qCDebug(LOG_ALPINEAPK) << "appstream_downloader: We will need to download " << m_urlsToDownload.size() << " file(s)";
-+
-+ const QString discoverVersion(QStringLiteral("plasma-discover %1").arg(DiscoverVersion::version));
-+
-+ m_jobs.clear();
-+ for (const QString &sUrl : qAsConst(m_urlsToDownload)) {
-+ const QUrl url(sUrl, QUrl::TolerantMode);
-+ KIO::TransferJob *job = KIO::get(url, KIO::LoadType::Reload, KIO::JobFlag::HideProgressInfo);
-+ job->addMetaData(QLatin1String("UserAgent"), discoverVersion);
-+
-+ m_jobTracker->registerJob(job);
-+
-+ QObject::connect(job, &KJob::result, this, &AppstreamDataDownloader::onJobResult);
-+ QObject::connect(job, &KIO::TransferJob::data, this, &AppstreamDataDownloader::onJobData);
-+
-+ m_jobs.push_back(job);
-+ }
- }
-
- void AppstreamDataDownloader::onJobData(KIO::Job *job, const QByteArray &data)
-@@ -232,6 +274,7 @@ void AppstreamDataDownloader::onJobResult(KJob *job)
-
- if (m_jobs.isEmpty()) {
- qCDebug(LOG_ALPINEAPK) << "appstream_downloader: all downloads have finished!";
-+ cleanupOldCachedFiles();
- Q_EMIT downloadFinished();
- }
- }
-diff --git a/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h
-index 1b3cc6e28..390f4f6e2 100644
---- a/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h
-+++ b/libdiscover/backends/AlpineApkBackend/AppstreamDataDownloader.h
-@@ -25,6 +25,7 @@
- #include <QHash>
- #include <QList>
- #include <QObject>
-+#include <QSet>
- #include <QString>
- #include <QUrl>
-
-@@ -135,8 +136,10 @@ Q_SIGNALS:
- void downloadFinished();
-
- private:
-- QString calcLocalFileSavePath(const QUrl &urlTodownload);
-+ QString calcLocalFileSavePath(const QUrl &urlToDownload);
-+ QString calcLocalFileSavePathOld(const QUrl &urlToDownload);
- void loadUrlsJson(const QString &path);
-+ void cleanupOldCachedFiles();
-
- private Q_SLOTS:
- void onJobData(KIO::Job *job, const QByteArray &data);
-@@ -146,6 +149,7 @@ protected:
- qint64 m_cacheExpireSeconds = 7 * 24 * 3600;
- QStringList m_urls;
- QStringList m_urlsToDownload;
-+ QSet<QString> m_oldFormatFileNames;
- QHash<QString, QString> m_urlPrefixes;
- bool m_cacheWasUpdated = false;
-
---
-GitLab
-
-
-From 8afe048aadf9c95c7b5b66d2d3523113a824c516 Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Fri, 21 Jan 2022 07:43:23 +0300
-Subject: [PATCH 54/61] Revert "HACK: AlpineApkResource: Workaround broken
- Alpine metadata"
-
-This reverts commit e0a968f536bcc993cd6cf81c00a99f98fd1474b0.
-
-I have a hope that this is no longer needed with new metadata.
----
- .../AlpineApkBackend/AlpineApkResource.cpp | 16 +---------------
- 1 file changed, 1 insertion(+), 15 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index d7ac49012..459347061 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -220,21 +220,7 @@ void AlpineApkResource::fetchChangelog()
- void AlpineApkResource::fetchScreenshots()
- {
- if (hasAppStreamData()) {
-- /*const*/ QPair<QList<QUrl>, QList<QUrl>> sc = AppStreamUtils::fetchScreenshots(m_appsC);
-- if (sc.first.size() > 0) {
-- const QUrl &url = sc.first.first();
-- if (url.isRelative()) {
-- // This is a hack to fix broken Alpine Linux appstream
-- // metadata: somehow generated thumbnails URLs are relative
-- // and always fail to load (not present in metadata at all)
-- // We work around this by using full url, which is veyr not
-- // good - they're fetched by http://...
-- // It would be great if thumbnails were hosted locally.
-- if (sc.second.size() > 0) {
-- sc.first = sc.second;
-- }
-- }
-- }
-+ const QPair<QList<QUrl>, QList<QUrl> > sc = AppStreamUtils::fetchScreenshots(m_appsC);
- Q_EMIT screenshotsFetched(sc.first, sc.second);
- }
- }
---
-GitLab
-
-
-From f74a71991de831772f11c7b9fb1030d2ebba461b Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Tue, 8 Feb 2022 21:41:05 +0300
-Subject: [PATCH 55/61] Follow upstream changes to quit64 as size
-
-follow-up to a1cf31faf1a8aeebf2786715590cf3bb8a5cd472
----
- libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp | 4 ++--
- libdiscover/backends/AlpineApkBackend/AlpineApkResource.h | 2 +-
- 2 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index 459347061..2c981ca90 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -72,9 +72,9 @@ QString AlpineApkResource::comment()
- return m_pkg.description;
- }
-
--int AlpineApkResource::size()
-+quint64 AlpineApkResource::size()
- {
-- return static_cast<int>(m_pkg.size);
-+ return m_pkg.size;
- }
-
- QUrl AlpineApkResource::homepage()
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-index 5304a8773..fec02a994 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.h
-@@ -44,7 +44,7 @@ public:
- QString availableVersion() const override;
- QString installedVersion() const override;
- QJsonArray licenses() override;
-- int size() override;
-+ quint64 size() override;
- QUrl homepage() override;
- QUrl helpURL() override;
- QUrl bugURL() override;
---
-GitLab
-
-
-From 45a9f9a6b22eb0838ebdd5653f9a599c16d54fdc Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Sat, 16 Apr 2022 08:42:09 +0300
-Subject: [PATCH 56/61] AlpineApkBackend: compatibility with AppStreamQt 0.15
- or later
-
-use newer API and enum values
----
- .../backends/AlpineApkBackend/AlpineApkBackend.cpp | 11 +++++++++--
- 1 file changed, 9 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index 88b37cf0e..f53947324 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -34,6 +34,7 @@
- #include <KLocalizedString>
-
- #include <AppStreamQt/pool.h>
-+#include <AppStreamQt/version.h>
-
- #include <QAction>
- #include <QtConcurrentRun>
-@@ -90,14 +91,20 @@ AlpineApkBackend::AlpineApkBackend(QObject *parent)
- void AlpineApkBackend::loadAppStreamComponents()
- {
- AppStream::Pool *appStreamPool = new AppStream::Pool();
-+#if ASQ_CHECK_VERSION(0, 15, 0)
-+ // use newer API and flags available only since 0.15.0
-+ appStreamPool->setFlags(AppStream::Pool::FlagLoadOsCollection | AppStream::Pool::FlagLoadOsMetainfo | AppStream::Pool::FlagLoadOsDesktopFiles);
-+
-+ // AS_FORMAT_STYLE_COLLECTION - Parse AppStream metadata collections (shipped by software distributors)
-+ appStreamPool->addExtraDataLocation(AppstreamDataDownloader::appStreamCacheDir(), AppStream::Metadata::FormatStyleCollection);
-+#else
- appStreamPool->setFlags(AppStream::Pool::FlagReadCollection |
- AppStream::Pool::FlagReadMetainfo |
- AppStream::Pool::FlagReadDesktopFiles);
- appStreamPool->setCacheFlags(AppStream::Pool::CacheFlagUseUser |
- AppStream::Pool::CacheFlagUseSystem);
--
-- // hey hey! cool stuff
- appStreamPool->addMetadataLocation(AppstreamDataDownloader::appStreamCacheDir());
-+#endif
-
- if (!appStreamPool->load()) {
- qCWarning(LOG_ALPINEAPK) << "backend: Failed to load appstream data:"
---
-GitLab
-
-
-From edcf23a379cf8cd64f417647b85b64917688bfa4 Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Sun, 5 Jun 2022 22:04:17 +0300
-Subject: [PATCH 57/61] Switch to new-style KAuth headers (KF 5.92
- compatibility)
-
-KAuthAction -> KAuth/Action, etc
----
- .../backends/AlpineApkBackend/AlpineApkAuthActionFactory.h | 6 +++---
- .../backends/AlpineApkBackend/AlpineApkAuthHelper.cpp | 2 +-
- libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h | 3 ++-
- .../backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp | 2 +-
- .../backends/AlpineApkBackend/AlpineApkTransaction.cpp | 4 ++--
- libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp | 4 ++--
- 6 files changed, 11 insertions(+), 10 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h
-index ff5667f85..b43ca7e24 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthActionFactory.h
-@@ -24,9 +24,9 @@
- #include <QString>
- #include <QVariant>
-
--#include <KAuthAction>
--#include <KAuthActionReply>
--#include <KAuthExecuteJob>
-+#include <KAuth/Action>
-+#include <KAuth/ActionReply>
-+#include <KAuth/ExecuteJob>
-
- namespace ActionFactory {
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-index 97affc013..14d559ba5 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.cpp
-@@ -25,7 +25,7 @@
- #include <QScopedPointer>
- #include <QFile>
-
--#include <KAuthHelperSupport>
-+#include <KAuth/HelperSupport>
- #include <kauth_version.h>
-
- #include "AlpineApkAuthHelper.h"
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-index 240e6ed35..55f81d16b 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkAuthHelper.h
-@@ -21,7 +21,8 @@
- #include <QEventLoop>
- #include <QObject>
- #include <QVariant>
--#include <KAuthActionReply>
-+
-+#include <KAuth/ActionReply>
-
- #include <QtApk>
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-index c10ebdcb5..073430894 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkSourcesBackend.cpp
-@@ -29,7 +29,7 @@
- #include <QVector>
-
- // KF5
--#include <KAuthExecuteJob>
-+#include <KAuth/ExecuteJob>
- #include <KLocalizedString>
-
- // libapk-qt
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-index 0f346e843..de82546ca 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkTransaction.cpp
-@@ -29,9 +29,9 @@
- #include <QTimer>
-
- // KF5
--#include <kcoreaddons_version.h>
--#include <KAuthExecuteJob>
-+#include <KAuth/ExecuteJob>
- #include <KLocalizedString>
-+#include <kcoreaddons_version.h>
-
- AlpineApkTransaction::AlpineApkTransaction(AlpineApkResource *res, Role role)
- : AlpineApkTransaction(res, {}, role)
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-index 4b09c7d05..b36ffb987 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkUpdater.cpp
-@@ -25,9 +25,9 @@
- #include "alpineapk_backend_logging.h"
- #include "utils.h"
-
--#include <kcoreaddons_version.h>
--#include <KAuthExecuteJob>
-+#include <KAuth/ExecuteJob>
- #include <KLocalizedString>
-+#include <kcoreaddons_version.h>
-
- #include <QtApk>
-
---
-GitLab
-
-
-From 14ebd0b5c36995d7cd3a8c037149ec57732a5f91 Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Sun, 18 Sep 2022 17:21:43 +0300
-Subject: [PATCH 58/61] AlpineApkReviewsBackend: compat with upstream changes
-
-Adapt to changes in ee3d6e9c912d901174a44fe96136583086cd6932: add
-overrides for new abstract methods, move userName() to protected
----
- .../AlpineApkReviewsBackend.h | 20 ++++++++++++++++---
- 1 file changed, 17 insertions(+), 3 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h b/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h
-index 435f845ba..523dd4cb9 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkReviewsBackend.h
-@@ -32,7 +32,6 @@ class AlpineApkReviewsBackend : public AbstractReviewsBackend
- public:
- explicit AlpineApkReviewsBackend(AlpineApkBackend *parent = nullptr);
-
-- QString userName() const override { return QStringLiteral("dummy"); }
- void login() override {}
- void logout() override {}
- void registerAndLogin() override {}
-@@ -42,11 +41,26 @@ public:
- void deleteReview(Review *) override {}
- void fetchReviews(AbstractResource *app, int page = 1) override;
- bool isFetching() const override { return false; }
-- bool isReviewable() const override { return false; }
-- void submitReview(AbstractResource *, const QString &, const QString &, const QString &) override {}
-+ bool isReviewable() const override
-+ {
-+ return false;
-+ }
- void flagReview(Review *, const QString&, const QString&) override {}
- void submitUsefulness(Review *, bool) override {}
- bool isResourceSupported(AbstractResource *) const override { return false; }
-+ bool supportsNameChange() const override
-+ {
-+ return false;
-+ }
-+
-+protected:
-+ void sendReview(AbstractResource *, const QString &, const QString &, const QString &, const QString &) override
-+ {
-+ }
-+ QString userName() const override
-+ {
-+ return QStringLiteral("dummy");
-+ }
- };
-
- #endif // ALPINEAPKREVIEWSBACKEND_H
---
-GitLab
-
-
-From ecb521888111a62c483aa6c8ceb9ed0cce85394b Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Sun, 18 Sep 2022 17:29:35 +0300
-Subject: [PATCH 59/61] AlpineApkBackend: compat with upstream
-
-Fixup after 78277138749a9cd4b644f2814822a1b392d259c8 "category
-decorations are not a thing anymore"
----
- .../AlpineApkBackend/AlpineApkBackend.cpp | 49 +++++++++----------
- 1 file changed, 23 insertions(+), 26 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index f53947324..5bcc38556 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -315,36 +315,33 @@ QVector<Category *> AlpineApkBackend::category() const
-
- // Display a single root category
- // we could add more, but Alpine apk does not have this concept
-- static Category *s_rootCat = new Category(
-- i18nc("Root category name", "Alpine Linux packages"),
-- QStringLiteral("package-x-generic"), // icon
-- { s_apkFlt }, // orFilters - include packages that match filter
-- { displayName() }, // pluginName
-- {}, // subCategories - none
-- QUrl(), // decoration (what is it?)
-- false // isAddons
-+ static Category *s_rootCat = new Category(i18nc("Root category name", "Alpine Linux packages"),
-+ QStringLiteral("package-x-generic"), // icon
-+ {s_apkFlt}, // orFilters - include packages that match filter
-+ {displayName()}, // pluginName
-+ {}, // subCategories - none
-+ false // isAddons
- );
-
- return { s_rootCat };
-
--// static QVector<Category *> s_cats;
--// if (s_cats.isEmpty()) {
--// // fill only once
--// s_cats << s_rootCat;
--// for (const QString &scat : m_collectedCategories) {
--// Category *cat = new Category(
--// scat, // name
--// QStringLiteral("package-x-generic"), // icon
--// {}, // orFilters
--// { displayName() }, // pluginName
--// {}, // subcategories
--// QUrl(), // decoration
--// false // isAddons
--// );
--// s_cats << cat;
--// }
--// }
--// return s_cats;
-+ // static QVector<Category *> s_cats;
-+ // if (s_cats.isEmpty()) {
-+ // // fill only once
-+ // s_cats << s_rootCat;
-+ // for (const QString &scat : m_collectedCategories) {
-+ // Category *cat = new Category(
-+ // scat, // name
-+ // QStringLiteral("package-x-generic"), // icon
-+ // {}, // orFilters
-+ // { displayName() }, // pluginName
-+ // {}, // subcategories
-+ // false // isAddons
-+ // );
-+ // s_cats << cat;
-+ // }
-+ // }
-+ // return s_cats;
- // ^^ causes deep hang in discover in recalculating QML bindings
- }
-
---
-GitLab
-
-
-From 64cad620679750aab6548ea2722718b8671bda55 Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Fri, 25 Nov 2022 07:27:01 +0300
-Subject: [PATCH 60/61] Compat with upstream
-
-compat with: c703adef3872d355c46e92795eedd1f910d1d9af ("Categories: Make
-them truly recursive")
----
- .../backends/AlpineApkBackend/AlpineApkBackend.cpp | 11 +++++------
- 1 file changed, 5 insertions(+), 6 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-index 5bcc38556..9cc20aaa7 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkBackend.cpp
-@@ -310,16 +310,15 @@ void AlpineApkBackend::onAppstreamDataDownloaded()
-
- QVector<Category *> AlpineApkBackend::category() const
- {
-- static QPair<FilterType, QString> s_apkFlt(
-- FilterType::CategoryFilter, QLatin1String("alpine_packages"));
-+ static CategoryFilter s_apkFlt{CategoryFilter::FilterType::CategoryNameFilter, QLatin1String("alpine_packages")};
-
- // Display a single root category
- // we could add more, but Alpine apk does not have this concept
-- static Category *s_rootCat = new Category(i18nc("Root category name", "Alpine Linux packages"),
-- QStringLiteral("package-x-generic"), // icon
-- {s_apkFlt}, // orFilters - include packages that match filter
-+ static Category *s_rootCat = new Category(i18nc("Root category name", "Alpine Linux packages"), // name
-+ QStringLiteral("package-x-generic"), // icon name
-+ s_apkFlt, // const CategoryFilter& filters
- {displayName()}, // pluginName
-- {}, // subCategories - none
-+ {}, // QVector<Category *> subCategories - none
- false // isAddons
- );
-
---
-GitLab
-
-
-From 7f781785c443c4fc73bd50dd7bd4cb895f5442c2 Mon Sep 17 00:00:00 2001
-From: Alexey Minnekhanov <alexeymin@postmarketos.org>
-Date: Fri, 3 Mar 2023 19:41:55 +0300
-Subject: [PATCH 61/61] AlpineApkResource: compat with upstream changes
-
----
- libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-index 2c981ca90..67c4cdcd5 100644
---- a/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-+++ b/libdiscover/backends/AlpineApkBackend/AlpineApkResource.cpp
-@@ -220,8 +220,8 @@ void AlpineApkResource::fetchChangelog()
- void AlpineApkResource::fetchScreenshots()
- {
- if (hasAppStreamData()) {
-- const QPair<QList<QUrl>, QList<QUrl> > sc = AppStreamUtils::fetchScreenshots(m_appsC);
-- Q_EMIT screenshotsFetched(sc.first, sc.second);
-+ const Screenshots screenshots = AppStreamUtils::fetchScreenshots(m_appsC);
-+ Q_EMIT screenshotsFetched(screenshots);
- }
- }
-
---
-GitLab
-
diff --git a/community/dolphin-plugins/APKBUILD b/community/dolphin-plugins/APKBUILD
index d30788e70b9..a5e7f091281 100644
--- a/community/dolphin-plugins/APKBUILD
+++ b/community/dolphin-plugins/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=dolphin-plugins
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Extra Dolphin plugins"
url="https://www.kde.org/applications/system/dolphin/"
@@ -14,17 +14,17 @@ license="GPL-2.0-or-later"
makedepends="
dolphin-dev
extra-cmake-modules
- ki18n5-dev
- kio5-dev
- ktexteditor5-dev
- ktextwidgets5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ ki18n-dev
+ kio-dev
+ ktexteditor-dev
+ ktextwidgets-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/sdk/dolphin-plugins.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/dolphin-plugins-$pkgver.tar.xz"
-subpackages="$pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -44,5 +44,5 @@ package() {
}
sha512sums="
-2dd30070660df63b988cda2e14f3ddc27a0cf451119d2a6b121cb9cbeb8788b94498ef25ca434501843784a8e24c4539fe17cc0ab5a158befbc9db5792944852 dolphin-plugins-23.08.5.tar.xz
+0726c8b7988fa4252ad8b0b742f2e8611d9a6aadd020f45ccea93a4611c5b07493fa18f401ca86c31c42f1aafb9072556944d5dde9bd28930e6248fca65f19b2 dolphin-plugins-24.02.0.tar.xz
"
diff --git a/community/dolphin/APKBUILD b/community/dolphin/APKBUILD
index e1bc450af7e..470e5816cfd 100644
--- a/community/dolphin/APKBUILD
+++ b/community/dolphin/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=dolphin
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -16,47 +16,44 @@ depends="
kio-extras
"
depends_dev="
- baloo5-dev
+ baloo-dev
baloo-widgets-dev
- kactivities5-dev
- kbookmarks5-dev
- kcmutils5-dev
- kcompletion5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- kfilemetadata5-dev
- ki18n5-dev
- kiconthemes5-dev
- kinit5-dev
- kio5-dev
- knewstuff5-dev
- knotifications5-dev
- kparts5-dev
- ktextwidgets5-dev
+ kbookmarks-dev
+ kcmutils-dev
+ kcompletion-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ kfilemetadata-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ knewstuff-dev
+ knotifications-dev
+ kparts-dev
+ ktextwidgets-dev
kuserfeedback-dev
- kwindowsystem5-dev
+ kwindowsystem-dev
musl-fts-dev
phonon-dev
- qt5-qtbase-dev
- solid5-dev
+ plasma-activities-dev
+ qt6-qtbase-dev
+ solid-dev
"
makedepends="$depends_dev
- extra-cmake-modules
+ extra-cmake-modules
ruby-test-unit
samurai
"
checkdepends="
- xvfb-run
dbus
+ xvfb-run
"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-zsh-completion"
_repo_url="https://invent.kde.org/system/dolphin.git"
-source="https://download.kde.org/stable/release-service/$pkgver/src/dolphin-$pkgver.tar.xz
- 0001-Fix-musl-build-by-using-fts-from-external-library.patch
- "
+source="https://download.kde.org/stable/release-service/$pkgver/src/dolphin-$pkgver.tar.xz"
build() {
LDFLAGS="$LDFLAGS -Wl,-z,stack-size=0x100000" \
@@ -68,8 +65,8 @@ build() {
}
check() {
- # kfileitemmodeltest, placesitemmodeltest, dolphinmainwindowtest and kitemlistcontrollertest are broken
- xvfb-run ctest --test-dir build --output-on-failure -E "(kfileitemmodel|placesitemmodel|dolphinmainwindow|kitemlistcontroller)test"
+ # kfileitemmodeltest, dolphinquerytest and dolphinmainwindowtest are broken
+ xvfb-run ctest --test-dir build --output-on-failure -E "(kfileitemmodel|dolphinquery|dolphinmainwindow)test"
}
package() {
@@ -80,6 +77,5 @@ package() {
}
sha512sums="
-0b25cc8ec1222fcd6eba971aa701a2ddcf5297c4d78b1cd63fde7ecf8e267f1af76ca1bf544ea4a4f98309b40c41aba441cfda1a9c3fb0e4df2a426e4402cb4b dolphin-23.08.5.tar.xz
-5b3a1095d519a2d2e875e4dc468f170fd19515963ad4946268533053785b0b3beee57ee9f8d0650de5cb5534dcc948f61327fd836908371cfccf279eea296915 0001-Fix-musl-build-by-using-fts-from-external-library.patch
+2366f671a9f10a2469ff7d842b395abdf0493e4fb2450f2015fc537b1c1fd5dabb72185af89e8e3b3531a32b90ec33b7cecac77a51080a03e04c2621cc77f423 dolphin-24.02.0.tar.xz
"
diff --git a/community/dragon/APKBUILD b/community/dragon/APKBUILD
index afe91ec190e..e77c60a36e7 100644
--- a/community/dragon/APKBUILD
+++ b/community/dragon/APKBUILD
@@ -4,39 +4,38 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=dragon
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="A multimedia player where the focus is on simplicity, instead of features"
url="https://kde.org/applications/multimedia/org.kde.dragonplayer"
# armhf blocked by extra-cmake-modules
arch="all !armhf"
license="GPL-2.0-only OR GPL-3.0-only"
-depends="phonon-backend-gstreamer"
+depends="phonon-backend-vlc"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- kjobwidgets5-dev
- knotifications5-dev
- kparts5-dev
- kwidgetsaddons5-dev
- kwindowsystem5-dev
- kxmlgui5-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ kjobwidgets-dev
+ knotifications-dev
+ kparts-dev
+ kwidgetsaddons-dev
+ kwindowsystem-dev
+ kxmlgui-dev
phonon-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
- solid5-dev
+ solid-dev
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/multimedia/dragon.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/dragon-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -55,5 +54,5 @@ package() {
}
sha512sums="
-5e9fea7c28beb5d8198920ccebd1e7c2e289607d03a846f0991695add271f0e9f3ff81798e26324c736c9b581b385d6b24fbc57c5ab1807b7bb38ff72936ff4e dragon-23.08.5.tar.xz
+5173751707a30568e6d1fb8d54f496e36710aa432e33011d8acb85a091f9204266dca01ad9243721697ee3903cf2c5df63938de947902e70a94d557dae116903 dragon-24.02.0.tar.xz
"
diff --git a/community/drkonqi/APKBUILD b/community/drkonqi/APKBUILD
index 856c051c2ba..c9b9cd3b019 100644
--- a/community/drkonqi/APKBUILD
+++ b/community/drkonqi/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=drkonqi
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
pkgdesc="The KDE crash handler"
# armhf blocked by extra-cmake-modules
@@ -12,42 +12,47 @@ arch="all !armhf"
url="https://kde.org/plasma-desktop/"
license="GPL-2.0-or-later"
depends="
- kirigami2
- kitemmodels5
+ kirigami
+ kitemmodels
+ py3-sentry-sdk
"
makedepends="
extra-cmake-modules
- kcompletion5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdeclarative5-dev
- ki18n5-dev
- kidletime5-dev
- kio5-dev
- kjobwidgets5-dev
- knotifications5-dev
- kservice5-dev
+ kcompletion-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdeclarative-dev
+ ki18n-dev
+ kidletime-dev
+ kio-dev
+ kjobwidgets-dev
+ knotifications-dev
+ kservice-dev
+ kstatusnotifieritem-dev
kuserfeedback-dev
- kwallet5-dev
- kwidgetsaddons5-dev
- kxmlrpcclient5-dev
- qt5-qtbase-dev
- qt5-qtx11extras-dev
+ kwallet-dev
+ kwidgetsaddons-dev
+ py3-chai
+ qt6-qtbase-dev
samurai
- syntax-highlighting5-dev
+ syntax-highlighting-dev
+ "
+checkdepends="
+ py3-psutil
+ py3-pygdbmi
"
case "$pkgver" in
*.90*) _rel=unstable;;
*) _rel=stable;;
esac
-_repo_url="https://invent.kde.org/plasma/drkonqi.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/drkonqi-$pkgver.tar.xz"
subpackages="$pkgname-lang"
+_repo_url="https://invent.kde.org/plasma/drkonqi.git"
+source="https://download.kde.org/stable/plasma/$pkgver/drkonqi-$pkgver.tar.xz"
build() {
- cmake -B build -G Ninja \
+ cmake -B build -DWITH_PYTHON_VENDORING=OFF -DCMAKE_DISABLE_FIND_PACKAGE_Systemd=ON -G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -57,7 +62,7 @@ build() {
check() {
# connectiontest requires a network connection
- ctest --test-dir build --output-on-failure -E "connectiontest"
+ ctest --test-dir build --output-on-failure -E "(connection|preamble)test"
}
package() {
@@ -65,5 +70,5 @@ package() {
}
sha512sums="
-b53c6ebd2951b276971bdb9c4feb4ce885daf68176b0004396b046bd8e245b62457b62d07465b39d637095f9d4b779ea31535aaa6ee68855aa8cb5a48802857f drkonqi-5.27.10.tar.xz
+2fe981ffb313a52bae1b771d0014715b136aa48fd6d98656f6c9b82df4a1512722e838a11f4507f6b6bdea5635976b1e4da1a1bd285ed8b10c31647e696f91b3 drkonqi-6.0.0.tar.xz
"
diff --git a/community/elisa/APKBUILD b/community/elisa/APKBUILD
index e9baf377070..c55cfa5a4b7 100644
--- a/community/elisa/APKBUILD
+++ b/community/elisa/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=elisa
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# s390x blocked by vlc
@@ -13,41 +13,41 @@ url="https://kde.org/applications/multimedia/org.kde.elisa"
pkgdesc="A simple music player aiming to provide a nice experience for its users"
license="LGPL-3.0-or-later"
depends="
- kirigami2
+ kirigami
vlc
"
makedepends="
- baloo5-dev
+ baloo-dev
extra-cmake-modules
- kcmutils5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdeclarative5-dev
- kdoctools5-dev
- kfilemetadata5-dev
- ki18n5-dev
- kio5-dev
- kirigami2-dev
- kpackage5-dev
- kxmlgui5-dev
+ kcmutils-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdeclarative-dev
+ kdoctools-dev
+ kfilemetadata-dev
+ ki18n-dev
+ kio-dev
+ kirigami-dev
+ kpackage-dev
+ kxmlgui-dev
+ qqc2-desktop-style-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtmultimedia-dev
+ qt6-qtsvg-dev
samurai
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtmultimedia-dev
- qt5-qtquickcontrols2-dev
- qt5-qtsvg-dev
vlc-dev
"
checkdepends="
cmd:dbus-run-session
xvfb-run
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/multimedia/elisa.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/elisa-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -58,10 +58,7 @@ build() {
}
check() {
- cd build
-
- # mediaplaylistproxymodelTest, elisaqmltests and localfilelistingtest are broken
- CTEST_OUTPUT_ON_FAILURE=TRUE dbus-run-session xvfb-run ctest -E "(viewManagerTest|mediaplaylistproxymodelTest|elisaqmltests|localfilelistingtest)"
+ dbus-run-session xvfb-run ctest --test-dir build --output-on-failure -E "(viewManagerTest|mediaplaylistproxymodelTest|elisaqmltests|(localfilelisting|trackmetadatamodel)test)"
}
package() {
@@ -69,5 +66,5 @@ package() {
}
sha512sums="
-f0ab10b9e4d57b3331220a9ae2f8a240d7259ce7e381957cc12fc73b3bf23cdf32affde2e8dc09c8e5fbd05da74401f274c522bb44cd652feb7c1fb75e64cba8 elisa-23.08.5.tar.xz
+ae894f17c7f8e725e5ba1c21630a65186de56c851101a890ff6b5d3ca961d15e07b2e396858136e67693032ad217c2628dca86ef15e58ce32e2f8d8a987baa59 elisa-24.02.0.tar.xz
"
diff --git a/community/eventviews/APKBUILD b/community/eventviews/APKBUILD
index 1dddbaa466a..50829c0fab7 100644
--- a/community/eventviews/APKBUILD
+++ b/community/eventviews/APKBUILD
@@ -4,11 +4,11 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=eventviews
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Library for creating events"
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine -> akonadi
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine -> akonadi
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kontact.kde.org/"
license="GPL-2.0-or-later"
@@ -16,19 +16,19 @@ depends_dev="
akonadi-calendar-dev
akonadi-dev
calendarsupport-dev
- kcalendarcore5-dev
+ kcalendarcore-dev
kcalutils-dev
- kcodecs5-dev
- kcompletion5-dev
+ kcodecs-dev
+ kcompletion-dev
kdiagram-dev
- kguiaddons5-dev
- kholidays5-dev
- ki18n5-dev
- kiconthemes5-dev
+ kguiaddons-dev
+ kholidays-dev
+ ki18n-dev
+ kiconthemes-dev
kmime-dev
- kservice5-dev
+ kservice-dev
libkdepim-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
"
checkdepends="xvfb-run"
makedepends="$depends_dev
@@ -37,9 +37,9 @@ makedepends="$depends_dev
graphviz
samurai
"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/eventviews.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/eventviews-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -58,5 +58,5 @@ package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-0e94a8a900b521d114d0778ea23d5e255c9bf047b9150723a1ea40fec2c5b640d6321626017b0f4e005e653d76a882644874697029281dc932cf57760d36786f eventviews-23.08.5.tar.xz
+af31788b35c1700eaa11f4c9b680da9f0d3c8673298d3cb19406b413b0c21127ca236c101191796e4292847c71408843e1b8a1d2a0b39ad74a982cfd7938c27d eventviews-24.02.0.tar.xz
"
diff --git a/community/extra-cmake-modules/APKBUILD b/community/extra-cmake-modules/APKBUILD
index 34af9deaacd..fc8621d3168 100644
--- a/community/extra-cmake-modules/APKBUILD
+++ b/community/extra-cmake-modules/APKBUILD
@@ -5,25 +5,28 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
pkgname=extra-cmake-modules
-pkgver=5.115.0
+pkgver=6.0.0
pkgrel=0
pkgdesc="Extra CMake modules"
url="https://invent.kde.org/frameworks/extra-cmake-modules"
arch="noarch"
license="BSD-3-Clause"
-depends="cmake"
+depends="
+ cmake
+ qt5-qttools-dev
+ qt6-qttools-dev
+ "
makedepends="
py3-sphinx
samurai
"
checkdepends="
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qttools-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
"
+subpackages="$pkgname-doc"
_repo_url="https://invent.kde.org/frameworks/extra-cmake-modules.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/extra-cmake-modules-$pkgver.tar.xz"
-subpackages="$pkgname-doc"
build() {
cmake -B build -G Ninja \
@@ -44,5 +47,5 @@ package() {
}
sha512sums="
-53c44d8ccb58266bdf72014467cd57de86acb89ba272f1fb09f80af1c858a442cb59347fbff95cb3188c14a5cc520f9e952d1b396f2c5f2ed99aa070beacac22 extra-cmake-modules-5.115.0.tar.xz
+226f9eab4108b8b2aa91859a3ae818d2cc58ab370bffa13033e17f671f232c47041beaa4b3eaa9d2241a94141bfb0291e4aa572abe134f7782d45420a3c35525 extra-cmake-modules-6.0.0.tar.xz
"
diff --git a/community/falkon/APKBUILD b/community/falkon/APKBUILD
index a185b6f43c2..2a16c819629 100644
--- a/community/falkon/APKBUILD
+++ b/community/falkon/APKBUILD
@@ -4,34 +4,33 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=falkon
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Cross-platform Qt Web Browser"
url="https://github.com/KDE/falkon"
-# armhf blocked by qt5-qtdeclarative
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine
+# armhf blocked by extra-cmake-modules
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
license="GPL-3.0-or-later"
-depends="qt5-qtbase-sqlite"
+depends="qt6-qtbase-sqlite"
makedepends="
extra-cmake-modules
- karchive5-dev
- kcoreaddons5-dev
- kcrash5-dev
- ki18n5-dev
- kio5-dev
- kwallet5-dev
+ karchive-dev
+ kcoreaddons-dev
+ kcrash-dev
+ ki18n-dev
+ kio-dev
+ kwallet-dev
libshiboken2-dev
libxcb-dev
openssl-dev>3
- purpose5-dev
+ purpose-dev
py3-pyside2-dev
python3
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qttools-dev
- qt5-qtwebengine-dev
- qt5-qtx11extras-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qttools-dev
+ qt6-qtwebengine-dev
samurai
shiboken2
xcb-util-dev
@@ -54,7 +53,7 @@ build() {
check() {
# Requires working OpenGL
# qmlhistoryapitest, qmlcookiesapitest, qmltabsapitest and qmlwindowsapitest are SIGTRAP'ing
- xvfb-run ctest --test-dir build --output-on-failure -E "falkon-(basic|locationbar|webview|webtab|tabmodel|qml-qml(historyapi|cookiesapi|tabsapi|windowsapi|topsitesapi))test" -j1
+ xvfb-run ctest --test-dir build --output-on-failure -E "falkon-(locationbar|webtab|qml-qml(tabsapi|topsitesapi))test" -j1
}
package() {
@@ -70,5 +69,5 @@ bashcomp() {
}
sha512sums="
-215e2a4ff551aa6d3fab0317d2b2b823b7fee4c1f6a653118d00f3def9ebb037931e8cd81f33785a44c8aa8910e00fbda884c1cfcdb61190544d1e6c8396acf8 falkon-23.08.5.tar.xz
+68979980ce363a3a2089b6ff939dd8c83a7089701281156a2cda1931ac9e416350954e9e058c1f3e48e45a909e6f0838196be91a3fc9ed0d3ec7a73f7449981d falkon-24.02.0.tar.xz
"
diff --git a/community/ffmpegthumbs/APKBUILD b/community/ffmpegthumbs/APKBUILD
index 792b52bedb3..f92369e33e7 100644
--- a/community/ffmpegthumbs/APKBUILD
+++ b/community/ffmpegthumbs/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=ffmpegthumbs
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# not useful on s390x
@@ -15,19 +15,19 @@ license="GPL-2.0-or-later"
makedepends="
extra-cmake-modules
ffmpeg-dev
- kconfig5-dev
- ki18n5-dev
- kio5-dev
- qt5-qtbase-dev
+ kconfig-dev
+ ki18n-dev
+ kio-dev
+ qt6-qtbase-dev
samurai
taglib-dev
"
_repo_url="https://invent.kde.org/multimedia/ffmpegthumbs.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/ffmpegthumbs-$pkgver.tar.xz"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
+ -DBUILD_WITH_QT6=ON \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib
@@ -43,5 +43,5 @@ package() {
}
sha512sums="
-d4dfb37acacc362e7d98a0fda81efd2630988192e6f02bb8adde815585ad976db0a960806694a10d20ad7256ca2aed97df962ae4a1f4aa00e66aae480baab8f9 ffmpegthumbs-23.08.5.tar.xz
+cffcf118bed2c88a21632dc6f352a0b62c1a3d9deddfbc11864b02c7550a9465988c394dead098f94faed42972dfbc54fc2ae0a84d39e98c33abb51c15596c76 ffmpegthumbs-24.02.0.tar.xz
"
diff --git a/community/filelight/APKBUILD b/community/filelight/APKBUILD
index 9ba0aa0a70b..2673e70516e 100644
--- a/community/filelight/APKBUILD
+++ b/community/filelight/APKBUILD
@@ -4,30 +4,28 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=filelight
-pkgver=23.08.5
-pkgrel=1
+pkgver=24.02.0
+pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
url="https://kde.org/applications/utilities/filelight"
pkgdesc="An application to visualize the disk usage on your computer"
license="(GPL-2.0-only OR GPL-3.0-only) AND GFDL-1.2-only"
-depends="kquickcharts5"
makedepends="
extra-cmake-modules
- kdeclarative5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ kdeclarative-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ kirigami-addons-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
samurai
"
+checkdepends="xvfb-run"
_repo_url="https://invent.kde.org/utilities/filelight.git"
-source="https://download.kde.org/stable/release-service/$pkgver/src/filelight-$pkgver.tar.xz
- 0001-Fix-musl-build.patch
- "
+source="https://download.kde.org/stable/release-service/$pkgver/src/filelight-$pkgver.tar.xz"
subpackages="$pkgname-dbg $pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -38,7 +36,7 @@ build() {
}
check() {
- ctest --test-dir build --output-on-failure
+ xvfb-run ctest --test-dir build --output-on-failure
}
package() {
@@ -46,6 +44,5 @@ package() {
}
sha512sums="
-1d2ea6e13b18ddc7e80c789ad68a29b8d9a663bcbfd054714f4adc8e9e7482a8cf9e6a25213fd4f486494563d2854da043602774e49f784f4b8f2755ad143a8b filelight-23.08.5.tar.xz
-db0d2fe06a3073c981814989edbaa97cd8b14fa05894c735273b30fc3f95c69207db22bd87db31a703d8f187d1b65827663d60192ba979b977ad51d4cdaa37ad 0001-Fix-musl-build.patch
+543e80b7cce77dcb1da0e99f27bdb78f8c68dc3d97822949bd7f2b2976149c60c0fdf200464bbd23ecc1d610e2c41a05bc6fb61a1a3762ba8b747b52dd6b161a filelight-24.02.0.tar.xz
"
diff --git a/community/flatpak-kcm/APKBUILD b/community/flatpak-kcm/APKBUILD
index d9fd24371da..1a0443224f5 100644
--- a/community/flatpak-kcm/APKBUILD
+++ b/community/flatpak-kcm/APKBUILD
@@ -4,24 +4,24 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=flatpak-kcm
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
pkgdesc="Flatpak Permissions Management KCM"
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://kde.org/plasma-desktop/"
license="GPL-2.0-or-later"
-depends="kirigami2"
+depends="kirigami"
makedepends="
extra-cmake-modules
flatpak-dev
- kcmutils5-dev
- kconfig5-dev
- kdeclarative5-dev
- ki18n5-dev
- kitemmodels5-dev
- qt5-qtdeclarative-dev
- qt5-qtsvg-dev
+ kcmutils-dev
+ kconfig-dev
+ kdeclarative-dev
+ ki18n-dev
+ kitemmodels-dev
+ qt6-qtdeclarative-dev
+ qt6-qtsvg-dev
samurai
"
checkdepends="xvfb-run"
@@ -30,9 +30,9 @@ case "$pkgver" in
*.90*) _rel=unstable;;
*) _rel=stable;;
esac
-_repo_url="https://invent.kde.org/plasma/flatpak-kcm.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/flatpak-kcm-$pkgver.tar.xz"
subpackages="$pkgname-lang"
+_repo_url="https://invent.kde.org/plasma/flatpak-kcm.git"
+source="https://download.kde.org/stable/plasma/$pkgver/flatpak-kcm-$pkgver.tar.xz"
install_if="flatpak systemsettings"
build() {
@@ -55,5 +55,5 @@ package() {
}
sha512sums="
-5f396753f648e735ae9041c567b065bdd268a33fba183679329cae963c19adb209b4ecfda36ef0bc97ec426b7d933395f627000f466f32f52bde30689243bdb5 flatpak-kcm-5.27.10.tar.xz
+cacd7602b54e317545326087d0bd73452a3feddec43e9e5433ed438563054177a962202b75490634879dec43ebe2372905b34ef80bb89b17647eab1a2b01f494 flatpak-kcm-6.0.0.tar.xz
"
diff --git a/community/kmediaplayer/APKBUILD b/community/frameworkintegration/APKBUILD
index 0febeec11cb..a2bce6067b9 100644
--- a/community/kmediaplayer/APKBUILD
+++ b/community/frameworkintegration/APKBUILD
@@ -3,26 +3,34 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=kmediaplayer
-pkgver=5.115.0
+pkgname=frameworkintegration
+pkgver=6.0.0
pkgrel=0
-pkgdesc="Media player framework for KDE 5"
-arch="all !armhf" # armhf blocked by extra-cmake-modules
-url="https://community.kde.org/Frameworks"
-license="X11 AND LGPL-2.1-or-later"
+pkgdesc="Framework providing components to allow applications to integrate with a KDE Workspace"
+# armhf blocked by extra-cmake-modules
+arch="all !armhf"
+url="https://www.kde.org"
+license="LGPL-2.1-or-later"
depends_dev="
- kparts5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ appstream-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ ki18n-dev
+ kiconthemes-dev
+ knewstuff-dev
+ knotifications-dev
+ kpackage-dev
+ kwidgetsaddons-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
extra-cmake-modules
samurai
"
checkdepends="xvfb-run"
-_repo_url="https://invent.kde.org/frameworks/kmediaplayer.git"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kmediaplayer-$pkgver.tar.xz"
subpackages="$pkgname-dev"
+_repo_url="https://invent.kde.org/frameworks/frameworkintegration.git"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/frameworkintegration-$pkgver.tar.xz"
build() {
cmake -B build -G Ninja \
@@ -33,7 +41,6 @@ build() {
}
check() {
- # viewtest requires X11 to be running
xvfb-run ctest --test-dir build --output-on-failure
}
@@ -42,5 +49,5 @@ package() {
}
sha512sums="
-f7db20d0b009cb65f87965f488e439b40adbbfe830d905f92cdca667a729f3590b5890017aeb2c019d63b50e570e5e079d89c5c72515dc557ff5c7f0f06c6ff5 kmediaplayer-5.115.0.tar.xz
+565c26aa54b45e872deb28aeba3660423c1f57e488690896571cd8d5ae8c6a74e99c71588d314d36874b1a2275e9b78178815772c404d27c0abaaeba0f74638f frameworkintegration-6.0.0.tar.xz
"
diff --git a/community/frameworkintegration5/APKBUILD b/community/frameworkintegration5/APKBUILD
index 427b2f59740..0fd2a3397b9 100644
--- a/community/frameworkintegration5/APKBUILD
+++ b/community/frameworkintegration5/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
pkgname=frameworkintegration5
-pkgver=5.115.0
+pkgver=6.0.0
pkgrel=0
pkgdesc="Framework providing components to allow applications to integrate with a KDE Workspace"
# armhf blocked by extra-cmake-modules
@@ -52,5 +52,5 @@ package() {
}
sha512sums="
-83cc9d4e1063cd1496dbe373f30f706dcb2ce2515735d7b82cd45cf35b20a8e6c51625b752c6e9a53033db1b0573f2f3159bd569becc707b3a2e7250ce7fd20a frameworkintegration-5.115.0.tar.xz
+565c26aa54b45e872deb28aeba3660423c1f57e488690896571cd8d5ae8c6a74e99c71588d314d36874b1a2275e9b78178815772c404d27c0abaaeba0f74638f frameworkintegration-6.0.0.tar.xz
"
diff --git a/community/futuresql/APKBUILD b/community/futuresql/APKBUILD
index 148569555f3..fd1fbfd8496 100644
--- a/community/futuresql/APKBUILD
+++ b/community/futuresql/APKBUILD
@@ -5,7 +5,7 @@
# group=kde-other
pkgname=futuresql
pkgver=0.1.1
-pkgrel=1
+pkgrel=2
pkgdesc="Non-blocking Qt database framework"
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,7 +13,7 @@ url="https://invent.kde.org/libraries/futuresql/"
license="LGPL-2.0-or-later AND GPL-2.0-or-later"
depends_dev="
qcoro-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
"
makedepends="
$depends_dev
@@ -25,7 +25,7 @@ _repo_url="https://invent.kde.org/libraries/futuresql.git"
source="https://download.kde.org/stable/futuresql/futuresql-$pkgver.tar.xz"
build() {
- cmake -B build -G Ninja \
+ cmake -B build -DBUILD_WITH_QT6=ON -G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
diff --git a/community/ghostwriter/APKBUILD b/community/ghostwriter/APKBUILD
index fc443b68988..cadeee6db87 100644
--- a/community/ghostwriter/APKBUILD
+++ b/community/ghostwriter/APKBUILD
@@ -3,38 +3,42 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=ghostwriter
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Distraction-free markdown editor"
url="https://invent.kde.org/office/ghostwriter/"
arch="aarch64 x86_64"
license="GPL-3.0-or-later"
-depends="qt5-qtsvg"
+depends="qt6-qtsvg"
makedepends="
extra-cmake-modules
hunspell-dev
- sonnet5-dev
- kcoreaddons5-dev
- kdoctools5-dev
- kxmlgui5-dev
- kconfigwidgets5-dev
- qt5-qtsvg-dev
- qt5-qttools-dev
- qt5-qtbase-dev
- qt5-qtwebchannel-dev
- qt5-qtwebengine-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kdoctools-dev
+ kxmlgui-dev
+ qt6-qt5compat-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
+ qt6-qttools-dev
+ qt6-qtwebchannel-dev
+ qt6-qtwebengine-dev
samurai
+ sonnet-dev
"
subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/office/ghostwriter.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/ghostwriter-$pkgver.tar.xz"
-options="!check" # no tests
+# No tests
+options="!check"
build() {
CXXFLAGS="$CXXFLAGS -flto=auto" \
- cmake -B build -G Ninja -Wno-dev \
+ cmake -B build -G Ninja \
+ -DBUILD_WITH_QT6=ON \
-DCMAKE_BUILD_TYPE=None \
- -DCMAKE_INSTALL_PREFIX=/usr
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -Wno-dev
cmake --build build
}
@@ -43,5 +47,5 @@ package() {
}
sha512sums="
-b548710cd5066b8ff29410577b2e5c11178ea2661793bfedec1b2379046735f4320ba47ee3d560d8041171f1244d541213ecd5f2a8e0ae69ae0f0718094d5d20 ghostwriter-23.08.5.tar.xz
+5b6be5187e80bead8991e314dd852018f6478edacfcece5508beb7e9dc9d3e2ae0b6fa55d79567822f7037eb40a353e63c4411a17cdec85f7a953ea5ea676058 ghostwriter-24.02.0.tar.xz
"
diff --git a/community/granatier/APKBUILD b/community/granatier/APKBUILD
index 959960b263f..1303c2f3c4e 100644
--- a/community/granatier/APKBUILD
+++ b/community/granatier/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=granatier
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,25 +13,25 @@ pkgdesc="A clone of the classic Bomberman game"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- knewstuff5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ kconfig-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ knewstuff-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
libkdegames-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/granatier.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/granatier-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -50,5 +50,5 @@ package() {
}
sha512sums="
-1fa167cad60a5834efd59bc2826ccf387a334cc1a9e261ef93be17a3198e1e751a501c92ddd0e69292b8127fbad844dd9e2324662b9e793d98e8cbc35d999f59 granatier-23.08.5.tar.xz
+030ae2ea75180459ec54b0773e23c19c711c9a36ee07e5e3484e4ddc9de0dee1eec85f53338dbb825f61a978f25479587c2ffca650617a8764b35ccc482ea6ca granatier-24.02.0.tar.xz
"
diff --git a/community/grantlee-editor/APKBUILD b/community/grantlee-editor/APKBUILD
index b8bd98edc24..b2f806c9d0f 100644
--- a/community/grantlee-editor/APKBUILD
+++ b/community/grantlee-editor/APKBUILD
@@ -4,11 +4,11 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=grantlee-editor
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Utilities and tools to manage themes in KDE PIM applications "
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kontact.kde.org/"
license="GPL-2.0-or-later AND GFDL-1.2-only"
@@ -16,27 +16,29 @@ makedepends="
akonadi-mime-dev
extra-cmake-modules
grantleetheme-dev
- karchive5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
+ karchive-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
kimap-dev
- knewstuff5-dev
+ knewstuff-dev
kpimtextedit-dev
- ktexteditor5-dev
- kxmlgui5-dev
+ ktextaddons-dev
+ ktexteditor-dev
+ ktextwidgets-dev
+ kxmlgui-dev
libkleo-dev
messagelib-dev
pimcommon-dev
qgpgme
- qt5-qtbase-dev
- qt5-qtwebengine-dev
+ qt6-qtbase-dev
+ qt6-qtwebengine-dev
samurai
- syntax-highlighting5-dev
+ syntax-highlighting-dev
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/grantlee-editor.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/grantlee-editor-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -55,5 +57,5 @@ package() {
}
sha512sums="
-9de2b5054a643022145b30840d1b93a9424338ffe6cec90085b57dd1be02af9204ba7882a865eb79b7cae4a35dc6386af5d1c8e312050d6d1095a9c9821b8eb2 grantlee-editor-23.08.5.tar.xz
+e85bbc2e0c86fb42a4ca73e520e357640721e5c3e0a56977282900aada35ebb94315e08e5032bae13646b8c4104ff61f5ac4db51c2b22970eb3e64ec6183b828 grantlee-editor-24.02.0.tar.xz
"
diff --git a/community/grantleetheme/APKBUILD b/community/grantleetheme/APKBUILD
index 2f7f9ada373..0feb2aac020 100644
--- a/community/grantleetheme/APKBUILD
+++ b/community/grantleetheme/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=grantleetheme
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="KDE PIM mail related libraries"
# armhf blocked by extra-cmake-modules
@@ -14,9 +14,10 @@ url="https://kontact.kde.org/"
license="GPL-2.0-or-later AND LGPL-2.1-or-later"
depends_dev="
grantlee-dev
- ki18n5-dev
- knewstuff5-dev
- qt5-qtbase-dev
+ ki18n-dev
+ knewstuff-dev
+ ktexttemplate-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
doxygen
@@ -25,9 +26,9 @@ makedepends="$depends_dev
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/grantleetheme.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/grantleetheme-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -39,13 +40,12 @@ build() {
}
check() {
- # grantleethemetest is broken
- xvfb-run ctest --test-dir build --output-on-failure
+ xvfb-run ctest --test-dir build --output-on-failure -E "grantleetheme-grantleethemetest"
}
package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-3503a7d7ffb99510c52e3da9ce4585bb130f8acf78a7c00a7e07515f66ef930406a6d69891275cc297481f5ccc57395de44523ab42232c7e2c93fe4999e7d40b grantleetheme-23.08.5.tar.xz
+ec782295e94e601eac1958f4c9c13fd7adbf1068d66205cbe229ee721ae40a266b5a477d944f2e1b4a9d2fa6ac6fcf6845cd67aec5cfa870933ea8ba5e9624f5 grantleetheme-24.02.0.tar.xz
"
diff --git a/community/gwenview/APKBUILD b/community/gwenview/APKBUILD
index 583a974228d..36a912c50f7 100644
--- a/community/gwenview/APKBUILD
+++ b/community/gwenview/APKBUILD
@@ -4,50 +4,47 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=gwenview
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine -> purpose
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine -> purpose
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kde.org/applications/graphics/org.kde.gwenview"
pkgdesc="Fast and easy to use image viewer by KDE"
license="GPL-2.0-only"
depends="
- kimageformats5
- qt5-qtimageformats
+ kimageformats
+ qt6-qtimageformats
"
makedepends="
- baloo5-dev
+ baloo-dev
extra-cmake-modules
- kactivities5-dev
- kcolorpicker-dev
- kdoctools5-dev
- ki18n5-dev
- kiconthemes5-dev
+ kdoctools-dev
+ ki18n-dev
+ kiconthemes-dev
kimageannotator-dev
- kio5-dev
- kitemmodels5-dev
- knotifications5-dev
- kparts5-dev
- kwindowsystem5-dev
+ kio-dev
+ kitemmodels-dev
+ knotifications-dev
+ kparts-dev
+ kwindowsystem-dev
lcms2-dev
libjpeg-turbo-dev
libkdcraw-dev
libpng-dev
- purpose5-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
- qt5-qtx11extras-dev
+ plasma-activities-dev
+ purpose-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
checkdepends="
dbus
- kinit5
xvfb-run
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/graphics/gwenview.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/gwenview-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -58,7 +55,6 @@ build() {
}
check() {
- cd build
# urlutilstest and placetreemodeltest are broken
# recursivedirmodeltest and contextmanagertest requires running DBus
local skipped_tests="("
@@ -74,7 +70,7 @@ check() {
skipped_tests="$skipped_tests|$test"
done
skipped_tests="$skipped_tests)test"
- CTEST_OUTPUT_ON_FAILURE=TRUE dbus-run-session xvfb-run ctest -E "$skipped_tests"
+ dbus-run-session -- xvfb-run ctest --test-dir build --output-on-failure -E "$skipped_tests"
}
@@ -83,5 +79,5 @@ package() {
}
sha512sums="
-8607f17b57211e31efc709dbec1091f7ca1587db90877583222acb5a82a19340530068adb85ca1748b0c849cf1f6551bd2fefdc2d55dfae1446b3582dc1615b9 gwenview-23.08.5.tar.xz
+efbb976fbfd9f788a462bff060946710577aa4c1d81501a8897e4f3cb4c2782463d244980b1b8e442032d8cdde001cdc19d1ddd7482b493dc5e4146807d39e3e gwenview-24.02.0.tar.xz
"
diff --git a/community/incidenceeditor/APKBUILD b/community/incidenceeditor/APKBUILD
index 7b457419a72..cd1a559ffff 100644
--- a/community/incidenceeditor/APKBUILD
+++ b/community/incidenceeditor/APKBUILD
@@ -4,11 +4,11 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=incidenceeditor
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="KDE PIM incidence editor"
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine -> akonadi
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine -> akonadi
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kontact.kde.org/"
license="LGPL-2.0-or-later AND GPL-2.0-or-later"
@@ -17,47 +17,49 @@ depends_dev="
akonadi-mime-dev
calendarsupport-dev
eventviews-dev
- kcalendarcore5-dev
+ kcalendarcore-dev
kcalutils-dev
- kcodecs5-dev
+ kcodecs-dev
kdiagram-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
kldap-dev
kmailtransport-dev
+ ktextwidgets-dev
kmime-dev
libkdepim-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
+ doxygen
extra-cmake-modules
+ graphviz
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/incidenceeditor.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/incidenceeditor-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_QCH=ON
cmake --build build
}
check() {
- cd build
-
# akonadi-sqlite-incidencedatetimetest and akonadi-mysql-incidencedatetimetest require running DBus
# ktimezonecomboboxtest is broken
- CTEST_OUTPUT_ON_FAILURE=TRUE xvfb-run ctest -E "(akonadi-(sqlite|mysql)-incidencedatetime|ktimezonecombobox)test"
+ xvfb-run ctest --test-dir build --output-on-failure -E "(akonadi-(sqlite|mysql)-incidencedatetime|ktimezonecombobox)test"
}
package() {
DESTDIR="$pkgdir" cmake --install build
}
sha512sums="
-ced163397e03bc6b1c56326004ba9768b1f8ad69c8e033e2e852d3242582bb9c50b09c524c17b70dbce3054796af01503ccff309175cd3b9a5582344be2d8c73 incidenceeditor-23.08.5.tar.xz
+1b05ad9c670dac527f8794a8aa5e1bc73b65e97bf1438d039d248dda191c772adc45037fea28f2de8f9c5fdcdd2db927a2bfecf9d12dd601f788f7dc72ed5f7d incidenceeditor-24.02.0.tar.xz
"
diff --git a/community/isoimagewriter/APKBUILD b/community/isoimagewriter/APKBUILD
index b3007e9cec6..23900f5f409 100644
--- a/community/isoimagewriter/APKBUILD
+++ b/community/isoimagewriter/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: Bart Ribbers <bribbers@disroot.org>
# Maintainer: Bart Ribbers <bribbers@disroot.org>
+
+# The group tag is just to easily find this APKBUILD by some scripts for automation
+# group=kde-applications
pkgname=isoimagewriter
-pkgver=1.0.0
-pkgrel=1
+pkgver=24.02.0
+pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
url="https://community.kde.org/ISOImageWriter"
@@ -12,18 +15,19 @@ makedepends="
eudev-dev
extra-cmake-modules
gpgme-dev
- kauth5-dev
- kcoreaddons5-dev
- kcrash5-dev
- ki18n5-dev
- kiconthemes5-dev
- kwidgetsaddons5-dev
- qt5-qtbase-dev
+ kauth-dev
+ kcoreaddons-dev
+ kcrash-dev
+ ki18n-dev
+ kiconthemes-dev
+ kwidgetsaddons-dev
+ qt6-qtbase-dev
samurai
- solid5-dev
+ solid-dev
"
-source="https://download.kde.org/stable/isoimagewriter/$pkgver/isoimagewriter-$pkgver.tar.xz"
subpackages="$pkgname-lang"
+_repo_url="https://invent.kde.org/utilities/isoimagewriter.git"
+source="https://download.kde.org/stable/release-service/$pkgver/src/isoimagewriter-$pkgver.tar.xz"
build() {
cmake -B build -G Ninja \
@@ -34,8 +38,7 @@ build() {
}
check() {
- cd build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ ctest --test-dir build --output-on-failure
}
package() {
@@ -43,5 +46,5 @@ package() {
}
sha512sums="
-d50e8146cfde12d940ccfc1ed8ad71a69d203054e470d52e274589aa38d6fbdb018a79db4b63725c7b37acfedfa36b211cc79437e3f12668b8499d9ece3ee562 isoimagewriter-1.0.0.tar.xz
+d94a3205c912ca9d5e6852a63f75bbd3d484c1a2a4f473d9f9eba0c08ca4f0fa2ca12c8b83282a8204844f71c663b6a682cc6587e6e88b19af3ffc9b0ae85f9f isoimagewriter-24.02.0.tar.xz
"
diff --git a/community/itinerary/APKBUILD b/community/itinerary/APKBUILD
index c7e07669f30..d1b65944c3a 100644
--- a/community/itinerary/APKBUILD
+++ b/community/itinerary/APKBUILD
@@ -4,55 +4,57 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=itinerary
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
# ppc64le blocked by kitinerary
-# s390x blocked by qt5-qtdeclarative
+# s390x blocked by qt6-qtdeclarative
arch="aarch64 armv7 x86_64 x86"
url="https://invent.kde.org/pim/itinerary"
pkgdesc="Itinerary and boarding pass management application"
license="BSD-3-Clause AND LGPL-2.0-or-later"
depends="
kirigami-addons
- kirigami2
- kitemmodels5
+ kirigami
+ kitemmodels
kopeninghours
- prison5
- qt5-qtlocation
+ prison
+ qt6-qtlocation
tzdata
"
makedepends="
extra-cmake-modules
- kcontacts5-dev
- kcoreaddons5-dev
- kdbusaddons5-dev
- kholidays5-dev
- ki18n5-dev
+ kcontacts-dev
+ kcoreaddons-dev
+ kdbusaddons-dev
+ kholidays-dev
+ ki18n-dev
kirigami-addons-dev
kitinerary-dev
- knotifications5-dev
+ knotifications-dev
kosmindoormap-dev
kpkpass-dev
kpublictransport-dev
- networkmanager-qt5-dev
- qqc2-desktop-style5-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtlocation-dev
- qt5-qtquickcontrols2-dev
+ kunitconversion-dev
+ networkmanager-qt-dev
+ qqc2-desktop-style-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtlocation-dev
samurai
shared-mime-info
- solid5-dev
+ solid-dev
zlib-dev
"
checkdepends="
dbus
+ qqc2-desktop-style
+ sonnet
xvfb-run
"
+subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/pim/itinerary.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/itinerary-$pkgver.tar.xz"
-subpackages="$pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -64,7 +66,7 @@ build() {
check() {
# tripgrouptest and timelinemodel test are broken
- dbus-run-session xvfb-run ctest --test-dir build --output-on-failure -E "(tripgroup|timelinemodel)test"
+ dbus-run-session xvfb-run ctest --test-dir build --output-on-failure -E "(tripgroup|timelinemodel|itinerary-self-)test"
}
package() {
@@ -72,5 +74,5 @@ package() {
}
sha512sums="
-cb3540a130d5c766dba2ad4b5c4529dcd8c1ffcaa95544ac46ec20e036ab7cdb78c0e2fe47fe4500d497ab5374bf820bb733d226696b5072b3a887cf554f7039 itinerary-23.08.5.tar.xz
+822a0aca57bd8285bb18cde33d42daafbc09d5d603c30c673321ebb2d6c03f8e18ebc8b6795186ea3a3dfac88e6578b6348ade7a61e1fd3cdcef2d3b01c49064 itinerary-24.02.0.tar.xz
"
diff --git a/community/juk/APKBUILD b/community/juk/APKBUILD
index 7255a98aa34..3f41271df20 100644
--- a/community/juk/APKBUILD
+++ b/community/juk/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=juk
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -14,31 +14,32 @@ license="GPL-2.0-or-later"
depends="phonon-backend-gstreamer"
makedepends="
extra-cmake-modules
- kcompletion5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdoctools5-dev
- kglobalaccel5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
- kjobwidgets5-dev
- knotifications5-dev
- ktextwidgets5-dev
- kwallet5-dev
- kwidgetsaddons5-dev
- kwindowsystem5-dev
- kxmlgui5-dev
+ kcompletion-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdoctools-dev
+ kglobalaccel-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ kjobwidgets-dev
+ knotifications-dev
+ kstatusnotifieritem-dev
+ ktextwidgets-dev
+ kwallet-dev
+ kwidgetsaddons-dev
+ kwindowsystem-dev
+ kxmlgui-dev
phonon-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
taglib-dev
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/multimedia/juk.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/juk-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -57,5 +58,5 @@ package() {
}
sha512sums="
-26a4f4a2732d05daf8b1a54f722aadf301cef791eaa21ce171fc7b1504dd0dd5df6e5814bb5062545bbdb8fffd42cfb5ec4211cd889b9a9fe2f01e578003cd79 juk-23.08.5.tar.xz
+a62f33022625c7f354d2ac4e4062ca8e0f568ece1df1d7d322b609e40a5c9af78823183f03881f5a71772406a2b229abc60687522e1fb11929b19b146cb15bf5 juk-24.02.0.tar.xz
"
diff --git a/community/k3b/APKBUILD b/community/k3b/APKBUILD
index 2a0f48be229..e872edd831f 100644
--- a/community/k3b/APKBUILD
+++ b/community/k3b/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=k3b
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -19,40 +19,41 @@ depends="
makedepends="
extra-cmake-modules
flac-dev
- karchive5-dev
- kcmutils5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kdoctools5-dev
- kfilemetadata5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
- kjobwidgets5-dev
- knewstuff5-dev
- knotifications5-dev
- knotifyconfig5-dev
- kservice5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ karchive-dev
+ kcmutils-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kdoctools-dev
+ kfilemetadata-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ kjobwidgets-dev
+ knewstuff-dev
+ knotifications-dev
+ knotifyconfig-dev
+ kservice-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
lame-dev
libdvdread-dev
libkcddb-dev
libmad-dev
libsamplerate-dev
libvorbis-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
shared-mime-info
- solid5-dev
+ solid-dev
taglib-dev
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/multimedia/k3b.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/k3b-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
+ -DBUILD_WITH_QT6=ON \
-DCMAKE_BUILD_TYPE=MinSizeRel \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -71,5 +72,5 @@ package() {
}
sha512sums="
-d7e951d4aea07e8e55279b2a835e7b06e7fdec34a9accaedf1846db238eff215d7e56fc4c6fa8b80e2fa50f36795d8bad500c6ec4afa9ebfb34df86545a74156 k3b-23.08.5.tar.xz
+49072adb6651d532888046984f3cbd3e6bdd1769f87537d3c723223b1ac1f93e5fcef5f0c6eb1d99bbc8c34792d5c559b7cb2d7e105b0ec927abbf35494e1522 k3b-24.02.0.tar.xz
"
diff --git a/community/kaccounts-integration/APKBUILD b/community/kaccounts-integration/APKBUILD
index acaf06ba246..b1dccbd9fb5 100644
--- a/community/kaccounts-integration/APKBUILD
+++ b/community/kaccounts-integration/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kaccounts-integration
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# s390x, ppc64le and riscv64 blocked by signon-ui -> qt5-qtwebengine
@@ -17,23 +17,23 @@ depends="
signon-ui
"
depends_dev="
- kcmutils5-dev
- kcoreaddons5-dev
- kdbusaddons5-dev
- kdeclarative5-dev
- ki18n5-dev
+ kcmutils-dev
+ kcoreaddons-dev
+ kdbusaddons-dev
+ kdeclarative-dev
+ ki18n-dev
libaccounts-qt-dev
qcoro-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
signond-dev
"
makedepends="$depends_dev
extra-cmake-modules
samurai
"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/network/kaccounts-integration.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kaccounts-integration-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
options="!check" # No tests available
build() {
@@ -49,5 +49,5 @@ package() {
}
sha512sums="
-dd959cf18dd91586b689c9fd832a2b8d62ef0630985078405b220007727bd9f773664b94d2922d1d9fd97b4e8e0f3ec1fae3a3bbbe0532241b96374045b35423 kaccounts-integration-23.08.5.tar.xz
+4ed5fe6147e0cc0b810e4caea82fe12c272b1b8bf0e120dfef3ca0fb320be2c4c75568d1a7a8a6e03f86d70f6e42360f6594a0daf59227799da6c349293987cd kaccounts-integration-24.02.0.tar.xz
"
diff --git a/community/kaccounts-providers/APKBUILD b/community/kaccounts-providers/APKBUILD
index 8412050a351..6a2c0880f44 100644
--- a/community/kaccounts-providers/APKBUILD
+++ b/community/kaccounts-providers/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kaccounts-providers
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# s390x, ppc64le and riscv64 blocked by qt5-qtwebengine
@@ -12,25 +12,23 @@ arch="all !armhf !ppc64le !s390x !riscv64"
url="https://kde.org/applications/internet/"
pkgdesc="Small system to administer web accounts for the sites and services across the KDE desktop"
license="GPL-2.0-or-later"
-depends="
- signon-plugin-oauth2
- "
+depends="signon-plugin-oauth2"
makedepends="
extra-cmake-modules
kaccounts-integration-dev
- kdeclarative5-dev
- ki18n5-dev
- kio5-dev
- kpackage5-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtwebengine-dev
+ kdeclarative-dev
+ ki18n-dev
+ kio-dev
+ kpackage-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtwebengine-dev
samurai
"
+subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/network/kaccounts-providers.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kaccounts-providers-$pkgver.tar.xz"
options="!check" # No tests
-subpackages="$pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -45,5 +43,5 @@ package() {
}
sha512sums="
-740a4cef4fb555add1559eddba606537b452cbb0e67b8ce0e21079dd82aa5196c3fa975a8b121e43de69ca19d2f0744ab67a7581b634b931a52ead91d74dc074 kaccounts-providers-23.08.5.tar.xz
+80db90a036ddff40ba2be67291634cf59d4df236a8304b55d0f9b6f9dc5edef16e6cc1424b890d56b321175d14c509b4521b6181840238018ebcec70c56df556 kaccounts-providers-24.02.0.tar.xz
"
diff --git a/community/kactivitymanagerd/APKBUILD b/community/kactivitymanagerd/APKBUILD
index f502209be1b..40d9a030f70 100644
--- a/community/kactivitymanagerd/APKBUILD
+++ b/community/kactivitymanagerd/APKBUILD
@@ -4,26 +4,26 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-plasma
pkgname=kactivitymanagerd
-pkgver=5.27.10
+pkgver=6.0.0
pkgrel=0
pkgdesc="System service to manage user's activities and track the usage patterns"
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://kde.org/plasma-desktop/"
license="GPL-2.0-only OR GPL-3.0-only"
-depends="qt5-qtbase-sqlite"
+depends="qt6-qtbase-sqlite"
makedepends="
boost-dev
extra-cmake-modules
- kconfig5-dev
- kcoreaddons5-dev
- kdbusaddons5-dev
- kglobalaccel5-dev
- ki18n5-dev
- kio5-dev
- kwindowsystem5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kdbusaddons-dev
+ kglobalaccel-dev
+ ki18n-dev
+ kio-dev
+ kwindowsystem-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
samurai
"
@@ -31,9 +31,9 @@ case "$pkgver" in
*.90*) _rel=unstable;;
*) _rel=stable;;
esac
-_repo_url="https://invent.kde.org/plasma/kactivitymanagerd.git"
-source="https://download.kde.org/$_rel/plasma/$pkgver/kactivitymanagerd-$pkgver.tar.xz"
subpackages="$pkgname-lang"
+_repo_url="https://invent.kde.org/plasma/kactivitymanagerd.git"
+source="https://download.kde.org/stable/plasma/$pkgver/kactivitymanagerd-$pkgver.tar.xz"
build() {
cmake -B build -G Ninja \
@@ -54,5 +54,5 @@ package() {
rm -r "$pkgdir"/usr/lib/systemd
}
sha512sums="
-98692478469446fe52f42c53c4c32195141699d1ef9cc4979991e967630e4e0a9199f776a11a013fcd62a4fd5dcb878cb874ad613eaef7cd2eca8e0527d07ee0 kactivitymanagerd-5.27.10.tar.xz
+86751e7566f9f16c3c3e62d4a2dae497e49ce65386c9637b00eaa3bc873599f477b5ed4f8af13ecd2fb2ef5015951729ab10d6c8df1c636fc53f6d63bb4435e3 kactivitymanagerd-6.0.0.tar.xz
"
diff --git a/community/kaddressbook/APKBUILD b/community/kaddressbook/APKBUILD
index 88b8a7600d9..8710494ede2 100644
--- a/community/kaddressbook/APKBUILD
+++ b/community/kaddressbook/APKBUILD
@@ -4,10 +4,10 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kaddressbook
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine
arch="all !armhf !ppc64le !s390x !riscv64"
url="https://apps.kde.org/kaddressbook/"
pkgdesc="Address Book application to manage your contacts"
@@ -19,10 +19,10 @@ makedepends="
extra-cmake-modules
gpgme-dev
grantleetheme-dev
- kcmutils5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
+ kcmutils-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
kontactinterface-dev
kpimtextedit-dev
kuserfeedback-dev
@@ -30,13 +30,13 @@ makedepends="
libkdepim-dev
libkleo-dev
pimcommon-dev
- prison5-dev
- qt5-qtbase-dev
+ prison-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/kaddressbook.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kaddressbook-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja\
@@ -55,5 +55,5 @@ package() {
}
sha512sums="
-906efc3c2c947d02df0fdb6134dc0ececd0745d62f1f761195987c2c15698e9decca89de166bc46d17043f5d1e8c71ae1d9e6ee62a5737150da9d0c10429f9b1 kaddressbook-23.08.5.tar.xz
+71c5e41575513ba5bec3a3d2443ebcc04466756fe3a584198f32bd91e9e693aa4da32d2b221acff67884cb31c9f9b66c06634750d2a12ebd2de7ee92ac9169b1 kaddressbook-24.02.0.tar.xz
"
diff --git a/community/kajongg/APKBUILD b/community/kajongg/APKBUILD
index 68b476d5202..281ed24a785 100644
--- a/community/kajongg/APKBUILD
+++ b/community/kajongg/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kajongg
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="noarch !armhf"
@@ -17,17 +17,17 @@ depends="
"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kconfigwidgets5-dev
- kdoctools5-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kdoctools-dev
libkmahjongg-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang $pkgname-pyc"
_repo_url="https://invent.kde.org/games/kajongg.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kajongg-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang $pkgname-pyc"
build() {
cmake -B build -G Ninja \
@@ -51,5 +51,5 @@ pyc() {
}
sha512sums="
-3a2eab57e71dc74e9f846705aebf827190d7927993d8442689961f42ec9ca5970f104a9ec14a80cabe8b18ef14fd44df8290eaf34914445ec4e4fdd32c718f10 kajongg-23.08.5.tar.xz
+9b60c43c3fd8b5741f83d9cf215f645c3073226310211aaffa47c42c5ab41ea0fa66bd598cbbd1dfe074054a685284d38c50536dd42428a2150c7dac63c1dfb2 kajongg-24.02.0.tar.xz
"
diff --git a/community/kalarm/APKBUILD b/community/kalarm/APKBUILD
index d896738e65a..68e0c6f6153 100644
--- a/community/kalarm/APKBUILD
+++ b/community/kalarm/APKBUILD
@@ -4,12 +4,12 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kalarm
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Personal alarm scheduler"
url="https://kontact.kde.org/"
# armhf blocked by extra-cmake-modules
-# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine -> akonadi
+# ppc64le, s390x and riscv64 blocked by qt6-qtwebengine -> akonadi
arch="all !armhf !ppc64le !s390x !riscv64"
license="GPL-2.0-or-later AND GFDL-1.2-only"
depends="kdepim-runtime"
@@ -18,50 +18,49 @@ makedepends="
akonadi-dev
akonadi-mime-dev
extra-cmake-modules
- kauth5-dev
- kcalendarcore5-dev
+ kauth-dev
+ kcalendarcore-dev
kcalutils-dev
- kcmutils5-dev
- kcodecs5-dev
- kcompletion5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kdbusaddons5-dev
- kdelibs4support-dev
- kdoctools5-dev
- kglobalaccel5-dev
- kguiaddons5-dev
- kholidays5-dev
- ki18n5-dev
- kiconthemes5-dev
+ kcmutils-dev
+ kcodecs-dev
+ kcompletion-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ kglobalaccel-dev
+ kguiaddons-dev
+ kholidays-dev
+ ki18n-dev
+ kiconthemes-dev
kidentitymanagement-dev
- kidletime5-dev
+ kidletime-dev
kimap-dev
- kio5-dev
- kjobwidgets5-dev
+ kio-dev
+ kjobwidgets-dev
kmailtransport-dev
kmime-dev
- knotifications5-dev
- knotifyconfig5-dev
+ knotifications-dev
+ knotifyconfig-dev
kpimtextedit-dev
- kservice5-dev
- kwidgetsaddons5-dev
- kwindowsystem5-dev
- kxmlgui5-dev
+ kservice-dev
+ kstatusnotifieritem-dev
+ ktextwidgets-dev
+ kwidgetsaddons-dev
+ kwindowsystem-dev
+ kxmlgui-dev
libkdepim-dev
libxslt-dev
mailcommon-dev
phonon-dev
pimcommon-dev
qgpgme
- qt5-qtbase-dev
- qt5-qtx11extras-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/pim/kalarm.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kalarm-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # Tests are broken
build() {
cmake -B build -G Ninja\
@@ -72,7 +71,7 @@ build() {
}
check() {
- ctest --test-dir build --output-on-failure
+ ctest --test-dir build --output-on-failure -E "(kadatetime|kaevent)test"
}
package() {
@@ -80,5 +79,5 @@ package() {
}
sha512sums="
-f9c2f1f8228e85c0fe10c6837948aa8f9fda7056edb8d1aa51f43ade1852236d4030b8720940dd3cbfba17339b8ffb971131baa747f114e87b88d4c9f826d2f1 kalarm-23.08.5.tar.xz
+8b4ee0a0f392aa0fe84564ff053bf9be5610295db0ac1869d306c36f81ad4a9068b44b95abe118cbe1dbf4c43df01e5a3a93ae66eb228d3a37d2d893a14e778f kalarm-24.02.0.tar.xz
"
diff --git a/community/kalgebra/APKBUILD b/community/kalgebra/APKBUILD
index 5c1f1159af5..b702fe7882f 100644
--- a/community/kalgebra/APKBUILD
+++ b/community/kalgebra/APKBUILD
@@ -4,9 +4,9 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kalgebra
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://edu.kde.org/kalgebra/"
pkgdesc="2D and 3D Graph Calculator"
@@ -14,23 +14,23 @@ license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
analitza-dev
extra-cmake-modules
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- kwidgetsaddons5-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ kwidgetsaddons-dev
+ libplasma-dev
ncurses-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtsvg-dev
readline-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/education/kalgebra.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kalgebra-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -49,5 +49,5 @@ package() {
}
sha512sums="
-fec2aeebcdcf5421b120cfccc9aca377cb5bb996d53eab12aa7f92ca146adcc184b9812d8b386b43424cdaa43752720c443eff3f147c75aa6972cadeadc6fb03 kalgebra-23.08.5.tar.xz
+7a55eded467099021fbf3d6726f5e08a1511d114b854437ca3df5660619bd8f15b5ecf364fb6790deaa62c9d4a716368c176978e346848c51f2b99afe718ef73 kalgebra-24.02.0.tar.xz
"
diff --git a/community/kalk/APKBUILD b/community/kalk/APKBUILD
index 5ddf10044a4..78d43830a4f 100644
--- a/community/kalk/APKBUILD
+++ b/community/kalk/APKBUILD
@@ -4,29 +4,28 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kalk
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="A powerful cross-platfrom calculator application"
-arch="all !armhf" # Blocked by qt5-qtdeclarative
-url="https://invent.kde.org/plasma-mobile/kalk"
+arch="all !armhf" # Blocked by qt6-qtdeclarative
+url="https://invent.kde.org/utilities/kalk"
license="GPL-3.0-or-later"
-depends="qt5-qtfeedback"
makedepends="
bison
extra-cmake-modules
flex
gmp-dev
- kconfig5-dev
- kcoreaddons5-dev
- ki18n5-dev
- kirigami2-dev
- kunitconversion5-dev
+ kconfig-dev
+ kcoreaddons-dev
+ ki18n-dev
+ kirigami-dev
+ kunitconversion-dev
+ libqalculate-dev
mpfr-dev
- qt5-qtbase-dev
- qt5-qtfeedback-dev
- qt5-qtquickcontrols2-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/utilities/kalk.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kalk-$pkgver.tar.xz"
@@ -38,10 +37,7 @@ build() {
}
check() {
- cd build
-
- # inputmanagertest_de is broken, https://invent.kde.org/plasma-mobile/kalk/-/issues/25
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E "inputmanagertest_de|knumbertest"
+ ctest --test-dir build --output-on-failure -E "knumbertest|inputmanagertest"
}
package() {
@@ -49,5 +45,5 @@ package() {
}
sha512sums="
-9304f573f08b8205e0c61ef1e422a9af54fa9562f605ecdc9066164c17e4d0354d537457019462c9067fb74dee9bdeb961fe6b25f3fb9fa98f617b6102510f17 kalk-23.08.5.tar.xz
+196cffbea1a99fca2d8e576091c3f348cec882177023df11236fa3c2f1fc7166032643c6f16fc63861928dd27755550d927adbe80bf912be883ac9fe9e78e83e kalk-24.02.0.tar.xz
"
diff --git a/community/kalzium/APKBUILD b/community/kalzium/APKBUILD
index bad694437a1..4957361eccb 100644
--- a/community/kalzium/APKBUILD
+++ b/community/kalzium/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kalzium
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -14,29 +14,29 @@ license="GPL-2.0-or-later AND LGPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
eigen-dev
extra-cmake-modules
- karchive5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kdoctools5-dev
- khtml-dev
- ki18n5-dev
- knewstuff5-dev
- kparts5-dev
- kplotting5-dev
- kunitconversion5-dev
- kwidgetsaddons5-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ karchive-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ knewstuff-dev
+ kparts-dev
+ kplotting-dev
+ kunitconversion-dev
+ kwidgetsaddons-dev
+ qt6-qtbase-dev
+ qt6-qtscxml-dev
+ qt6-qtsvg-dev
samurai
- solid5-dev
+ solid-dev
"
_repo_url="https://invent.kde.org/education/kalzium.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kalzium-$pkgver.tar.xz"
subpackages="$pkgname-doc $pkgname-lang $pkgname-dev"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
+ -DBUILD_WITH_QT6=ON \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib
@@ -52,5 +52,5 @@ package() {
}
sha512sums="
-102f16f035dba09eddcd10f8454d8aa32f850611b1ab4638417b3da7b1f7eed46e87b10282b44d519d5667a5d7ea03e1da8a1b99ec57fe8a93f370b0c00b05f7 kalzium-23.08.5.tar.xz
+f1abca41dac6e2acbe4d319fc53119b772459d8d2d2595206eb2ccb8ecf712331263f798b0fa3cfd5e7e3d115f0d45b4fcdf5e2d6c042d03c3001685ef18c084 kalzium-24.02.0.tar.xz
"
diff --git a/community/kamera/APKBUILD b/community/kamera/APKBUILD
index 29ea2b110bf..9dbcaf7cbc1 100644
--- a/community/kamera/APKBUILD
+++ b/community/kamera/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kamera
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,21 +13,20 @@ pkgdesc="KDE integration for gphoto2 cameras"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kcmutils5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- kxmlgui5-dev
+ kcmutils-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ kxmlgui-dev
libgphoto2-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
"
_repo_url="https://invent.kde.org/graphics/kamera.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kamera-$pkgver.tar.xz"
subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -46,5 +45,5 @@ package() {
}
sha512sums="
-2d9eaf6cc0c40b13f81a2e671faa73972c923bb3fd3f4e7ab9d3586b3a530513506fe63d4f76c68e08b514c1e8c012a08753fb5e4b395b6e8453740d4ca18fd6 kamera-23.08.5.tar.xz
+e0ba0b8e3290040f9859e958b3671f92592dff7b0bec57343ff53fc40790ccdcaadda0a504a3242b75ecb032a4c315e79dba37faa2d70d543aaeb9982463016e kamera-24.02.0.tar.xz
"
diff --git a/community/kamoso/APKBUILD b/community/kamoso/APKBUILD
index 58aab53db96..b0adbca5a3f 100644
--- a/community/kamoso/APKBUILD
+++ b/community/kamoso/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kamoso
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
# ppc64le, s390x and riscv64 blocked by qt5-qtwebengine -> purpose
@@ -16,7 +16,6 @@ depends="
gst-plugins-bad
gst-plugins-good
kirigami2
- qt5-qtquickcontrols2
"
makedepends="
extra-cmake-modules
@@ -33,9 +32,9 @@ makedepends="
qt5-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/multimedia/kamoso.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kamoso-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
options="!check" # Broken
build() {
@@ -55,5 +54,5 @@ package() {
}
sha512sums="
-1c89795a67cf10eae4769d7505f502771c6f1951ff056ca810801cf3dfbb86c188b75898842c5d9e782005605560371edcb2e2237dc7b2b698741c55b8dad519 kamoso-23.08.5.tar.xz
+9a1271cc974d01f85ea675b4d8a839ed5d8515cc9ba8041184139b39706cf8abcdc1e46dfc6e0d3c9bb13fa10e5a7667ce9137033e22213dd7ff687807089b3e kamoso-24.02.0.tar.xz
"
diff --git a/community/kanagram/APKBUILD b/community/kanagram/APKBUILD
index a4889b1cf1d..0e99f447f57 100644
--- a/community/kanagram/APKBUILD
+++ b/community/kanagram/APKBUILD
@@ -4,34 +4,33 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kanagram
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
arch="all !armhf"
url="https://edu.kde.org/kanagram/"
pkgdesc="Letter Order Game"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdeclarative5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- knewstuff5-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdeclarative-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ knewstuff-dev
libkeduvocdocument-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
samurai
- sonnet5-dev
+ sonnet-dev
"
_repo_url="https://invent.kde.org/education/kanagram.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kanagram-$pkgver.tar.xz"
subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -50,5 +49,5 @@ package() {
}
sha512sums="
-03073b96783e77108d2209959263d15f256bd5fc6511be9aab9781bbebc89cb20e2ab90679cd244254ea85d39fc1e1ceabee32f0ee986bba2faf6b9265f7838b kanagram-23.08.5.tar.xz
+64f6dc6466f8ebcb787a7487a92471ee7777cc9b35c86b47f8805508cccb91fd17b647b6dc5194adf42dd3ee21da66dab8866298bacb9dfe900717a844af294f kanagram-24.02.0.tar.xz
"
diff --git a/community/kapidox5/APKBUILD b/community/kapidox/APKBUILD
index 1df33f67793..410f3eb66b5 100644
--- a/community/kapidox5/APKBUILD
+++ b/community/kapidox/APKBUILD
@@ -3,8 +3,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=kapidox5
-pkgver=5.115.0
+pkgname=kapidox
+pkgver=6.0.0
pkgrel=0
arch="noarch !armhf" # armhf blocked by extra-cmake-modules
pkgdesc="Scripts and data for building API documentation (dox) in a standard format and style"
@@ -27,10 +27,8 @@ checkdepends="bash"
subpackages="$pkgname-pyc"
_repo_url="https://invent.kde.org/frameworks/kapidox.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kapidox-$pkgver.tar.xz"
-options="!check" # No useful tests
-builddir="$srcdir/kapidox-$pkgver"
-
-replaces="kapidox<=5.110.0-r0"
+# No useful tests
+options="!check"
build() {
gpep517 build-wheel \
@@ -44,5 +42,5 @@ package() {
}
sha512sums="
-6e2911a619e9520b679987deb4a3460d5ef57887185dbb7a72b91196441a8f8d0d3e0ddef5d41bdc74c4c05823c4cc23f620faeb973ae7ff83bed06b17d43710 kapidox-5.115.0.tar.xz
+9c0b9a4070f88f6b4cc331439fb7676e34db532dfe2de248584f95faeaa60d68298b57b55d7501eb6af83b5a171ec57bf653e4612af2160d67d228c3b68df39c kapidox-6.0.0.tar.xz
"
diff --git a/community/kapman/APKBUILD b/community/kapman/APKBUILD
index 5cfbcdd403e..6cb41848867 100644
--- a/community/kapman/APKBUILD
+++ b/community/kapman/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kapman
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,24 +13,23 @@ pkgdesc="A clone of the well known game Pac-Man"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kxmlgui5-dev
+ kconfig-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kxmlgui-dev
libkdegames-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/kapman.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kapman-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -49,5 +48,5 @@ package() {
}
sha512sums="
-d3b45c5090ea7376caa18dd2691e0cce031a53bf2a0562aea71cf05ffdf04fa2d20cd41910951756f6ade49ea7c2ca74db57f15a43763f8d8dd5507f54cdd7e5 kapman-23.08.5.tar.xz
+70db54b4ccf882e36dc41b01e6441849609f599b424aa022b67301bc26b09feaf3e06d4be78bd98c4112c5bf910c56254f851706e6a85ca1bd7397d19d9f9160 kapman-24.02.0.tar.xz
"
diff --git a/community/kapptemplate/APKBUILD b/community/kapptemplate/APKBUILD
index 6fd68ff7569..21e9d9a4f65 100644
--- a/community/kapptemplate/APKBUILD
+++ b/community/kapptemplate/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kapptemplate
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,19 +13,19 @@ pkgdesc="Factory for the easy creation of KDE/Qt components and programs"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- karchive5-dev
- kcompletion5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- qt5-qtbase-dev
+ karchive-dev
+ kcompletion-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/sdk/kapptemplate.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kapptemplate-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -44,5 +44,5 @@ package() {
}
sha512sums="
-f3acc363b7db209035b91b5492bd95159eb73303c9ef1780fc78cd10e7c247b5096e67a2975adba081e49d9ae4bb99874167b2fe550172160356989fb73c96cd kapptemplate-23.08.5.tar.xz
+cca1e66ab71bd4ebebae120d504846075e6ebfbf719fbf2ef837d5116cccf082f26d32d4ec9b03bdcd28aa493434d3ff34d336a592fd0c6e8615dfc19cad0868 kapptemplate-24.02.0.tar.xz
"
diff --git a/community/kxmlrpcclient5/APKBUILD b/community/karchive/APKBUILD
index d37559815f8..a7b988fa32f 100644
--- a/community/kxmlrpcclient5/APKBUILD
+++ b/community/karchive/APKBUILD
@@ -3,30 +3,29 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=kxmlrpcclient5
-pkgver=5.115.0
+pkgname=karchive
+pkgver=6.0.0
pkgrel=0
-pkgdesc="XML-RPC client library for KDE"
+pkgdesc="Qt addon providing access to numerous types of archives"
# armhf blocked by extra-cmake-modules
arch="all !armhf"
-url="https://projects.kde.org/projects/kde/pim/kxmlrpcclient"
-license="BSD-2-Clause"
+url="https://community.kde.org/Frameworks"
+license="LGPL-2.0-or-later AND LGPL-2.1-or-later"
depends_dev="
- ki18n5-dev
- kio5-dev
+ bzip2-dev
+ qt6-qtbase-dev
+ xz-dev
"
makedepends="$depends_dev
doxygen
extra-cmake-modules
- qt5-qttools-dev
+ graphviz
+ qt6-qttools-dev
samurai
"
-_repo_url="https://invent.kde.org/frameworks/kxmlrpcclient.git"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kxmlrpcclient-$pkgver.tar.xz"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-builddir="$srcdir/kxmlrpcclient-$pkgver"
-
-replaces="kxmlrpcclient<=5.110.0-r0"
+_repo_url="https://invent.kde.org/frameworks/karchive.git"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/karchive-$pkgver.tar.xz"
build() {
cmake -B build -G Ninja \
@@ -46,5 +45,5 @@ package() {
}
sha512sums="
-438c05049c9a030a1a640197aa56b9d0d96ac01f4964bb200f5e2945a48e7089f634869bc904b67f437853709aedd990deca5d6060c3826e4f08371c71e1af1f kxmlrpcclient-5.115.0.tar.xz
+b4bb87908d53691f0694c4cbdee60e0ee27f3881760dce762d997f9e9f2fba73d9c4a7d9e4583cd2f5f4be905ee30254876d94da23f1e78052dae207689fa5ed karchive-6.0.0.tar.xz
"
diff --git a/community/karchive5/APKBUILD b/community/karchive5/APKBUILD
index c2d6d398a17..9e0e7dff72d 100644
--- a/community/karchive5/APKBUILD
+++ b/community/karchive5/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
pkgname=karchive5
-pkgver=5.115.0
+pkgver=6.0.0
pkgrel=0
pkgdesc="Qt5 addon providing access to numerous types of archives"
# armhf blocked by extra-cmake-modules
@@ -48,5 +48,5 @@ package() {
}
sha512sums="
-f17baaaa850368ae517d0750a5100020448a21276c1ed5f304628b34b6e2634a9c151985f28306e0217ac17a4e91afa82562afe5cd5ec4558d16074e161e6e5a karchive-5.115.0.tar.xz
+b4bb87908d53691f0694c4cbdee60e0ee27f3881760dce762d997f9e9f2fba73d9c4a7d9e4583cd2f5f4be905ee30254876d94da23f1e78052dae207689fa5ed karchive-6.0.0.tar.xz
"
diff --git a/community/kasts/APKBUILD b/community/kasts/APKBUILD
index 93d45a891a0..4bcd02de02b 100644
--- a/community/kasts/APKBUILD
+++ b/community/kasts/APKBUILD
@@ -4,46 +4,43 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kasts
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Kirigami-based podcast player"
# armhf blocked by extra-cmake-modules
-# s390x blocked by vlc-dev
-arch="all !armhf !s390x"
+arch="all !armhf"
url="https://invent.kde.org/plasma-mobile/kasts"
license="LicenseRef-KDE-Accepted-GPL AND CC0-1.0"
depends="
gst-plugins-good
kirigami-addons
- kirigami2
- qt5-qtbase-sqlite
- vlc
+ kirigami
+ qt6-qtbase-sqlite
"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kcoreaddons5-dev
- ki18n5-dev
+ kcolorscheme-dev
+ kconfig-dev
+ kcoreaddons-dev
+ ki18n-dev
kirigami-addons-dev
- kirigami2-dev
- networkmanager-qt5-dev
+ kirigami-dev
+ networkmanager-qt-dev
openssl-dev>3
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtmultimedia-dev
+ qt6-qtsvg-dev
qtkeychain-dev
- qt5-qtmultimedia-dev
- qt5-qtquickcontrols2-dev
- qt5-qtsvg-dev
samurai
- syndication5-dev
+ syndication-dev
taglib-dev
- threadweaver5-dev
+ threadweaver-dev
vlc-dev
"
subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/multimedia/kasts.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kasts-$pkgver.tar.xz"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -62,5 +59,5 @@ package() {
}
sha512sums="
-bfe2fa6d0bc628c51fa0db13a434e80c08a29e4bae95bccbaf6d029c424d6277eea9d0625f9de69ad6f011c482cd571000566ac838e22b03c57e8671ff4c3bd8 kasts-23.08.5.tar.xz
+9920d10210a718e0b8f277286b1fd710979346a1687335e5c669149582330d28a7346a70259b39005f12ec2599804422f4899484af975f163525729c288c759b kasts-24.02.0.tar.xz
"
diff --git a/community/kate/APKBUILD b/community/kate/APKBUILD
index 9f66f831be6..efe85a65530 100644
--- a/community/kate/APKBUILD
+++ b/community/kate/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kate
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -14,33 +14,40 @@ license="LGPL-2.0-only AND LGPL-2.0-or-later"
depends="kate-common"
makedepends="
extra-cmake-modules
- kactivities5-dev
- kconfig5-dev
- kcrash5-dev
- kdoctools5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
- kitemmodels5-dev
- kjobwidgets5-dev
- knewstuff5-dev
- kparts5-dev
- ktexteditor5-dev
+ kconfig-dev
+ kcrash-dev
+ kdoctools-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ kitemmodels-dev
+ kjobwidgets-dev
+ knewstuff-dev
+ kparts-dev
+ ktexteditor-dev
kuserfeedback-dev
- kwindowsystem5-dev
- kxmlgui5-dev
- plasma-framework5-dev
- qt5-qtbase-dev
+ kwindowsystem-dev
+ kxmlgui-dev
+ plasma-activities-dev
+ libplasma-dev
+ qt6-qtbase-dev
samurai
- threadweaver5-dev
+ threadweaver-dev
"
checkdepends="xvfb-run"
+subpackages="
+ $pkgname-doc
+ $pkgname-lang
+ kate-common:kate_common
+ kwrite-doc:kwrite_doc
+ kwrite-lang:kwrite_lang
+ kwrite:kwrite
+ "
_repo_url="https://invent.kde.org/utilities/kate.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kate-$pkgver.tar.xz"
-subpackages="kate-common:kate_common kwrite:kwrite kwrite-doc:kwrite_doc kwrite-lang:kwrite_lang $pkgname-doc $pkgname-lang"
build() {
- cmake -B build/kate -G Ninja \
+ cmake -B build/kate -G Ninja \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -56,10 +63,9 @@ build() {
}
check() {
- cd build/kate
# kateapp-session_manager_test and kateapp-filetree_model_test are broken
# kateapp-sessions_action_test requires OpenGL
- CTEST_OUTPUT_ON_FAILURE=TRUE xvfb-run ctest -E "(kateapp-session_manager|kateapp-sessions_action|kateapp-filetree_model)_test" -j1
+ xvfb-run ctest --test-dir build/kate --output-on-failure -E "kateapp-(session(_manager|s_action)|filetree_model|bytearraysplitter|diffwidget|location_history|kate_view_mgmt)_test(|s)" -j1
}
package() {
@@ -76,15 +82,12 @@ kate_common() {
kwrite() {
depends="kate-common"
- cd "$builddir"
- DESTDIR="$subpkgdir" cmake --install build/kwrite
-
- mkdir -p "$subpkgdir"/usr/share/doc/$subpkgname
- mv "$subpkgdir"/usr/share/doc/HTML "$subpkgdir"/usr/share/doc/$subpkgname/
+ DESTDIR="$subpkgdir" cmake --install "$builddir"/build/kwrite
# Man package only exists for Kate
rm -r "$subpkgdir"/usr/share/man
-
+ rm -r "$subpkgdir"/usr/share/doc
+ rm -r "$subpkgdir"/usr/share/locale
rm -r "$subpkgdir"/usr/lib
}
@@ -92,22 +95,32 @@ kwrite_doc() {
pkgdesc="KWrite documentation"
install_if="docs kwrite=$pkgver-r$pkgrel"
- mkdir -p "$subpkgdir"/usr/share/doc/kwrite
- mv "$subpkgdir"/../kwrite/usr/share/doc/kwrite/HTML \
- "$subpkgdir"/usr/share/doc/kwrite
+ DESTDIR="$subpkgdir" cmake --install "$builddir"/build/kwrite
+
+ rm -r "$subpkgdir"/usr/share/man
+ rm -r "$subpkgdir"/usr/share/icons
+ rm -r "$subpkgdir"/usr/share/locale
+ rm -r "$subpkgdir"/usr/share/metainfo
+ rm -r "$subpkgdir"/usr/share/applications
+ rm -r "$subpkgdir"/usr/bin
+ rm -r "$subpkgdir"/usr/lib
}
kwrite_lang() {
pkgdesc="Languages for package KWrite"
install_if="kwrite=$pkgver-r$pkgrel lang"
- local dir
- for dir in ${langdir:-/usr/share/locale}; do
- mkdir -p "$subpkgdir"/${dir%/*}
- mv "$subpkgdir"/../kwrite/"$dir" "$subpkgdir"/"$dir"
- done
+ DESTDIR="$subpkgdir" cmake --install "$builddir"/build/kwrite
+
+ rm -r "$subpkgdir"/usr/share/man
+ rm -r "$subpkgdir"/usr/share/doc
+ rm -r "$subpkgdir"/usr/share/icons
+ rm -r "$subpkgdir"/usr/share/metainfo
+ rm -r "$subpkgdir"/usr/share/applications
+ rm -r "$subpkgdir"/usr/bin
+ rm -r "$subpkgdir"/usr/lib
}
sha512sums="
-d3647d7c6af74fdfdf3bf9eb9da906195215800025b43558bd6c9811bd2f457a52555c84997801e0b0badddcd99b0dd6e384bf9ec82790fb14cb20ff026a5a5b kate-23.08.5.tar.xz
+53344928f204f1900998800c23064ee388f34590698337b56a11bd1fdf194665d959b584a6b603b7c7a523bdf5a98dfaa7651f6d9777e6dd38ed459706b7998d kate-24.02.0.tar.xz
"
diff --git a/community/katomic/APKBUILD b/community/katomic/APKBUILD
index 3b575f36fb6..ca592e4f2ab 100644
--- a/community/katomic/APKBUILD
+++ b/community/katomic/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=katomic
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,23 +13,22 @@ pkgdesc="A fun and educational game built around molecular geometry"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- qt5-qtbase-dev
- kcoreaddons5-dev
- kconfig5-dev
- kcrash5-dev
- kwidgetsaddons5-dev
- ki18n5-dev
- kxmlgui5-dev
- knewstuff5-dev
- kdoctools5-dev
- kdbusaddons5-dev
+ qt6-qtbase-dev
+ kcoreaddons-dev
+ kconfig-dev
+ kcrash-dev
+ kwidgetsaddons-dev
+ ki18n-dev
+ kxmlgui-dev
+ knewstuff-dev
+ kdoctools-dev
+ kdbusaddons-dev
libkdegames-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/katomic.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/katomic-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -48,5 +47,5 @@ package() {
}
sha512sums="
-053d00232c9d22037c7e5ca0c126a48188fc70286c07ea1c460dd378470778a695a9aa1222ee18f9925e0e762d21940a8710923b871bd8c3c7b6a5ef195f3704 katomic-23.08.5.tar.xz
+76b94101ddf58ce0bea9d35db05baa4eedb63fa950b394a52e24d86e6ccc0f4d868597e530728531ce28de6835d248936bec4cb8235b90cfce1482da3ca9359b katomic-24.02.0.tar.xz
"
diff --git a/community/kauth5/APKBUILD b/community/kauth/APKBUILD
index 7375678d661..aa4576d8a9d 100644
--- a/community/kauth5/APKBUILD
+++ b/community/kauth/APKBUILD
@@ -3,8 +3,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=kauth5
-pkgver=5.115.0
+pkgname=kauth
+pkgver=6.0.0
pkgrel=0
pkgdesc="Abstraction to system policy and authentication features"
# armhf blocked by extra-cmake-modules
@@ -12,23 +12,21 @@ arch="all !armhf"
url="https://community.kde.org/Frameworks"
license="LGPL-2.1-or-later"
depends_dev="
- kcoreaddons5-dev
+ kcoreaddons-dev
+ kwindowsystem-dev
polkit-qt-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
doxygen
extra-cmake-modules
graphviz
- qt5-qttools-dev
+ qt6-qttools-dev
samurai
"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/frameworks/kauth.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kauth-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-builddir="$srcdir/kauth-$pkgver"
-
-replaces="kauth<=5.110.0-r0"
build() {
cmake -B build -G Ninja \
@@ -49,5 +47,5 @@ package() {
}
sha512sums="
-ace9bcefdba0425dc4e2fc4dfe90bd8faad91b1e5b6ed16ec5b7870f3f22e4384d4b1776c97da501eefb5dc7ed31412593c59a5567cb394e11838d8cfe118fde kauth-5.115.0.tar.xz
+4418b7cf59f77f6612e1cf5980224a8da4b82bd7eca2e55bcb55fde53ac307273b15a3eeeed674e00e6187f306ec111d4be0f3c60c65bf6bdf916651ba170293 kauth-6.0.0.tar.xz
"
diff --git a/community/kbackup/APKBUILD b/community/kbackup/APKBUILD
index 54275dd9ed4..26e5ec07e76 100644
--- a/community/kbackup/APKBUILD
+++ b/community/kbackup/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kbackup
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,23 +13,23 @@ pkgdesc="An application which lets you back up your data in a simple, user frien
license="GPL-2.0-only"
makedepends="
extra-cmake-modules
- karchive5-dev
- kdoctools5-dev
- ki18n5-dev
- kiconthemes5-dev
- kio5-dev
- knotifications5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ karchive-dev
+ kdoctools-dev
+ ki18n-dev
+ kiconthemes-dev
+ kio-dev
+ knotifications-dev
+ kstatusnotifieritem-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
libarchive-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
shared-mime-info
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/utilities/kbackup.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kbackup-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -48,5 +48,5 @@ package() {
}
sha512sums="
-93d8cc5b9459dce624fa8acf7ded3987aceb63ab75d14081171560700bfc95f4b1a63bbea5ed0435e4cc0c9f53752de168e81ade70c1dd7492af619e923dd126 kbackup-23.08.5.tar.xz
+dd7462d782910123aec01b9bda0b7ee456c7530bd5e7e89426eaa76b160414d2cc7e8f9064fa0b6ad7b34cd1a859fa60f16f60777cdfb63ab5e49bc593931ebd kbackup-24.02.0.tar.xz
"
diff --git a/community/kblackbox/APKBUILD b/community/kblackbox/APKBUILD
index 5a108ff85a3..00e1ef881a8 100644
--- a/community/kblackbox/APKBUILD
+++ b/community/kblackbox/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kblackbox
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,24 +13,23 @@ pkgdesc="A game of hide and seek played on a grid of boxes"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- karchive5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- ktextwidgets5-dev
- kxmlgui5-dev
+ karchive-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ ktextwidgets-dev
+ kxmlgui-dev
libkdegames-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/kblackbox.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kblackbox-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -49,5 +48,5 @@ package() {
}
sha512sums="
-1b84cae0fca6146cb05f0e1abafd987dcaf4e24b07b52f5171e0f3bb8b9ef349086ea4bc08c6786d1a0d7e39beb10011f2b6ecf433966970d68c1b31339bc0c0 kblackbox-23.08.5.tar.xz
+fe9fd41c884400cd47231c37fbd4165dbf4eedd578df25d414d73f15aeb71ab0c5881bb8a43e255a56b743d352a29a90b4aa2dc8f31411ba5f7a58614d556319 kblackbox-24.02.0.tar.xz
"
diff --git a/community/kblocks/APKBUILD b/community/kblocks/APKBUILD
index 09c8aed733e..8668778fe7a 100644
--- a/community/kblocks/APKBUILD
+++ b/community/kblocks/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kblocks
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="The classic falling blocks game"
url="https://kde.org/applications/games/kblocks/"
@@ -13,24 +13,24 @@ arch="all !armhf"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
libkdegames-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/kblocks.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kblocks-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -49,5 +49,5 @@ package() {
}
sha512sums="
-39525ea0cd7a0775efe1491f6960df28d8de65a775118e15cc1ef8d1ae70873829d096ec256f0505c4ca2fa0ecae1b49cbac6707f876afae2800a9307a055ad5 kblocks-23.08.5.tar.xz
+b82b8addb63ed4f07ad5b18801a985222c71f33e5363718acbbe81be9e59de583ded0294606356e6d6df1d76fd2c83a94b202c034d3accb8e33d22ebdba7dbe1 kblocks-24.02.0.tar.xz
"
diff --git a/community/kbookmarks5/APKBUILD b/community/kbookmarks/APKBUILD
index 5cd7836d162..2f3ba5df8c5 100644
--- a/community/kbookmarks5/APKBUILD
+++ b/community/kbookmarks/APKBUILD
@@ -3,8 +3,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=kbookmarks5
-pkgver=5.115.0
+pkgname=kbookmarks
+pkgver=6.0.0
pkgrel=0
pkgdesc="Support for bookmarks and the XBEL format"
# armhf blocked by extra-cmake-modules
@@ -12,27 +12,24 @@ arch="all !armhf"
url="https://community.kde.org/Frameworks"
license="LGPL-2.1-or-later"
depends_dev="
- kcodecs5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ kcodecs-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
doxygen
extra-cmake-modules
- qt5-qttools-dev
+ qt6-qttools-dev
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/frameworks/kbookmarks.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kbookmarks-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-builddir="$srcdir/kbookmarks-$pkgver"
-
-replaces="kbookmarks<=5.110.0-r0"
build() {
cmake -B build -G Ninja \
@@ -52,5 +49,5 @@ package() {
}
sha512sums="
-5a8354bdd425e6891d133d9b77e85c31567356aeedeb996fbb187d64acb8835d560629b8874ce805312fbbd8f0f8737ede35a9c8cecfc6ac0ee218005f0367d2 kbookmarks-5.115.0.tar.xz
+a8b9356bbd6c9cab8af88beca556649f4bc4bfe2c78844f501dbfbdfe4a8331518f70f0bce39910b1de8131a9ec79871653e377a524fde5fb4a2a890eb665ee9 kbookmarks-6.0.0.tar.xz
"
diff --git a/community/kbounce/APKBUILD b/community/kbounce/APKBUILD
index 62a8b796df5..7e6aba7e526 100644
--- a/community/kbounce/APKBUILD
+++ b/community/kbounce/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kbounce
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="A single player arcade game with the elements of puzzle"
url="https://kde.org/applications/games/kbounce/"
@@ -13,25 +13,25 @@ arch="all !armhf"
license="GPL-2.0-or-later AND LGPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kcompletion5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ kcompletion-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
libkdegames-dev
- qt5-qtbase-dev
- qt5-qtsvg-dev
+ qt6-qtbase-dev
+ qt6-qtsvg-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/kbounce.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kbounce-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -50,5 +50,5 @@ package() {
}
sha512sums="
-9783501977727a7dcf194aebbe980000168dd6eaf7af7d90a166489fd000eda93051ebcf97e473a4f72d98fe9faa2e6e4320231829217d6e927580b9fd16861c kbounce-23.08.5.tar.xz
+5a5e2e8470183a669c4f31a010ecce5ec551cbf088642d9324d4b66e6ee7e462e64d3b27f3c41162c4beb802be4601467a3a5ebf59d486d9fcbea3c0f9a55e3a kbounce-24.02.0.tar.xz
"
diff --git a/community/kbreakout/APKBUILD b/community/kbreakout/APKBUILD
index 77ac040231c..b5e0353973a 100644
--- a/community/kbreakout/APKBUILD
+++ b/community/kbreakout/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kbreakout
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="A Breakout-like game"
url="https://kde.org/applications/games/kbreakout/"
@@ -13,23 +13,23 @@ arch="all !armhf"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- kcrash5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kcrash-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
libkdegames-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/games/kbreakout.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kbreakout-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -48,5 +48,5 @@ package() {
}
sha512sums="
-ba7b135c89430312e879a64e25274fd1ffff6dcae7fde6fb02d9db19bf4d1e6808d727cecb396e25797e9dad748ad986c429c56db50b7920868d78b35ae5e707 kbreakout-23.08.5.tar.xz
+18238d9705ca8e7b35c3da49de0e1f86bb6dcb6ed686898d7d1825f248873e9d0caf2a9df55fbc4289d29c76afec92ea745b3f08d6686e68a0252657791ffd94 kbreakout-24.02.0.tar.xz
"
diff --git a/community/kbruch/APKBUILD b/community/kbruch/APKBUILD
index 10e9023e834..6726e070d7d 100644
--- a/community/kbruch/APKBUILD
+++ b/community/kbruch/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kbruch
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,19 +13,18 @@ pkgdesc="Practice Fractions"
license="GPL-2.0-or-later AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kcrash5-dev
- kdoctools5-dev
- ki18n5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ kconfig-dev
+ kcrash-dev
+ kdoctools-dev
+ ki18n-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/education/kbruch.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kbruch-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -44,5 +43,5 @@ package() {
}
sha512sums="
-3c21ad952f0a9cc01ede94861a38601debd737ab35ea7d1619952b4922f0d4896c0a034e67ef9dcb16552624a431e41fd5c62010e8ba667f0579531eb54cd4d0 kbruch-23.08.5.tar.xz
+f2828f7bb1e85114ea1b96791090a756d99697aeef0e05aa606c25b44aa7619c00c41ffce381e307101ff7992876970692d6c0be43ba9a9c1b0f2b5cf77f6905 kbruch-24.02.0.tar.xz
"
diff --git a/community/kcachegrind/APKBUILD b/community/kcachegrind/APKBUILD
index 23ae65cc42b..8310415a920 100644
--- a/community/kcachegrind/APKBUILD
+++ b/community/kcachegrind/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kcachegrind
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,23 +13,22 @@ pkgdesc="A profile data visualization tool, used to determine the most time cons
license="GPL-2.0-only AND GFDL-1.2-only"
makedepends="
extra-cmake-modules
- karchive5-dev
- kconfig5-dev
- kcoreaddons5-dev
- kdbusaddons5-dev
- kdoctools5-dev
- ki18n5-dev
- kio5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
- qt5-qttools-dev
+ karchive-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kdbusaddons-dev
+ kdoctools-dev
+ ki18n-dev
+ kio-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
+ qt6-qttools-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/sdk/kcachegrind.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kcachegrind-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -48,5 +47,5 @@ package() {
}
sha512sums="
-1025729b9dd537c954fc8ee4412a1e4bcfa7d25961cea397d73ef9e8b05709a62210007c6321c7781db164871a0a52fb0efbbf8885c6e4f13f907d29ee806af0 kcachegrind-23.08.5.tar.xz
+8e95a4568096046bac621fa736570567b5adbae317ce006810cc194a33c368ae14d880d50e80b67623e27022b8fd54ad1911d53e8d79c1194cc124be1836fd6b kcachegrind-24.02.0.tar.xz
"
diff --git a/community/kcalc/APKBUILD b/community/kcalc/APKBUILD
index a39d1e85002..a7004bb1442 100644
--- a/community/kcalc/APKBUILD
+++ b/community/kcalc/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kcalc
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -14,22 +14,21 @@ license="GPL-2.0-or-later"
makedepends="
extra-cmake-modules
gmp-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcrash5-dev
- kdoctools5-dev
- kguiaddons5-dev
- ki18n5-dev
- kinit5-dev
- knotifications5-dev
- kxmlgui5-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcrash-dev
+ kdoctools-dev
+ kguiaddons-dev
+ ki18n-dev
+ knotifications-dev
+ kxmlgui-dev
mpfr-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/utilities/kcalc.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kcalc-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -48,5 +47,5 @@ package() {
}
sha512sums="
-945bf5944aba66868478b2d6cb1b184fbe394328c1de3fd1edf4e8aacef7f072a1e5fdbfbf49fd99219cd027df928b4db03908c0509a9913ebd16599611bf657 kcalc-23.08.5.tar.xz
+7b5f947962c01c4cdd140bee4d98688f20e2b29cd57fd8ac72cd8ca8fb18d6fc75d474bb83169218b4547a32f91d0201292b413b7d9c167b44eed4f4fff65bfa kcalc-24.02.0.tar.xz
"
diff --git a/community/kcalendarcore5/APKBUILD b/community/kcalendarcore/APKBUILD
index f3b6076c700..0f9527a3d03 100644
--- a/community/kcalendarcore5/APKBUILD
+++ b/community/kcalendarcore/APKBUILD
@@ -3,8 +3,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=kcalendarcore5
-pkgver=5.115.0
+pkgname=kcalendarcore
+pkgver=6.0.0
pkgrel=0
pkgdesc="The KDE calendar access library"
arch="all !armhf" # armhf blocked by extra-cmake-modules
@@ -12,21 +12,24 @@ url="https://community.kde.org/Frameworks"
license="LGPL-2.0-or-later"
depends_dev="
libical-dev
- qt5-qtbase-dev
+ qt6-qtbase-dev
"
makedepends="$depends_dev
doxygen
extra-cmake-modules
- qt5-qttools-dev
+ graphviz
+ qt6-qttools-dev
samurai
"
+checkdepends="
+ perl
+ xvfb-run
+ "
subpackages="$pkgname-dev $pkgname-doc"
_repo_url="https://invent.kde.org/frameworks/kcalendarcore.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcalendarcore-$pkgver.tar.xz"
-options="!check" # RecursOn-ConnectDaily(2|3|6) make the builders stuck
-builddir="$srcdir/kcalendarcore-$pkgver"
-replaces="kcalcore kcalendarcore<=5.110.0-r0"
+replaces="kcalcore"
build() {
cmake -B build -G Ninja \
@@ -39,7 +42,7 @@ build() {
check() {
# testrecurtodo, testreadrecurrenceid, testicaltimezones, testmemorycalendar and testtimesininterval are broken
- ctest --test-dir build --output-on-failure -E "test(recurtodo|readrecurrenceid|icaltimezones|memorycalendar|timesininterval)"
+ xvfb-run ctest --test-dir build --output-on-failure -E "(RecursOn|test(readrecurrenceid|icaltimezones|memorycalendar|timesininterval|dateserialization|incidence|icalformat|identical|startdatetimesfordate|occurrenceiterator))"
}
package() {
@@ -47,5 +50,5 @@ package() {
}
sha512sums="
-20a47d83a8eedc62e307f8ff49e42d9c74cb4867c15b8ad52a1a20442c839d1a1484abb8c76e17cc0c189578a71f4f40e3cff5e591118904cf3c738b18a03e24 kcalendarcore-5.115.0.tar.xz
+30a0b2edbc46a11f76cfab65ddaf0ec5df96a4e7898d4cde5a24855b1b2aae37fd97dff688cfc81c516045d0c9253af6bf408a91bc3e6c4baba04fdb49b35f81 kcalendarcore-6.0.0.tar.xz
"
diff --git a/community/kcalutils/APKBUILD b/community/kcalutils/APKBUILD
index 5d4eef28f13..db242f83e76 100644
--- a/community/kcalutils/APKBUILD
+++ b/community/kcalutils/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kcalutils
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="The KDE calendar utility library"
# armhf blocked by extra-cmake-modules
@@ -13,25 +13,25 @@ url="https://api.kde.org/kdepim/kcalutils/html"
license="LGPL-2.0-or-later"
depends_dev="
grantlee-dev
- kcalendarcore5-dev
- kcodecs5-dev
- kconfig5-dev
- kconfigwidgets5-dev
- kcoreaddons5-dev
- ki18n5-dev
- kiconthemes5-dev
+ kcalendarcore-dev
+ kcodecs-dev
+ kconfig-dev
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ ki18n-dev
+ kiconthemes-dev
kidentitymanagement-dev
- kwidgetsaddons5-dev
+ ktexttemplate-dev
+ kwidgetsaddons-dev
"
-makedepends="
- $depends_dev
+makedepends="$depends_dev
extra-cmake-modules
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-lang"
_repo_url="https://invent.kde.org/pim/kcalutils.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kcalutils-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-lang"
build() {
cmake -B build -G Ninja \
@@ -53,5 +53,5 @@ package() {
}
sha512sums="
-3709421ce8ea993978d47031cb46b68641551abf4933f957ab8f2a0f136cf56bd96b0a6f3ed945809ae4e16ddce8d601ea096cc33c09d9b4567aec5a3260cd51 kcalutils-23.08.5.tar.xz
+e75635c5e87d63b5d0fcf5d16c3cecebc26459ed172b2eb56e52e2d07789803078f6028460bd1fe795febd6dbf657f70b4baf5ea81edeef4053bd99631be355f kcalutils-24.02.0.tar.xz
"
diff --git a/community/kcharselect/APKBUILD b/community/kcharselect/APKBUILD
index 67cf3f0be89..969fdb79a2b 100644
--- a/community/kcharselect/APKBUILD
+++ b/community/kcharselect/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kcharselect
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,19 +13,18 @@ pkgdesc="A tool to select special characters from all installed fonts and copy t
license="GPL-2.0-or-later"
makedepends="
extra-cmake-modules
- kbookmarks5-dev
- kcrash5-dev
- kdoctools5-dev
- ki18n5-dev
- kwidgetsaddons5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ kbookmarks-dev
+ kcrash-dev
+ kdoctools-dev
+ ki18n-dev
+ kwidgetsaddons-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/utilities/kcharselect.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kcharselect-$pkgver.tar.xz"
-subpackages="$pkgname-doc $pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -44,5 +43,5 @@ package() {
}
sha512sums="
-611eceb71478cf03545f8b9daaf848bff9f2b78f306dc7a5e0b3271f95cf56049b6203b3fd92c0d621e3b2e2395c71e90f771e2c1a0ee175ebf8bed9edaac7f5 kcharselect-23.08.5.tar.xz
+cc803dde0bf3f7bc634a682cc4e31f3f5c38133b80f549d98f7efc40bded73b1ea122f439d629805f4466028c78d142b97f24c7d0316010aeb9a48ffee5991e2 kcharselect-24.02.0.tar.xz
"
diff --git a/community/kclock/APKBUILD b/community/kclock/APKBUILD
index 6853f957cd9..00104943d50 100644
--- a/community/kclock/APKBUILD
+++ b/community/kclock/APKBUILD
@@ -4,38 +4,38 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kclock
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
pkgdesc="Clock app for Plasma Mobile"
url="https://invent.kde.org/utilities/kclock"
-# armhf blocked by qt5-qtdeclarative
+# armhf blocked by qt6-qtdeclarative
# x86 broken
arch="all !armhf !x86"
license="LicenseRef-KDE-Accepted-GPL"
depends="
kirigami-addons
- kirigami2
+ kirigami
"
makedepends="
extra-cmake-modules
- kconfig5-dev
- kcoreaddons5-dev
- kdbusaddons5-dev
- ki18n5-dev
+ kconfig-dev
+ kcoreaddons-dev
+ kdbusaddons-dev
+ ki18n-dev
kirigami-addons-dev
- kirigami2-dev
- knotifications5-dev
- plasma-framework5-dev
- qt5-qtbase-dev
- qt5-qtdeclarative-dev
- qt5-qtmultimedia-dev
- qt5-qtquickcontrols2-dev
- qt5-qtsvg-dev
+ kirigami-dev
+ knotifications-dev
+ kstatusnotifieritem-dev
+ libplasma-dev
+ qt6-qtbase-dev
+ qt6-qtdeclarative-dev
+ qt6-qtmultimedia-dev
+ qt6-qtsvg-dev
samurai
"
+subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/utilities/kclock.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kclock-$pkgver.tar.xz"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -50,5 +50,5 @@ package() {
}
sha512sums="
-b477743b98988f40974b0b8774d28ab9216778456a4f31911b97a61f3812510fdf944fbea63c5c3b96c03e748ef9c3d95c420d0edc697e5c5e6f50989b462dcb kclock-23.08.5.tar.xz
+ca2dcebefbcbb1829e4c737206a409a5c214e6a7573630eb5b24d92ec012ee9034140e5e33d709a5ef0af7ca87d78ca23b7db58beb8cefa76c1f4718db003dee kclock-24.02.0.tar.xz
"
diff --git a/community/kcmutils/APKBUILD b/community/kcmutils/APKBUILD
new file mode 100644
index 00000000000..505d1c2c52c
--- /dev/null
+++ b/community/kcmutils/APKBUILD
@@ -0,0 +1,57 @@
+# Contributor: Bart Ribbers <bribbers@disroot.org>
+# Maintainer: team/kde <bribbers@disroot.org>
+
+# The group tag is just to easily find this APKBUILD by some scripts for automation
+# group=kde-frameworks
+pkgname=kcmutils
+pkgver=6.0.0
+pkgrel=0
+pkgdesc="Utilities for interacting with KCModules"
+# armhf blocked by extra-cmake-modules
+arch="all !armhf"
+url="https://community.kde.org/Frameworks"
+license="LGPL-2.1-only AND LGPL-2.1-or-later"
+depends_dev="
+ kconfigwidgets-dev
+ kcoreaddons-dev
+ kdeclarative-dev
+ ki18n-dev
+ kiconthemes-dev
+ kitemviews-dev
+ kservice-dev
+ kxmlgui-dev
+ "
+makedepends="$depends_dev
+ doxygen
+ extra-cmake-modules
+ qt6-qttools-dev
+ samurai
+ "
+checkdepends="
+ kirigami
+ xvfb-run
+ "
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+_repo_url="https://invent.kde.org/frameworks/kcmutils.git"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcmutils-$pkgver.tar.xz"
+
+build() {
+ cmake -B build -G Ninja \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_QCH=ON
+ cmake --build build
+}
+
+check() {
+ xvfb-run ctest --test-dir build --output-on-failure -E "kcmultidialogtest"
+}
+
+package() {
+ DESTDIR="$pkgdir" cmake --install build
+}
+
+sha512sums="
+504d619fa2b93cf47162784b8cdf6cb4cd34a19ed9bd352d0b05523b7c90fbcae6bf2e1bbccd4e4b50e2c8d8738f42a71562ba84210beff1fab3fa753517b0b9 kcmutils-6.0.0.tar.xz
+"
diff --git a/community/kcmutils5/APKBUILD b/community/kcmutils5/APKBUILD
index 3aad74d3ef3..4fc4f7078a3 100644
--- a/community/kcmutils5/APKBUILD
+++ b/community/kcmutils5/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
pkgname=kcmutils5
-pkgver=5.115.0
+pkgver=6.0.0
pkgrel=0
pkgdesc="Utilities for interacting with KCModules"
# armhf blocked by extra-cmake-modules
@@ -53,5 +53,5 @@ package() {
}
sha512sums="
-69e91cf73587365d2861d54e90860adbe8de254473fd86da04a34aabed0623d5ee4500eebc691bcb68d3f271eafab67b32389745992c25d0b9f2b1383ee4511c kcmutils-5.115.0.tar.xz
+504d619fa2b93cf47162784b8cdf6cb4cd34a19ed9bd352d0b05523b7c90fbcae6bf2e1bbccd4e4b50e2c8d8738f42a71562ba84210beff1fab3fa753517b0b9 kcmutils-6.0.0.tar.xz
"
diff --git a/community/kcodecs5/APKBUILD b/community/kcodecs/APKBUILD
index 6b2879ea782..3960553090e 100644
--- a/community/kcodecs5/APKBUILD
+++ b/community/kcodecs/APKBUILD
@@ -3,8 +3,8 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-frameworks
-pkgname=kcodecs5
-pkgver=5.115.0
+pkgname=kcodecs
+pkgver=6.0.0
pkgrel=0
pkgdesc="Provide a collection of methods to manipulate strings using various encodings"
arch="all !armhf" # armhf blocked by extra-cmake-modules
@@ -15,16 +15,13 @@ makedepends="
extra-cmake-modules
gperf
graphviz
- qt5-qttools-dev
+ qt6-qttools-dev
samurai
"
checkdepends="xvfb-run"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
_repo_url="https://invent.kde.org/frameworks/kcodecs.git"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcodecs-$pkgver.tar.xz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-builddir="$srcdir/kcodecs-$pkgver"
-
-replaces="kcodecs<=5.110.0-r0"
build() {
cmake -B build -G Ninja \
@@ -44,5 +41,5 @@ package() {
}
sha512sums="
-e2fb8a82c38e1038cd6bb230b658c45af8e4fd42dca29ee0f775f7c44154895ba4e983f26a98ab30ab394f246f6c7960642178b2a8b0d50d701b66945e798041 kcodecs-5.115.0.tar.xz
+0e7260a8fb7cfdb95fefd0f3cc5d606525df48cc87cfc04a1c5b9b3ff111f8677609d625bee516c64c380b4456626423149969014df10a59e54baf45b35e99f0 kcodecs-6.0.0.tar.xz
"
diff --git a/community/kcolorchooser/APKBUILD b/community/kcolorchooser/APKBUILD
index 2d02688204d..daf44d454aa 100644
--- a/community/kcolorchooser/APKBUILD
+++ b/community/kcolorchooser/APKBUILD
@@ -4,7 +4,7 @@
# The group tag is just to easily find this APKBUILD by some scripts for automation
# group=kde-applications
pkgname=kcolorchooser
-pkgver=23.08.5
+pkgver=24.02.0
pkgrel=0
# armhf blocked by extra-cmake-modules
arch="all !armhf"
@@ -13,15 +13,14 @@ pkgdesc="A color palette tool, used to mix colors and create custom color palett
license="MIT"
makedepends="
extra-cmake-modules
- ki18n5-dev
- kxmlgui5-dev
- qt5-qtbase-dev
+ ki18n-dev
+ kxmlgui-dev
+ qt6-qtbase-dev
samurai
"
+subpackages="$pkgname-lang"
_repo_url="https://invent.kde.org/graphics/kcolorchooser.git"
source="https://download.kde.org/stable/release-service/$pkgver/src/kcolorchooser-$pkgver.tar.xz"
-subpackages="$pkgname-lang"
-options="!check" # No tests
build() {
cmake -B build -G Ninja \
@@ -40,5 +39,5 @@ package() {
}
sha512sums="
-d5c515e4caa06f4b952ce09056b8bc61757f0432713bd10b4164e8a27487df8254daa0e5ad7b35d34d64b9d54c89a93eb8c716a272e8ed0bb358434211f169ec kcolorchooser-23.08.5.tar.xz
+fa6d4ff2b3d466ad65afe3a27e186430e6404f5b40ebaed3d8616f207cb1436f31e9196ba13e6ccc40a490095ade73841edc9a7e9f76096f3c244f1d93a3e410 kcolorchooser-24.02.0.tar.xz
"
diff --git a/community/kcolorscheme/APKBUILD b/community/kcolorscheme/APKBUILD
new file mode 100644
index 00000000000..232fdcba689
--- /dev/null
+++ b/community/kcolorscheme/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: Bart Ribbers <bribbers@disroot.org>
+# Maintainer: team/kde <bribbers@disroot.org>
+
+# The group tag is just to easily find this APKBUILD by some scripts for automation
+# group=kde-frameworks
+pkgname=kcolorscheme
+pkgver=6.0.0
+pkg