From a7d5e67556bd32496ce0a0f98a5ee225e00977e0 Mon Sep 17 00:00:00 2001 From: Friedemann Kleint <Friedemann.Kleint@digia.com> Date: Thu, 10 Jul 2014 10:55:15 +0200 Subject: [PATCH] windeployqt: Clear read-only attribute when copying files. The deletion of the empty QML directories fails when not doing so. Task-number: QTBUG-40152 Change-Id: I0ff78440646239897b4867c3b3cfe1af8b2769f9 Reviewed-by: Oliver Wolff <oliver.wolff@digia.com> Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com> --- src/windeployqt/utils.h | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/windeployqt/utils.h b/src/windeployqt/utils.h index f184b514e..9665beabc 100644 --- a/src/windeployqt/utils.h +++ b/src/windeployqt/utils.h @@ -337,13 +337,23 @@ bool updateFile(const QString &sourceFileName, QFile file(sourceFileName); if (optVerboseLevel) std::wcout << "Updating " << sourceFileInfo.fileName() << ".\n"; - if (!(flags & SkipUpdateFile) && !file.copy(targetFileName)) { - *errorMessage = QString::fromLatin1("Cannot copy %1 to %2: %3") + if (!(flags & SkipUpdateFile)) { + if (!file.copy(targetFileName)) { + *errorMessage = QString::fromLatin1("Cannot copy %1 to %2: %3") .arg(QDir::toNativeSeparators(sourceFileName), QDir::toNativeSeparators(targetFileName), file.errorString()); - return false; - } + return false; + } + if (!(file.permissions() & QFile::WriteUser)) { // QTBUG-40152, clear inherited read-only attribute + QFile targetFile(targetFileName); + if (!targetFile.setPermissions(targetFile.permissions() | QFile::WriteUser)) { + *errorMessage = QString::fromLatin1("Cannot set write permission on %1: %2") + .arg(QDir::toNativeSeparators(targetFileName), file.errorString()); + return false; + } + } // Check permissions + } // !SkipUpdateFile if (json) json->addFile(sourceFileName, targetDirectory); return true; -- GitLab