summaryrefslogtreecommitdiffstats
path: root/src/macdeployqt/shared
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@qt.io>2017-11-15 09:11:29 +0100
committerLiang Qi <liang.qi@qt.io>2017-11-15 09:30:17 +0100
commit6491ca02253f3245333611cabf248ef01bd31883 (patch)
tree2881d4737872461763ef2a1876044726460d78b6 /src/macdeployqt/shared
parentbdf6e44049acbede3224b83e17718b34c800af5d (diff)
parent4c2cae795117897847c0ba0e9b9ff20fa6e4eda9 (diff)
Merge remote-tracking branch 'origin/5.9' into 5.10
Conflicts: src/qtattributionsscanner/main.cpp Change-Id: Idb919f217f1dea42728fd9318fd9f48d9c3d3f29
Diffstat (limited to 'src/macdeployqt/shared')
-rw-r--r--src/macdeployqt/shared/shared.cpp22
1 files changed, 17 insertions, 5 deletions
diff --git a/src/macdeployqt/shared/shared.cpp b/src/macdeployqt/shared/shared.cpp
index 7f566f1ee..7dafe63aa 100644
--- a/src/macdeployqt/shared/shared.cpp
+++ b/src/macdeployqt/shared/shared.cpp
@@ -1170,6 +1170,15 @@ void deployQmlImport(const QString &appBundlePath, const QSet<QString> &rpaths,
recursiveCopyAndDeploy(appBundlePath, rpaths, importSourcePath, importDestinationPath);
}
+static bool importLessThan(const QVariant &v1, const QVariant &v2)
+{
+ QVariantMap import1 = v1.toMap();
+ QVariantMap import2 = v2.toMap();
+ QString path1 = import1["path"].toString();
+ QString path2 = import2["path"].toString();
+ return path1 < path2;
+}
+
// Scan qml files in qmldirs for import statements, deploy used imports from Qml2ImportsPath to Contents/Resources/qml.
bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInfo, QStringList &qmlDirs)
{
@@ -1231,12 +1240,15 @@ bool deployQmlImports(const QString &appBundlePath, DeploymentInfo deploymentInf
bool qtQuickContolsInUse = false; // condition for QtQuick.PrivateWidgets below
- // deploy each import
- foreach (const QJsonValue &importValue, doc.array()) {
- if (!importValue.isObject())
- continue;
+ // sort imports to deploy a module before its sub-modules (otherwise
+ // deployQmlImports can consider the module deployed if it has already
+ // deployed one of its sub-module)
+ QVariantList array = doc.array().toVariantList();
+ qSort(array.begin(), array.end(), importLessThan);
- QJsonObject import = importValue.toObject();
+ // deploy each import
+ foreach (const QVariant &importValue, array) {
+ QVariantMap import = importValue.toMap();
QString name = import["name"].toString();
QString path = import["path"].toString();
QString type = import["type"].toString();