blob: 1847d7c86997339eb1451f479dde260ff5a9c56a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
Description: include legacy pre-multiarch plugin paths
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.
Author: Steve Langasek <steve.langasek@ubuntu.com>
Author: Felix Geyer <debfx-pkg@fobos.de>
Last-Update: 2012-04-25
---
src/corelib/kernel/qcoreapplication.cpp | 17 +++++++++++++++++
src/declarative/qml/qdeclarativeimport.cpp | 16 ++++++++++++++++
2 files changed, 33 insertions(+)
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -2507,6 +2507,23 @@ QStringList QCoreApplication::libraryPat
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,
--- a/src/declarative/qml/qdeclarativeimport.cpp
+++ b/src/declarative/qml/qdeclarativeimport.cpp
@@ -751,6 +751,22 @@ QDeclarativeImportDatabase::QDeclarative
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
|