Commit ad6c0f9b authored by Eike Ziller's avatar Eike Ziller

Merge remote-tracking branch 'origin/3.6'

Change-Id: I8f034f91de04e319dd5ba24b8837f1daca54d918
parents 68ef643a 89555084
......@@ -961,7 +961,7 @@ class Dumper(DumperBase):
#if int(addr) == 0xffffffffffffffff:
# raise RuntimeError("Illegal address")
if self.currentPrintsAddress and not addr is None:
self.put('addr="0x%x",' % int(addr))
self.put('address="0x%x",' % int(addr))
def isFunctionType(self, typeobj):
if self.isGoodLldb:
......@@ -994,7 +994,7 @@ class Dumper(DumperBase):
self.put('iname="%s",' % self.currentIName)
self.putType(typeName)
self.put('numchild="%s",' % numchild)
self.put('addr="0x%x",' % value.GetLoadAddress())
self.put('address="0x%x",' % value.GetLoadAddress())
self.putItemCount(numchild)
if self.currentIName in self.expandedINames:
with Children(self):
......
......@@ -41,6 +41,14 @@
{
"items":
[
{
"trKey": "Qt 5.6",
"value":
"{
'qtQuickVersion': '2.6',
'qtQuickWindowVersion': '2.2'
}"
},
{
"trKey": "Qt 5.5",
"value":
......
......@@ -43,6 +43,16 @@
{
"items":
[
{
"trKey": "Qt 5.6",
"value":
"{
'qtQuickVersion': '2.6',
'qtQuickControlsVersion': '1.5',
'qtQuickDialogsVersion': '1.2',
'qtQuickLayoutsVersion': '1.3'
}"
},
{
"trKey": "Qt 5.5",
"value":
......
......@@ -28819,6 +28819,10 @@ This is independent of the visibility property in QML.</source>
</context>
<context>
<name>QmlDesigner::QmlDesignerPlugin</name>
<message>
<source>Cannot create OpenGL context.</source>
<translation>Не удалось создать контекст OpenGL.</translation>
</message>
<message>
<source>Switch Text/Design</source>
<translation>Переключить текст/дизайн</translation>
......@@ -30591,6 +30595,10 @@ references to elements in other files, loops, and so on.)</source>
</context>
<context>
<name>QmlProfiler::Internal::QmlProfilerPlugin</name>
<message>
<source>Cannot create OpenGL context.</source>
<translation>Не удалось создать контекст OpenGL.</translation>
</message>
<message>
<source>QML Profiler</source>
<translation>Профайлер QML</translation>
......@@ -38677,6 +38685,13 @@ should a repository require SSH-authentication (see documentation on SSH and the
<translation>Ошибка загрузки режима приветствия</translation>
</message>
</context>
<context>
<name>Welcome::Internal::WelcomePlugin</name>
<message>
<source>Cannot create OpenGL context.</source>
<translation>Не удалось создать контекст OpenGL.</translation>
</message>
</context>
<context>
<name>WidgetPluginManager</name>
<message>
......@@ -511,9 +511,21 @@ bool AndroidManager::updateGradleProperties(ProjectExplorer::Target *target)
AndroidBuildApkStep *buildApkStep
= AndroidGlobal::buildStep<AndroidBuildApkStep>(target->activeBuildConfiguration());
if (!buildApkStep || !buildApkStep->androidPackageSourceDir().appendPath(QLatin1String("gradlew")).exists())
if (!buildApkStep || !buildApkStep->useGradle() || !buildApkStep->androidPackageSourceDir().appendPath(QLatin1String("gradlew")).exists())
return false;
Utils::FileName wrapperProps(buildApkStep->androidPackageSourceDir());
wrapperProps.appendPath(QLatin1String("gradle/wrapper/gradle-wrapper.properties"));
if (wrapperProps.exists()) {
GradleProperties wrapperProperties = readGradleProperties(wrapperProps.toString());
QString distributionUrl = QString::fromLocal8Bit(wrapperProperties["distributionUrl"]);
QRegExp re(QLatin1String(".*services.gradle.org/distributions/gradle-2..*.zip"));
if (!re.exactMatch(distributionUrl)) {
wrapperProperties["distributionUrl"] = "https\\://services.gradle.org/distributions/gradle-2.2.1-all.zip";
mergeGradleProperties(wrapperProps.toString(), wrapperProperties);
}
}
GradleProperties localProperties;
localProperties["sdk.dir"] = AndroidConfigurations::currentConfig().sdkLocation().toString().toLocal8Bit();
if (!mergeGradleProperties(buildApkStep->androidPackageSourceDir().appendPath(QLatin1String("local.properties")).toString(), localProperties))
......
......@@ -34,10 +34,15 @@
#include <android/androidmanager.h>
#include <android/androidconfigurations.h>
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/buildsteplist.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h>
#include <qmakeprojectmanager/qmakebuildinfo.h>
#include <qmakeprojectmanager/qmakeproject.h>
using namespace QmakeAndroidSupport::Internal;
......@@ -93,7 +98,16 @@ ProjectExplorer::BuildConfiguration *AndroidQmakeBuildConfigurationFactory::rest
AndroidQmakeBuildConfiguration::AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target)
: QmakeProjectManager::QmakeBuildConfiguration(target)
{
using QmakeProjectManager::QmakeProject;
auto updateGrade = [this] {
Android::AndroidManager::updateGradleProperties(BuildConfiguration::target());
};
QmakeProject *project = qobject_cast<QmakeProject *>(target->project());
if (project)
connect(project, &QmakeProject::proFilesEvaluated, this, updateGrade);
else
connect(this, &AndroidQmakeBuildConfiguration::enabledChanged, this, updateGrade);
}
AndroidQmakeBuildConfiguration::AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target, AndroidQmakeBuildConfiguration *source)
......@@ -110,6 +124,27 @@ AndroidQmakeBuildConfiguration::AndroidQmakeBuildConfiguration(ProjectExplorer::
void AndroidQmakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const
{
env.set(QLatin1String("ANDROID_NDK_PLATFORM"),
Android::AndroidConfigurations::currentConfig().bestNdkPlatformMatch(Android::AndroidManager::minimumSDK(target())));
m_androidNdkPlatform = Android::AndroidConfigurations::currentConfig().bestNdkPlatformMatch(Android::AndroidManager::minimumSDK(target()));
env.set(QLatin1String("ANDROID_NDK_PLATFORM"), m_androidNdkPlatform);
}
void AndroidQmakeBuildConfiguration::manifestSaved()
{
using QmakeProjectManager::QMakeStep;
QString androidNdkPlatform = Android::AndroidConfigurations::currentConfig().bestNdkPlatformMatch(Android::AndroidManager::minimumSDK(target()));
if (m_androidNdkPlatform == androidNdkPlatform)
return;
emitEnvironmentChanged();
QMakeStep *qs = qmakeStep();
if (!qs)
return;
qs->setForced(true);
ProjectExplorer::BuildManager::buildList(stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN),
ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
ProjectExplorer::BuildManager::appendStep(qs, ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
setSubNodeBuild(0);
}
......@@ -61,8 +61,11 @@ public:
AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target, AndroidQmakeBuildConfiguration *source);
AndroidQmakeBuildConfiguration(ProjectExplorer::Target *target, Core::Id id);
void addToEnvironment(Utils::Environment &env) const;
void manifestSaved();
using BuildConfiguration::emitEnvironmentChanged;
private:
mutable QString m_androidNdkPlatform;
};
} // namespace Internal
......
......@@ -36,17 +36,9 @@
#include <android/androidconstants.h>
#include <android/androidglobal.h>
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/buildsteplist.h>
#include <projectexplorer/deployconfiguration.h>
#include <projectexplorer/projectexplorer.h>
#include <projectexplorer/projectexplorerconstants.h>
#include <projectexplorer/target.h>
#include <qtsupport/qtkitinformation.h>
#include <qmakeprojectmanager/qmakebuildconfiguration.h>
#include <qmakeprojectmanager/qmakenodes.h>
#include <qmakeprojectmanager/qmakeproject.h>
#include <qmakeprojectmanager/qmakestep.h>
using namespace QmakeProjectManager;
......@@ -136,20 +128,8 @@ Utils::FileName QmakeAndroidSupport::androiddeployJsonPath(ProjectExplorer::Targ
void QmakeAndroidSupport::manifestSaved(const ProjectExplorer::Target *target)
{
ProjectExplorer::BuildConfiguration *bc = target->activeBuildConfiguration();
if (auto qbc = qobject_cast<AndroidQmakeBuildConfiguration *>(bc)) {
qbc->emitEnvironmentChanged();
QMakeStep *qs = qbc->qmakeStep();
if (!qs)
return;
qs->setForced(true);
ProjectExplorer::BuildManager::buildList(bc->stepList(ProjectExplorer::Constants::BUILDSTEPS_CLEAN),
ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
ProjectExplorer::BuildManager::appendStep(qs, ProjectExplorer::ProjectExplorerPlugin::displayNameForStepId(ProjectExplorer::Constants::BUILDSTEPS_CLEAN));
qbc->setSubNodeBuild(0);
}
if (auto qbc = qobject_cast<AndroidQmakeBuildConfiguration *>(bc))
qbc->manifestSaved();
}
Utils::FileName QmakeAndroidSupport::manifestSourcePath(const ProjectExplorer::Target *target)
......
......@@ -1812,7 +1812,7 @@ void QmakeProFileNode::asyncUpdate()
m_project->incrementPendingEvaluateFutures();
setupReader();
if (!includedInExactParse())
m_readerExact->setVerbose(false);
m_readerExact->setExact(false);
m_parseFutureWatcher.waitForFinished();
EvalInput input = evalInput();
QFuture<EvalResult *> future = QtConcurrent::run(&QmakeProFileNode::asyncEvaluate, this, input);
......
......@@ -65,10 +65,12 @@ static inline bool isSupportedAttachedProperties(const QString &propertyName)
static inline QStringList supportedVersionsList()
{
QStringList list;
list << QStringLiteral("2.0") << QStringLiteral("2.1")
<< QStringLiteral("2.2") << QStringLiteral("2.3")
<< QStringLiteral("2.4") << QStringLiteral("2.5");
static const QStringList list = {
QStringLiteral("2.0"), QStringLiteral("2.1"),
QStringLiteral("2.2"), QStringLiteral("2.3"),
QStringLiteral("2.4"), QStringLiteral("2.5"),
QStringLiteral("2.6")
};
return list;
}
......
......@@ -46,8 +46,11 @@ static QString format(const QString &fileName, int lineNo, const QString &msg)
return msg;
}
ProMessageHandler::ProMessageHandler(bool verbose)
ProMessageHandler::ProMessageHandler(bool verbose, bool exact)
: m_verbose(verbose)
, m_exact(exact)
//: Prefix used for output from the cumulative evaluation of project files.
, m_prefix(tr("[Inexact] "))
{
QObject::connect(this, SIGNAL(writeMessage(QString,Core::MessageManager::PrintToOutputPaneFlags)),
Core::MessageManager::instance(), SLOT(write(QString,Core::MessageManager::PrintToOutputPaneFlags)),
......@@ -56,14 +59,24 @@ ProMessageHandler::ProMessageHandler(bool verbose)
void ProMessageHandler::message(int type, const QString &msg, const QString &fileName, int lineNo)
{
if ((type & CategoryMask) == ErrorMessage && ((type & SourceMask) == SourceParser || m_verbose))
emit writeMessage(format(fileName, lineNo, msg), Core::MessageManager::NoModeSwitch);
if ((type & CategoryMask) == ErrorMessage && ((type & SourceMask) == SourceParser || m_verbose)) {
QString fmsg = format(fileName, lineNo, msg);
if ((type & SourceMask) == SourceParser || m_exact)
emit writeMessage(fmsg, Core::MessageManager::NoModeSwitch);
else
emit writeMessage(m_prefix + fmsg, Core::MessageManager::NoModeSwitch);
}
}
void ProMessageHandler::fileMessage(const QString &msg)
void ProMessageHandler::fileMessage(int type, const QString &msg)
{
if (m_verbose)
emit writeMessage(msg, Core::MessageManager::NoModeSwitch);
Q_UNUSED(type)
if (m_verbose) {
if (m_exact)
emit writeMessage(msg, Core::MessageManager::NoModeSwitch);
else
emit writeMessage(m_prefix + msg, Core::MessageManager::NoModeSwitch);
}
}
......
......@@ -49,21 +49,24 @@ class QTSUPPORT_EXPORT ProMessageHandler : public QObject, public QMakeHandler
Q_OBJECT
public:
ProMessageHandler(bool verbose = true);
ProMessageHandler(bool verbose = true, bool exact = true);
virtual ~ProMessageHandler() {}
virtual void aboutToEval(ProFile *, ProFile *, EvalFileType) {}
virtual void doneWithEval(ProFile *) {}
virtual void message(int type, const QString &msg, const QString &fileName, int lineNo);
virtual void fileMessage(const QString &msg);
virtual void fileMessage(int type, const QString &msg);
void setVerbose(bool on) { m_verbose = on; }
void setExact(bool on) { m_exact = on; }
signals:
void writeMessage(const QString &error, Core::MessageManager::PrintToOutputPaneFlags flag);
private:
bool m_verbose;
bool m_exact;
QString m_prefix;
};
class QTSUPPORT_EXPORT ProFileReader : public ProMessageHandler, public QMakeParser, public ProFileEvaluator
......
......@@ -399,7 +399,9 @@ QByteArray QMakeEvaluator::getCommandOutput(const QString &args) const
if (!errout.isEmpty()) {
if (errout.endsWith('\n'))
errout.chop(1);
m_handler->message(QMakeHandler::EvalError, QString::fromLocal8Bit(errout));
m_handler->message(
QMakeHandler::EvalError | (m_cumulative ? QMakeHandler::CumulativeEvalMessage : 0),
QString::fromLocal8Bit(errout));
}
# endif
out = proc.readAllStandardOutput();
......@@ -1467,8 +1469,12 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateBuiltinConditional(
fputs(msg.toLatin1().constData(), stderr);
#endif
} else {
m_handler->fileMessage(fL1S("Project %1: %2")
.arg(function.toQString(m_tmp1).toUpper(), msg));
m_handler->fileMessage(
(func_t == T_ERROR ? QMakeHandler::ErrorMessage :
func_t == T_WARNING ? QMakeHandler::WarningMessage :
QMakeHandler::InfoMessage)
| (m_cumulative ? QMakeHandler::CumulativeEvalMessage : 0),
fL1S("Project %1: %2").arg(function.toQString(m_tmp1).toUpper(), msg));
}
}
return (func_t == T_ERROR && !m_cumulative) ? ReturnError : ReturnTrue;
......
......@@ -1303,7 +1303,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateConfigFeatures()
config.detach();
processed.insert(config);
VisitReturn vr = evaluateFeatureFile(config, true);
if (vr == ReturnError)
if (vr == ReturnError && !m_cumulative)
return vr;
if (vr == ReturnTrue) {
finished = false;
......@@ -1981,7 +1981,7 @@ QMakeEvaluator::VisitReturn QMakeEvaluator::evaluateFileInto(
void QMakeEvaluator::message(int type, const QString &msg) const
{
if (!m_skipLevel)
m_handler->message(type, msg,
m_handler->message(type | (m_cumulative ? QMakeHandler::CumulativeEvalMessage : 0), msg,
m_current.line ? m_current.pro->fileName() : QString(),
m_current.line != 0xffff ? m_current.line : -1);
}
......
......@@ -65,6 +65,8 @@ public:
enum {
SourceEvaluator = 0x10,
CumulativeEvalMessage = 0x1000,
EvalWarnLanguage = SourceEvaluator | WarningMessage | WarnLanguage,
EvalWarnDeprecated = SourceEvaluator | WarningMessage | WarnDeprecated,
......@@ -72,7 +74,7 @@ public:
};
// error(), warning() and message() from .pro file
virtual void fileMessage(const QString &msg) = 0;
virtual void fileMessage(int type, const QString &msg) = 0;
enum EvalFileType { EvalProjectFile, EvalIncludeFile, EvalConfigFile, EvalFeatureFile, EvalAuxFile };
virtual void aboutToEval(ProFile *parent, ProFile *proFile, EvalFileType type) = 0;
......
......@@ -47,8 +47,9 @@ class QMAKE_EXPORT QMakeParserHandler
public:
enum {
CategoryMask = 0xf00,
WarningMessage = 0x000,
ErrorMessage = 0x100,
InfoMessage = 0x100,
WarningMessage = 0x200,
ErrorMessage = 0x300,
SourceMask = 0xf0,
SourceParser = 0,
......
......@@ -16,5 +16,5 @@ SOURCES += clangbackendmain.cpp
unix {
!osx: QMAKE_LFLAGS += -Wl,-z,origin
QMAKE_LFLAGS += -Wl,-rpath,$$shell_quote($${LLVM_LIBDIR})
!disable_external_rpath: QMAKE_LFLAGS += -Wl,-rpath,$$shell_quote($${LLVM_LIBDIR})
}
......@@ -261,7 +261,6 @@ class JIRA:
def __initBugDict__(self):
self.__bugs__= {
'QTCREATORBUG-6853':self._workaroundCreator6853_,
'QTCREATORBUG-15456':self._workaroundCreator15456_,
}
# helper function - will be called if no workaround for the requested bug is deposited
def _exitFatal_(self, bugType, number):
......@@ -272,13 +271,3 @@ class JIRA:
def _workaroundCreator6853_(self, *args):
if "Release" in args[0] and platform.system() == "Linux":
snooze(2)
def _workaroundCreator15456_(self, *args):
isMsvc = args[0]
isQt5 = args[1]
config = args[2]
if isMsvc and isQt5 and config != "Release":
unexpectedExitMessage = ("{type='QMessageBox' unnamed='1' visible='1' "
"windowTitle='Unexpected CDB Exit'}")
clickButton(waitForObject("{text='OK' type='QPushButton' unnamed='1' "
"visible='1' window=%s}" % unexpectedExitMessage))
......@@ -95,8 +95,6 @@ def main():
invokeMenuItem("Debug", "Start Debugging", "Start Debugging")
JIRA.performWorkaroundForBug(6853, JIRA.Bug.CREATOR, config)
handleDebuggerWarnings(config, isMsvc)
JIRA.performWorkaroundForBug(15456, JIRA.Bug.CREATOR, isMsvc,
checkedTargets[kit] & ~Targets.qt4Classes(), config)
ensureChecked(":Qt Creator_AppOutput_Core::Internal::OutputPaneToggleButton")
outputWindow = waitForObject(":Qt Creator_Core::OutputWindow")
waitFor("'Debugging has finished' in str(outputWindow.plainText)", 20000)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment