diff options
author | Vikas Pachdha <vikas.pachdha@qt.io> | 2017-10-10 13:01:06 +0200 |
---|---|---|
committer | Vikas Pachdha <vikas.pachdha@qt.io> | 2017-10-10 17:33:38 +0000 |
commit | c3688b901f320283f026d777aee04dcbc2560892 (patch) | |
tree | 691e82c9eacdbb8ceb0205912871bd256d2f093f | |
parent | 4a3765d64ce7f3fac9b791f5ec1c3719efb53d27 (diff) |
Ios: Fix incorrect Xcode version detected
pkgutil always return the Xcode path installed via app store
Task-number: QTCREATORBUG-18091
Change-Id: I47b5a9c3f3a482feea2dc903dbff3441a3930ab6
Reviewed-by: Jake Petroules <jake.petroules@qt.io>
-rw-r--r-- | src/plugins/ios/iosconfigurations.cpp | 32 | ||||
-rw-r--r-- | src/plugins/ios/iosrunner.cpp | 19 |
2 files changed, 11 insertions, 40 deletions
diff --git a/src/plugins/ios/iosconfigurations.cpp b/src/plugins/ios/iosconfigurations.cpp index 6868091115..4e8dd41aa2 100644 --- a/src/plugins/ios/iosconfigurations.cpp +++ b/src/plugins/ios/iosconfigurations.cpp @@ -210,30 +210,16 @@ static void setupKit(Kit *kit, Core::Id pDeviceType, const ToolChainPair& toolCh SysRootKitInformation::setSysRoot(kit, sdkPath); } -static QVersionNumber findXcodeVersion() -{ - Utils::SynchronousProcess pkgUtilProcess; - Utils::SynchronousProcessResponse resp = - pkgUtilProcess.runBlocking("pkgutil", QStringList("--pkg-info-plist=com.apple.pkg.Xcode")); - if (resp.result == Utils::SynchronousProcessResponse::Finished) { - QDomDocument xcodeVersionDoc; - if (xcodeVersionDoc.setContent(resp.allRawOutput())) { - QDomNodeList nodes = xcodeVersionDoc.elementsByTagName(QStringLiteral("key")); - for (int i = 0; i < nodes.count(); ++i) { - QDomElement elem = nodes.at(i).toElement(); - if (elem.text().compare(QStringLiteral("pkg-version")) == 0) { - QString versionStr = elem.nextSiblingElement().text(); - return QVersionNumber::fromString(versionStr); - } - } - } else { - qCDebug(iosCommonLog) << "Error finding Xcode version. Cannot parse xml output from pkgutil."; - } +static QVersionNumber findXcodeVersion(const Utils::FileName &developerPath) +{ + FileName xcodeInfo = developerPath.parentDir().appendPath("Info.plist"); + if (xcodeInfo.exists()) { + QSettings settings(xcodeInfo.toString(), QSettings::NativeFormat); + return QVersionNumber::fromString(settings.value("CFBundleShortVersionString").toString()); } else { - qCDebug(iosCommonLog) << "Error finding Xcode version. pkgutil command failed."; + qCDebug(iosCommonLog) << "Error finding Xcode version." << xcodeInfo.toUserOutput() << + "does not exist."; } - - qCDebug(iosCommonLog) << "Error finding Xcode version. Unknow error."; return QVersionNumber(); } @@ -439,7 +425,7 @@ void IosConfigurations::setDeveloperPath(const FileName &devPath) m_instance->updateSimulators(); // Find xcode version. - m_instance->m_xcodeVersion = findXcodeVersion(); + m_instance->m_xcodeVersion = findXcodeVersion(m_instance->m_developerPath); } } } diff --git a/src/plugins/ios/iosrunner.cpp b/src/plugins/ios/iosrunner.cpp index 18264317bb..7f993865ba 100644 --- a/src/plugins/ios/iosrunner.cpp +++ b/src/plugins/ios/iosrunner.cpp @@ -486,26 +486,11 @@ void IosDebugSupport::start() setInferiorExecutable(iosRunConfig->localExecutable().toString()); setRemoteChannel("connect://localhost:" + gdbServerPort.toString()); - FileName xcodeInfo = IosConfigurations::developerPath().parentDir().appendPath("Info.plist"); - bool buggyLldb = false; - if (xcodeInfo.exists()) { - QSettings settings(xcodeInfo.toString(), QSettings::NativeFormat); - QStringList version = settings.value(QLatin1String("CFBundleShortVersionString")).toString() - .split('.'); - if (version.value(0).toInt() == 5 && version.value(1, QString::number(1)).toInt() == 0) - buggyLldb = true; - } QString bundlePath = iosRunConfig->bundleDirectory().toString(); bundlePath.chop(4); FileName dsymPath = FileName::fromString(bundlePath.append(".dSYM")); - if (!dsymPath.exists()) { - if (buggyLldb) - TaskHub::addTask(Task::Warning, - tr("Debugging with Xcode 5.0.x can be unreliable without a dSYM. " - "To create one, add a dsymutil deploystep."), - ProjectExplorer::Constants::TASK_CATEGORY_DEPLOYMENT); - } else if (dsymPath.toFileInfo().lastModified() - < QFileInfo(iosRunConfig->localExecutable().toUserOutput()).lastModified()) { + if (dsymPath.exists() && dsymPath.toFileInfo().lastModified() + < QFileInfo(iosRunConfig->localExecutable().toUserOutput()).lastModified()) { TaskHub::addTask(Task::Warning, tr("The dSYM %1 seems to be outdated, it might confuse the debugger.") .arg(dsymPath.toUserOutput()), |