[packaging/craft-blueprints-kde] kde/frameworks: Update to KDE Frameworks 6.29.0

Volker Krause <[email protected]>
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit 61e2618c29fa27f5ce76f7b1d14907462ef6d272 by Volker Krause.
Committed on 15/08/2026 at 10:38.
Pushed by vkrause into branch 'master'.

Update to KDE Frameworks 6.29.0

M  +2    -2    kde/frameworks/tier1/breeze-icons/breeze-icons.py
A  +25   -0    kde/frameworks/tier1/kirigami/6ab05f892e620d4d086d677d40bce871ba05f36b.diff
M  +2    -0    kde/frameworks/tier1/kirigami/kirigami.py
D  +0    -115  kde/frameworks/tier3/kio/kio-6-24-macos-build-fix.patch
D  +0    -102  kde/frameworks/tier3/kio/kio-6-24-nanosecs-fix.patch
M  +0    -2    kde/frameworks/tier3/kio/kio.py
M  +2    -2    kde/frameworks/version.ini

https://invent.kde.org/packaging/craft-blueprints-kde/-/commit/61e2618c29fa27f5ce76f7b1d14907462ef6d272

diff --git a/kde/frameworks/tier1/breeze-icons/breeze-icons.py b/kde/frameworks/tier1/breeze-icons/breeze-icons.py
index 4bf87f41a..0d3da5ea7 100644
--- a/kde/frameworks/tier1/breeze-icons/breeze-icons.py
+++ b/kde/frameworks/tier1/breeze-icons/breeze-icons.py
@@ -12,8 +12,6 @@ from CraftCore import CraftCore
 class subinfo(info.infoclass):
     def setTargets(self):
         self.versionInfo.setDefaultValues()
-        self.patchToApply["6.24.0"] = [("breeze-icons-6.23.0-symlink-fix.diff", 1)]
-        self.patchLevel["6.24.0"] = 1
         self.patchToApply["6.25.0"] = [("breeze-icons-6.23.0-symlink-fix.diff", 1)]
         self.patchLevel["6.25.0"] = 1
         self.patchToApply["6.26.0"] = [("breeze-icons-6.23.0-symlink-fix.diff", 1)]
@@ -22,6 +20,8 @@ class subinfo(info.infoclass):
         self.patchLevel["6.27.0"] = 1
         self.patchToApply["6.28.0"] = [("breeze-icons-6.23.0-symlink-fix.diff", 1)]
         self.patchLevel["6.28.0"] = 1
+        self.patchToApply["6.29.0"] = [("breeze-icons-6.23.0-symlink-fix.diff", 1)]
+        self.patchLevel["6.29.0"] = 1
 
         self.description = "Breeze icon theme."
 
