From 918c40f616f408a6614fe22b8044f492316395a1 Mon Sep 17 00:00:00 2001 From: ck Date: Fri, 18 Oct 2024 13:40:27 +0800 Subject: [PATCH 1/3] fix(dlog): JournalAppender not work BUILD_WITH_SYSTEMD not defined --- archlinux/PKGBUILD | 1 + debian/rules | 2 +- dtkcore.cmake | 3 +++ src/log/LogManager.cpp | 2 ++ tests/CMakeLists.txt | 10 ---------- 5 files changed, 7 insertions(+), 11 deletions(-) diff --git a/archlinux/PKGBUILD b/archlinux/PKGBUILD index 4c58315f..749bc573 100644 --- a/archlinux/PKGBUILD +++ b/archlinux/PKGBUILD @@ -24,6 +24,7 @@ build() { -GNinja \ -DMKSPECS_INSTALL_DIR=lib/qt/mkspecs/modules \ -DBUILD_DOCS=ON \ + -DBUILD_WITH_SYSTEMD=ON \ -DBUILD_EXAMPLES=OFF \ -DQCH_INSTALL_DESTINATION=share/doc/qt \ -DCMAKE_INSTALL_LIBDIR=lib \ diff --git a/debian/rules b/debian/rules index c9404da4..df25bf79 100755 --- a/debian/rules +++ b/debian/rules @@ -22,7 +22,7 @@ endif dh $@ override_dh_auto_configure: - dh_auto_configure -- -DBUILD_EXAMPLES=OFF -DBUILD_DOCS=ON -DBUILD_VERSION=$(BUILD_VER) -DDTK_VERSION=$(PACK_VER) -DD_DSG_APP_DATA_FALLBACK=/var/dsg/appdata + dh_auto_configure -- -DBUILD_WITH_SYSTEMD=ON -DBUILD_EXAMPLES=OFF -DBUILD_DOCS=ON -DBUILD_VERSION=$(BUILD_VER) -DDTK_VERSION=$(PACK_VER) -DD_DSG_APP_DATA_FALLBACK=/var/dsg/appdata #override_dh_auto_test: # echo "skip auto test" diff --git a/dtkcore.cmake b/dtkcore.cmake index 3a7307c8..95c98d41 100644 --- a/dtkcore.cmake +++ b/dtkcore.cmake @@ -27,6 +27,9 @@ if(UNIX AND NOT APPLE) endif() set (BUILD_WITH_SYSTEMD OFF CACHE BOOL "Build with systemd") +if (BUILD_WITH_SYSTEMD) + add_definitions(-DBUILD_WITH_SYSTEMD) +endif() set(CMAKE_CXX_STANDARD 17) diff --git a/src/log/LogManager.cpp b/src/log/LogManager.cpp index 50246fff..5ff0c194 100644 --- a/src/log/LogManager.cpp +++ b/src/log/LogManager.cpp @@ -149,6 +149,8 @@ void DLogManager::initJournalAppender() Q_D(DLogManager); d->m_journalAppender = new JournalAppender(); dlogger->registerAppender(d->m_journalAppender); +#else + qWarning() << "BUILD_WITH_SYSTEMD not defined or OS not support!!"; #endif } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a42284de..bc1b5a29 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -21,9 +21,6 @@ if(LINUX) if("${QT_VERSION_MAJOR}" STREQUAL "5") pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) endif() - if(BUILD_WITH_SYSTEMD) - pkg_check_modules(Systemd REQUIRED IMPORTED_TARGET libsystemd) - endif() endif() find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Xml) @@ -88,13 +85,6 @@ if(LINUX) ) endif() - if(BUILD_WITH_SYSTEMD) - target_link_libraries( - ${BIN_NAME} PRIVATE - PkgConfig::Systemd - ) - endif() - target_link_libraries( ${BIN_NAME} PRIVATE Qt${QT_VERSION_MAJOR}::DBus From 2e0b67ec2d8012b56ac060798a00701fa34a8ed9 Mon Sep 17 00:00:00 2001 From: Zhang Dingyuan Date: Mon, 14 Oct 2024 21:06:07 +0800 Subject: [PATCH 2/3] feat: support Qt 6.8 support qt 6.8 Log: --- src/dci/private/ddcifileengine.cpp | 34 +++++++++++++++++++++ src/dci/private/ddcifileengine_p.h | 14 +++++++++ src/filesystem/dcapfsfileengine.cpp | 18 +++++++++++ src/filesystem/private/dcapfsfileengine_p.h | 8 +++++ 4 files changed, 74 insertions(+) diff --git a/src/dci/private/ddcifileengine.cpp b/src/dci/private/ddcifileengine.cpp index bf2090d1..14b2a0ae 100644 --- a/src/dci/private/ddcifileengine.cpp +++ b/src/dci/private/ddcifileengine.cpp @@ -30,14 +30,25 @@ Q_LOGGING_CATEGORY(logFE, "dtk.dci.fileengine", QtInfoMsg) #define DCI_FILE_SCHEME "dci:" #define DCI_FILE_SUFFIX ".dci" +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) +std::unique_ptr DDciFileEngineHandler::create(const QString &fileName) const +#else QAbstractFileEngine *DDciFileEngineHandler::create(const QString &fileName) const +#endif { if (!fileName.startsWith(QStringLiteral(DCI_FILE_SCHEME))) return nullptr; +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + std::unique_ptr engine(new DDciFileEngine(fileName)); +#else DDciFileEngine *engine = new DDciFileEngine(fileName); +#endif + if (!engine->isValid()) { +#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0) delete engine; +#endif return nullptr; } @@ -66,11 +77,16 @@ static DDciFileShared getDciFile(const QString &dciFilePath, bool usePath = true } DDciFileEngineIterator::DDciFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters) +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + : QAbstractFileEngineIterator(nullptr, filters, nameFilters) +#else : QAbstractFileEngineIterator(filters, nameFilters) +#endif { } +#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0) QString DDciFileEngineIterator::next() { current = nextValid; @@ -78,6 +94,9 @@ QString DDciFileEngineIterator::next() } bool DDciFileEngineIterator::hasNext() const +#else +bool DDciFileEngineIterator::advance() +#endif { if (!file) { const auto paths = DDciFileEngine::resolvePath(path()); @@ -111,6 +130,9 @@ bool DDciFileEngineIterator::hasNext() const continue; nextValid = i; +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + current = nextValid; +#endif return true; } @@ -543,12 +565,24 @@ QDateTime DDciFileEngine::fileTime(QAbstractFileEngine::FileTime time) const } #endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) +QAbstractFileEngine::IteratorUniquePtr DDciFileEngine::beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) +#else DDciFileEngine::Iterator *DDciFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) +#endif { +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + return QAbstractFileEngine::IteratorUniquePtr(new DDciFileEngineIterator(filters, filterNames)); +#else return new DDciFileEngineIterator(filters, filterNames); +#endif } +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) +QAbstractFileEngine::IteratorUniquePtr DDciFileEngine::endEntryList() +#else DDciFileEngine::Iterator *DDciFileEngine::endEntryList() +#endif { return nullptr; } diff --git a/src/dci/private/ddcifileengine_p.h b/src/dci/private/ddcifileengine_p.h index 143365d8..118b9716 100644 --- a/src/dci/private/ddcifileengine_p.h +++ b/src/dci/private/ddcifileengine_p.h @@ -24,7 +24,11 @@ DCORE_BEGIN_NAMESPACE class DDciFileEngineHandler : public QAbstractFileEngineHandler { public: +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + std::unique_ptr create(const QString &fileName) const override; +#else QAbstractFileEngine *create(const QString &fileName) const override; +#endif }; class DDciFile; @@ -35,8 +39,12 @@ class DDciFileEngineIterator : public QAbstractFileEngineIterator public: DDciFileEngineIterator(QDir::Filters filters, const QStringList &nameFilters); +#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0) QString next() override; bool hasNext() const override; +#else + bool advance() override; +#endif QString currentFileName() const override; @@ -102,8 +110,14 @@ class DDciFileEngine : public QAbstractFileEngine #endif typedef DDciFileEngineIterator Iterator; + +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override; + IteratorUniquePtr endEntryList() override; +#else Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override; Iterator *endEntryList() override; +#endif qint64 read(char *data, qint64 maxlen) override; qint64 write(const char *data, qint64 len) override; diff --git a/src/filesystem/dcapfsfileengine.cpp b/src/filesystem/dcapfsfileengine.cpp index 933616be..4cefc1bf 100644 --- a/src/filesystem/dcapfsfileengine.cpp +++ b/src/filesystem/dcapfsfileengine.cpp @@ -14,6 +14,7 @@ DCORE_BEGIN_NAMESPACE extern QString _d_cleanPath(const QString &path); extern bool _d_isSubFileOf(const QString &filePath, const QString &directoryPath); +#if QT_VERSION < QT_VERSION_CHECK(6, 8, 0) static bool capDirIteraterHasNext(QAbstractFileEngineIterator *it) { const QStringList &paths = DCapManager::instance()->paths(); @@ -28,10 +29,19 @@ static bool capDirIteraterHasNext(QAbstractFileEngineIterator *it) return ret; return DVtableHook::callOriginalFun(it, &QAbstractFileEngineIterator::hasNext); } +#endif +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) +std::unique_ptr DCapFSFileEngineHandler::create(const QString &fileName) const +#else QAbstractFileEngine *DCapFSFileEngineHandler::create(const QString &fileName) const +#endif { +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + return std::unique_ptr(new DCapFSFileEngine(fileName)); +#else return new DCapFSFileEngine(fileName); +#endif } @@ -210,10 +220,18 @@ QStringList DCapFSFileEngine::entryList(QDir::Filters filters, const QStringList return QFSFileEngine::entryList(filters, filterNames); } +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) +QAbstractFileEngine::IteratorUniquePtr DCapFSFileEngine::beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) +#else QAbstractFileEngine::Iterator *DCapFSFileEngine::beginEntryList(QDir::Filters filters, const QStringList &filterNames) +#endif { +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + auto ret = QFSFileEngine::beginEntryList(path, filters, filterNames); +#else auto ret = QFSFileEngine::beginEntryList(filters, filterNames); DVtableHook::overrideVfptrFun(ret, &QAbstractFileEngineIterator::hasNext, &capDirIteraterHasNext); +#endif return ret; } diff --git a/src/filesystem/private/dcapfsfileengine_p.h b/src/filesystem/private/dcapfsfileengine_p.h index 3a4a06b4..d7a44275 100644 --- a/src/filesystem/private/dcapfsfileengine_p.h +++ b/src/filesystem/private/dcapfsfileengine_p.h @@ -14,7 +14,11 @@ DCORE_BEGIN_NAMESPACE class DCapFSFileEngineHandler : public QAbstractFileEngineHandler { public: +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + std::unique_ptr create(const QString &fileName) const override; +#else QAbstractFileEngine *create(const QString &fileName) const override; +#endif }; class DCapFSFileEnginePrivate; @@ -47,7 +51,11 @@ class DCapFSFileEngine : public QFSFileEngine, public DObject bool cloneTo(QAbstractFileEngine *target) override; bool setSize(qint64 size) override; QStringList entryList(QDir::Filters filters, const QStringList &filterNames) const override; +#if QT_VERSION >= QT_VERSION_CHECK(6, 8, 0) + IteratorUniquePtr beginEntryList(const QString &path, QDir::Filters filters, const QStringList &filterNames) override; +#else Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames) override; +#endif bool canReadWrite(const QString &path) const; }; From c234a5cb38fc6eed9e6a965c9235abc6f381920f Mon Sep 17 00:00:00 2001 From: ck Date: Wed, 23 Oct 2024 10:23:23 +0800 Subject: [PATCH 3/3] fix(build): debian/rule use tab instead of space space ==> tab --- debian/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debian/rules b/debian/rules index df25bf79..f618c0b2 100755 --- a/debian/rules +++ b/debian/rules @@ -22,7 +22,7 @@ endif dh $@ override_dh_auto_configure: - dh_auto_configure -- -DBUILD_WITH_SYSTEMD=ON -DBUILD_EXAMPLES=OFF -DBUILD_DOCS=ON -DBUILD_VERSION=$(BUILD_VER) -DDTK_VERSION=$(PACK_VER) -DD_DSG_APP_DATA_FALLBACK=/var/dsg/appdata + dh_auto_configure -- -DBUILD_WITH_SYSTEMD=ON -DBUILD_EXAMPLES=OFF -DBUILD_DOCS=ON -DBUILD_VERSION=$(BUILD_VER) -DDTK_VERSION=$(PACK_VER) -DD_DSG_APP_DATA_FALLBACK=/var/dsg/appdata #override_dh_auto_test: # echo "skip auto test"