From 0c177cd0d19a64270ee4d3eb1f588962ae835dbe Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Wed, 20 Feb 2019 17:26:36 +0100 Subject: [PATCH] Add ICore::cacheResourcePath() We need some directory where we save the index database and the precompiled headers. This files should be persistent but the user can delete them if he wants because we will rebuild them. Task-number: QTCREATORBUG-22012 Change-Id: I9f25eb48a9992d6385a96427ef9c10bc739a3567 Reviewed-by: Eike Ziller --- src/plugins/clangpchmanager/clangpchmanagerplugin.cpp | 4 +++- src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp | 4 ++-- src/plugins/clangrefactoring/clangrefactoringplugin.cpp | 4 +++- .../clangrefactoring/refactoringconnectionclient.cpp | 4 ++-- src/plugins/coreplugin/icore.cpp | 6 ++++++ src/plugins/coreplugin/icore.h | 1 + tests/unit/mockup/coreplugin/icore.h | 6 ++++++ 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/plugins/clangpchmanager/clangpchmanagerplugin.cpp b/src/plugins/clangpchmanager/clangpchmanagerplugin.cpp index 8f7ea722426..7d564399b65 100644 --- a/src/plugins/clangpchmanager/clangpchmanagerplugin.cpp +++ b/src/plugins/clangpchmanager/clangpchmanagerplugin.cpp @@ -62,7 +62,9 @@ QString backendProcessPath() class ClangPchManagerPluginData { public: - Sqlite::Database database{Utils::PathString{Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"}, 1000ms}; + Sqlite::Database database{Utils::PathString{Core::ICore::cacheResourcePath() + + "/symbol-experimental-v1.db"}, + 1000ms}; ClangBackEnd::RefactoringDatabaseInitializer databaseInitializer{database}; ClangBackEnd::FilePathCaching filePathCache{database}; ClangPchManager::ProgressManager pchCreationProgressManager{[](QFutureInterface &promise) { diff --git a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp index 6db0db09745..a8e7e7a2ef4 100644 --- a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp +++ b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp @@ -51,11 +51,11 @@ ClangPchManager::PchManagerConnectionClient::PchManagerConnectionClient( { m_processCreator.setTemporaryDirectoryPattern("clangpchmanagerbackend-XXXXXX"); - QDir pchsDirectory(Core::ICore::userResourcePath()); + QDir pchsDirectory(Core::ICore::cacheResourcePath()); pchsDirectory.mkdir("pchs"); pchsDirectory.cd("pchs"); m_processCreator.setArguments({connectionName(), - Core::ICore::userResourcePath() + "/symbol-experimental-v1.db", + Core::ICore::cacheResourcePath() + "/symbol-experimental-v1.db", pchsDirectory.absolutePath()}); stdErrPrefixer().setPrefix("PchManagerConnectionClient.stderr: "); diff --git a/src/plugins/clangrefactoring/clangrefactoringplugin.cpp b/src/plugins/clangrefactoring/clangrefactoringplugin.cpp index 917823152e3..ea765bed5f8 100644 --- a/src/plugins/clangrefactoring/clangrefactoringplugin.cpp +++ b/src/plugins/clangrefactoring/clangrefactoringplugin.cpp @@ -77,7 +77,9 @@ class ClangRefactoringPluginData public: using QuerySqliteReadStatementFactory = QuerySqliteStatementFactory; - Sqlite::Database database{Utils::PathString{Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"}, 1000ms}; + Sqlite::Database database{Utils::PathString{Core::ICore::cacheResourcePath() + + "/symbol-experimental-v1.db"}, + 1000ms}; ClangBackEnd::RefactoringDatabaseInitializer databaseInitializer{database}; ClangBackEnd::FilePathCaching filePathCache{database}; ClangPchManager::ProgressManager progressManager{ diff --git a/src/plugins/clangrefactoring/refactoringconnectionclient.cpp b/src/plugins/clangrefactoring/refactoringconnectionclient.cpp index ff66ec20cbf..a42ed38a161 100644 --- a/src/plugins/clangrefactoring/refactoringconnectionclient.cpp +++ b/src/plugins/clangrefactoring/refactoringconnectionclient.cpp @@ -48,8 +48,8 @@ RefactoringConnectionClient::RefactoringConnectionClient(RefactoringClientInterf , m_serverProxy(client) { m_processCreator.setTemporaryDirectoryPattern("clangrefactoringbackend-XXXXXX"); - m_processCreator.setArguments({connectionName(), - Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"}); + m_processCreator.setArguments( + {connectionName(), Core::ICore::cacheResourcePath() + "/symbol-experimental-v1.db"}); stdErrPrefixer().setPrefix("RefactoringConnectionClient.stderr: "); stdOutPrefixer().setPrefix("RefactoringConnectionClient.stdout: "); diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index f16f4369bb2..9cb23af6562 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -35,6 +35,7 @@ #include #include +#include /*! \namespace Core @@ -439,6 +440,11 @@ QString ICore::userResourcePath() return urp; } +QString ICore::cacheResourcePath() +{ + return QStandardPaths::writableLocation(QStandardPaths::CacheLocation); +} + QString ICore::installerResourcePath() { return QFileInfo(settings(QSettings::SystemScope)->fileName()).path() + '/' diff --git a/src/plugins/coreplugin/icore.h b/src/plugins/coreplugin/icore.h index 80e387658f4..5125345cffd 100644 --- a/src/plugins/coreplugin/icore.h +++ b/src/plugins/coreplugin/icore.h @@ -94,6 +94,7 @@ public: static QString resourcePath(); static QString userResourcePath(); + static QString cacheResourcePath(); static QString installerResourcePath(); static QString libexecPath(); static QString clangExecutable(const QString &clangBinDirectory); diff --git a/tests/unit/mockup/coreplugin/icore.h b/tests/unit/mockup/coreplugin/icore.h index cfec03f999a..579fbc3b56f 100644 --- a/tests/unit/mockup/coreplugin/icore.h +++ b/tests/unit/mockup/coreplugin/icore.h @@ -6,5 +6,11 @@ inline static QString userResourcePath() { return QDir::tempPath(); } + +inline static QString cacheResourcePath() +{ + return QDir::tempPath(); +} + } // namespace ICore } // namespace Core