diff --git a/kde/frameworks/tier1/kirigami/6ab05f892e620d4d086d677d40bce871ba05f36b.diff b/kde/frameworks/tier1/kirigami/6ab05f892e620d4d086d677d40bce871ba05f36b.diff
new file mode 100644
index 000000000..7a17a510e
--- /dev/null
+++ b/kde/frameworks/tier1/kirigami/6ab05f892e620d4d086d677d40bce871ba05f36b.diff
@@ -0,0 +1,25 @@
+commit 6ab05f892e620d4d086d677d40bce871ba05f36b
+Author: Volker Krause <[email protected]>
+Date:   Thu Aug 13 18:59:01 2026 +0200
+
+    Add another safety check before automatically popping hidden pages
+    
+    trailingVisibleItem doesn't seem to be reliable during the transition away
+    from a dialog layer in mobile mode, so also check whether the page in
+    question is beyond the current index.
+    
+    This fixes the editor page in Itinerary getting popped when selecting
+    an element in a Kirigami Addons FormComboBoxDelegate in mobile mode.
+
+diff --git a/src/controls/PageRow.qml b/src/controls/PageRow.qml
+index ce13ac542..b8353415c 100644
+--- a/src/controls/PageRow.qml
++++ b/src/controls/PageRow.qml
+@@ -1141,6 +1141,7 @@ QT.Control {
+ 
+                         // pop every page that isn't visible and at the top of the stack
+                         while (lastItem && columnView.trailingVisibleItem &&
++                            columnView.currentIndex !== columnView.contentChildren.length - 1 &&
+                             lastItem !== columnView.trailingVisibleItem && columnView.containsItem(lastItem)) {
+                             root.pop();
+                         }
diff --git a/kde/frameworks/tier1/kirigami/kirigami.py b/kde/frameworks/tier1/kirigami/kirigami.py
index 944aa9b22..0584a7fd6 100644
--- a/kde/frameworks/tier1/kirigami/kirigami.py
+++ b/kde/frameworks/tier1/kirigami/kirigami.py
@@ -7,6 +7,8 @@ class subinfo(info.infoclass):
         self.versionInfo.setDefaultValues()
         self.patchToApply["6.26.0"] = [("565d1605c10d37663c772c93a6765ee30f2418f8.patch", 1), ("fix-double-page-pop.diff", 1)]
         self.patchLevel["6.26.0"] = 2
+        self.patchToApply["6.29.0"] = [("6ab05f892e620d4d086d677d40bce871ba05f36b.diff", 1)]
+        self.patchLevel["6.26.0"] = 1
 
     def setDependencies(self):
         self.buildDependencies["virtual/base"] = None
diff --git a/kde/frameworks/tier3/kio/kio-6-24-macos-build-fix.patch b/kde/frameworks/tier3/kio/kio-6-24-macos-build-fix.patch
deleted file mode 100644
index 49fb3b162..000000000
--- a/kde/frameworks/tier3/kio/kio-6-24-macos-build-fix.patch
+++ /dev/null
@@ -1,115 +0,0 @@
-commit b526db12e6ddb746910d6147cf597515015ff42c
-Author: Albert Vaca Cintora <[email protected]>
-Date:   Wed Mar 18 13:41:33 2026 +0100
-
-    Fix build on macOS relating to tv_nsec
-    
-    Was missed in 431453b7, macOS uses differently named fields to access the nanosecond time info: `st_mtim` -> `st_mtimespec` and `st_atim` -> `st_atimespec`
-
-diff --git a/src/core/udsentry.cpp b/src/core/udsentry.cpp
-index cc766e700..be00664ba 100644
---- a/src/core/udsentry.cpp
-+++ b/src/core/udsentry.cpp
-@@ -10,6 +10,7 @@
- 
- #include "udsentry.h"
- 
-+#include "../kioworkers/file/stat_unix.h"
- #include "../utils_p.h"
- 
- #include <QDataStream>
-@@ -363,11 +364,11 @@ UDSEntry::UDSEntry(const QT_STATBUF &buff, const QString &name)
-     d->insert(UDS_INODE, buff.st_ino);
-     d->insert(UDS_FILE_TYPE, buff.st_mode & QT_STAT_MASK); // extract file type
-     d->insert(UDS_ACCESS, buff.st_mode & 07777); // extract permissions
--    d->insert(UDS_MODIFICATION_TIME, buff.st_mtime);
--    d->insert(UDS_ACCESS_TIME, buff.st_atime);
--#ifndef Q_OS_WIN
--    d->insert(UDS_MODIFICATION_TIME_NS_OFFSET, buff.st_mtim.tv_nsec);
--    d->insert(UDS_ACCESS_TIME_NS_OFFSET, buff.st_atim.tv_nsec);
-+    d->insert(UDS_MODIFICATION_TIME, stat_mtime(buff));
-+    d->insert(UDS_MODIFICATION_TIME_NS_OFFSET, stat_mtime_ns(buff));
-+    d->insert(UDS_ACCESS_TIME, stat_atime(buff));
-+    d->insert(UDS_ACCESS_TIME_NS_OFFSET, stat_atime_ns(buff));
-+#if !defined(Q_OS_WIN)
-     d->insert(UDS_LOCAL_USER_ID, buff.st_uid);
-     d->insert(UDS_LOCAL_GROUP_ID, buff.st_gid);
- #endif
-diff --git a/src/kioworkers/file/stat_unix.h b/src/kioworkers/file/stat_unix.h
-index 5dc6c77fb..f0a821d32 100644
---- a/src/kioworkers/file/stat_unix.h
-+++ b/src/kioworkers/file/stat_unix.h
-@@ -136,7 +136,7 @@ inline static uint64_t stat_mnt_id(const struct statx &buf)
- }
- #endif
- #else
--// regular stat struct
-+// regular stat struct (no statx)
- inline int LSTAT(const char *path, QT_STATBUF *buff, KIO::StatDetails details)
- {
-     Q_UNUSED(details)
-@@ -147,6 +147,9 @@ inline int STAT(const char *path, QT_STATBUF *buff, KIO::StatDetails details)
-     Q_UNUSED(details)
-     return QT_STAT(path, buff);
- }
-+#endif
-+
-+// QT_STATBUF overloads (always available regardless of HAVE_STATX)
- inline static mode_t stat_mode(const QT_STATBUF &buf)
- {
-     return buf.st_mode;
-@@ -177,8 +180,10 @@ inline static time_t stat_atime(const QT_STATBUF &buf)
- }
- inline static int64_t stat_atime_ns(const QT_STATBUF &buf)
- {
--#ifdef Q_OS_WIN
-+#if defined(Q_OS_WIN)
-     return 0;
-+#elif defined(Q_OS_DARWIN)
-+    return buf.st_atimespec.tv_nsec;
- #else
-     return buf.st_atim.tv_nsec;
- #endif
-@@ -189,12 +194,13 @@ inline static time_t stat_mtime(const QT_STATBUF &buf)
- }
- inline static int64_t stat_mtime_ns(const QT_STATBUF &buf)
- {
--#ifdef Q_OS_WIN
-+#if defined(Q_OS_WIN)
-     return 0;
-+#elif defined(Q_OS_DARWIN)
-+    return buf.st_mtimespec.tv_nsec;
- #else
-     return buf.st_mtim.tv_nsec;
- #endif
- }
--#endif
- 
- #endif // STAT_UNIX_H
-diff --git a/src/kioworkers/trash/kio_trash.cpp b/src/kioworkers/trash/kio_trash.cpp
-index befff9417..e8267d42b 100644
---- a/src/kioworkers/trash/kio_trash.cpp
-+++ b/src/kioworkers/trash/kio_trash.cpp
-@@ -7,6 +7,7 @@
- 
- #include "kio_trash.h"
- #include "../../utils_p.h"
-+#include "../kioworkers/file/stat_unix.h"
- #include "kiotrashdebug.h"
- #include "transferjob.h"
- 
-@@ -495,10 +496,10 @@ bool TrashProtocol::createUDSEntry(const QString &physicalPath,
-     entry.fastInsert(KIO::UDSEntry::UDS_SIZE, buff.st_size);
-     entry.fastInsert(KIO::UDSEntry::UDS_USER, m_userName); // assumption
-     entry.fastInsert(KIO::UDSEntry::UDS_GROUP, m_groupName); // assumption
--    entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, buff.st_mtim.tv_sec);
--    entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME_NS_OFFSET, buff.st_mtim.tv_nsec);
--    entry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME, buff.st_atim.tv_sec); // ## or use it for deletion time?
--    entry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME_NS_OFFSET, buff.st_atim.tv_nsec);
-+    entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME, stat_mtime(buff));
-+    entry.fastInsert(KIO::UDSEntry::UDS_MODIFICATION_TIME_NS_OFFSET, stat_mtime_ns(buff));
-+    entry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME, stat_atime(buff)); // ## or use it for deletion time?
-+    entry.fastInsert(KIO::UDSEntry::UDS_ACCESS_TIME_NS_OFFSET, stat_atime_ns(buff));
-     entry.fastInsert(KIO::UDSEntry::UDS_EXTRA, info.origPath);
-     entry.fastInsert(KIO::UDSEntry::UDS_EXTRA + 1, info.deletionDate.toString(Qt::ISODate));
-     return true;
diff --git a/kde/frameworks/tier3/kio/kio-6-24-nanosecs-fix.patch b/kde/frameworks/tier3/kio/kio-6-24-nanosecs-fix.patch
deleted file mode 100644
index 9a78d3f08..000000000
--- a/kde/frameworks/tier3/kio/kio-6-24-nanosecs-fix.patch
+++ /dev/null
@@ -1,102 +0,0 @@
-commit d59a5dcf5663e61ac674479c2a454301f3145137
-Author: Méven Car <[email protected]>
-Date:   Mon Mar 16 13:05:51 2026 +0100
-
-    core/udsentry: don't reduce nanosecond precision to millisecond
-    
-    Also add support for nano sec time for *BSD.
-    
-    Add a test for Linux/statx.
-    
-    Amends: 431453b7c809e1a71a3367102a674030e521b181
-
-diff --git a/autotests/jobtest.cpp b/autotests/jobtest.cpp
-index 83f091034..35bbe00c7 100644
---- a/autotests/jobtest.cpp
-+++ b/autotests/jobtest.cpp
-@@ -6,6 +6,7 @@
- */
- 
- #include "jobtest.h"
-+#include "../src/core/config-stat-unix.h"
- #include "mockcoredelegateextensions.h"
- 
- #include "kio/job.h"
-@@ -3117,6 +3118,8 @@ void JobTest::statWithNanosecondTimeOffset()
-     QVERIFY(entry.contains(KIO::UDSEntry::UDS_MODIFICATION_TIME_NS_OFFSET));
-     QVERIFY(entry.contains(KIO::UDSEntry::UDS_ACCESS_TIME));
-     QVERIFY(entry.contains(KIO::UDSEntry::UDS_ACCESS_TIME_NS_OFFSET));
-+    QVERIFY(entry.contains(KIO::UDSEntry::UDS_CREATION_TIME));
-+    QVERIFY(entry.contains(KIO::UDSEntry::UDS_CREATION_TIME_NS_OFFSET));
- 
-     const auto modificationTimeInSec = entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME);
-     auto modificationDateTime = QDateTime::fromSecsSinceEpoch(modificationTimeInSec);
-@@ -3129,6 +3132,18 @@ void JobTest::statWithNanosecondTimeOffset()
-     const auto fileInfo = QFileInfo(testFilePath.toLocalFile());
-     QCOMPARE(modificationDateTime, fileInfo.lastModified());
-     QCOMPARE(accessDateTime, fileInfo.lastRead());
-+
-+#if HAVE_STATX
-+    struct statx buff;
-+    auto result = statx(AT_FDCWD, QFile::encodeName(testFilePath.toLocalFile()).data(), AT_SYMLINK_NOFOLLOW, STATX_ATIME | STATX_MTIME | STATX_BTIME, &buff);
-+    QVERIFY(result == 0);
-+    QCOMPARE(buff.stx_mtime.tv_sec, entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME));
-+    QCOMPARE(buff.stx_mtime.tv_nsec, entry.numberValue(KIO::UDSEntry::UDS_MODIFICATION_TIME_NS_OFFSET));
-+    QCOMPARE(buff.stx_atime.tv_sec, entry.numberValue(KIO::UDSEntry::UDS_ACCESS_TIME));
-+    QCOMPARE(buff.stx_atime.tv_nsec, entry.numberValue(KIO::UDSEntry::UDS_ACCESS_TIME_NS_OFFSET));
-+    QCOMPARE(buff.stx_btime.tv_sec, entry.numberValue(KIO::UDSEntry::UDS_CREATION_TIME));
-+    QCOMPARE(buff.stx_btime.tv_nsec, entry.numberValue(KIO::UDSEntry::UDS_CREATION_TIME_NS_OFFSET));
-+#endif
- }
- 
- #include "moc_jobtest.cpp"
-diff --git a/src/core/udsentry.cpp b/src/core/udsentry.cpp
-index 7712d54ca..cc766e700 100644
---- a/src/core/udsentry.cpp
-+++ b/src/core/udsentry.cpp
-@@ -366,8 +366,8 @@ UDSEntry::UDSEntry(const QT_STATBUF &buff, const QString &name)
-     d->insert(UDS_MODIFICATION_TIME, buff.st_mtime);
-     d->insert(UDS_ACCESS_TIME, buff.st_atime);
- #ifndef Q_OS_WIN
--    d->insert(UDS_MODIFICATION_TIME_NS_OFFSET, buff.st_mtim.tv_nsec / 1000000);
--    d->insert(UDS_ACCESS_TIME_NS_OFFSET, buff.st_atim.tv_nsec / 1000000);
-+    d->insert(UDS_MODIFICATION_TIME_NS_OFFSET, buff.st_mtim.tv_nsec);
-+    d->insert(UDS_ACCESS_TIME_NS_OFFSET, buff.st_atim.tv_nsec);
-     d->insert(UDS_LOCAL_USER_ID, buff.st_uid);
-     d->insert(UDS_LOCAL_GROUP_ID, buff.st_gid);
- #endif
-diff --git a/src/kioworkers/file/file_unix.cpp b/src/kioworkers/file/file_unix.cpp
-index b2b13b604..554210b25 100644
---- a/src/kioworkers/file/file_unix.cpp
-+++ b/src/kioworkers/file/file_unix.cpp
-@@ -273,19 +273,29 @@ static bool createUDSEntry(const QString &filename, const QByteArray &path, UDSE
-          * it if it is greater than 0. */
-         if (buff.st_birthtime > 0) {
-             entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME, buff.st_birthtime);
-+
-+            if ((details & KIO::StatTimeNsOffset) == KIO::StatTimeNsOffset) {
-+                entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME_NS_OFFSET, buff.st_birthtimespec.tv_nsec);
-+            }
-         }
-+
- #elif defined __st_birthtime
-         /* As above, but OpenBSD calls it slightly differently. */
-         if (buff.__st_birthtime > 0) {
-             entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME, buff.__st_birthtime);
-+
-+            if ((details & KIO::StatTimeNsOffset) == KIO::StatTimeNsOffset) {
-+                entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME_NS_OFFSET, buff.__st_birthtimensec);
-+            }
-         }
-+
- #elif HAVE_STATX
-         /* And linux version using statx syscall */
-         if (buff.stx_mask & STATX_BTIME) {
-             entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME, buff.stx_btime.tv_sec);
- 
-             if ((details & KIO::StatTimeNsOffset) == KIO::StatTimeNsOffset) {
--                entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME_NS_OFFSET, buff.stx_btime.tv_nsec / 1000000);
-+                entry.fastInsert(KIO::UDSEntry::UDS_CREATION_TIME_NS_OFFSET, buff.stx_btime.tv_nsec);
-             }
-         }
- #endif
diff --git a/kde/frameworks/tier3/kio/kio.py b/kde/frameworks/tier3/kio/kio.py
index 9de0b2f43..53083b73c 100644
--- a/kde/frameworks/tier3/kio/kio.py
+++ b/kde/frameworks/tier3/kio/kio.py
@@ -6,8 +6,6 @@ from CraftCore import CraftCore
 class subinfo(info.infoclass):
     def setTargets(self):
         self.versionInfo.setDefaultValues()
