diff options
author | Timothée Keller <[email protected]> | 2023-01-16 16:15:24 +0100 |
---|---|---|
committer | Qt Cherry-pick Bot <[email protected]> | 2023-03-24 17:06:48 +0000 |
commit | 3495adc7801e60edef892951611445f01515219b (patch) | |
tree | d232a88d408f12f6c9e2dc742bb02287ee0fa472 | |
parent | 83aa3052058eeda1ad7da0f8db31d23bf1e207d3 (diff) |
Windeployqt: prevent directory creation for dryruns
Added a check for dryruns when creating directories, to properly
reflect expected behavior.
Change-Id: I72063e4d32302d304f8174701e38e275b404706b
Reviewed-by: Oliver Wolff <[email protected]>
(cherry picked from commit 4e5ced054d7a2400cf5b959bf2b71e8fd1a91761)
Reviewed-by: Qt Cherry-pick Bot <[email protected]>
-rw-r--r-- | src/tools/windeployqt/main.cpp | 16 | ||||
-rw-r--r-- | src/tools/windeployqt/utils.cpp | 14 | ||||
-rw-r--r-- | src/tools/windeployqt/utils.h | 2 |
3 files changed, 17 insertions, 15 deletions
diff --git a/src/tools/windeployqt/main.cpp b/src/tools/windeployqt/main.cpp index 7545aaf503a..00595664237 100644 --- a/src/tools/windeployqt/main.cpp +++ b/src/tools/windeployqt/main.cpp @@ -1486,7 +1486,7 @@ static DeployResult deploy(const Options &options, const QMap<QString, QString> const QString targetPath = options.qmlDirectory.isEmpty() ? options.directory + QStringLiteral("/qml") : options.qmlDirectory; - if (!createDirectory(targetPath, errorMessage)) + if (!createDirectory(targetPath, errorMessage, options.dryRun)) return result; for (const QmlImportScanResult::Module &module : std::as_const(qmlScanResult.modules)) { const QString installPath = module.installPath(targetPath); @@ -1494,7 +1494,7 @@ static DeployResult deploy(const Options &options, const QMap<QString, QString> std::wcout << "Installing: '" << module.name << "' from " << module.sourcePath << " to " << QDir::toNativeSeparators(installPath) << '\n'; - if (installPath != targetPath && !createDirectory(installPath, errorMessage)) + if (installPath != targetPath && !createDirectory(installPath, errorMessage, options.dryRun)) return result; unsigned updateFileFlags = options.updateFileFlags | SkipQmlDesignerSpecificsDirectories; @@ -1511,7 +1511,7 @@ static DeployResult deploy(const Options &options, const QMap<QString, QString> } // optQuickImports if (options.translations) { - if (!options.dryRun && !createDirectory(options.translationsDirectory, errorMessage)) + if (!createDirectory(options.translationsDirectory, errorMessage, options.dryRun)) return result; if (!deployTranslations(qtpathsVariables.value(QStringLiteral("QT_INSTALL_TRANSLATIONS")), result.deployedQtLibraries, options.translationsDirectory, options, @@ -1559,7 +1559,7 @@ static bool deployWebEngineCore(const QMap<QString, QString> &qtpathsVariables, const QString resourcesSourceDir = qtpathsVariables.value(QStringLiteral("QT_INSTALL_DATA")) + resourcesSubDir + u'/'; const QString resourcesTargetDir(options.directory + resourcesSubDir); - if (!createDirectory(resourcesTargetDir, errorMessage)) + if (!createDirectory(resourcesTargetDir, errorMessage, options.dryRun)) return false; for (auto installDataFile : installDataFiles) { if (!updateFile(resourcesSourceDir + QLatin1StringView(installDataFile), @@ -1576,7 +1576,7 @@ static bool deployWebEngineCore(const QMap<QString, QString> &qtpathsVariables, } if (options.translations) { // Copy the whole translations directory. - return createDirectory(options.translationsDirectory, errorMessage) + return createDirectory(options.translationsDirectory, errorMessage, options.dryRun) && updateFile(translations.absoluteFilePath(), options.translationsDirectory, options.updateFileFlags, options.json, errorMessage); } @@ -1589,7 +1589,7 @@ static bool deployWebEngineCore(const QMap<QString, QString> &qtpathsVariables, } const QString webEngineTranslationsDir = options.translationsDirectory + u'/' + translations.fileName(); - if (!createDirectory(webEngineTranslationsDir, errorMessage)) + if (!createDirectory(webEngineTranslationsDir, errorMessage, options.dryRun)) return false; return updateFile(enUSpak.absoluteFilePath(), webEngineTranslationsDir, options.updateFileFlags, options.json, errorMessage); @@ -1669,12 +1669,12 @@ int main(int argc, char **argv) } // Create directories - if (!createDirectory(options.directory, &errorMessage)) { + if (!createDirectory(options.directory, &errorMessage, options.dryRun)) { std::wcerr << errorMessage << '\n'; return 1; } if (!options.libraryDirectory.isEmpty() && options.libraryDirectory != options.directory - && !createDirectory(options.libraryDirectory, &errorMessage)) { + && !createDirectory(options.libraryDirectory, &errorMessage, options.dryRun)) { std::wcerr << errorMessage << '\n'; return 1; } diff --git a/src/tools/windeployqt/utils.cpp b/src/tools/windeployqt/utils.cpp index 432d13d5da0..d54d0758942 100644 --- a/src/tools/windeployqt/utils.cpp +++ b/src/tools/windeployqt/utils.cpp @@ -62,7 +62,7 @@ bool createSymbolicLink(const QFileInfo &source, const QString &target, QString return true; } -bool createDirectory(const QString &directory, QString *errorMessage) +bool createDirectory(const QString &directory, QString *errorMessage, bool dryRun) { const QFileInfo fi(directory); if (fi.isDir()) @@ -74,11 +74,13 @@ bool createDirectory(const QString &directory, QString *errorMessage) } if (optVerboseLevel) std::wcout << "Creating " << QDir::toNativeSeparators(directory) << "...\n"; - QDir dir; - if (!dir.mkpath(directory)) { - *errorMessage = QString::fromLatin1("Could not create directory %1."). - arg(QDir::toNativeSeparators(directory)); - return false; + if (!dryRun) { + QDir dir; + if (!dir.mkpath(directory)) { + *errorMessage = QString::fromLatin1("Could not create directory %1.") + .arg(QDir::toNativeSeparators(directory)); + return false; + } } return true; } diff --git a/src/tools/windeployqt/utils.h b/src/tools/windeployqt/utils.h index a9ee509d7a4..5bf2cde1111 100644 --- a/src/tools/windeployqt/utils.h +++ b/src/tools/windeployqt/utils.h @@ -143,7 +143,7 @@ inline QString sharedLibrarySuffix(Platform platform) { return QLatin1StringView bool isBuildDirectory(Platform platform, const QString &dirName); bool createSymbolicLink(const QFileInfo &source, const QString &target, QString *errorMessage); -bool createDirectory(const QString &directory, QString *errorMessage); +bool createDirectory(const QString &directory, QString *errorMessage, bool dryRun); QString findInPath(const QString &file); extern const char *qmakeInfixKey; // Fake key containing the libinfix |