androiddeployqt: Only pass qt_install_dir/qml directory if it exists
In Conan's case, the qtbase installed package directory lacks a qml directory. We pass that as a valid qml import path via CMake -> deployment json file -> androiddeployqt -> qmlimportscanner which causes the qmlimportscanner to fail with qmlimportscanner: No such file or directory: "~/package/some_sha_1/qml" Invalid json output from qmlimportscanner. which in turn fails the androiddeploqt build step. Make sure to only pass qtbase_install_dir/qml if it actually exists. Amends 4ef3da04c3390f02bcb0507128372e6a299dc8fd Amends c08b9a49ba70b1cbb0704668dd3f2c487d7f585e Fixes: QTBUG-104056 Task-number: QTBUG-88519 Task-number: QTBUG-89588 Change-Id: I4310eb4e265ae8d3e3f09e1e1dbed79210e23de6 Reviewed-by: Alexey Edelev <alexey.edelev@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> (cherry picked from commit 0c82f98ec5c0135f3789f0f9c5e30978698ddff9) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
77810099ce
commit
d3bbbf345a
@ -1946,12 +1946,22 @@ bool scanImports(Options *options, QSet<QString> *usedDependencies)
|
||||
}
|
||||
|
||||
QStringList importPaths;
|
||||
importPaths += shellQuote(options->qtInstallDirectory + "/qml"_L1);
|
||||
|
||||
// In Conan's case, qtInstallDirectory will point only to qtbase installed files, which
|
||||
// lacks a qml directory. We don't want to pass it as an import path if it doesn't exist
|
||||
// because it will cause qmlimportscanner to fail.
|
||||
// This also covers the case when only qtbase is installed in a regular Qt build.
|
||||
const QString mainImportPath = options->qtInstallDirectory + "/qml"_L1;
|
||||
if (QDir().exists(mainImportPath))
|
||||
importPaths += shellQuote(mainImportPath);
|
||||
|
||||
// These are usually provided by CMake in the deployment json file from paths specified
|
||||
// in CMAKE_FIND_ROOT_PATH. They might not have qml modules.
|
||||
for (const QString &prefix : options->extraPrefixDirs)
|
||||
if (QDir().exists(prefix + "/qml"_L1))
|
||||
importPaths += shellQuote(prefix + "/qml"_L1);
|
||||
|
||||
// These are provided by both CMake and qmake.
|
||||
for (const QString &qmlImportPath : qAsConst(options->qmlImportPaths)) {
|
||||
if (QDir().exists(qmlImportPath)) {
|
||||
importPaths += shellQuote(qmlImportPath);
|
||||
|
Loading…
x
Reference in New Issue
Block a user