diff options
author | Ionen Wolkens <ionen@gentoo.org> | 2024-11-12 21:10:07 -0500 |
---|---|---|
committer | Ionen Wolkens <ionen@gentoo.org> | 2024-11-13 05:03:31 -0500 |
commit | 14100fce76cdbb0b029750a6c04f63d93736dca6 (patch) | |
tree | ed10a556562196eac4e6043414f96fbf870b26fa /dev-qt | |
parent | www-client/qutebrowser: adjust tests for Qt6.8 in non-live (diff) | |
download | gentoo-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.patch | 141 | ||||
-rw-r--r-- | dev-qt/qt-creator/qt-creator-14.0.2.ebuild | 1 |
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() { |