summaryrefslogtreecommitdiff
path: root/dev-qt
diff options
context:
space:
mode:
authorIonen Wolkens <ionen@gentoo.org>2024-11-12 21:10:07 -0500
committerIonen Wolkens <ionen@gentoo.org>2024-11-13 05:03:31 -0500
commit14100fce76cdbb0b029750a6c04f63d93736dca6 (patch)
treeed10a556562196eac4e6043414f96fbf870b26fa /dev-qt
parentwww-client/qutebrowser: adjust tests for Qt6.8 in non-live (diff)
downloadgentoo-14100fce76cdbb0b029750a6c04f63d93736dca6.tar.gz
gentoo-14100fce76cdbb0b029750a6c04f63d93736dca6.tar.bz2
gentoo-14100fce76cdbb0b029750a6c04f63d93736dca6.zip
dev-qt/qt-creator: fix tests with Qt6.8.0 and build with 6.8.1
Possible this may be for nothing if a new qt-creator releases before Qt6.8.1 (and 6.8.0 is still masked), but wanted to get potential blockers for 6.8.1 out of the way now esp. given this is not currently fixed in the 14.x branch upstream and would need qt-creator-15.x Signed-off-by: Ionen Wolkens <ionen@gentoo.org>
Diffstat (limited to 'dev-qt')
-rw-r--r--dev-qt/qt-creator/files/qt-creator-14.0.2-qt681.patch141
-rw-r--r--dev-qt/qt-creator/qt-creator-14.0.2.ebuild1
2 files changed, 142 insertions, 0 deletions
diff --git a/dev-qt/qt-creator/files/qt-creator-14.0.2-qt681.patch b/dev-qt/qt-creator/files/qt-creator-14.0.2-qt681.patch
new file mode 100644
index 000000000000..0dbe75feb7c4
--- /dev/null
+++ b/dev-qt/qt-creator/files/qt-creator-14.0.2-qt681.patch
@@ -0,0 +1,141 @@
+Backport of [1]+[2] to fix tests with Qt6.8.0 and build with Qt6.8.1.
+
+There was some refactoring in these files which prevent anything from
+applying cleanly, so this was manually rebased -- hopefully correct
+(fsengine tests pass again, so it should be fine).
+
+[1] https://github.com/qt-creator/qt-creator/commit/81d4e8a3742
+[2] https://github.com/qt-creator/qt-creator/commit/f993fb76ded
+--- a/src/libs/utils/fsengine/diriterator.h
++++ b/src/libs/utils/fsengine/diriterator.h
+@@ -16,4 +16,36 @@
+ namespace Internal {
+
++#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
++inline std::pair<QDir::Filters, QDirIterator::IteratorFlags> convertQDirListingIteratorFlags(
++ QDirListing::IteratorFlags flags)
++{
++ QDir::Filters filters = QDir::Files | QDir::Dirs | QDir::System | QDir::NoDotAndDotDot;
++ QDirIterator::IteratorFlags iteratorFlags = QDirIterator::NoIteratorFlags;
++
++ if (flags & QDirListing::IteratorFlag::ExcludeFiles)
++ filters.setFlag(QDir::Files, false);
++ if (flags & QDirListing::IteratorFlag::ExcludeDirs)
++ filters.setFlag(QDir::Dirs, false);
++ if (flags & QDirListing::IteratorFlag::ExcludeSpecial)
++ filters.setFlag(QDir::System, false);
++ if (flags & QDirListing::IteratorFlag::CaseSensitive)
++ filters.setFlag(QDir::CaseSensitive, true);
++ if (flags & QDirListing::IteratorFlag::IncludeHidden)
++ filters.setFlag(QDir::Hidden, true);
++
++ if (flags & QDirListing::IteratorFlag::IncludeDotAndDotDot) {
++ filters.setFlag(QDir::NoDot, false);
++ filters.setFlag(QDir::NoDotDot, false);
++ }
++
++ if (flags & QDirListing::IteratorFlag::Recursive)
++ iteratorFlags.setFlag(QDirIterator::Subdirectories, true);
++ if (flags & QDirListing::IteratorFlag::FollowDirSymlinks)
++ iteratorFlags.setFlag(QDirIterator::FollowSymlinks, true);
++
++ return {filters, iteratorFlags};
++}
++#endif
++
+ class DirIterator : public QAbstractFileEngineIterator
+ {
+--- a/src/libs/utils/fsengine/fixedlistfsengine.h
++++ b/src/libs/utils/fsengine/fixedlistfsengine.h
+@@ -67,8 +67,14 @@
+
+ #if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
+- IteratorUniquePtr beginEntryList(const QString &path,
+- QDir::Filters filters,
+- const QStringList &filterNames) override
++ QAbstractFileEngine::IteratorUniquePtr beginEntryList(
++ const QString &path,
++ QDirListing::IteratorFlags itFlags,
++ const QStringList &filterNames) override
+ {
++ // We do not support recursive or following symlinks for the Fixed List engine.
++ Q_ASSERT(itFlags.testFlag(QDirListing::IteratorFlag::Recursive) == false);
++
++ const auto [filters, _] = convertQDirListingIteratorFlags(itFlags);
++
+ return std::make_unique<DirIterator>(m_children, path, filters, filterNames);
+ }
+--- a/src/libs/utils/fsengine/fsengine_impl.cpp
++++ b/src/libs/utils/fsengine/fsengine_impl.cpp
+@@ -297,11 +297,25 @@
+
+ #if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
+-QAbstractFileEngine::IteratorUniquePtr FSEngineImpl::beginEntryList(const QString &path,
+- QDir::Filters filters,
+- const QStringList &filterNames)
++QAbstractFileEngine::IteratorUniquePtr FSEngineImpl::beginEntryList(
++ const QString &path, QDirListing::IteratorFlags itFlags, const QStringList &filterNames)
++{
++ const auto [filters, iteratorFlags] = convertQDirListingIteratorFlags(itFlags);
++
++ FilePaths paths{m_filePath.pathAppended(".")};
++ m_filePath.iterateDirectory(
++ [&paths](const FilePath &p, const FilePathInfo &fi) {
++ paths.append(p);
++ FilePathInfoCache::CachedData *data
++ = new FilePathInfoCache::CachedData{fi, QDateTime::currentDateTime().addSecs(60)};
++ g_filePathInfoCache.cache(p, data);
++ return IterationPolicy::Continue;
++ },
++ {filterNames, filters, iteratorFlags});
++
++ return std::make_unique<DirIterator>(std::move(paths), path, filters, filterNames);
++}
+ #else
+ QAbstractFileEngine::Iterator *FSEngineImpl::beginEntryList(QDir::Filters filters,
+ const QStringList &filterNames)
+-#endif
+ {
+ FilePaths paths{m_filePath.pathAppended(".")};
+@@ -317,10 +331,7 @@
+ {filterNames, filters});
+
+-#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
+- return std::make_unique<DirIterator>(std::move(paths), path, filters, filterNames);
+-#else
+ return new DirIterator(std::move(paths));
+-#endif
+ }
++#endif
+
+ qint64 FSEngineImpl::read(char *data, qint64 maxlen)
+--- a/src/libs/utils/fsengine/fsengine_impl.h
++++ b/src/libs/utils/fsengine/fsengine_impl.h
+@@ -60,7 +60,10 @@
+
+ #if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
+- IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters,
+- const QStringList &filterNames) override;
+- IteratorUniquePtr endEntryList() override { return {}; }
++ IteratorUniquePtr beginEntryList(
++ const QString &path,
++ QDirListing::IteratorFlags filters,
++ const QStringList &filterNames) final;
++
++ IteratorUniquePtr endEntryList() final { return {}; }
+ #else
+ Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override;
+--- a/src/libs/utils/fsengine/fsenginehandler.cpp
++++ b/src/libs/utils/fsengine/fsenginehandler.cpp
+@@ -23,7 +23,8 @@
+ public:
+ #if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0)
+- IteratorUniquePtr beginEntryList(const QString &path,
+- QDir::Filters filters,
+- const QStringList &filterNames) override
++ IteratorUniquePtr beginEntryList(
++ const QString &path,
++ QDirListing::IteratorFlags filters,
++ const QStringList &filterNames) override
+ {
+ return std::make_unique<FileIteratorWrapper>(
diff --git a/dev-qt/qt-creator/qt-creator-14.0.2.ebuild b/dev-qt/qt-creator/qt-creator-14.0.2.ebuild
index 5c8f2609c396..3bd904903799 100644
--- a/dev-qt/qt-creator/qt-creator-14.0.2.ebuild
+++ b/dev-qt/qt-creator/qt-creator-14.0.2.ebuild
@@ -93,6 +93,7 @@ PATCHES=(
"${FILESDIR}"/${PN}-11.0.2-musl-no-execinfo.patch
"${FILESDIR}"/${PN}-12.0.0-musl-no-malloc-trim.patch
"${FILESDIR}"/${PN}-14.0.1-clang19.patch
+ "${FILESDIR}"/${PN}-14.0.2-qt681.patch
)
pkg_setup() {