From: Steve Langasek Date: Tue, 22 Aug 2023 13:42:24 +0000 (+0100) Subject: include legacy pre-multiarch plugin paths X-Git-Tag: archive/raspbian/4%4.8.7+dfsg-18+rpi1+deb10u2^2~18 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=9d57d81dcdd352abf9ed4254ebd70332af144838;p=qt4-x11.git include legacy pre-multiarch plugin paths Last-Update: 2012-04-25 A full multiarch system requires an architecture-qualified plugin path for Qt, but installed systems may still have plugins (e.g., from other distribution packages) in another pre-multiarch directory. When constructing the plugin path, include both the configured plugin path and a plugin path with the architecture triplet stripped out. This applies to the general plugin loading system, and to the QML one. Gbp-Pq: Name qt-multiarch-plugin-path-compat.diff --- diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp index 83956dd83..ab5889dc6 100644 --- a/src/corelib/kernel/qcoreapplication.cpp +++ b/src/corelib/kernel/qcoreapplication.cpp @@ -2531,6 +2531,23 @@ QStringList QCoreApplication::libraryPaths() if (!app_libpaths->contains(installPathPlugins)) app_libpaths->append(installPathPlugins); } + QString pathSep("/"); + QStringList dirnames = QString(installPathPlugins).split(QLatin1Char('/'), QString::SkipEmptyParts); + if (dirnames[0] == QLatin1String("usr") && dirnames[1] == QLatin1String("lib") && dirnames[3] == QLatin1String("qt4")) + { + QString legacyPathPlugins = pathSep; + int i = 0; + for (QStringList::const_iterator it = dirnames.constBegin(); it != dirnames.constEnd(); ++it) { + if (++i == 3) + continue; + legacyPathPlugins = legacyPathPlugins + QString(*it) + pathSep; + } + if (QFile::exists(legacyPathPlugins)) { + legacyPathPlugins = QDir(legacyPathPlugins).canonicalPath(); + if (!app_libpaths->contains(legacyPathPlugins)) + app_libpaths->append(legacyPathPlugins); + } + } #endif // If QCoreApplication is not yet instantiated, diff --git a/src/declarative/qml/qdeclarativeimport.cpp b/src/declarative/qml/qdeclarativeimport.cpp index 26ac527f1..e09691e1d 100644 --- a/src/declarative/qml/qdeclarativeimport.cpp +++ b/src/declarative/qml/qdeclarativeimport.cpp @@ -770,6 +770,22 @@ QDeclarativeImportDatabase::QDeclarativeImportDatabase(QDeclarativeEngine *e) addImportPath(installImportsPath); } #else + QStringList dirnames = installImportsPath.split(QLatin1Char('/'), QString::SkipEmptyParts); + if (dirnames[0] == QLatin1String("usr") && dirnames[1] == QLatin1String("lib") && dirnames[3] == QLatin1String("qt4")) + { + QString pathSep("/"); + QString legacyImportPath = pathSep; + int i = 0; + for (QStringList::const_iterator it = dirnames.constBegin(); it != dirnames.constEnd(); ++it) { + if (++i == 3) + continue; + legacyImportPath = legacyImportPath + *it + pathSep; + } + if (QFile::exists(legacyImportPath)) { + addImportPath(legacyImportPath); + } + } + addImportPath(installImportsPath); #endif