Git commit 49fecea8e218ce03b01073c1604cfc0b683b1cc5 by Vishesh Handa. Committed on 18/05/2015 at 14:33. Pushed by vhanda into branch 'master'.
Disable compiling the Baloo Daemon without inotify Baloo requires inotify. It's a hard dependency for us. When we do not have it, we connect to kio signals. But that code path isn't tested and only provides a sub-set of the required features. Baloo might be somewhat usable on those systems, but we really do not know. The idea of shipping a half baked product does not seem appealing. It seems better to focus on what we can do, and do that well. Baloo will still compile its library on non-Linux based systems, since its a dependency for some applications (eg - Dolphin), but it will not do anything. CCMAIL: [email protected] M +10 -2 CMakeLists.txt M +0 -8 autotests/unit/file/CMakeLists.txt M +8 -5 src/CMakeLists.txt M +1 -11 src/file/CMakeLists.txt M +7 -35 src/file/filewatch.cpp M +0 -5 src/file/filewatch.h M +2 -8 tests/file/CMakeLists.txt http://commits.kde.org/baloo/49fecea8e218ce03b01073c1604cfc0b683b1cc5 diff --git a/CMakeLists.txt b/CMakeLists.txt index 95bc568..42ef1be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,11 @@ set_package_properties(LMDB PROPERTIES # Compiler flags add_definitions(-DQT_NO_KEYWORDS) +set(BUILD_KINOTIFY False) +if(CMAKE_SYSTEM_NAME MATCHES "Linux") + set(BUILD_KINOTIFY True) +endif() + include_directories( ${LMDB_INCLUDE_DIR} ${CMAKE_SOURCE_DIR} @@ -57,8 +62,11 @@ include_directories( # Targets add_subdirectory(src) add_subdirectory(icons) -add_subdirectory(tests) -add_subdirectory(autotests) + +if (${BUILD_KINOTIFY}) + add_subdirectory(tests) + add_subdirectory(autotests) +endif() # Config files set(CMAKECONFIG_INSTALL_DIR "${CMAKECONFIG_INSTALL_PREFIX}/KF5Baloo") diff --git a/autotests/unit/file/CMakeLists.txt b/autotests/unit/file/CMakeLists.txt index 08fffbe..fc0c70c 100644 --- a/autotests/unit/file/CMakeLists.txt +++ b/autotests/unit/file/CMakeLists.txt @@ -25,20 +25,12 @@ baloo_file_auto_tests( # # File Watch # -set(BUILD_KINOTIFY False) -if(CMAKE_SYSTEM_NAME MATCHES "Linux") - set(BUILD_KINOTIFY True) - add_definitions(-DBUILD_KINOTIFY) -endif() - set(fileWatch_SRC filewatchtest.cpp ../lib/xattrdetector.cpp) ecm_add_test(${fileWatch_SRC} TEST_NAME "filewatchtest" LINK_LIBRARIES Qt5::Test Qt5::DBus KF5::Baloo baloofilecommon ) - - # # Basic Indexing Queue Test # diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 207fc00..bd646e9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,10 @@ -add_subdirectory(codecs) -add_subdirectory(engine) add_subdirectory(lib) -add_subdirectory(file) -add_subdirectory(kioslaves) -add_subdirectory(tools) +add_subdirectory(engine) +add_subdirectory(codecs) add_subdirectory(qml) + +if (${BUILD_KINOTIFY}) + add_subdirectory(file) + add_subdirectory(kioslaves) + add_subdirectory(tools) +endif() diff --git a/src/file/CMakeLists.txt b/src/file/CMakeLists.txt index 3188794..8158b7f 100644 --- a/src/file/CMakeLists.txt +++ b/src/file/CMakeLists.txt @@ -27,19 +27,9 @@ set(file_static_lib_SRCS pendingfilequeue.cpp metadatamover.cpp pendingfile.cpp + kinotify.cpp ) -set(BUILD_KINOTIFY False) -if(CMAKE_SYSTEM_NAME MATCHES "Linux") - set(BUILD_KINOTIFY True) - set(file_static_lib_SRCS - ${file_static_lib_SRCS} - kinotify.cpp - ) - add_definitions(-DBUILD_KINOTIFY) -endif() - - add_library(baloofilecommon STATIC ${file_static_lib_SRCS}) target_link_libraries(baloofilecommon Qt5::DBus diff --git a/src/file/filewatch.cpp b/src/file/filewatch.cpp index f319c9a..4c5c77f 100644 --- a/src/file/filewatch.cpp +++ b/src/file/filewatch.cpp @@ -26,15 +26,14 @@ #include "pendingfile.h" #include "baloodebug.h" -#ifdef BUILD_KINOTIFY #include "kinotify.h" -#endif -#include <QtCore/QDir> -#include <QtCore/QThread> -#include <QtDBus/QDBusConnection> +#include <QDir> +#include <QDateTime> +#include <QDBusConnection> -#include <KConfigGroup> +#include <syslog.h> +#include <kauth.h> using namespace Baloo; @@ -42,9 +41,7 @@ FileWatch::FileWatch(Database* db, FileIndexerConfig* config, QObject* parent) : QObject(parent) , m_db(db) , m_config(config) -#ifdef BUILD_KINOTIFY , m_dirWatch(0) -#endif { Q_ASSERT(db); Q_ASSERT(config); @@ -57,7 +54,6 @@ FileWatch::FileWatch(Database* db, FileIndexerConfig* config, QObject* parent) connect(m_pendingFileQueue, &PendingFileQueue::indexXAttr, this, &FileWatch::indexXAttr); connect(m_pendingFileQueue, &PendingFileQueue::removeFileIndex, m_metadataMover, &MetadataMover::removeFileMetadata); -#ifdef BUILD_KINOTIFY // monitor the file system for changes (restricted by the inotify limit) m_dirWatch = new KInotify(m_config, this); @@ -75,9 +71,6 @@ FileWatch::FileWatch(Database* db, FileIndexerConfig* config, QObject* parent) Q_FOREACH (const QString& folder, folders) { watchFolder(folder); } -#else - connectToKDirNotify(); -#endif connect(m_config, &Baloo::FileIndexerConfig::configChanged, this, &FileWatch::updateIndexedFoldersWatches); } @@ -92,7 +85,6 @@ FileWatch::~FileWatch() void FileWatch::watchFolder(const QString& path) { qCDebug(BALOO) << path; -#ifdef BUILD_KINOTIFY if (m_dirWatch && !m_dirWatch->watchingPath(path)) { KInotify::WatchEvents flags(KInotify::EventMove | KInotify::EventDelete | KInotify::EventDeleteSelf | KInotify::EventCloseWrite | KInotify::EventCreate @@ -100,7 +92,6 @@ void FileWatch::watchFolder(const QString& path) m_dirWatch->addWatch(path, flags, KInotify::WatchFlags()); } -#endif } void FileWatch::slotFileMoved(const QString& urlFrom, const QString& urlTo) @@ -172,21 +163,6 @@ void FileWatch::slotAttributeChanged(const QString& path) m_pendingFileQueue->enqueue(file); } -void FileWatch::connectToKDirNotify() -{ - // monitor KIO for changes - QDBusConnection::sessionBus().connect(QString(), QString(), QLatin1String("org.kde.KDirNotify"), QLatin1String("FileMoved"), - this, SIGNAL(slotFileMoved(QString,QString))); - QDBusConnection::sessionBus().connect(QString(), QString(), QLatin1String("org.kde.KDirNotify"), QLatin1String("FilesRemoved"), - this, SIGNAL(slotFilesDeleted(QStringList))); -} - - -#ifdef BUILD_KINOTIFY - -#include <syslog.h> -#include <kauth.h> - // Try to raise the inotify watch limit by executing // a helper which modifies /proc/sys/fs/inotify/max_user_watches bool raiseWatchLimit() @@ -212,21 +188,18 @@ void FileWatch::slotInotifyWatchUserLimitReached(const QString& path) // so put something in the syslog so someone notices. syslog(LOG_USER | LOG_WARNING, "KDE Baloo File Indexer has reached the inotify folder watch limit. File changes may be ignored."); // we do it the brutal way for now hoping with new kernels and defaults this will never happen - // Delete the KInotify and switch to KDirNotify dbus signals + // Delete the KInotify + // FIXME: Maybe we should be aborting? if (m_dirWatch) { m_dirWatch->deleteLater(); m_dirWatch = 0; } - connectToKDirNotify(); Q_EMIT installedWatches(); } } -#endif - void FileWatch::updateIndexedFoldersWatches() { -#ifdef BUILD_KINOTIFY if (m_dirWatch) { QStringList folders = m_config->includeFolders(); Q_FOREACH (const QString& folder, folders) { @@ -234,6 +207,5 @@ void FileWatch::updateIndexedFoldersWatches() watchFolder(folder); } } -#endif } diff --git a/src/file/filewatch.h b/src/file/filewatch.h index 4abe006..40bb438 100644 --- a/src/file/filewatch.h +++ b/src/file/filewatch.h @@ -53,10 +53,7 @@ private Q_SLOTS: void slotFileClosedAfterWrite(const QString&); void slotAttributeChanged(const QString& path); void slotFileModified(const QString& path); - void connectToKDirNotify(); -#ifdef BUILD_KINOTIFY void slotInotifyWatchUserLimitReached(const QString&); -#endif /** * To be called whenever the list of indexed folders changes. This is done because @@ -74,9 +71,7 @@ private: MetadataMover* m_metadataMover; FileIndexerConfig* m_config; -#ifdef BUILD_KINOTIFY KInotify* m_dirWatch; -#endif /// queue used to "compress" multiple file events like downloads PendingFileQueue* m_pendingFileQueue; diff --git a/tests/file/CMakeLists.txt b/tests/file/CMakeLists.txt index 93ce6c3..3b8c77f 100644 --- a/tests/file/CMakeLists.txt +++ b/tests/file/CMakeLists.txt @@ -31,14 +31,8 @@ target_link_libraries(basicindexingqueuetest-manual # baloofilecommon #) -if(CMAKE_SYSTEM_NAME MATCHES "Linux") - if(BUILD_KINOTIFY) - add_executable(inotifytest inotify.cpp) - target_link_libraries(inotifytest - Qt5::Core baloofilecommon - ) - endif() -endif(CMAKE_SYSTEM_NAME MATCHES "Linux") +add_executable(inotifytest inotify.cpp) +target_link_libraries(inotifytest Qt5::Core baloofilecommon) # # Storage Devices _______________________________________________ release-team mailing list [email protected] https://mail.kde.org/mailman/listinfo/release-team