-        self.patchToApply["6.24.0"] = [("kio-6-24-nanosecs-fix.patch", 1), ("kio-6-24-macos-build-fix.patch", 1)]
-        self.patchLevel["6.24.0"] = 1
 
     def setDependencies(self):
         self.buildDependencies["virtual/base"] = None
diff --git a/kde/frameworks/version.ini b/kde/frameworks/version.ini
index 0b0569873..0d14abd05 100644
--- a/kde/frameworks/version.ini
+++ b/kde/frameworks/version.ini
@@ -5,10 +5,10 @@ branches = master
 ; all releases we want to support for building
 ; restrict to last 5 stable releases
 ; if you remove releases here, consider to cleanup the scripts/patches for special handling of old releases
-tarballs = 6.24.0;6.25.0;6.26.0;6.27.0;6.28.0
+tarballs = 6.25.0;6.26.0;6.27.0;6.28.0;6.29.0
 
 ; release target to build
-defaulttarget = 6.28.0
+defaulttarget = 6.29.0
 
 tarballUrl = https://download.kde.org/stable/frameworks/${VERSION_MAJOR}.${VERSION_MINOR}/${PACKAGE_NAME}-${VERSION}.tar.xz
 tarballDigestUrl = https://download.kde.org/stable/frameworks/${VERSION_MAJOR}.${VERSION_MINOR}/${PACKAGE_NAME}-${VERSION}.tar.xz.sha256
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.