on xenial help sign in
Fix paths for snaps
a5b87bdMichael Terry
include/paths.h.in+24−11
@@ -27,10 +27,23 @@
27#include <QtQml/QQmlEngine>
27#include <QtQml/QQmlEngine>
28#include <QStandardPaths>
28#include <QStandardPaths>
29
29
30+static QString installRoot;
31+
30inline bool isRunningInstalled() {
32inline bool isRunningInstalled() {
33+ if (installRoot.isNull()) {
34+ QString snapRoot = qgetenv("SNAP");
35+ if (QCoreApplication::applicationDirPath() ==
36+ QDir(snapRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath()) {
37+ installRoot = snapRoot;
38+ }
31− static bool installed = (QCoreApplication::applicationDirPath() ==
39+ else if (QCoreApplication::applicationDirPath() ==
32− QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath());
40+ QDir(QStringLiteral("@CMAKE_INSTALL_PREFIX@/@CMAKE_INSTALL_BINDIR@")).canonicalPath()) {
33− return installed;
41+ installRoot = "/";
42+ } else {
43+ installRoot = "";
44+ }
45+ }
46+ return !installRoot.isEmpty();
34}
47}
35
48
36inline QString buildDirectory() {
49inline QString buildDirectory() {
@@ -45,7 +58,7 @@ inline QString sourceDirectory() {
45
58
46inline QString translationDirectory() {
59inline QString translationDirectory() {
47 if (isRunningInstalled()) {
60 if (isRunningInstalled()) {
48− return QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
61+ return installRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/share/locale");
49 } else {
62 } else {
50 return QString(buildDirectory() + "/po/locale");
63 return QString(buildDirectory() + "/po/locale");
51 }
64 }
@@ -53,7 +66,7 @@ inline QString translationDirectory() {
53
66
54inline QString qmlDirectory() {
67inline QString qmlDirectory() {
55 if (isRunningInstalled()) {
68 if (isRunningInstalled()) {
56− return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
69+ return installRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_APP_DIR@/");
57 } else {
70 } else {
58 return QString(sourceDirectory() + "/qml");
71 return QString(sourceDirectory() + "/qml");
59 }
72 }
@@ -70,7 +83,7 @@ inline QStringList overrideImportPaths() {
70inline QStringList nonMirImportPaths() {
83inline QStringList nonMirImportPaths() {
71 QStringList paths;
84 QStringList paths;
72 if (isRunningInstalled()) {
85 if (isRunningInstalled()) {
73− paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
86+ paths << installRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/nonmirplugins");
74 } else {
87 } else {
75 paths << QString(buildDirectory() + "/nonmirplugins");
88 paths << QString(buildDirectory() + "/nonmirplugins");
76 }
89 }
@@ -80,10 +93,10 @@ inline QStringList nonMirImportPaths() {
80inline QStringList fallbackImportPaths() {
93inline QStringList fallbackImportPaths() {
81 QStringList paths;
94 QStringList paths;
82 if (isRunningInstalled()) {
95 if (isRunningInstalled()) {
83− paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
96+ paths << installRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@");
84− paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
97+ paths << installRoot + QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
85− paths << QStringLiteral("@SHELL_PLUGINDIR@");
98+ paths << installRoot + QStringLiteral("@SHELL_PLUGINDIR@");
86− paths << QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
99+ paths << installRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
87 } else {
100 } else {
88 paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
101 paths << QStringLiteral("@USS_PRIVATE_PLUGINDIR@");
89 paths << QStringLiteral("@SHELL_PLUGINDIR@");
102 paths << QStringLiteral("@SHELL_PLUGINDIR@");
@@ -94,7 +107,7 @@ inline QStringList fallbackImportPaths() {
94
107
95inline QString mockPluginsDir() {
108inline QString mockPluginsDir() {
96 if (isRunningInstalled()) {
109 if (isRunningInstalled()) {
97− return QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
110+ return installRoot + QStringLiteral("@CMAKE_INSTALL_PREFIX@/@SHELL_INSTALL_QML@/mocks");
98 } else {
111 } else {
99 return QString(buildDirectory() + "/tests/mocks");
112 return QString(buildDirectory() + "/tests/mocks");
100 }
113 }