From 13d473247f6614eded2a9cde8b56cb6af411faa1 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 11 May 2016 13:32:12 +0200 Subject: [PATCH 01/11] Version bump Change-Id: I0c5d80719ae8ca134e1be32e48618b5a9043be09 Reviewed-by: Eike Ziller --- qtcreator.pri | 2 +- qtcreator.qbs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/qtcreator.pri b/qtcreator.pri index bfcb3921635..aff1343cbfa 100644 --- a/qtcreator.pri +++ b/qtcreator.pri @@ -1,7 +1,7 @@ !isEmpty(QTCREATOR_PRI_INCLUDED):error("qtcreator.pri already included") QTCREATOR_PRI_INCLUDED = 1 -QTCREATOR_VERSION = 4.0.0 +QTCREATOR_VERSION = 4.0.1 QTCREATOR_COMPAT_VERSION = 4.0.0 BINARY_ARTIFACTS_BRANCH = 4.0 diff --git a/qtcreator.qbs b/qtcreator.qbs index 3b22c73a76a..9cb27b62a59 100644 --- a/qtcreator.qbs +++ b/qtcreator.qbs @@ -7,7 +7,7 @@ Project { property bool withAutotests: qbs.buildVariant === "debug" property string ide_version_major: '4' property string ide_version_minor: '0' - property string ide_version_release: '0' + property string ide_version_release: '1' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release property string ide_compat_version_major: '4' property string ide_compat_version_minor: '0' From 8a8d4354dfe522a3790d6efa3aaf291e220a1ca6 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 11 May 2016 13:30:59 +0200 Subject: [PATCH 02/11] More change log Change-Id: I09b0096cc911adb4d9f81865216194b8ddb1a73c Reviewed-by: Leena Miettinen --- dist/changes-4.0.0.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dist/changes-4.0.0.md b/dist/changes-4.0.0.md index 923eda39373..35e8a3b56fc 100644 --- a/dist/changes-4.0.0.md +++ b/dist/changes-4.0.0.md @@ -96,6 +96,7 @@ Debugging * LLDB * Fixed issues with Xcode 7.3 (QTCREATORBUG-15965, QTCREATORBUG-15945, QTCREATORBUG-15949) + * Fixed breakpoint commands (QTCREATORBUG-15585) QML Profiler @@ -182,6 +183,11 @@ Android * Fixed issues with `Select Android Device` (QTCREATORBUG-15338, QTCREATORBUG-15422) +iOS + +* Fixed building for device with Qt 5.7 (QTCREATORBUG-16102) +* Fixed brief freezes while handling build output (QTCREATORBUG-15613) + Credits for these changes go to: Alessandro Portale Alexandru Croitor From 0ce54ce1e4c2765fab2d1cf430e08990f76099ec Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 10 May 2016 12:23:41 +0200 Subject: [PATCH 03/11] Debugger: Guard QObject property extraction against failures Nowadays, the [property] section contains only "top level" properties, inherited ones are available through by expanding the base class. Task-number: QTCREATORBUG-15798 Change-Id: I40475500a2d20f27145a47fa7ed1e61d4a592c10 Reviewed-by: Robert Loehning Reviewed-by: Christian Stenger --- share/qtcreator/debugger/dumper.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index cad3bed4340..1a89935516f 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -1460,9 +1460,13 @@ class DumperBase: self.put('keyencoded="latin1",') self.putItem(v) propertyCount += 1 - - self.putValue(str('<%s items>' % propertyCount if propertyCount else '<>0 items>')) - self.putNumChild(1) + self.putItemCount(propertyCount) + else: + # We need a handle to [x] for the user to expand the item + # before we know whether there are actual children. Counting + # them is too expensive. + self.putNumChild(1) + self.putSpecialValue("minimumitemcount", 0) with SubItem(self, "[methods]"): methodCount = self.staticQObjectMethodCount(smo) From 53770ebaa5537959aa7d2fb51f39b857e26a5699 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 12 May 2016 12:13:09 +0200 Subject: [PATCH 04/11] Squish: Add some verbosity to figure out what might be wrong tst_HELP02 is consistently failing if running from inside Jenkins, but passes when executed locally. Change-Id: I70fe9b7dc74dbf82f102b5670ddf04bf0dbfa270 Reviewed-by: Robert Loehning --- tests/system/suite_HELP/tst_HELP02/test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/system/suite_HELP/tst_HELP02/test.py b/tests/system/suite_HELP/tst_HELP02/test.py index f21fdf7201d..7c0b6f67fc4 100755 --- a/tests/system/suite_HELP/tst_HELP02/test.py +++ b/tests/system/suite_HELP/tst_HELP02/test.py @@ -58,6 +58,8 @@ def checkQtCreatorHelpVersion(expectedVersion): 'Qt Creator Manual %s' % expectedVersion, 'Verifying whether manual uses expected version.') except: + t, v = sys.exc_info()[:2] + test.log("Exception caught", "%s(%s)" % (str(t), str(v))) test.fail("Missing Qt Creator Manual.") def setKeyboardShortcutForAboutQtC(): From 82b6d728c73e2d8ac06fc84ce818e9c2c8b50fb2 Mon Sep 17 00:00:00 2001 From: Tobias Hunger Date: Thu, 12 May 2016 12:24:56 +0200 Subject: [PATCH 05/11] CMake: Fix Clear Cache when builddir is not persistent yet. Change-Id: I4dc2c5889845b13ebe167b89e78b104f8805a1f6 Reviewed-by: Eike Ziller --- src/plugins/cmakeprojectmanager/builddirmanager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/builddirmanager.cpp b/src/plugins/cmakeprojectmanager/builddirmanager.cpp index 8edc76ae5c7..88c6077c455 100644 --- a/src/plugins/cmakeprojectmanager/builddirmanager.cpp +++ b/src/plugins/cmakeprojectmanager/builddirmanager.cpp @@ -231,8 +231,8 @@ void BuildDirManager::parse() void BuildDirManager::clearCache() { - auto cmakeCache = Utils::FileName(buildDirectory()).appendPath(QLatin1String("CMakeCache.txt")); - auto cmakeFiles = Utils::FileName(buildDirectory()).appendPath(QLatin1String("CMakeFiles")); + auto cmakeCache = Utils::FileName(workDirectory()).appendPath(QLatin1String("CMakeCache.txt")); + auto cmakeFiles = Utils::FileName(workDirectory()).appendPath(QLatin1String("CMakeFiles")); const bool mustCleanUp = cmakeCache.exists() || cmakeFiles.exists(); if (!mustCleanUp) From 3eb81f3708ae6d27fd4a032c793643019a833402 Mon Sep 17 00:00:00 2001 From: Nikita Baryshnikov Date: Thu, 12 May 2016 22:08:57 +0300 Subject: [PATCH 06/11] QtSupport: fix compiler warning this 'if' clause does not guard Change-Id: Ibeb7fa3c531d4896028931697f7af479e2c99c4b Reviewed-by: Orgad Shaneh Reviewed-by: Eike Ziller --- src/plugins/qtsupport/baseqtversion.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/qtsupport/baseqtversion.cpp b/src/plugins/qtsupport/baseqtversion.cpp index 09a3531855d..06e8c9c2d32 100644 --- a/src/plugins/qtsupport/baseqtversion.cpp +++ b/src/plugins/qtsupport/baseqtversion.cpp @@ -931,6 +931,7 @@ QString BaseQtVersion::findQtBinary(Binaries binary) const case Linguist: if (HostOsInfo::isMacHost()) possibleCommands << QLatin1String("Linguist.app/Contents/MacOS/Linguist"); + else possibleCommands << HostOsInfo::withExecutableSuffix(QLatin1String("linguist")); break; case Uic: From 07ba87349d139a2d1b4dec9e3138c165dcbc747c Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 13 May 2016 10:06:30 +0200 Subject: [PATCH 07/11] Squish: Fix accessing Options on OSX Accessing the application menu inside the menubar of OSX does not work properly since using Qt5. For some time using default keysequences worked fine, but for the Preferences (Options menu) this stopped working, so make the used hack even more crude. Change-Id: I48ed37dc69b8c64f649f0130d48d4deb02afb87e Reviewed-by: Robert Loehning --- tests/system/shared/utils.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py index 97f1d7c5d42..d75d683dfb8 100644 --- a/tests/system/shared/utils.py +++ b/tests/system/shared/utils.py @@ -176,10 +176,17 @@ def invokeMenuItem(menu, item, *subItems): waitForObject(":Qt Creator.QtCreator.MenuBar_QMenuBar", 2000) except: nativeMouseClick(waitForObject(":Qt Creator_Core::Internal::MainWindow", 1000), 20, 20, 0, Qt.LeftButton) - # HACK to avoid squish crash using Qt5.2 on Squish 5.0.1 - remove asap + # HACK as Squish fails to provide a proper way to access the system menu if platform.system() == "Darwin": if menu == "Tools" and item == "Options...": - nativeType("") + #nativeType("") + # the following is a pure HACK because using the default key sequence seems to be broken + # when running from inside Squish + menuBar = waitForObject(":Qt Creator.QtCreator.MenuBar_QMenuBar", 500) + nativeMouseClick(menuBar, 75, 5, 0, Qt.LeftButton) + for _ in range(3): + nativeType("") + nativeType("") return if menu == "File" and item == "Exit": nativeType("") From dbfa9280b00a572d3b10328a63549ebb7bc9f5aa Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 22 Apr 2016 13:48:47 +0200 Subject: [PATCH 08/11] Squish: Fix assigning shortcut Change-Id: I32d563a198ec1e56b86e97f6803dd2e15f1bd565 Reviewed-by: Robert Loehning --- tests/system/suite_HELP/tst_HELP02/test.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tests/system/suite_HELP/tst_HELP02/test.py b/tests/system/suite_HELP/tst_HELP02/test.py index 7c0b6f67fc4..7427014bef0 100755 --- a/tests/system/suite_HELP/tst_HELP02/test.py +++ b/tests/system/suite_HELP/tst_HELP02/test.py @@ -76,11 +76,19 @@ def setKeyboardShortcutForAboutQtC(): "container={column='0' text='QtCreator' type='QModelIndex' " "container=%s}}" % objectMap.realName(treewidget)) mouseClick(modelIndex, 5, 5, 0, Qt.LeftButton) - shortcut = waitForObject("{container={title='Shortcut' type='QGroupBox' unnamed='1' " - "visible='1'} type='Utils::FancyLineEdit' unnamed='1' visible='1' " - "placeHolderText='Type to set shortcut'}") - mouseClick(shortcut, 5, 5, 0, Qt.LeftButton) + shortcutGB = "{title='Shortcut' type='QGroupBox' unnamed='1' visible='1'}" + record = waitForObject("{container=%s type='Core::Internal::ShortcutButton' unnamed='1' " + "visible='1' text~='(Stop Recording|Record)'}" % shortcutGB) + shortcut = ("{container=%s type='Utils::FancyLineEdit' unnamed='1' visible='1' " + "placeHolderText='Enter key sequence as text'}" % shortcutGB) + clickButton(record) nativeType("") + clickButton(record) + expected = 'Ctrl+Alt+A' + if platform.system() == 'Darwin': + expected = 'Ctrl+Opt+A' + test.verify(waitFor("str(findObject(shortcut).text) == expected", 5000), + "Expected key sequence is displayed.") clickButton(waitForObject(":Options.OK_QPushButton")) def main(): From 1914329ec26bb2f150be603d15f0dfd8895cd96b Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 13 May 2016 07:12:20 +0200 Subject: [PATCH 09/11] Squish: Fix tst_HELP02 Content of the QHelpContentWidget gets populated asynchronously, so wait a bit to have at least one entry - which normally should be our own documentation. Change-Id: Iad78f0bab0dd7f2f5a83cd94d2b2830ba146f554 Reviewed-by: Robert Loehning --- tests/system/suite_HELP/tst_HELP02/test.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/system/suite_HELP/tst_HELP02/test.py b/tests/system/suite_HELP/tst_HELP02/test.py index 7427014bef0..e0ec1aa8a97 100755 --- a/tests/system/suite_HELP/tst_HELP02/test.py +++ b/tests/system/suite_HELP/tst_HELP02/test.py @@ -53,6 +53,7 @@ def checkQtCreatorHelpVersion(expectedVersion): switchViewTo(ViewConstants.HELP) try: helpContentWidget = waitForObject(':Qt Creator_QHelpContentWidget', 5000) + waitFor("helpContentWidget.model().rowCount > 0", 2000) items = dumpItems(helpContentWidget.model()) test.compare(filter(lambda x: x.startswith('Qt Creator Manual'), items)[0], 'Qt Creator Manual %s' % expectedVersion, From 8b78231356ad6052bec277090fe0bd44ef5e6138 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 13 May 2016 13:17:26 +0200 Subject: [PATCH 10/11] clangbackend: Add missing rpath setting in qbs product. And another linker flag that was present in the qmake project file, but not in the qbs one. Change-Id: I703d5df2171cf97974111993aec8ed244435afec Reviewed-by: Eike Ziller --- src/tools/clangbackend/clangbackend.qbs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/tools/clangbackend/clangbackend.qbs b/src/tools/clangbackend/clangbackend.qbs index adcbf0959b4..59fdc5b7dd8 100644 --- a/src/tools/clangbackend/clangbackend.qbs +++ b/src/tools/clangbackend/clangbackend.qbs @@ -29,4 +29,10 @@ QtcTool { cpp.includePaths: base.concat(["ipcsource", llvmIncludeDir]) cpp.libraryPaths: base.concat(llvmLibDir) cpp.dynamicLibraries: base.concat(llvmLibs) + cpp.rpaths: base.concat(llvmLibDir) + + Properties { + condition: qbs.targetOS.contains("unix") && !qbs.targetOS.contains("osx") + cpp.linkerFlags: base.concat(["-z", "origin"]) + } } From ae3b4f1a061149c5bda15b8ff8d62939719f338f Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 13 May 2016 14:53:50 +0200 Subject: [PATCH 11/11] Linux deployment: Only add RPATH to Qt if necessary Don't try to add an RPATH to Qt if the library/executable does not link to Qt. Chances are, that the reserved space for the RPATH is too short in that case. Change-Id: Ie8d50ede43d19236611fe56667995e58606062db Reviewed-by: Eike Ziller --- scripts/common.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/scripts/common.py b/scripts/common.py index fd724f1e94a..22fcca98720 100644 --- a/scripts/common.py +++ b/scripts/common.py @@ -125,15 +125,18 @@ def fix_rpaths(path, qt_deploy_path, qt_install_info, chrpath=None): new_rpath = filter(lambda path: not path.startswith(qt_install_prefix) and not path.startswith(qt_install_libs), rpath) - # add Qt RPATH if necessary - relative_path = os.path.relpath(qt_deploy_path, os.path.dirname(filepath)) - if relative_path == '.': - relative_path = '' - else: - relative_path = '/' + relative_path - qt_rpath = '$ORIGIN' + relative_path - if not any((path == qt_rpath) for path in rpath): - new_rpath.append(qt_rpath) + # check for Qt linking + lddOutput = subprocess.check_output(['ldd', filepath]) + if lddOutput.find('libQt5') >= 0 or lddOutput.find('libicu') >= 0: + # add Qt RPATH if necessary + relative_path = os.path.relpath(qt_deploy_path, os.path.dirname(filepath)) + if relative_path == '.': + relative_path = '' + else: + relative_path = '/' + relative_path + qt_rpath = '$ORIGIN' + relative_path + if not any((path == qt_rpath) for path in rpath): + new_rpath.append(qt_rpath) # change RPATH if len(new_rpath) > 0: