diff options
author | Liang Qi <liang.qi@qt.io> | 2017-11-15 09:11:29 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@qt.io> | 2017-11-15 09:30:17 +0100 |
commit | 6491ca02253f3245333611cabf248ef01bd31883 (patch) | |
tree | 2881d4737872461763ef2a1876044726460d78b6 /src/macdeployqt/shared | |
parent | bdf6e44049acbede3224b83e17718b34c800af5d (diff) | |
parent | 4c2cae795117897847c0ba0e9b9ff20fa6e4eda9 (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.cpp | 22 |
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(); |