summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFawzi Mohamed <fawzi.mohamed@digia.com>2013-11-05 11:32:47 +0100
committerFawzi Mohamed <fawzi.mohamed@digia.com>2013-11-05 17:00:33 +0100
commit9a4caa4b4c805884c53336b491575c06986078dc (patch)
tree4628a6b018c27df4ccae6fb50c00a1154be9b58f /src
parent242cba3065fc2eedbc056061467d9859b4195c74 (diff)
downloadqt-creator-9a4caa4b4c805884c53336b491575c06986078dc.tar.gz
ios: improve automatic kits
* fix incorrect old kits * avoid adding a special debugger Change-Id: I233068dbb9958045cdc2e875337297748b2b4ff8 Reviewed-by: hjk <hjk121@nokiamail.com> Reviewed-by: Fawzi Mohamed <fawzi.mohamed@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/debugger/debuggeritemmanager.cpp23
-rw-r--r--src/plugins/debugger/debuggeritemmanager.h1
-rw-r--r--src/plugins/ios/iosconfigurations.cpp54
-rw-r--r--src/plugins/ios/iosconfigurations.h1
4 files changed, 50 insertions, 29 deletions
diff --git a/src/plugins/debugger/debuggeritemmanager.cpp b/src/plugins/debugger/debuggeritemmanager.cpp
index dc04a11450..cf509fc003 100644
--- a/src/plugins/debugger/debuggeritemmanager.cpp
+++ b/src/plugins/debugger/debuggeritemmanager.cpp
@@ -38,10 +38,12 @@
#include <utils/fileutils.h>
#include <utils/persistentsettings.h>
#include <utils/qtcassert.h>
+#include <utils/hostosinfo.h>
#include <QDebug>
#include <QDir>
#include <QFileInfo>
+#include <QProcess>
using namespace ProjectExplorer;
using namespace Utils;
@@ -217,6 +219,19 @@ void DebuggerItemManager::autoDetectGdbOrLldbDebuggers()
QFileInfoList suspects;
+ if (HostOsInfo::isMacHost()) {
+ QProcess lldbInfo;
+ lldbInfo.start(QLatin1String("xcrun"), QStringList() << QLatin1String("--find")
+ << QLatin1String("lldb"));
+ if (!lldbInfo.waitForFinished(2000)) {
+ lldbInfo.kill();
+ lldbInfo.waitForFinished();
+ } else {
+ QByteArray lPath = lldbInfo.readAll();
+ suspects.append(QFileInfo(QString::fromLocal8Bit(lPath.data(), lPath.size() -1)));
+ }
+ }
+
QStringList path = Environment::systemEnvironment().path();
foreach (const QString &base, path) {
QDir dir(base);
@@ -301,6 +316,14 @@ const DebuggerItem *DebuggerItemManager::findById(const QVariant &id)
return 0;
}
+const DebuggerItem *DebuggerItemManager::findByEngineType(DebuggerEngineType engineType)
+{
+ foreach (const DebuggerItem &item, m_debuggers)
+ if (item.engineType() == engineType && item.isValid())
+ return &item;
+ return 0;
+}
+
void DebuggerItemManager::restoreDebuggers()
{
// Read debuggers from SDK
diff --git a/src/plugins/debugger/debuggeritemmanager.h b/src/plugins/debugger/debuggeritemmanager.h
index da3ca0ce31..615fc0f161 100644
--- a/src/plugins/debugger/debuggeritemmanager.h
+++ b/src/plugins/debugger/debuggeritemmanager.h
@@ -62,6 +62,7 @@ public:
static const DebuggerItem *findByCommand(const Utils::FileName &command);
static const DebuggerItem *findById(const QVariant &id);
+ static const DebuggerItem *findByEngineType(DebuggerEngineType engineType);
static void restoreDebuggers();
static QString uniqueDisplayName(const QString &base);
diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp
index d4ee3df1d1..8c33274cf1 100644
--- a/src/plugins/ios/iosconfigurations.cpp
+++ b/src/plugins/ios/iosconfigurations.cpp
@@ -59,6 +59,7 @@
using namespace ProjectExplorer;
using namespace QtSupport;
using namespace Utils;
+using namespace Debugger;
const bool debugProbe = false;
@@ -243,6 +244,9 @@ void IosConfigurations::updateAutomaticKitList()
qtVersionsForArch[abi.architecture()].append(qtVersion);
}
+ const DebuggerItem *possibleDebugger = DebuggerItemManager::findByEngineType(Debugger::LldbEngineType);
+ QVariant debuggerId = (possibleDebugger ? possibleDebugger->id() : QVariant());
+
QList<Kit *> existingKits;
QList<bool> kitMatched;
foreach (Kit *k, KitManager::kits()) {
@@ -331,22 +335,15 @@ void IosConfigurations::updateAutomaticKitList()
ToolChainKitInformation::setToolChain(newKit, pToolchain);
QtKitInformation::setQtVersion(newKit, qt);
//DeviceKitInformation::setDevice(newKit, device);
-
- Debugger::DebuggerItem debugger;
- debugger.setCommand(lldbPath());
- debugger.setEngineType(Debugger::LldbEngineType);
- debugger.setDisplayName(tr("IOS Debugger"));
- debugger.setAutoDetected(true);
- debugger.setAbi(pToolchain->targetAbi());
- QVariant id = Debugger::DebuggerItemManager::registerDebugger(debugger);
- Debugger::DebuggerKitInformation::setDebugger(newKit, id);
+ if (!debuggerId.isValid())
+ Debugger::DebuggerKitInformation::setDebugger(newKit,
+ debuggerId);
newKit->setMutable(DeviceKitInformation::id(), true);
newKit->setSticky(QtKitInformation::id(), true);
newKit->setSticky(ToolChainKitInformation::id(), true);
newKit->setSticky(DeviceTypeKitInformation::id(), true);
newKit->setSticky(SysRootKitInformation::id(), true);
- newKit->setSticky(Debugger::DebuggerKitInformation::id(), true);
SysRootKitInformation::setSysRoot(newKit, p.sdkPath);
// QmakeProjectManager::QmakeKitInformation::setMkspec(newKit,
@@ -356,12 +353,30 @@ void IosConfigurations::updateAutomaticKitList()
}
}
}
- // deleting extra (old) kits
for (int i = 0; i < kitMatched.size(); ++i) {
+ // deleting extra (old) kits
if (!kitMatched.at(i) && !existingKits.at(i)->isValid()) {
qDebug() << "deleting kit " << existingKits.at(i)->displayName();
KitManager::deregisterKit(existingKits.at(i));
}
+ // fix old kits
+ if (kitMatched.at(i)) {
+ Kit *kit = existingKits.at(i);
+ kit->blockNotification();
+ const Debugger::DebuggerItem *debugger = Debugger::DebuggerKitInformation::debugger(kit);
+ if ((!debugger || !debugger->isValid()) && debuggerId.isValid())
+ Debugger::DebuggerKitInformation::setDebugger(kit, debuggerId);
+ if (!kit->isMutable(DeviceKitInformation::id())) {
+ kit->setMutable(DeviceKitInformation::id(), true);
+ kit->setSticky(QtKitInformation::id(), true);
+ kit->setSticky(ToolChainKitInformation::id(), true);
+ kit->setSticky(DeviceTypeKitInformation::id(), true);
+ kit->setSticky(SysRootKitInformation::id(), true);
+ }
+ if (kit->isSticky(Debugger::DebuggerKitInformation::id()))
+ kit->setSticky(Debugger::DebuggerKitInformation::id(), false);
+ kit->unblockNotification();
+ }
}
}
@@ -399,11 +414,6 @@ FileName IosConfigurations::developerPath()
return m_instance->m_developerPath;
}
-FileName IosConfigurations::lldbPath()
-{
- return m_instance->m_lldbPath;
-}
-
void IosConfigurations::save()
{
QSettings *settings = Core::ICore::settings();
@@ -465,18 +475,6 @@ void IosConfigurations::setDeveloperPath(const FileName &devPath)
m_instance->m_developerPath = devPath;
m_instance->save();
updateAutomaticKitList();
- QProcess lldbInfo;
- lldbInfo.start(QLatin1String("xcrun"), QStringList() << QLatin1String("--find")
- << QLatin1String("lldb"));
- if (!lldbInfo.waitForFinished(2000)) {
- lldbInfo.kill();
- } else {
- QByteArray lPath=lldbInfo.readAll();
- lPath.chop(1);
- Utils::FileName lldbPath = Utils::FileName::fromString(QString::fromLocal8Bit(lPath.data(), lPath.size()));
- if (lldbPath.toFileInfo().exists())
- m_instance->m_lldbPath = lldbPath;
- }
emit m_instance->updated();
}
}
diff --git a/src/plugins/ios/iosconfigurations.h b/src/plugins/ios/iosconfigurations.h
index 631dc937eb..21b0660764 100644
--- a/src/plugins/ios/iosconfigurations.h
+++ b/src/plugins/ios/iosconfigurations.h
@@ -69,7 +69,6 @@ private:
static void setDeveloperPath(const Utils::FileName &devPath);
Utils::FileName m_developerPath;
- Utils::FileName m_lldbPath;
bool m_ignoreAllDevices;
};