summaryrefslogtreecommitdiffstats
path: root/qmake
diff options
context:
space:
mode:
authorQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-04-09 01:00:06 +0200
committerQt Forward Merge Bot <qt_forward_merge_bot@qt-project.org>2019-04-09 01:00:06 +0200
commit93acb76222f8cfedc46cedc428a42d164c3c0f02 (patch)
treee4400085802f907b7b7c8fb09171036875128164 /qmake
parentce7f14d2e0791acc92622fdc23886a06d6712e90 (diff)
parenta02a2a1e73206b3955438b38bb9311067ef04794 (diff)
Merge remote-tracking branch 'origin/5.12' into 5.13
Diffstat (limited to 'qmake')
-rw-r--r--qmake/main.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/qmake/main.cpp b/qmake/main.cpp
index e5f7032554..a4ef79227b 100644
--- a/qmake/main.cpp
+++ b/qmake/main.cpp
@@ -260,25 +260,31 @@ static int installFile(const QString &source, const QString &target, bool exe =
return 3;
}
- QFileDevice::Permissions targetPermissions = QFileDevice::ReadOwner | QFileDevice::WriteOwner
- | QFileDevice::ReadUser | QFileDevice::WriteUser
- | QFileDevice::ReadGroup | QFileDevice::ReadOther;
if (exe) {
- targetPermissions |= QFileDevice::ExeOwner | QFileDevice::ExeUser |
- QFileDevice::ExeGroup | QFileDevice::ExeOther;
- }
- if (!targetFile.setPermissions(targetPermissions)) {
- fprintf(stderr, "Error setting permissions on %s: %s\n",
- qPrintable(target), qPrintable(targetFile.errorString()));
- return 3;
+ if (!targetFile.setPermissions(sourceFile.permissions() | QFileDevice::ExeOwner | QFileDevice::ExeUser |
+ QFileDevice::ExeGroup | QFileDevice::ExeOther)) {
+ fprintf(stderr, "Error setting execute permissions on %s: %s\n",
+ qPrintable(target), qPrintable(targetFile.errorString()));
+ return 3;
+ }
}
// Copy file times
QString error;
+#ifdef Q_OS_WIN
+ const QFile::Permissions permissions = targetFile.permissions();
+ const bool readOnly = !(permissions & QFile::WriteUser);
+ if (readOnly)
+ targetFile.setPermissions(permissions | QFile::WriteUser);
+#endif
if (!IoUtils::touchFile(target, sourceFile.fileName(), &error)) {
fprintf(stderr, "%s", qPrintable(error));
return 3;
}
+#ifdef Q_OS_WIN
+ if (readOnly)
+ targetFile.setPermissions(permissions);
+#endif
return 0;
}