1*4882a593SmuzhiyunFrom e52c323bf63319aefe6b91f712b52dc69591f30c Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jeffy Chen <jeffy.chen@rock-chips.com>
3*4882a593SmuzhiyunDate: Fri, 8 Oct 2021 16:39:52 +0800
4*4882a593SmuzhiyunSubject: [PATCH 27/28] HACK: qmake: Workaround installation race of
5*4882a593Smuzhiyun qtdeclarative qmltypes
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunWhen doing in-place building, the generated qtdeclarative's
8*4882a593Smuzhiyunplugins.qmltypes might be installed from qtbase's qml2build and
9*4882a593Smuzhiyunqtdeclarative's install_qmltypes stages.
10*4882a593Smuzhiyun
11*4882a593SmuzhiyunThat would cause a parallel installation race which might lead to:
12*4882a593SmuzhiyunError copying xxx/plugins.qmltypes to xxx/plugins.qmltypes: Destination file exists
13*4882a593Smuzhiyun
14*4882a593SmuzhiyunLet's workaround it by simply adding a few retries.
15*4882a593Smuzhiyun
16*4882a593SmuzhiyunSigned-off-by: Jeffy Chen <jeffy.chen@rock-chips.com>
17*4882a593Smuzhiyun---
18*4882a593Smuzhiyun qmake/main.cpp | 5 +++++
19*4882a593Smuzhiyun 1 file changed, 5 insertions(+)
20*4882a593Smuzhiyun
21*4882a593Smuzhiyundiff --git a/qmake/main.cpp b/qmake/main.cpp
22*4882a593Smuzhiyunindex 15b1b23f..01c4e6f0 100644
23*4882a593Smuzhiyun--- a/qmake/main.cpp
24*4882a593Smuzhiyun+++ b/qmake/main.cpp
25*4882a593Smuzhiyun@@ -289,6 +289,11 @@ static int installFile(const QString &source, const QString &target, bool exe =
26*4882a593Smuzhiyun         QDir::root().mkpath(QFileInfo(target).absolutePath());
27*4882a593Smuzhiyun     }
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun+    /* HACK: Workaround installation race of qtdeclarative's qmltypes */
30*4882a593Smuzhiyun+    if (!sourceFile.copy(target))
31*4882a593Smuzhiyun+        /* Wait for other installers and retry later */
32*4882a593Smuzhiyun+        if (({ sleep(10); QFile::remove(target); !sourceFile.copy(target); }))
33*4882a593Smuzhiyun+
34*4882a593Smuzhiyun     if (!sourceFile.copy(target)) {
35*4882a593Smuzhiyun         fprintf(stderr, "Error copying %s to %s: %s\n", source.toLatin1().constData(), qPrintable(target), qPrintable(sourceFile.errorString()));
36*4882a593Smuzhiyun         return 3;
37*4882a593Smuzhiyun--
38*4882a593Smuzhiyun2.20.1
39*4882a593Smuzhiyun
40