summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2018-05-28 16:07:00 +0200
committerEike Ziller <eike.ziller@qt.io>2018-05-28 16:07:00 +0200
commitc1c57f0c383f88451d1b6c8fe83caa6f2f071048 (patch)
tree6eaeb663e6332f3071c15f4fc1eafe48924204aa
parentbae61e08ea670aa083b9bc76e7744f0240fba423 (diff)
parentd8caa228ea614f3afa8bd453a5dcf4d692c6d312 (diff)
downloadqt-creator-c1c57f0c383f88451d1b6c8fe83caa6f2f071048.tar.gz
Merge remote-tracking branch 'origin/4.6' into 4.7
Change-Id: Ifddceb06f377ea428300fa8a48908cfc44b98705
-rw-r--r--dist/changes-4.6.2.md51
-rw-r--r--src/plugins/debugger/gdb/gdbengine.cpp1
-rw-r--r--src/plugins/qtsupport/baseqtversion.cpp5
-rw-r--r--src/plugins/qtsupport/profilereader.cpp1
-rw-r--r--src/shared/proparser/qmakevfs.cpp28
-rw-r--r--src/shared/proparser/qmakevfs.h3
-rw-r--r--tests/system/suite_general/tst_opencreator_qbs/test.py6
-rw-r--r--tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv137
-rw-r--r--tests/system/suite_general/tst_openqt_creator/test.py6
9 files changed, 85 insertions, 153 deletions
diff --git a/dist/changes-4.6.2.md b/dist/changes-4.6.2.md
new file mode 100644
index 0000000000..e68101c536
--- /dev/null
+++ b/dist/changes-4.6.2.md
@@ -0,0 +1,51 @@
+Qt Creator version 4.6.2 contains bug fixes.
+
+The most important changes are listed in this document. For a complete
+list of changes, see the Git log for the Qt Creator sources that
+you can check out from the public Git repository. For example:
+
+ git clone git://code.qt.io/qt-creator/qt-creator.git
+ git log --cherry-pick --pretty=oneline v4.6.1..v4.6.2
+
+General
+
+QMake Projects
+
+* Fixed reparsing after changes (QTCREATORBUG-20113)
+
+Qt Support
+
+* Fixed detection of Qt Quick Compiler in Qt 5.11 (QTCREATORBUG-19993)
+
+C++ Support
+
+* Fixed flags for C files with MSVC (QTCREATORBUG-20198)
+
+Debugging
+
+* Fixed crash when attaching to remote process (QTCREATORBUG-20331)
+
+Platform Specific
+
+macOS
+
+* Fixed signature of pre-built binaries (QTCREATORBUG-20370)
+
+Android
+
+* Fixed path to C++ includes (QTCREATORBUG-20340)
+
+QNX
+
+* Fixed restoring deploy steps (QTCREATORBUG-20248)
+
+Credits for these changes go to:
+Alessandro Portale
+André Pönitz
+Christian Stenger
+Eike Ziller
+Ivan Donchevskii
+Oswald Buddenhagen
+Robert Löhning
+Ulf Hermann
+Vikas Pachdha
diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp
index 65f7708235..ee2fe1de9e 100644
--- a/src/plugins/debugger/gdb/gdbengine.cpp
+++ b/src/plugins/debugger/gdb/gdbengine.cpp
@@ -696,7 +696,6 @@ void GdbEngine::interruptInferior()
showStatusMessage(tr("Stop requested..."), 5000);
showMessage("TRYING TO INTERRUPT INFERIOR");
if (HostOsInfo::isWindowsHost() && !m_isQnxGdb) {
- QTC_ASSERT(state() == InferiorStopRequested, qDebug() << state(); notifyInferiorStopFailed());
IDevice::ConstPtr device = runTool()->device();
if (!device)
device = runParameters().inferior.device;
diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp
index 34e4ef20e3..af6cdcb44a 100644
--- a/src/plugins/qtsupport/baseqtversion.cpp
+++ b/src/plugins/qtsupport/baseqtversion.cpp
@@ -1813,9 +1813,8 @@ bool BaseQtVersion::isQtQuickCompilerSupported(QString *reason) const
return false;
}
- const QString qtQuickCompilerExecutable =
- HostOsInfo::withExecutableSuffix(binPath().toString() + "/qtquickcompiler");
- if (!QFileInfo::exists(qtQuickCompilerExecutable)) {
+ const QString qtQuickCompilerPrf = mkspecsPath().toString() + "/features/qtquickcompiler.prf";
+ if (!QFileInfo::exists(qtQuickCompilerPrf)) {
if (reason)
*reason = QCoreApplication::translate("BaseQtVersion", "This Qt Version does not contain Qt Quick Compiler.");
return false;
diff --git a/src/plugins/qtsupport/profilereader.cpp b/src/plugins/qtsupport/profilereader.cpp
index 86ec0f16d7..15eb960071 100644
--- a/src/plugins/qtsupport/profilereader.cpp
+++ b/src/plugins/qtsupport/profilereader.cpp
@@ -166,7 +166,6 @@ void ProFileCacheManager::clear()
// loop is concerned. Use a shared pointer once this is not true anymore.
delete m_cache;
m_cache = 0;
- QMakeVfs::clearIds();
}
void ProFileCacheManager::discardFiles(const QString &prefix, QMakeVfs *vfs)
diff --git a/src/shared/proparser/qmakevfs.cpp b/src/shared/proparser/qmakevfs.cpp
index d7248fbd5b..c5c5b75c74 100644
--- a/src/shared/proparser/qmakevfs.cpp
+++ b/src/shared/proparser/qmakevfs.cpp
@@ -49,11 +49,29 @@ QMakeVfs::QMakeVfs()
#ifndef QT_NO_TEXTCODEC
m_textCodec = 0;
#endif
+#ifdef PROEVALUATOR_THREAD_SAFE
+ QMutexLocker locker(&s_mutex);
+#endif
+ ++s_refCount;
}
+QMakeVfs::~QMakeVfs()
+{
+#ifdef PROEVALUATOR_THREAD_SAFE
+ QMutexLocker locker(&s_mutex);
+#endif
+ if (!--s_refCount) {
+ s_fileIdCounter = 0;
+ s_fileIdMap.clear();
+ s_idFileMap.clear();
+ }
+}
+
+
#ifdef PROPARSER_THREAD_SAFE
QMutex QMakeVfs::s_mutex;
#endif
+int QMakeVfs::s_refCount;
QAtomicInt QMakeVfs::s_fileIdCounter;
QHash<QString, int> QMakeVfs::s_fileIdMap;
QHash<int, QString> QMakeVfs::s_idFileMap;
@@ -111,16 +129,6 @@ QString QMakeVfs::fileNameForId(int id)
return s_idFileMap.value(id);
}
-void QMakeVfs::clearIds()
-{
-#ifdef PROEVALUATOR_THREAD_SAFE
- QMutexLocker locker(&s_mutex);
-#endif
- s_fileIdCounter = 0;
- s_fileIdMap.clear();
- s_idFileMap.clear();
-}
-
bool QMakeVfs::writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags,
const QString &contents, QString *errStr)
{
diff --git a/src/shared/proparser/qmakevfs.h b/src/shared/proparser/qmakevfs.h
index da0d0626d8..34dd96fd7b 100644
--- a/src/shared/proparser/qmakevfs.h
+++ b/src/shared/proparser/qmakevfs.h
@@ -72,10 +72,10 @@ public:
Q_DECLARE_FLAGS(VfsFlags, VfsFlag)
QMakeVfs();
+ ~QMakeVfs();
int idForFileName(const QString &fn, VfsFlags flags);
QString fileNameForId(int id);
- static void clearIds();
bool writeFile(int id, QIODevice::OpenMode mode, VfsFlags flags, const QString &contents, QString *errStr);
ReadResult readFile(int id, QString *contents, QString *errStr);
bool exists(const QString &fn, QMakeVfs::VfsFlags flags);
@@ -93,6 +93,7 @@ private:
#ifdef PROEVALUATOR_THREAD_SAFE
static QMutex s_mutex;
#endif
+ static int s_refCount;
static QAtomicInt s_fileIdCounter;
// Qt Creator's ProFile cache is a singleton to maximize its cross-project
// effectiveness (shared prf files from QtVersions).
diff --git a/tests/system/suite_general/tst_opencreator_qbs/test.py b/tests/system/suite_general/tst_opencreator_qbs/test.py
index 9a11127df8..a20426d359 100644
--- a/tests/system/suite_general/tst_opencreator_qbs/test.py
+++ b/tests/system/suite_general/tst_opencreator_qbs/test.py
@@ -26,8 +26,6 @@
source("../../shared/qtcreator.py")
def main():
- test.warning("This needs a Qt 5.6.2 kit. Skipping it.")
- return
pathCreator = os.path.join(srcPath, "creator", "qtcreator.qbs")
if not neededFilePresent(pathCreator):
return
@@ -36,8 +34,8 @@ def main():
if not startedWithoutPluginError():
return
openQbsProject(pathCreator)
- if not addAndActivateKit(Targets.DESKTOP_5_6_1_DEFAULT):
- test.fatal("Failed to activate '%s'" % Targets.getStringForTarget(Targets.DESKTOP_5_4_1_GCC))
+ if not addAndActivateKit(Targets.DESKTOP_5_10_1_DEFAULT):
+ test.fatal("Failed to activate '%s'" % Targets.getStringForTarget(Targets.DESKTOP_5_10_1_DEFAULT))
invokeMenuItem("File", "Exit")
return
test.log("Start parsing project")
diff --git a/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv b/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv
index cfade2719b..59f46f7a87 100644
--- a/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv
+++ b/tests/system/suite_general/tst_opencreator_qbs/testdata/projecttree_creator.tsv
@@ -11808,124 +11808,6 @@
"outputprocessor.h" "3"
"clangbackend" "2"
"clangbackend.qbs:3" "3"
-"Group 3" "3"
-"clangbackend.qbs:9" "4"
-"ipcsource" "4"
-"clangasyncjob.h" "5"
-"clangbackend_global.h" "5"
-"clangclock.h" "5"
-"clangcodecompleteresults.cpp" "5"
-"clangcodecompleteresults.h" "5"
-"clangcodemodelserver.cpp" "5"
-"clangcodemodelserver.h" "5"
-"clangcompletecodejob.cpp" "5"
-"clangcompletecodejob.h" "5"
-"clangcreateinitialdocumentpreamblejob.cpp" "5"
-"clangcreateinitialdocumentpreamblejob.h" "5"
-"clangdocument.cpp" "5"
-"clangdocument.h" "5"
-"clangdocumentprocessor.cpp" "5"
-"clangdocumentprocessor.h" "5"
-"clangdocumentprocessors.cpp" "5"
-"clangdocumentprocessors.h" "5"
-"clangdocuments.cpp" "5"
-"clangdocuments.h" "5"
-"clangdocumentsuspenderresumer.cpp" "5"
-"clangdocumentsuspenderresumer.h" "5"
-"clangexceptions.cpp" "5"
-"clangexceptions.h" "5"
-"clangfilepath.cpp" "5"
-"clangfilepath.h" "5"
-"clangfilesystemwatcher.cpp" "5"
-"clangfilesystemwatcher.h" "5"
-"clangiasyncjob.cpp" "5"
-"clangiasyncjob.h" "5"
-"clangjobcontext.cpp" "5"
-"clangjobcontext.h" "5"
-"clangjobqueue.cpp" "5"
-"clangjobqueue.h" "5"
-"clangjobrequest.cpp" "5"
-"clangjobrequest.h" "5"
-"clangjobs.cpp" "5"
-"clangjobs.h" "5"
-"clangparsesupportivetranslationunitjob.cpp" "5"
-"clangparsesupportivetranslationunitjob.h" "5"
-"clangreferencescollector.cpp" "5"
-"clangreferencescollector.h" "5"
-"clangreparsesupportivetranslationunitjob.cpp" "5"
-"clangreparsesupportivetranslationunitjob.h" "5"
-"clangrequestdocumentannotationsjob.cpp" "5"
-"clangrequestdocumentannotationsjob.h" "5"
-"clangrequestreferencesjob.cpp" "5"
-"clangrequestreferencesjob.h" "5"
-"clangresumedocumentjob.cpp" "5"
-"clangresumedocumentjob.h" "5"
-"clangstring.h" "5"
-"clangsupportivetranslationunitinitializer.cpp" "5"
-"clangsupportivetranslationunitinitializer.h" "5"
-"clangsuspenddocumentjob.cpp" "5"
-"clangsuspenddocumentjob.h" "5"
-"clangtranslationunit.cpp" "5"
-"clangtranslationunit.h" "5"
-"clangtranslationunits.cpp" "5"
-"clangtranslationunits.h" "5"
-"clangtranslationunitupdater.cpp" "5"
-"clangtranslationunitupdater.h" "5"
-"clangtype.cpp" "5"
-"clangtype.h" "5"
-"clangunsavedfilesshallowarguments.cpp" "5"
-"clangunsavedfilesshallowarguments.h" "5"
-"clangupdatedocumentannotationsjob.cpp" "5"
-"clangupdatedocumentannotationsjob.h" "5"
-"codecompleter.cpp" "5"
-"codecompleter.h" "5"
-"codecompletionchunkconverter.cpp" "5"
-"codecompletionchunkconverter.h" "5"
-"codecompletionsextractor.cpp" "5"
-"codecompletionsextractor.h" "5"
-"commandlinearguments.cpp" "5"
-"commandlinearguments.h" "5"
-"cursor.cpp" "5"
-"cursor.h" "5"
-"diagnostic.cpp" "5"
-"diagnostic.h" "5"
-"diagnosticset.cpp" "5"
-"diagnosticset.h" "5"
-"diagnosticsetiterator.h" "5"
-"fixit.cpp" "5"
-"fixit.h" "5"
-"highlightingmark.cpp" "5"
-"highlightingmark.h" "5"
-"highlightingmarks.cpp" "5"
-"highlightingmarks.h" "5"
-"highlightingmarksiterator.h" "5"
-"projectpart.cpp" "5"
-"projectpart.h" "5"
-"projects.cpp" "5"
-"projects.h" "5"
-"skippedsourceranges.cpp" "5"
-"skippedsourceranges.h" "5"
-"sourcelocation.cpp" "5"
-"sourcelocation.h" "5"
-"sourcerange.cpp" "5"
-"sourcerange.h" "5"
-"unsavedfile.cpp" "5"
-"unsavedfile.h" "5"
-"unsavedfiles.cpp" "5"
-"unsavedfiles.h" "5"
-"utf8positionfromlinecolumn.cpp" "5"
-"utf8positionfromlinecolumn.h" "5"
-"Group 4" "3"
-"clangbackend.qbs:17" "4"
-"crashhandlersetup.cpp" "5"
-"crashhandlersetup.h" "5"
-"standard pch file (gui)" "3"
-"QtcProduct.qbs:58" "4"
-"qtcreator_gui_pch.h" "5"
-"standard pch file (non-gui)" "3"
-"QtcProduct.qbs:50" "4"
-"qtcreator_pch.h" "5"
-"clangbackendmain.cpp" "3"
"iostool" "2"
"iostool.qbs:3" "3"
"standard pch file (gui)" "3"
@@ -12588,6 +12470,13 @@
"diff.qbs:3" "3"
"Differ autotest" "3"
"differ.qbs:3" "4"
+"standard pch file (gui)" "4"
+"QtcProduct.qbs:58" "5"
+"qtcreator_gui_pch.h" "6"
+"standard pch file (non-gui)" "4"
+"QtcProduct.qbs:50" "5"
+"qtcreator_pch.h" "6"
+"tst_differ.cpp" "4"
"Environment autotest" "2"
"environment.qbs:3" "3"
"standard pch file (gui)" "3"
@@ -13204,18 +13093,6 @@
"qbsplugin.qbs" "4"
"tools" "2"
"cplusplustools.qbs" "3"
-"cplusplus-keywordgen.qbs" "4"
-"cplusplus-ast2png" "3"
-"cplusplus-ast2png.qbs" "4"
-"cplusplus-frontend" "3"
-"cplusplus-frontend.qbs" "4"
-"cplusplus-mkvisitor" "3"
-"cplusplus-mkvisitor.qbs" "4"
-"cplusplus-shared" "3"
-"CPlusPlusTool.qbs" "4"
-"CPlusPlusToolUsingCustomUtils.qbs" "4"
-"cplusplus-update-frontend" "3"
-"cplusplus-update-frontend.qbs" "4"
"clangstaticanalyzer" "2"
"clangstaticanalyzerautotest.qbs" "3"
"cplusplus" "2"
diff --git a/tests/system/suite_general/tst_openqt_creator/test.py b/tests/system/suite_general/tst_openqt_creator/test.py
index 391c3d0bef..1c20800fe5 100644
--- a/tests/system/suite_general/tst_openqt_creator/test.py
+++ b/tests/system/suite_general/tst_openqt_creator/test.py
@@ -41,7 +41,7 @@ def main():
waitFor("runButton.enabled", 30000)
# Starting before opening, because this is where Creator froze (QTCREATORBUG-10733)
startopening = datetime.utcnow()
- openQmakeProject(pathCreator, [Targets.DESKTOP_5_6_1_DEFAULT])
+ openQmakeProject(pathCreator, [Targets.DESKTOP_5_10_1_DEFAULT])
# Wait for parsing to complete
startreading = datetime.utcnow()
waitFor("runButton.enabled", 300000)
@@ -64,9 +64,9 @@ def main():
openGeneralMessages()
# Verify messages appear once, from using default kit before configuring
generalMessages = str(waitForObject(":Qt Creator_Core::OutputWindow").plainText)
- test.compare(generalMessages.count("Project MESSAGE: Cannot build Qt Creator with Qt version 5.6.1."), 2,
+ test.compare(generalMessages.count("Project MESSAGE: Cannot build Qt Creator with Qt version 5.6.1."), 1,
"Warning about outdated Qt shown?")
- test.compare(generalMessages.count("Project ERROR: Use at least Qt 5.6.2."), 2,
+ test.compare(generalMessages.count("Project ERROR: Use at least Qt 5.6.2."), 1,
"Minimum Qt version shown (once when parsing with default kit, once with selected)?")
# Verify that qmljs.g is in the project even when we don't know where (QTCREATORBUG-17609)