summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2017-11-27 16:42:59 +0100
committerMarco Bubke <marco.bubke@qt.io>2017-11-29 09:57:53 +0000
commit9ad760efda424105dc5aee91b94d07405603489a (patch)
tree0547f755ab164f88c224b454de69dd11a91c0689
parentc90e5b50dc27c67c7ac67d3eb9fc3d6f22ee0e6c (diff)
downloadqt-creator-9ad760efda424105dc5aee91b94d07405603489a.tar.gz
Clang: Store the database in user resources
We used temporary directories but this can be different paths. Task-number: QTCREATORBUG-19372 Change-Id: Id6ac18e6eecdc5bb354bda3741e16cb87c552ba6 Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io> Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/libs/clangsupport/clangcodemodelconnectionclient.cpp1
-rw-r--r--src/libs/clangsupport/connectionclient.cpp1
-rw-r--r--src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp4
-rw-r--r--src/plugins/clangrefactoring/clangrefactoringplugin.cpp2
-rw-r--r--src/plugins/clangrefactoring/refactoringconnectionclient.cpp4
-rw-r--r--src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp13
-rw-r--r--src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp12
7 files changed, 26 insertions, 11 deletions
diff --git a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp
index 88421eb613..7fc4395dfe 100644
--- a/src/libs/clangsupport/clangcodemodelconnectionclient.cpp
+++ b/src/libs/clangsupport/clangcodemodelconnectionclient.cpp
@@ -49,6 +49,7 @@ ClangCodeModelConnectionClient::ClangCodeModelConnectionClient(
m_client(client)
{
m_processCreator.setTemporaryDirectoryPattern("clangbackend-XXXXXX");
+ m_processCreator.setArguments({connectionName()});
stdErrPrefixer().setPrefix("clangbackend.stderr: ");
stdOutPrefixer().setPrefix("clangbackend.stdout: ");
diff --git a/src/libs/clangsupport/connectionclient.cpp b/src/libs/clangsupport/connectionclient.cpp
index 487b754fdb..2d7a3ee452 100644
--- a/src/libs/clangsupport/connectionclient.cpp
+++ b/src/libs/clangsupport/connectionclient.cpp
@@ -41,7 +41,6 @@ namespace ClangBackEnd {
ConnectionClient::ConnectionClient(const QString &connectionName)
: m_connectionName(connectionName)
{
- m_processCreator.setArguments({connectionName});
m_processCreator.setObserver(this);
listenForConnections();
diff --git a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp
index bb41391645..41c17b0454 100644
--- a/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp
+++ b/src/plugins/clangpchmanager/pchmanagerconnectionclient.cpp
@@ -25,6 +25,8 @@
#include "pchmanagerconnectionclient.h"
+#include <coreplugin/icore.h>
+
#include <utils/temporarydirectory.h>
#include <QCoreApplication>
@@ -48,6 +50,8 @@ ClangPchManager::PchManagerConnectionClient::PchManagerConnectionClient(
m_serverProxy(client, ioDevice())
{
m_processCreator.setTemporaryDirectoryPattern("clangpchmanagerbackend-XXXXXX");
+ m_processCreator.setArguments({connectionName(),
+ Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"});
stdErrPrefixer().setPrefix("PchManagerConnectionClient.stderr: ");
stdOutPrefixer().setPrefix("PchManagerConnectionClient.stdout: ");
diff --git a/src/plugins/clangrefactoring/clangrefactoringplugin.cpp b/src/plugins/clangrefactoring/clangrefactoringplugin.cpp
index c2071510c4..17138f0cd9 100644
--- a/src/plugins/clangrefactoring/clangrefactoringplugin.cpp
+++ b/src/plugins/clangrefactoring/clangrefactoringplugin.cpp
@@ -70,7 +70,7 @@ public:
using QuerySqliteReadStatementFactory = QuerySqliteStatementFactory<Sqlite::Database,
Sqlite::ReadStatement>;
- Sqlite::Database database{Utils::PathString{QDir::tempPath() + "/symbol.db"}};
+ Sqlite::Database database{Utils::PathString{Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"}};
ClangBackEnd::RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
ClangBackEnd::FilePathCaching filePathCache{database};
RefactoringClient refactoringClient;
diff --git a/src/plugins/clangrefactoring/refactoringconnectionclient.cpp b/src/plugins/clangrefactoring/refactoringconnectionclient.cpp
index 36d864352f..aacbb9810f 100644
--- a/src/plugins/clangrefactoring/refactoringconnectionclient.cpp
+++ b/src/plugins/clangrefactoring/refactoringconnectionclient.cpp
@@ -25,6 +25,8 @@
#include "refactoringconnectionclient.h"
+#include <coreplugin/icore.h>
+
#include <utils/temporarydirectory.h>
#include <QCoreApplication>
@@ -47,6 +49,8 @@ RefactoringConnectionClient::RefactoringConnectionClient(RefactoringClientInterf
m_serverProxy(client, nullptr)
{
m_processCreator.setTemporaryDirectoryPattern("clangrefactoringbackend-XXXXXX");
+ m_processCreator.setArguments({connectionName(),
+ Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"});
stdErrPrefixer().setPrefix("RefactoringConnectionClient.stderr: ");
stdOutPrefixer().setPrefix("RefactoringConnectionClient.stdout: ");
diff --git a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp
index c143daf662..939cbebe4e 100644
--- a/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp
+++ b/src/tools/clangpchmanagerbackend/clangpchmanagerbackendmain.cpp
@@ -35,6 +35,8 @@
#include <refactoringdatabaseinitializer.h>
#include <sqlitedatabase.h>
+#include <coreplugin/icore.h>
+
#include <QCommandLineParser>
#include <QCoreApplication>
#include <QFileSystemWatcher>
@@ -76,20 +78,21 @@ private:
QTemporaryDir temporaryDirectory;
};
-QString processArguments(QCoreApplication &application)
+QStringList processArguments(QCoreApplication &application)
{
QCommandLineParser parser;
parser.setApplicationDescription(QStringLiteral("Qt Creator Clang PchManager Backend"));
parser.addHelpOption();
parser.addVersionOption();
parser.addPositionalArgument(QStringLiteral("connection"), QStringLiteral("Connection"));
+ parser.addPositionalArgument(QStringLiteral("databasepath"), QStringLiteral("Database path"));
parser.process(application);
if (parser.positionalArguments().isEmpty())
parser.showHelp(1);
- return parser.positionalArguments().first();
+ return parser.positionalArguments();
}
int main(int argc, char *argv[])
@@ -103,9 +106,11 @@ int main(int argc, char *argv[])
QCoreApplication application(argc, argv);
- const QString connectionName = processArguments(application);
+ const QStringList arguments = processArguments(application);
+ const QString connectionName = arguments[0];
+ const QString databasePath = arguments[1];
- Sqlite::Database database{Utils::PathString{QDir::tempPath() + "/symbol.db"}};
+ Sqlite::Database database{Utils::PathString{databasePath}};
ClangBackEnd::RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
ClangBackEnd::FilePathCaching filePathCache{database};
ClangPathWatcher<QFileSystemWatcher, QTimer> includeWatcher(filePathCache);
diff --git a/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp b/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp
index e09b892bea..70fce2aa2d 100644
--- a/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp
+++ b/src/tools/clangrefactoringbackend/clangrefactoringbackendmain.cpp
@@ -42,7 +42,7 @@ using ClangBackEnd::RefactoringDatabaseInitializer;
using ClangBackEnd::ConnectionServer;
using ClangBackEnd::SymbolIndexing;
-QString processArguments(QCoreApplication &application)
+QStringList processArguments(QCoreApplication &application)
{
QCommandLineParser parser;
parser.setApplicationDescription(QStringLiteral("Qt Creator Clang Refactoring Backend"));
@@ -55,7 +55,7 @@ QString processArguments(QCoreApplication &application)
if (parser.positionalArguments().isEmpty())
parser.showHelp(1);
- return parser.positionalArguments().first();
+ return parser.positionalArguments();
}
int main(int argc, char *argv[])
@@ -69,16 +69,18 @@ try {
QCoreApplication application(argc, argv);
- const QString connection = processArguments(application);
+ const QStringList arguments = processArguments(application);
+ const QString connectionName = arguments[0];
+ const QString databasePath = arguments[1];
- Sqlite::Database database{Utils::PathString{QDir::tempPath() + "/symbol.db"}};
+ Sqlite::Database database{Utils::PathString{databasePath}};
RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
FilePathCaching filePathCache{database};
SymbolIndexing symbolIndexing{database, filePathCache};
RefactoringServer clangCodeModelServer{symbolIndexing, filePathCache};
ConnectionServer<RefactoringServer, RefactoringClientProxy> connectionServer;
connectionServer.setServer(&clangCodeModelServer);
- connectionServer.start(connection);
+ connectionServer.start(connectionName);
return application.exec();