From 54a04e68b98b88109751f07223d976614546d2a3 Mon Sep 17 00:00:00 2001 From: Marco Benelli Date: Wed, 21 Sep 2016 09:00:05 +0200 Subject: QmlJs: qmlplugindump working directory Use the plugin's parent path as working directory for the qmlplugindump process. This should be more reliable with regards to paths that include symbolic links to shared or remote volumes. Using the plugin's parent path will also be needed in order to handle relative paths passed to the dumper (ie: with the -dependencies option). This feature is not yet implemented in QtCreator. Change-Id: I9c863a95d03fc7d03c84e704e39f2e0520aaa01e Reviewed-by: Thomas Hartmann Reviewed-by: Tim Jenssen --- src/libs/qmljs/qmljsplugindumper.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/libs/qmljs/qmljsplugindumper.cpp') diff --git a/src/libs/qmljs/qmljsplugindumper.cpp b/src/libs/qmljs/qmljsplugindumper.cpp index 8ef89ebb431..16d84290a71 100644 --- a/src/libs/qmljs/qmljsplugindumper.cpp +++ b/src/libs/qmljs/qmljsplugindumper.cpp @@ -515,8 +515,12 @@ void PluginDumper::loadQmltypesFile(const QStringList &qmltypesFilePaths, void PluginDumper::runQmlDump(const QmlJS::ModelManagerInterface::ProjectInfo &info, const QStringList &arguments, const QString &importPath) { + QDir wd = QDir(importPath); + wd.cdUp(); QProcess *process = new QProcess(this); process->setEnvironment(info.qmlDumpEnvironment.toStringList()); + QString workingDir = wd.canonicalPath(); + process->setWorkingDirectory(workingDir); connect(process, static_cast(&QProcess::finished), this, &PluginDumper::qmlPluginTypeDumpDone); connect(process, static_cast(&QProcess::error), @@ -567,7 +571,7 @@ void PluginDumper::dump(const Plugin &plugin) args << QLatin1String("-nonrelocatable"); args << plugin.importUri; args << plugin.importVersion; - args << plugin.importPath; + args << (plugin.importPath.isEmpty() ? QLatin1String(".") : plugin.importPath); runQmlDump(info, args, plugin.qmldirPath); } -- cgit v1.2.3