From 1ddc20c96777bdc049ba7acad387ecc61ad87031 Mon Sep 17 00:00:00 2001 From: Marco Benelli Date: Fri, 15 Apr 2016 10:18:51 +0200 Subject: qmlplugindump: skip "private" directories. qmlplugindump used to skip directories called "Private". It seems that some directory called "private" are added, notably the one in QtGraphicalEffects. Such directories cause qmlplugindump to fail, so the name check is now case-insensitive. Change-Id: Ie564db7bf96d6596d5cd674adc125a9bcdcba7bb Reviewed-by: Thomas Hartmann Reviewed-by: Erik Verbruggen --- tools/qmlplugindump/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/qmlplugindump/main.cpp b/tools/qmlplugindump/main.cpp index 7870e3a9df..d0d70fd0fe 100644 --- a/tools/qmlplugindump/main.cpp +++ b/tools/qmlplugindump/main.cpp @@ -771,7 +771,7 @@ static bool readDependenciesData(QString dependenciesFile, const QByteArray &fil QString version = obj.value(QStringLiteral("version")).toString(); if (name.isEmpty() || urisToSkip.contains(name) || version.isEmpty()) continue; - if (name.endsWith(QLatin1String("Private"))) { + if (name.endsWith(QLatin1String("Private"), Qt::CaseInsensitive)) { if (verbose) std::cerr << "skipping private dependecy " << qPrintable( name ) << " " << qPrintable(version) << std::endl; -- cgit v1.2.3 From d93daba909d0aeb8a32fe3b0e0a7145b60d77531 Mon Sep 17 00:00:00 2001 From: Erik Verbruggen Date: Thu, 21 Apr 2016 10:17:38 +0200 Subject: QML: Fix qmlplugindump Info.plist Change-Id: I32d874c65251214f1f754f8caf443298944897e0 Reviewed-by: Eike Ziller Reviewed-by: Marco Benelli --- tools/qmlplugindump/Info.plist | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'tools') diff --git a/tools/qmlplugindump/Info.plist b/tools/qmlplugindump/Info.plist index f35846d048..e6c4914ca0 100644 --- a/tools/qmlplugindump/Info.plist +++ b/tools/qmlplugindump/Info.plist @@ -5,11 +5,11 @@ CFBundlePackageType APPL CFBundleSignature - @TYPEINFO@ + ???? CFBundleExecutable - @EXECUTABLE@ + qmlplugindump CFBundleIdentifier - com.nokia.qt.qmlplugindump + org.qt-project.qt.qmlplugindump LSUIElement 1 -- cgit v1.2.3 From 42fd8ec2495001c1435bbc34017416c18e691bb3 Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Mon, 25 Apr 2016 16:45:21 +0200 Subject: Fix qmlimportscanner to find Qt Quick Controls 2 styles The styles are installed to eg. qml/QtQuick/Controls.2/Material. That is, the version is in the parent module. See 3c5e438 for more details. Change-Id: Id5083c7934071666dd5e11511f16dea07d3104bf Reviewed-by: Mitch Curtis Reviewed-by: Marco Benelli Reviewed-by: Simon Hausmann --- tools/qmlimportscanner/main.cpp | 46 ++++++++++++++++++++++++++++++----------- 1 file changed, 34 insertions(+), 12 deletions(-) (limited to 'tools') diff --git a/tools/qmlimportscanner/main.cpp b/tools/qmlimportscanner/main.cpp index dcb9709bb8..2569d78c63 100644 --- a/tools/qmlimportscanner/main.cpp +++ b/tools/qmlimportscanner/main.cpp @@ -157,24 +157,46 @@ QVariantMap pluginsForModulePath(const QString &modulePath) { // Search for a given qml import in g_qmlImportPaths. QString resolveImportPath(const QString &uri, const QString &version) { - // Create path from uri (QtQuick.Controls -> QtQuick/Controls) - QString path = uri; - path.replace(QLatin1Char('.'), QLatin1Char('/')); - // search for the most spesifc version first - QString versionedName = path + QLatin1Char('.') + version; + const QLatin1Char dot('.'); + const QLatin1Char slash('/'); + const QStringList parts = uri.split(dot, QString::SkipEmptyParts); + + QString ver = version; while (true) { - // look in all g_qmlImportPaths foreach (const QString &qmlImportPath, g_qmlImportPaths) { - QString candidatePath = QDir::cleanPath(qmlImportPath + QLatin1Char('/') + versionedName); - if (QDir(candidatePath).exists()) - return candidatePath; // import found + // Search for the most specific version first, and search + // also for the version in parent modules. For example: + // - qml/QtQml/Models.2.0 + // - qml/QtQml.2.0/Models + // - qml/QtQml/Models.2 + // - qml/QtQml.2/Models + // - qml/QtQml/Models + if (ver.isEmpty()) { + const QString candidatePath = QDir::cleanPath(qmlImportPath + slash + parts.join(slash)); + if (QDir(candidatePath).exists()) + return candidatePath; // import found + } else { + for (int index = parts.count() - 1; index >= 0; --index) { + const QString candidatePath = QDir::cleanPath(qmlImportPath + slash + + parts.mid(0, index + 1).join(slash) + + dot + ver + slash + + parts.mid(index + 1).join(slash)); + + if (QDir(candidatePath).exists()) + return candidatePath; // import found + } + } } // remove the last version digit; stop if there are none left - int lastDot = versionedName.lastIndexOf(QLatin1Char('.')); - if (lastDot == -1) + if (ver.isEmpty()) break; - versionedName = versionedName.mid(0, lastDot); + + int lastDot = ver.lastIndexOf(dot); + if (lastDot == -1) + ver.clear(); + else + ver = ver.mid(0, lastDot); } return QString(); // not found -- cgit v1.2.3