From cf2c0d0f356a316515e11a78b4d227fc3af4534c Mon Sep 17 00:00:00 2001 From: Roland Winklmeier Date: Fri, 5 May 2017 22:37:28 +0100 Subject: [PATCH] Use qt.conf to override plugin path on Mac OS Summary: QCoreApplication::addLibraryPath is called before QCoreApplication was constructed and this caused the returned string to be different depending from which working directory it was called and not always the intended binary path. Using qt.conf has a fixed prefix relative to the binary path inside the application bundle and therefore is easier to be used with a relative path. Reviewers: kbasan, msutcliffe Reviewed By: msutcliffe Differential Revision: https://dev.swift-project.org/D18 --- samples/blackmisc/main.cpp | 3 --- samples/blackmiscdbus/main.cpp | 3 --- samples/blackmiscquantities/main.cpp | 3 --- samples/blackmiscsim/main.cpp | 3 --- samples/cliclient/main.cpp | 3 --- samples/hotkey/main.cpp | 3 --- samples/hotkey/qt.conf | 2 ++ samples/hotkey/samplehotkey.pro | 7 +++++++ samples/weatherdata/main.cpp | 3 --- src/swiftcore/main.cpp | 3 --- src/swiftcore/qt.conf | 2 ++ src/swiftcore/swiftcore.pro | 7 +++++++ src/swiftdata/main.cpp | 3 --- src/swiftdata/qt.conf | 2 ++ src/swiftdata/swiftdata.pro | 7 +++++++ src/swiftguistandard/main.cpp | 3 --- src/swiftguistandard/qt.conf | 2 ++ src/swiftguistandard/swiftguistandard.pro | 7 +++++++ src/swiftlauncher/main.cpp | 3 --- src/swiftlauncher/qt.conf | 2 ++ src/swiftlauncher/swiftlauncher.pro | 7 +++++++ 21 files changed, 45 insertions(+), 33 deletions(-) create mode 100644 samples/hotkey/qt.conf create mode 100644 src/swiftcore/qt.conf create mode 100644 src/swiftdata/qt.conf create mode 100644 src/swiftguistandard/qt.conf create mode 100644 src/swiftlauncher/qt.conf diff --git a/samples/blackmisc/main.cpp b/samples/blackmisc/main.cpp index 12d467de4..844e403cd 100644 --- a/samples/blackmisc/main.cpp +++ b/samples/blackmisc/main.cpp @@ -33,9 +33,6 @@ int main(int argc, char *argv[]) { // I use CGuiApplication and not core application // otherwise no QPixmap metadata (metadata sample) -#ifdef Q_OS_MAC - QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif QCoreApplication qa(argc, argv); CApplication a(CApplicationInfo::Sample); Q_UNUSED(qa); diff --git a/samples/blackmiscdbus/main.cpp b/samples/blackmiscdbus/main.cpp index 3bfa27cab..90ac8d7ed 100644 --- a/samples/blackmiscdbus/main.cpp +++ b/samples/blackmiscdbus/main.cpp @@ -38,9 +38,6 @@ int main(int argc, char *argv[]) // is just for testing, I did not split it up BlackMisc::registerMetadata(); -#ifdef Q_OS_MAC - QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif QCoreApplication a(argc, argv); QTextStream out(stdout, QIODevice::WriteOnly); QTextStream qtin(stdin); diff --git a/samples/blackmiscquantities/main.cpp b/samples/blackmiscquantities/main.cpp index 0a87a4436..fe720af39 100644 --- a/samples/blackmiscquantities/main.cpp +++ b/samples/blackmiscquantities/main.cpp @@ -29,9 +29,6 @@ using namespace BlackCore; //! main int main(int argc, char *argv[]) { -#ifdef Q_OS_MAC - QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif QCoreApplication qa(argc, argv); CApplication a; Q_UNUSED(a); diff --git a/samples/blackmiscsim/main.cpp b/samples/blackmiscsim/main.cpp index 99ed8f9d2..cf2a9505b 100644 --- a/samples/blackmiscsim/main.cpp +++ b/samples/blackmiscsim/main.cpp @@ -30,9 +30,6 @@ using namespace BlackMisc; //! main int main(int argc, char *argv[]) { -#ifdef Q_OS_MAC - QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif QCoreApplication qa(argc, argv); BlackCore::CApplication a; Q_UNUSED(a); diff --git a/samples/cliclient/main.cpp b/samples/cliclient/main.cpp index d07a1bfa1..3e77fcc12 100644 --- a/samples/cliclient/main.cpp +++ b/samples/cliclient/main.cpp @@ -24,9 +24,6 @@ using namespace BlackMisc; //! main int main(int argc, char *argv[]) { -#ifdef Q_OS_MAC - QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif QCoreApplication app (argc, argv); BlackMisc::CLogHandler::instance()->install(); diff --git a/samples/hotkey/main.cpp b/samples/hotkey/main.cpp index d488cdb0f..2c4965118 100644 --- a/samples/hotkey/main.cpp +++ b/samples/hotkey/main.cpp @@ -22,9 +22,6 @@ using namespace BlackGui; //! main int main(int argc, char *argv[]) { -#ifdef Q_OS_MAC - QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); CGuiApplication a("samplehotkey", BlackMisc::CApplicationInfo::Sample, QPixmap()); diff --git a/samples/hotkey/qt.conf b/samples/hotkey/qt.conf new file mode 100644 index 000000000..3d0132da8 --- /dev/null +++ b/samples/hotkey/qt.conf @@ -0,0 +1,2 @@ +[Paths] +Plugins = ../.. diff --git a/samples/hotkey/samplehotkey.pro b/samples/hotkey/samplehotkey.pro index 028713732..e21692947 100644 --- a/samples/hotkey/samplehotkey.pro +++ b/samples/hotkey/samplehotkey.pro @@ -20,4 +20,11 @@ DESTDIR = $$DestRoot/bin target.path = $$PREFIX/bin INSTALLS += target +macx { + # Modifies plugin path + qtconf.path = $$PREFIX/bin/samplehotkey.app/Contents/Resources + qtconf.files = qt.conf + INSTALLS += qtconf +} + load(common_post) diff --git a/samples/weatherdata/main.cpp b/samples/weatherdata/main.cpp index 54e0946d4..7e33845a5 100644 --- a/samples/weatherdata/main.cpp +++ b/samples/weatherdata/main.cpp @@ -27,9 +27,6 @@ using namespace BlackMisc::PhysicalQuantities; //! main int main(int argc, char *argv[]) { -#ifdef Q_OS_MAC - QCoreApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif QCoreApplication a(argc, argv); BlackMisc::registerMetadata(); CLogHandler::instance()->install(true); diff --git a/src/swiftcore/main.cpp b/src/swiftcore/main.cpp index 9d54b0f4b..da59c9d1f 100644 --- a/src/swiftcore/main.cpp +++ b/src/swiftcore/main.cpp @@ -26,9 +26,6 @@ using namespace BlackGui; int main(int argc, char *argv[]) { //! [SwiftApplicationDemo] -#ifdef Q_OS_MAC - QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); Q_UNUSED(qa); // init of qa is required, but qa not used diff --git a/src/swiftcore/qt.conf b/src/swiftcore/qt.conf new file mode 100644 index 000000000..3d0132da8 --- /dev/null +++ b/src/swiftcore/qt.conf @@ -0,0 +1,2 @@ +[Paths] +Plugins = ../.. diff --git a/src/swiftcore/swiftcore.pro b/src/swiftcore/swiftcore.pro index 95eb208fe..1dc85fa66 100644 --- a/src/swiftcore/swiftcore.pro +++ b/src/swiftcore/swiftcore.pro @@ -29,4 +29,11 @@ DESTDIR = $$DestRoot/bin target.path = $$PREFIX/bin INSTALLS += target +macx { + # Modifies plugin path + qtconf.path = $$PREFIX/bin/swiftcore.app/Contents/Resources + qtconf.files = qt.conf + INSTALLS += qtconf +} + load(common_post) diff --git a/src/swiftdata/main.cpp b/src/swiftdata/main.cpp index a11d88b9a..7a0e2a0bc 100644 --- a/src/swiftdata/main.cpp +++ b/src/swiftdata/main.cpp @@ -24,9 +24,6 @@ using namespace BlackGui; int main(int argc, char *argv[]) { -#ifdef Q_OS_MAC - QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); Q_UNUSED(qa); diff --git a/src/swiftdata/qt.conf b/src/swiftdata/qt.conf new file mode 100644 index 000000000..3d0132da8 --- /dev/null +++ b/src/swiftdata/qt.conf @@ -0,0 +1,2 @@ +[Paths] +Plugins = ../.. diff --git a/src/swiftdata/swiftdata.pro b/src/swiftdata/swiftdata.pro index e411f28d3..8ffa48f00 100644 --- a/src/swiftdata/swiftdata.pro +++ b/src/swiftdata/swiftdata.pro @@ -30,4 +30,11 @@ DESTDIR = $$DestRoot/bin target.path = $$PREFIX/bin INSTALLS += target +macx { + # Modifies plugin path + qtconf.path = $$PREFIX/bin/swiftdata.app/Contents/Resources + qtconf.files = qt.conf + INSTALLS += qtconf +} + load(common_post) diff --git a/src/swiftguistandard/main.cpp b/src/swiftguistandard/main.cpp index 3c03261fa..6066a09bc 100644 --- a/src/swiftguistandard/main.cpp +++ b/src/swiftguistandard/main.cpp @@ -23,9 +23,6 @@ using namespace BlackCore; int main(int argc, char *argv[]) { //! [SwiftApplicationDemo] -#ifdef Q_OS_MAC - QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); Q_UNUSED(qa); // application init needed diff --git a/src/swiftguistandard/qt.conf b/src/swiftguistandard/qt.conf new file mode 100644 index 000000000..3d0132da8 --- /dev/null +++ b/src/swiftguistandard/qt.conf @@ -0,0 +1,2 @@ +[Paths] +Plugins = ../.. diff --git a/src/swiftguistandard/swiftguistandard.pro b/src/swiftguistandard/swiftguistandard.pro index 3b0849430..3c7b48251 100644 --- a/src/swiftguistandard/swiftguistandard.pro +++ b/src/swiftguistandard/swiftguistandard.pro @@ -30,4 +30,11 @@ DESTDIR = $$DestRoot/bin target.path = $$PREFIX/bin INSTALLS += target +macx { + # Modifies plugin path + qtconf.path = $$PREFIX/bin/swiftguistd.app/Contents/Resources + qtconf.files = qt.conf + INSTALLS += qtconf +} + load(common_post) diff --git a/src/swiftlauncher/main.cpp b/src/swiftlauncher/main.cpp index 49e9331e3..d79ef561c 100644 --- a/src/swiftlauncher/main.cpp +++ b/src/swiftlauncher/main.cpp @@ -30,9 +30,6 @@ using namespace BlackCore::Db; int main(int argc, char *argv[]) { //! [SwiftApplicationDemo] -#ifdef Q_OS_MAC - QApplication::addLibraryPath(CDirectoryUtils::applicationDirectoryPath()); -#endif CGuiApplication::highDpiScreenSupport(); QApplication qa(argc, argv); // needed Q_UNUSED(qa); diff --git a/src/swiftlauncher/qt.conf b/src/swiftlauncher/qt.conf new file mode 100644 index 000000000..3d0132da8 --- /dev/null +++ b/src/swiftlauncher/qt.conf @@ -0,0 +1,2 @@ +[Paths] +Plugins = ../.. diff --git a/src/swiftlauncher/swiftlauncher.pro b/src/swiftlauncher/swiftlauncher.pro index c95fcea4e..c7e147efc 100644 --- a/src/swiftlauncher/swiftlauncher.pro +++ b/src/swiftlauncher/swiftlauncher.pro @@ -31,4 +31,11 @@ DESTDIR = $$DestRoot/bin target.path = $$PREFIX/bin INSTALLS += target +macx { + # Modifies plugin path + qtconf.path = $$PREFIX/bin/swiftlauncher.app/Contents/Resources + qtconf.files = qt.conf + INSTALLS += qtconf +} + load(common_post)