From af455fa40cf6159681d744b68b2a59d21accd3a7 Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Tue, 19 May 2020 16:48:50 +0300 Subject: [PATCH 01/11] Git: Fix upstream status for branches with slash MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Like wip/foo Change-Id: Ia2816660f7878e872b2e49c4811f5893a1b8dc75 Reviewed-by: André Hartmann --- src/plugins/git/branchmodel.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/plugins/git/branchmodel.cpp b/src/plugins/git/branchmodel.cpp index 0a40144948c..73c7ce5ba85 100644 --- a/src/plugins/git/branchmodel.cpp +++ b/src/plugins/git/branchmodel.cpp @@ -150,6 +150,11 @@ public: return fn; } + QString fullRef(bool includePrefix = false) const + { + return fullName(includePrefix).join('/'); + } + void insert(const QStringList &path, BranchNode *n) { BranchNode *current = this; @@ -186,7 +191,7 @@ public: } return names; } - return {fullName().join('/')}; + return {fullRef()}; } int rowOf(BranchNode *node) @@ -346,7 +351,7 @@ QVariant BranchModel::data(const QModelIndex &index, int role) const return res; } case Qt::EditRole: - return index.column() == 0 ? node->fullName().join('/') : QVariant(); + return index.column() == 0 ? node->fullRef() : QVariant(); case Qt::ToolTipRole: if (!node->isLeaf()) return QVariant(); @@ -381,7 +386,7 @@ bool BranchModel::setData(const QModelIndex &index, const QVariant &value, int r if (newName.isEmpty()) return false; - const QString oldName = node->fullName().join('/'); + const QString oldName = node->fullRef(); if (oldName == newName) return false; @@ -525,7 +530,7 @@ QString BranchModel::fullName(const QModelIndex &idx, bool includePrefix) const return QString(); if (node == d->headNode) return QString("HEAD"); - return node->fullName(includePrefix).join('/'); + return node->fullRef(includePrefix); } QStringList BranchModel::localBranchNames() const @@ -901,7 +906,8 @@ void BranchModel::updateUpstreamStatus(BranchNode *node) { if (node->tracking.isEmpty()) return; - VcsCommand *command = d->client->asyncUpstreamStatus(d->workingDirectory, node->name, node->tracking); + VcsCommand *command = d->client->asyncUpstreamStatus( + d->workingDirectory, node->fullRef(), node->tracking); QObject::connect(command, &VcsCommand::stdOutText, node, [this, node](const QString &text) { const QStringList split = text.trimmed().split('\t'); QTC_ASSERT(split.size() == 2, return); From 99dde0749575a39f7c7c25e45d420d0cc3e92ce4 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 19 May 2020 13:26:10 +0200 Subject: [PATCH 02/11] Doc: Update information about supported devices Change-Id: I17aed738f147dedee69acaa9c3794394f92d12d3 Reviewed-by: Eike Ziller --- .../src/analyze/cpu-usage-analyzer.qdoc | 2 +- .../creator-only/creator-mobile-targets.qdoc | 2 +- .../creator-target-platforms.qdocinc | 41 ++++++++----------- .../creator-projects-targets.qdoc | 33 ++++++--------- 4 files changed, 30 insertions(+), 48 deletions(-) diff --git a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc index c32e8854b03..2e931ee0499 100644 --- a/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc +++ b/doc/qtcreator/src/analyze/cpu-usage-analyzer.qdoc @@ -460,7 +460,7 @@ \list 1 \li Perf events may be globally disabled on your system. The - preconfigured Boot to Qt images come with perf events enabled. For + preconfigured Boot2Qt images come with perf events enabled. For a custom configuration you need to make sure that the file \c {/proc/sys/kernel/perf_event_paranoid} contains a value smaller than \c {2}. For maximum flexibility in recording traces you can diff --git a/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc b/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc index 97daacfd62e..2451a078047 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-mobile-targets.qdoc @@ -114,7 +114,7 @@ You can use the experimental Qt Application Manager plugin (commercial only) to deploy, run, and debug applications on the local Linux PC, remote generic SSH Linux targets, or - \l{Embedded Devices}{embedded devices}. + \l{Boot2Qt Devices}{Boot2Qt devices}. \endlist \endif */ diff --git a/doc/qtcreator/src/overview/creator-only/creator-target-platforms.qdocinc b/doc/qtcreator/src/overview/creator-only/creator-target-platforms.qdocinc index 91a8193feae..e54514e1c3b 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-target-platforms.qdocinc +++ b/doc/qtcreator/src/overview/creator-only/creator-target-platforms.qdocinc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -31,30 +31,21 @@ You can develop applications for the following platforms: \list - \li Desktop - - \li Android - - \li Embedded - - \li Generic remote Linux - - \li iOS - - \li Microcontroller Units (MCU) - - \li QNX - - \li Universal Windows Platform (UWP) - - \li WebAssembly - + \li \l{Connecting Android Devices}{Android} + \li \l{Connecting Bare Metal Devices}{Bare Metal} + \li Boot2Qt + \li \l{Connecting Embedded Linux Devices}{Generic Remote Linux} + \li \l{Connecting iOS Devices}{iOS} + \li \l{Connecting MCUs}{Microcontroller Units (MCU)} (commercial only) + \li \l{Connecting QNX Devices}{QNX} + \li \l{Qt for UWP}{Universal Windows Platform (UWP)} + \li \l{Building Applications for the Web}{WebAssembly} \endlist - \section2 Embedded Devices + \section2 Boot2Qt Devices - The Boot to Qt stack can be made to run on a variety of hardware. For + The Boot2Qt stack can be made to run on a variety of hardware. For Qt for Device Creation license holders, tooling is provided to customize the contents of the stack as well as to take it into desired production hardware. @@ -65,8 +56,8 @@ \l{https://doc.qt.io/QtForDeviceCreation/index.html}{Qt for Device Creation} documentation. - \note Since \QC 4.9, only Boot to Qt version 5.9 and later are supported. - To develop for earlier Boot to Qt versions, use \QC 4.8. + \note Since \QC 4.9, only Boot2Qt version 5.9 and later are supported. + To develop for earlier Boot2Qt versions, use \QC 4.8. \section2 Mobile Devices @@ -99,8 +90,8 @@ \li \row \li MCUs - \li \image ok - \li \image ok + \li + \li \li \image ok \row \li QNX diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc index e31a3d568a9..d18817cfe4d 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-targets.qdoc @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2019 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Creator documentation. @@ -47,29 +47,20 @@ devices: \list - - \li Android Device - - \li Bare Metal Device - - \li Boot2Qt Device (commercial only) - - \li \l {Emulator}{Boot2Qt Emulator Device} (commercial only) - - \li Generic Linux Device - - \li iOS Device - + \li \l{Connecting Android Devices}{Android Device} + \li \l{Connecting Bare Metal Devices}{Bare Metal Device} + \li \l{https://doc.qt.io/QtForDeviceCreation/b2qt-installation-guides.html} + {Boot2Qt Device} (commercial only) + \li \l{Emulator}{Boot2Qt Emulator Device} (commercial only) + \li \l{Connecting Embedded Linux Devices}{Generic Remote Linux Device} + \li \l{Connecting iOS Devices}{iOS Device} \li iOS Simulator - - \li QNX Device - - \li Windows Phone - + \li \l{Connecting MCUs}{MCU Device} (commercial only) + \li \l{Connecting QNX Devices}{QNX Device} + \li \l{Building Applications for the Web}{WebAssembly Runtime} + \li \l{Qt for UWP}{Windows Phone} \li Windows Phone Emulator - \li Windows Runtime (local) - \endlist \section1 Filtering Kit Settings From 90499d5a53a98b3374d876e2a7e2966278612002 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 20 May 2020 10:57:01 +0200 Subject: [PATCH 03/11] CompilationDbPM: Do not change the kit's toolchain Amends 45d42d4518. Fixes: QTCREATORBUG-24047 Change-Id: I115eaf06fb3c055069918d20f360bd027f15d680 Reviewed-by: hjk --- .../compilationdatabaseproject.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp index 6dce6ed9fc2..ee3c3291419 100644 --- a/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp +++ b/src/plugins/compilationdatabaseprojectmanager/compilationdatabaseproject.cpp @@ -202,7 +202,6 @@ RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile, kitInfo.cToolChain = toolchainFromFlags(kit, originalFlags, ProjectExplorer::Constants::C_LANGUAGE_ID); - ToolChainKitAspect::setToolChain(kit, kitInfo.cToolChain); } addDriverModeFlagIfNeeded(kitInfo.cToolChain, flags, originalFlags); rpp.setFlagsForC({kitInfo.cToolChain, flags}); @@ -211,7 +210,6 @@ RawProjectPart makeRawProjectPart(const Utils::FilePath &projectFile, kitInfo.cxxToolChain = toolchainFromFlags(kit, originalFlags, ProjectExplorer::Constants::CXX_LANGUAGE_ID); - ToolChainKitAspect::setToolChain(kit, kitInfo.cxxToolChain); } addDriverModeFlagIfNeeded(kitInfo.cxxToolChain, flags, originalFlags); rpp.setFlagsForCxx({kitInfo.cxxToolChain, flags}); From 146d3dc7e34d126cce09f576264b5c774c3b4692 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 22 May 2020 10:12:44 +0200 Subject: [PATCH 04/11] Bump version to 4.12.2 Change-Id: I734d8571ab672cbbccaebe6d3d1a97cd15f31831 Reviewed-by: Eike Ziller --- cmake/QtCreatorIDEBranding.cmake | 4 ++-- qbs/modules/qtc/qtc.qbs | 4 ++-- qtcreator_ide_branding.pri | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index 1e10d7f0016..ca406149df9 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,9 +1,9 @@ #BINARY_ARTIFACTS_BRANCH = master #PROJECT_USER_FILE_EXTENSION = .user -set(IDE_VERSION "4.12.1") # The IDE version. +set(IDE_VERSION "4.12.2") # The IDE version. set(IDE_VERSION_COMPAT "4.12.0") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "4.12.1") # The IDE display version. +set(IDE_VERSION_DISPLAY "4.12.2") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2020") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index aa30add4a81..93d08ab97f8 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -4,10 +4,10 @@ import qbs.FileInfo import "qtc.js" as HelperFunctions Module { - property string qtcreator_display_version: '4.12.1' + property string qtcreator_display_version: '4.12.2' property string ide_version_major: '4' property string ide_version_minor: '12' - property string ide_version_release: '1' + property string ide_version_release: '2' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release diff --git a/qtcreator_ide_branding.pri b/qtcreator_ide_branding.pri index f9031c5982d..baed3a66266 100644 --- a/qtcreator_ide_branding.pri +++ b/qtcreator_ide_branding.pri @@ -1,6 +1,6 @@ -QTCREATOR_VERSION = 4.12.1 +QTCREATOR_VERSION = 4.12.2 QTCREATOR_COMPAT_VERSION = 4.12.0 -QTCREATOR_DISPLAY_VERSION = 4.12.1 +QTCREATOR_DISPLAY_VERSION = 4.12.2 QTCREATOR_COPYRIGHT_YEAR = 2020 BINARY_ARTIFACTS_BRANCH = 4.12 From aa1caac270d2922e666900e7d106411f072bd352 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 22 May 2020 08:12:43 +0200 Subject: [PATCH 05/11] ClangTools: Fix referencing wrong counter for summary text Fixes: QTCREATORBUG-23585 Change-Id: Icb3002434a728bd0d157190b7079b35bb639d0df Reviewed-by: Christian Kandeler --- src/plugins/clangtools/clangtoolruncontrol.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/clangtools/clangtoolruncontrol.cpp b/src/plugins/clangtools/clangtoolruncontrol.cpp index 49bef96a7c5..b60e3d04003 100644 --- a/src/plugins/clangtools/clangtoolruncontrol.cpp +++ b/src/plugins/clangtools/clangtoolruncontrol.cpp @@ -454,7 +454,7 @@ void ClangToolRunWorker::finalize() { const QString toolName = tool()->name(); if (m_filesNotAnalyzed.size() != 0) { - appendMessage(tr("Error: Failed to analyze %1 files.").arg(m_filesAnalyzed.size()), + appendMessage(tr("Error: Failed to analyze %1 files.").arg(m_filesNotAnalyzed.size()), ErrorMessageFormat); Target *target = runControl()->target(); if (target && target->activeBuildConfiguration() && !target->activeBuildConfiguration()->buildDirectory().exists() From 036e8611ebaeb20edd2ced713520a76d7cccba40 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 22 May 2020 08:57:31 +0200 Subject: [PATCH 06/11] CppTools: Fix license file path persistence Broke with ea6da69e8. Fixes: QTCREATORBUG-24024 Change-Id: If097c4bc824c1a6b6c005bcf32aef09229804be2 Reviewed-by: Christian Kandeler --- src/plugins/cpptools/cppfilesettingspage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/cpptools/cppfilesettingspage.cpp b/src/plugins/cpptools/cppfilesettingspage.cpp index c7060762913..a4763c33335 100644 --- a/src/plugins/cpptools/cppfilesettingspage.cpp +++ b/src/plugins/cpptools/cppfilesettingspage.cpp @@ -324,6 +324,7 @@ void CppFileSettingsWidget::apply() rc.sourceSuffix = m_ui.sourceSuffixComboBox->currentText(); rc.headerSearchPaths = trimmedPaths(m_ui.headerSearchPathsEdit->text()); rc.sourceSearchPaths = trimmedPaths(m_ui.sourceSearchPathsEdit->text()); + rc.licenseTemplatePath = licenseTemplatePath(); if (rc == *m_settings) return; From 20c387f63630b49d9383af9fadbf16c5aaadeaa6 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Wed, 20 May 2020 18:44:45 +0200 Subject: [PATCH 07/11] QmlPreview: Don't use MainFileAspect if it doesn't exist We only need to choose the main file if we're dealing with a qmlproject. Fixes: QTCREATORBUG-24056 Change-Id: I5b5dfa29a46fa07de7ee570fa033d978e72dfdb5 Reviewed-by: Alessandro Portale Reviewed-by: hjk --- .../qmlpreview/qmlpreviewruncontrol.cpp | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp b/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp index 9f22796689e..c513a580f31 100644 --- a/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp +++ b/src/plugins/qmlpreview/qmlpreviewruncontrol.cpp @@ -134,21 +134,22 @@ LocalQmlPreviewSupport::LocalQmlPreviewSupport(ProjectExplorer::RunControl *runC const auto currentTarget = runControl->target(); const auto *qmlBuildSystem = qobject_cast(currentTarget->buildSystem()); - const auto aspect = runControl->aspect(); - const QString mainScript = aspect->mainScript(); - const QString currentFile = aspect->currentFile(); + if (const auto aspect = runControl->aspect()) { + const QString mainScript = aspect->mainScript(); + const QString currentFile = aspect->currentFile(); - const QString mainScriptFromProject = qmlBuildSystem->targetFile( - Utils::FilePath::fromString(mainScript)).toString(); + const QString mainScriptFromProject = qmlBuildSystem->targetFile( + Utils::FilePath::fromString(mainScript)).toString(); - const QString currentFileFromProject = qmlBuildSystem->targetFile( - Utils::FilePath::fromString(currentFile)).toString(); + const QString currentFileFromProject = qmlBuildSystem->targetFile( + Utils::FilePath::fromString(currentFile)).toString(); - if (!currentFile.isEmpty() && qmlProjectRunConfigurationArguments.last().contains(mainScriptFromProject)) { - qmlProjectRunConfigurationArguments.removeLast(); - auto commandLine = Utils::CommandLine(runnable.commandLine().executable(), qmlProjectRunConfigurationArguments); - commandLine.addArg(currentFile); - runnable.setCommandLine(commandLine); + if (!currentFile.isEmpty() && qmlProjectRunConfigurationArguments.last().contains(mainScriptFromProject)) { + qmlProjectRunConfigurationArguments.removeLast(); + auto commandLine = Utils::CommandLine(runnable.commandLine().executable(), qmlProjectRunConfigurationArguments); + commandLine.addArg(currentFile); + runnable.setCommandLine(commandLine); + } } Utils::QtcProcess::addArg(&runnable.commandLineArguments, From f6210b3569327a8c5db9f2918ca4cdc7b820178c Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 22 May 2020 10:48:36 +0200 Subject: [PATCH 08/11] qbs build: Clang: Adapt llvm-config variants to check for Change-Id: Ib961efe9b72acdfc383cade2053a4a1126e99132 Reviewed-by: Christian Kandeler --- qbs/modules/libclang/functions.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qbs/modules/libclang/functions.js b/qbs/modules/libclang/functions.js index 0c15a2a6283..d03358b3c6c 100644 --- a/qbs/modules/libclang/functions.js +++ b/qbs/modules/libclang/functions.js @@ -37,7 +37,8 @@ function llvmConfig(hostOS, qtcFunctions) { var llvmInstallDirFromEnv = Environment.getEnv("LLVM_INSTALL_DIR") var llvmConfigVariants = [ - "llvm-config", "llvm-config-7", "llvm-config-8", "llvm-config-9" + // CLANG-UPGRADE-CHECK: Adapt once we require a new minimum version. + "llvm-config", "llvm-config-8", "llvm-config-9", "llvm-config-10", "llvm-config-11", "llvm-config-12" ]; // Prefer llvm-config* from LLVM_INSTALL_DIR From c25a8c0a586956dec15153a8682863566496bbae Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Mon, 11 May 2020 08:49:38 +0300 Subject: [PATCH 09/11] Locator: Fix regression of filesystem lookup with line/column MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This amends commit 40921421ae7d6ad7c7644e0f7ffe900ccd70ee5e. Change-Id: Ib546813e77395c8816758f9adb21a71f072abd49 Reviewed-by: André Hartmann --- src/plugins/coreplugin/locator/filesystemfilter.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/locator/filesystemfilter.cpp b/src/plugins/coreplugin/locator/filesystemfilter.cpp index 41ad77e5c1e..dcb5925842a 100644 --- a/src/plugins/coreplugin/locator/filesystemfilter.cpp +++ b/src/plugins/coreplugin/locator/filesystemfilter.cpp @@ -102,7 +102,7 @@ QList FileSystemFilter::matchesFor(QFutureInterface FileSystemFilter::matchesFor(QFutureInterface Date: Sun, 24 May 2020 21:45:09 +0200 Subject: [PATCH 10/11] WebAssembly: Fix run configuration for Qt 5.15 app with emsdk 1.39.x With Emscripten SDK 1.39.x, emrun quits and shuts down the web server before the complete WebAssembly application can be fetched by the browser. Adding "--serve_after_close" to the emrun call restores the original behavior. That parameter is accepted by previous Emscripten SDK versions and seems to not change how it used behave in earlier versions. Task-number: QTCREATORBUG-24072 Change-Id: Ie43604d42eb9c5a7cccd09fdf1c33391dc31098d Reviewed-by: hjk --- src/plugins/webassembly/webassemblyrunconfiguration.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/webassembly/webassemblyrunconfiguration.cpp b/src/plugins/webassembly/webassemblyrunconfiguration.cpp index 2bb8861b714..977e61b0fe4 100644 --- a/src/plugins/webassembly/webassemblyrunconfiguration.cpp +++ b/src/plugins/webassembly/webassemblyrunconfiguration.cpp @@ -51,6 +51,7 @@ static CommandLine emrunCommand(Target *target, const QString &browser, const QS "--browser", browser, "--port", port, "--no_emrun_detect", + "--serve_after_close", html.toString() }); } From e71c0b7fe206d607c94bda0cd2dc5d7ed249101b Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 25 May 2020 11:42:18 +0200 Subject: [PATCH 11/11] Debugger: Drop unnecessary use of ModuleNotFoundError That's Python 3 only, and doesn't add value here. Change-Id: I9b1702ea8b0b0ddb090fdfc393228b4430da0b07 Task-number: QTCREATORBUG-24004 Reviewed-by: Christian Stenger Reviewed-by: Eike Ziller --- share/qtcreator/debugger/dumper.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 80d8d47feef..7df90b65db2 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -39,7 +39,7 @@ try: # we do not need to hard fail in cases of partial python installation # that will never use this. import json -except ModuleNotFoundError: +except: print("Python module json not found. " "Native combined debugging might not work.") pass