From 781a17d783fe246ccce4e22ff3d23e8edc4b45a5 Mon Sep 17 00:00:00 2001 From: Oliver Wolff Date: Fri, 1 Dec 2023 10:49:39 +0100 Subject: [PATCH] windeployqt: Proper error message when qtpaths.bat/.exe could not be run If qtpaths cannt be found windeployqt should complain about that fact. Previously it complained about "Unsupported platform". Pick-to: 6.5 Change-Id: I4db954633c31ceac69c4d3c0e55cbe942c3272fd Reviewed-by: Joerg Bornemann (cherry picked from commit bf2f4678b0c1a17ad8d18809335cfb69d2c6527a) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit b876d260b698b3f942796a28cca517761f26f530) --- src/tools/windeployqt/main.cpp | 12 ++++++------ src/tools/windeployqt/utils.cpp | 10 +++++++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/tools/windeployqt/main.cpp b/src/tools/windeployqt/main.cpp index eba93f7a22f..c28f7b9431c 100644 --- a/src/tools/windeployqt/main.cpp +++ b/src/tools/windeployqt/main.cpp @@ -1764,18 +1764,18 @@ int main(int argc, char **argv) const QMap qtpathsVariables = queryQtPaths(options.qtpathsBinary, &errorMessage); const QString xSpec = qtpathsVariables.value(QStringLiteral("QMAKE_XSPEC")); - options.platform = platformFromMkSpec(xSpec); - if (options.platform == UnknownPlatform) { - std::wcerr << "Unsupported platform " << xSpec << '\n'; - return 1; - } - if (qtpathsVariables.isEmpty() || xSpec.isEmpty() || !qtpathsVariables.contains(QStringLiteral("QT_INSTALL_BINS"))) { std::wcerr << "Unable to query qtpaths: " << errorMessage << '\n'; return 1; } + options.platform = platformFromMkSpec(xSpec); + if (options.platform == UnknownPlatform) { + std::wcerr << "Unsupported platform " << xSpec << '\n'; + return 1; + } + // Read the Qt module information from the Qt installation directory. const QString modulesDir = qtpathsVariables.value(QLatin1String("QT_INSTALL_ARCHDATA")) diff --git a/src/tools/windeployqt/utils.cpp b/src/tools/windeployqt/utils.cpp index ee7276df5de..62083d76d4b 100644 --- a/src/tools/windeployqt/utils.cpp +++ b/src/tools/windeployqt/utils.cpp @@ -423,14 +423,18 @@ const char *qmakeInfixKey = "QT_INFIX"; QMap queryQtPaths(const QString &qtpathsBinary, QString *errorMessage) { const QString binary = !qtpathsBinary.isEmpty() ? qtpathsBinary : QStringLiteral("qtpaths"); + const QString colonSpace = QStringLiteral(": "); QByteArray stdOut; QByteArray stdErr; unsigned long exitCode = 0; - if (!runProcess(binary, QStringList(QStringLiteral("-query")), QString(), &exitCode, &stdOut, &stdErr, errorMessage)) + if (!runProcess(binary, QStringList(QStringLiteral("-query")), QString(), &exitCode, &stdOut, + &stdErr, errorMessage)) { + *errorMessage = QStringLiteral("Error running binary ") + binary + colonSpace + *errorMessage; return QMap(); + } if (exitCode) { *errorMessage = binary + QStringLiteral(" returns ") + QString::number(exitCode) - + QStringLiteral(": ") + QString::fromLocal8Bit(stdErr); + + colonSpace + QString::fromLocal8Bit(stdErr); return QMap(); } const QString output = QString::fromLocal8Bit(stdOut).trimmed().remove(u'\r'); @@ -466,7 +470,7 @@ QMap queryQtPaths(const QString &qtpathsBinary, QString *error } } else { std::wcerr << "Warning: Unable to read " << QDir::toNativeSeparators(qconfigPriFile.fileName()) - << ": " << qconfigPriFile.errorString()<< '\n'; + << colonSpace << qconfigPriFile.errorString()<< '\n'; } return result; }