Windeployqt: prevent directory creation for dryruns

Added a check for dryruns when creating directories, to properly
reflect expected behavior.

Pick-to: 6.5
Change-Id: I72063e4d32302d304f8174701e38e275b404706b
Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
bb10
Timothée Keller 2023-01-16 16:15:24 +01:00
parent 8902bc6356
commit 4e5ced054d
3 changed files with 17 additions and 15 deletions

View File

@ -1494,7 +1494,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);
@ -1502,7 +1502,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;
@ -1519,7 +1519,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,
@ -1567,7 +1567,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),
@ -1584,7 +1584,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);
}
@ -1597,7 +1597,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);
@ -1677,12 +1677,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;
}

View File

@ -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;
}

View File

@ -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